diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 942f1f1f5..5393aa155 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,7 @@ jobs: repository: pret/agbcc - name: Install binutils - run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi + run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi libelf-dev # build-essential, git, and libpng-dev are already installed # gcc-arm-none-eabi is only needed for the modern build # as an alternative to dkP @@ -41,10 +41,15 @@ jobs: working-directory: agbcc - name: Agbcc - run: make -j${nproc} all + run: make -j${nproc} -O all - name: Modern env: MODERN: 1 COMPARE: 0 - run: make -j${nproc} all + run: make -j${nproc} -O all + + - name: Test + run: | + make -j${nproc} -O pokeemerald-test.elf + make -j${nproc} check diff --git a/INSTALL.md b/INSTALL.md index ee4706c6c..53d284107 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -9,7 +9,7 @@ If you run into trouble, ask for help on Discord or IRC (see [README.md](README. ## Windows Windows has instructions for building with three possible terminals, providing 3 different options in case the user stumbles upon unexpected errors. -- [Windows 10 (WSL1)](#windows-10-wsl1) (**Fastest, highly recommended**, Windows 10 only) +- [Windows 10/11 (WSL1)](#windows-1011-wsl1) (**Fastest, highly recommended**, Windows 10 and 11 only) - [Windows (msys2)](#windows-msys2) (Second fastest) - [Windows (Cygwin)](#windows-cygwin) (Slowest) @@ -26,7 +26,7 @@ All of the Windows instructions assume that the default drive is C:\\. If this d **A note of caution**: As Windows 7 is officially unsupported by Microsoft and Windows 8 has very little usage, some maintainers are unwilling to maintain the Windows 7/8 instructions. Thus, these instructions may break in the future with fixes taking longer than fixes to the Windows 10 instructions. -## Windows 10 (WSL1) +## Windows 10/11 (WSL1) WSL1 is the preferred terminal to build **pokeemerald**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL). - If WSL (Debian or Ubuntu) is **not installed**, then go to [Installing WSL1](#Installing-WSL1). - Otherwise, if WSL is installed, but it **hasn't previously been set up for another decompilation project**, then go to [Setting up WSL1](#Setting-up-WSL1). diff --git a/Makefile b/Makefile index 2644a9acd..696820cd9 100644 --- a/Makefile +++ b/Makefile @@ -79,6 +79,9 @@ ELF = $(ROM:.gba=.elf) MAP = $(ROM:.gba=.map) SYM = $(ROM:.gba=.sym) +TESTELF = $(ROM:.gba=-test.elf) +HEADLESSELF = $(ROM:.gba=-test-headless.elf) + C_SUBDIR = src GFLIB_SUBDIR = gflib ASM_SUBDIR = asm @@ -88,6 +91,7 @@ SONG_SUBDIR = sound/songs MID_SUBDIR = sound/songs/midi SAMPLE_SUBDIR = sound/direct_sound_samples CRY_SUBDIR = sound/direct_sound_samples/cries +TEST_SUBDIR = test C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR) GFLIB_BUILDDIR = $(OBJ_DIR)/$(GFLIB_SUBDIR) @@ -95,6 +99,7 @@ ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR) MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR) +TEST_BUILDDIR = $(OBJ_DIR)/$(TEST_SUBDIR) ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN) @@ -131,10 +136,13 @@ RAMSCRGEN := tools/ramscrgen/ramscrgen$(EXE) FIX := tools/gbafix/gbafix$(EXE) MAPJSON := tools/mapjson/mapjson$(EXE) JSONPROC := tools/jsonproc/jsonproc$(EXE) +PATCHELF := tools/patchelf/patchelf$(EXE) +ROMTEST ?= $(shell { command -v mgba-rom-test || command -v tools/mgba/mgba-rom-test$(EXE); } 2>/dev/null) +ROMTESTHYDRA := tools/mgba-rom-test-hydra/mgba-rom-test-hydra$(EXE) PERL := perl -TOOLDIRS := $(filter-out tools/agbcc tools/binutils,$(wildcard tools/*)) +TOOLDIRS := $(filter-out tools/mgba tools/agbcc tools/binutils,$(wildcard tools/*)) TOOLBASE = $(TOOLDIRS:tools/%=%) TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE)) @@ -150,7 +158,7 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) libagbsyscall modern tidymodern tidynonmodern +.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) libagbsyscall modern tidymodern tidynonmodern check infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -158,7 +166,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst # Disable dependency scanning for clean/tidy/tools # Use a separate minimal makefile for speed # Since we don't need to reload most of this makefile -ifeq (,$(filter-out all rom compare modern libagbsyscall syms,$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare modern check libagbsyscall syms,$(MAKECMDGOALS))) $(call infoshell, $(MAKE) -f make_tools.mk) else NODEP ?= 1 @@ -182,6 +190,11 @@ C_SRCS_IN := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c) C_SRCS := $(foreach src,$(C_SRCS_IN),$(if $(findstring .inc.c,$(src)),,$(src))) C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) +TEST_SRCS_IN := $(wildcard $(TEST_SUBDIR)/*.c $(TEST_SUBDIR)/*/*.c $(TEST_SUBDIR)/*/*/*.c) +TEST_SRCS := $(foreach src,$(TEST_SRCS_IN),$(if $(findstring .inc.c,$(src)),,$(src))) +TEST_OBJS := $(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(TEST_SRCS)) +TEST_OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(TEST_OBJS)) + GFLIB_SRCS := $(wildcard $(GFLIB_SUBDIR)/*.c) GFLIB_OBJS := $(patsubst $(GFLIB_SUBDIR)/%.c,$(GFLIB_BUILDDIR)/%.o,$(GFLIB_SRCS)) @@ -206,7 +219,7 @@ MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS)) OBJS := $(C_OBJS) $(GFLIB_OBJS) $(C_ASM_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS) OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) -SUBDIRS := $(sort $(dir $(OBJS))) +SUBDIRS := $(sort $(dir $(OBJS) $(dir $(TEST_OBJS)))) $(shell mkdir -p $(SUBDIRS)) endif @@ -407,6 +420,14 @@ $(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt $(RAMSCRGEN) ewram_data $< ENGLISH > $@ +# NOTE: Based on C_DEP above, but without NODEP and KEEP_TEMPS handling. +define TEST_DEP +$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib -I test $2) + @echo "$$(CC1) -o $$@ $$<" + @$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) $$< charmap.txt -i | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ - +endef +$(foreach src, $(TEST_SRCS), $(eval $(call TEST_DEP,$(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(src)),$(src),$(patsubst $(TEST_SUBDIR)/%.c,%,$(src))))) + ifeq ($(MODERN),0) LD_SCRIPT := ld_script.txt LD_SCRIPT_DEPS := $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld @@ -429,6 +450,28 @@ $(ROM): $(ELF) modern: all +LD_SCRIPT_TEST := ld_script_test.txt + +$(OBJ_DIR)/ld_script_test.ld: $(LD_SCRIPT_TEST) $(LD_SCRIPT_DEPS) + cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT_TEST) > ld_script_test.ld + +$(TESTELF): $(OBJ_DIR)/ld_script_test.ld $(OBJS) $(TEST_OBJS) libagbsyscall + @echo "cd $(OBJ_DIR) && $(LD) -T ld_script_test.ld -o ../../$@ " + @cd $(OBJ_DIR) && $(LD) $(TESTLDFLAGS) -T ld_script_test.ld -o ../../$@ $(OBJS_REL) $(TEST_OBJS_REL) $(LIB) + $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent + $(PATCHELF) pokeemerald-test.elf gTestRunnerArgv "$(TESTS)\0" + +ifeq ($(GITHUB_REPOSITORY_OWNER),rh-hideout) +TEST_SKIP_IS_FAIL := \x01 +else +TEST_SKIP_IS_FAIL := \x00 +endif + +check: $(TESTELF) + @cp $< $(HEADLESSELF) + $(PATCHELF) $(HEADLESSELF) gTestRunnerHeadless '\x01' gTestRunnerSkipIsFail "$(TEST_SKIP_IS_FAIL)" + $(ROMTESTHYDRA) $(ROMTEST) $(HEADLESSELF) + libagbsyscall: @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 66c82f39e..4d0b9a614 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1311,6 +1311,13 @@ .4byte \ptr .endm + .macro jumpifholdeffect battler:req, holdEffect:req, ptr:req + callnative BS_JumpIfHoldEffect + .byte \battler + .2byte \holdEffect + .4byte \ptr + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES @@ -1899,11 +1906,6 @@ various \battler, VARIOUS_TRY_END_NEUTRALIZING_GAS .endm - .macro trytoapplymimicry battler:req, ptr:req - various \battler, VARIOUS_TRY_TO_APPLY_MIMICRY - .4byte \ptr - .endm - .macro trynoretreat battler:req, ptr:req various \battler, VARIOUS_TRY_NO_RETREAT .4byte \ptr @@ -2024,7 +2026,6 @@ .byte \counter .4byte \ptr .endm - .macro swapstats stat:req various BS_ATTACKER, VARIOUS_SWAP_STATS .byte \stat @@ -2043,6 +2044,11 @@ various \battler, VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES .endm + .macro jumpifnovalidtargets ptr:req + various BS_ATTACKER, VARIOUS_JUMP_IF_NO_VALID_TARGETS + .4byte \ptr + .endm + @ helpful macros .macro setstatchanger stat:req, stages:req, down:req setbyte sSTATCHANGER, \stat | \stages << 3 | \down << 7 @@ -2231,3 +2237,8 @@ .endif waitmessage B_WAIT_TIME_LONG .endm + + .macro jumpifemergencyexited battler:req, ptr:req + various \battler, VARIOUS_JUMP_IF_EMERGENCY_EXITED + .4byte \ptr + .endm diff --git a/common_syms/main.txt b/common_syms/main.txt index a620083d1..f1f8076ad 100644 --- a/common_syms/main.txt +++ b/common_syms/main.txt @@ -7,3 +7,4 @@ gIntrTable gLinkVSyncDisabled IntrMain_Buffer gPcmDmaCounter +gAgbMainLoop_sp diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index e19f4c993..06a24c592 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1069,7 +1069,7 @@ Move_HAMMER_ARM: Move_GYRO_BALL: loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK waitforvisualfinish playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 @@ -1245,7 +1245,7 @@ Move_METAL_BURST: loadspritegfx ANIM_TAG_ECLIPSING_ORB loadspritegfx ANIM_TAG_RED_ORB loopsewithpan SE_M_TRI_ATTACK, -64, 18, 3 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, FALSE createvisualtask AnimTask_DefenseCurlDeformMon, 5 waitforvisualfinish setarg 7, -1 @@ -1260,7 +1260,7 @@ Move_METAL_BURST: createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 20, 192 createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 224 waitforvisualfinish - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE waitforvisualfinish end @@ -3097,7 +3097,7 @@ Move_ZEN_HEADBUTT: Move_MIRROR_SHOT: loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 1, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 1, 0, RGB_BLACK waitforvisualfinish loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_WHITE_CIRCLE_OF_LIGHT @@ -3161,7 +3161,7 @@ Move_FLASH_CANNON: playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER createvisualtask AnimTask_Flash, 2 createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 16, 0, 0x1f - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 15, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 15, 1 waitforvisualfinish clearmonbg ANIM_TARGET end @@ -3632,7 +3632,7 @@ Move_IRON_HEAD: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 1, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 1, 0, RGB_BLACK waitforvisualfinish createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER @@ -3646,7 +3646,7 @@ Move_IRON_HEAD: createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE waitforvisualfinish end @@ -4621,18 +4621,18 @@ ShadowForcePrep: monbg ANIM_ATTACKER playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER, createsprite gSimplePaletteBlendSpriteTemplate ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, 0 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 0 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATK_PARTNER, 0 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_DEF_PARTNER, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, FALSE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATK_PARTNER, FALSE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_DEF_PARTNER, FALSE createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 3 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 1 delay 80 createsprite gSimplePaletteBlendSpriteTemplate ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_BLACK - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, 1 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATK_PARTNER, 1 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_DEF_PARTNER, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, TRUE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATK_PARTNER, TRUE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_DEF_PARTNER, TRUE waitforvisualfinish clearmonbg ANIM_ATTACKER invisible 0 @@ -4648,7 +4648,7 @@ ShadowForceAttack: playsewithpan SOUND_PAN_ATTACKER, 192 createvisualtask AnimTask_NightShadeClone, 5, 85 delay 70 - createvisualtask AnimTask_ShakeMon2 2, 1, 2, 0, 12, 1 + createvisualtask AnimTask_ShakeMon2 2, ANIM_TARGET, 2, 0, 12, 1 createvisualtask AnimTask_BlendColorCycle 2, 4, 0, 2, 0, 13, 0 waitforvisualfinish clearmonbg ANIM_ATTACKER @@ -5010,7 +5010,7 @@ Move_HEAVY_SLAM: loadspritegfx ANIM_TAG_CLAW_SLASH loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK waitforvisualfinish monbg ANIM_TARGET setalpha 12, 8 @@ -5095,7 +5095,7 @@ Move_ELECTRO_BALL: createsprite gElectroBallCannonBallTemplate, ANIM_TARGET, 2, 16, 16, 8 waitforvisualfinish playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET - createvisualtask AnimTask_ShakeMon2, 0x2, ANIM_TARGET, 0x4, 0x0, 0x8, 0x1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 8, 1 call ElectricityEffect waitforvisualfinish clearmonbg ANIM_TARGET @@ -5118,7 +5118,7 @@ Move_SOAK: playsewithpan SE_M_BUBBLE, 192 delay 30 playsewithpan SE_M_WATERFALL, 63 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 17, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 17, 1 createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, RGB_BLUE createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0 @@ -10079,7 +10079,7 @@ Move_LIGHT_OF_RUIN:: panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0xF 0x6B1F launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, 0x1f, 0x10, 0, 0 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB_RED, 16, 0, 0 call LightOfRuinBeam call LightOfRuinBeam call LightOfRuinBeam @@ -12217,7 +12217,7 @@ Move_FLEUR_CANNON:: waitforvisualfinish panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, 0x1f, 16, 0, 0 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB_RED, 16, 0, 0 call FleurCannonBeam call FleurCannonBeam call FleurCannonBeam @@ -12750,7 +12750,7 @@ Move_MOONGEIST_BEAM:: delay 0x20 createsoundtask SoundTask_LoopSEAdjustPanning, 0x7, 0xCC, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5 launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, 0x1f, 0x10, 0, 0 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB_RED, 16, 0, 0 call MoongeistBeamOrbs call MoongeistBeamOrbs call MoongeistBeamOrbs @@ -14106,7 +14106,7 @@ Move_ETERNA_BEAM:: Move_STEEL_BEAM:: loadspritegfx ANIM_TAG_CLAW_SLASH loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK delay 48 loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_GUST @@ -15494,11 +15494,11 @@ FuryCutterStrongest: Move_SELF_DESTRUCT: loadspritegfx ANIM_TAG_EXPLOSION createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_RED - createvisualtask AnimTask_ShakeMon2, 5, 4, 6, 0, 38, 1 - createvisualtask AnimTask_ShakeMon2, 5, 5, 6, 0, 38, 1 - createvisualtask AnimTask_ShakeMon2, 5, 6, 6, 0, 38, 1 - createvisualtask AnimTask_ShakeMon2, 5, 7, 6, 0, 38, 1 - createvisualtask AnimTask_ShakeMon2, 5, 8, 6, 0, 38, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_PLAYER_LEFT, 6, 0, 38, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_PLAYER_RIGHT, 6, 0, 38, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_OPPONENT_LEFT, 6, 0, 38, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_OPPONENT_RIGHT, 6, 0, 38, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER_FORCE, 6, 0, 38, 1 call SelfDestructExplode call SelfDestructExplode waitforvisualfinish @@ -15660,11 +15660,11 @@ RisingWaterHitEffect: Move_EXPLOSION: loadspritegfx ANIM_TAG_EXPLOSION createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 - createvisualtask AnimTask_ShakeMon2, 5, 4, 8, 0, 40, 1 - createvisualtask AnimTask_ShakeMon2, 5, 5, 8, 0, 40, 1 - createvisualtask AnimTask_ShakeMon2, 5, 6, 8, 0, 40, 1 - createvisualtask AnimTask_ShakeMon2, 5, 7, 8, 0, 40, 1 - createvisualtask AnimTask_ShakeMon2, 5, 8, 8, 0, 40, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_PLAYER_LEFT, 8, 0, 40, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_PLAYER_RIGHT, 8, 0, 40, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_OPPONENT_LEFT, 8, 0, 40, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_OPPONENT_RIGHT, 8, 0, 40, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER_FORCE, 8, 0, 40, 1 call Explosion1 call Explosion1 waitforvisualfinish @@ -15693,12 +15693,12 @@ Explosion1: Move_DEFENSE_CURL: loadspritegfx ANIM_TAG_ECLIPSING_ORB loopsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, 18, 3 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, FALSE createvisualtask AnimTask_DefenseCurlDeformMon, 5 waitforvisualfinish createsprite gEclipsingOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 6, 0, 1 waitforvisualfinish - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE waitforvisualfinish end @@ -17952,22 +17952,22 @@ Move_LUSTER_PURGE: waitforvisualfinish createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, RGB(0, 0, 23) waitforvisualfinish - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA @@ -18392,7 +18392,7 @@ Move_AERIAL_ACE: Move_IRON_DEFENSE: loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 waitforvisualfinish end @@ -18405,7 +18405,7 @@ Move_BLOCK: Move_HOWL: loadspritegfx ANIM_TAG_NOISE_LINE - createvisualtask AnimTask_DeepInhale, 2, 0 + createvisualtask AnimTask_DeepInhale, 2, ANIM_ATTACKER delay 12 call RoarEffect createvisualtask SoundTask_PlayCryHighPitch, 2, ANIM_ATTACKER, 3 @@ -18604,7 +18604,7 @@ Move_SHOCK_WAVE: Move_HARDEN: loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK waitforvisualfinish end @@ -19665,7 +19665,7 @@ HydroPumpBeams: createsprite gHydroPumpOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, -16 delay 1 return -HydroPumpHitSplats : +HydroPumpHitSplats: createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 15, ANIM_TARGET, 1 createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, -15, ANIM_TARGET, 1 return @@ -21239,7 +21239,7 @@ Move_STEEL_WING: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK waitforvisualfinish monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -21265,7 +21265,7 @@ Move_STEEL_WING: Move_IRON_TAIL: loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 1, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 1, 0, RGB_BLACK waitforvisualfinish monbg ANIM_TARGET setalpha 12, 8 @@ -21275,7 +21275,7 @@ Move_IRON_TAIL: createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE clearmonbg ANIM_TARGET blendoff waitforvisualfinish @@ -21295,7 +21295,7 @@ Move_POISON_TAIL: createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE clearmonbg ANIM_TARGET blendoff call PoisonBubblesEffect @@ -21305,7 +21305,7 @@ Move_POISON_TAIL: Move_METAL_CLAW: loadspritegfx ANIM_TAG_CLAW_SLASH loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 + createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 @@ -21967,16 +21967,16 @@ Move_PERISH_SONG: panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 80 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_BLACK - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 0 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 0 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_PLAYER_LEFT, FALSE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_PLAYER_RIGHT, FALSE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_OPPONENT_LEFT, FALSE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_OPPONENT_RIGHT, FALSE delay 100 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_BLACK - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 1 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 1 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 1 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_PLAYER_LEFT, TRUE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_PLAYER_RIGHT, TRUE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_OPPONENT_LEFT, TRUE + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_OPPONENT_RIGHT, TRUE waitforvisualfinish end @@ -22122,7 +22122,7 @@ Move_ENCORE: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_TAG_HAND createvisualtask AnimTask_CreateSpotlight, 2 - createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0 + createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 0, 10, FALSE waitforvisualfinish createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8 createsprite gClappingHandSpriteTemplate, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9 @@ -22133,7 +22133,7 @@ Move_ENCORE: createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, ANIM_TARGET waitforvisualfinish - createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 10, 0, 1 + createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 10, 0, TRUE waitforvisualfinish createvisualtask AnimTask_RemoveSpotlight, 2 end @@ -22384,7 +22384,7 @@ Move_HYPER_BEAM: delay 30 createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 15, 0, 5 createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB(31, 0, 0), 16, 0, 0 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB_RED, 16, 0, 0 call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs @@ -22428,7 +22428,7 @@ Move_FLATTER: loadspritegfx ANIM_TAG_CONFETTI createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET createvisualtask AnimTask_CreateSpotlight, 2 - createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0 + createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 0, 10, FALSE waitforvisualfinish createsprite gFlatterSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8, 80 delay 0 @@ -22459,7 +22459,7 @@ Move_FLATTER: delay 5 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 10, 0, 1 + createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 10, 0, TRUE waitforvisualfinish createvisualtask AnimTask_RemoveSpotlight, 2 end @@ -23740,10 +23740,10 @@ Move_TWISTER: createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1 delay 4 - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 @@ -24949,7 +24949,7 @@ General_StrongWinds:: General_PrimalReversion:: launchtask AnimTask_PrimalReversion 0x5 0x0 jumpargeq 0x0, ITEM_RED_ORB, General_PrimalReversion_Omega - jumpargeq 0x1, ITEM_BLUE_ORB, General_PrimalReversion_Alpha + jumpargeq 0x0, ITEM_BLUE_ORB, General_PrimalReversion_Alpha General_PrimalReversion_Alpha: loadspritegfx ANIM_TAG_ALPHA_STONE loadspritegfx ANIM_TAG_MEGA_PARTICLES diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 238c0e21b..1064bb128 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -301,7 +301,6 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectQuiverDance @ EFFECT_QUIVER_DANCE .4byte BattleScript_EffectCoil @ EFFECT_COIL .4byte BattleScript_EffectElectrify @ EFFECT_ELECTRIFY - .4byte BattleScript_EffectBurnHit @ EFFECT_SCALD .4byte BattleScript_EffectReflectType @ EFFECT_REFLECT_TYPE .4byte BattleScript_EffectSoak @ EFFECT_SOAK .4byte BattleScript_EffectGrowth @ EFFECT_GROWTH @@ -2596,23 +2595,6 @@ BattleScript_EffectPsychicTerrain: playanimation BS_ATTACKER, B_ANIM_RESTORE_BG call BattleScript_ActivateTerrainAbilities call BattleScript_TerrainSeedLoop - jumpifabilitypresent ABILITY_MIMICRY, BattleScript_ApplyMimicry - goto BattleScript_MoveEnd - -BattleScript_ApplyMimicry:: - savetarget - setbyte gBattlerTarget, 0 -BattleScript_MimicryLoopIter: - copybyte sBATTLER, gBattlerTarget - trytoapplymimicry BS_TARGET, BattleScript_MimicryLoop_NextBattler - copybyte gBattlerAbility, sBATTLER - call BattleScript_AbilityPopUp - printstring STRINGID_BATTLERTYPECHANGEDTO - waitmessage B_WAIT_TIME_LONG -BattleScript_MimicryLoop_NextBattler: - addbyte gBattlerTarget, 0x1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_MimicryLoopIter - restoretarget goto BattleScript_MoveEnd BattleScript_EffectTopsyTurvy: @@ -3143,6 +3125,7 @@ BattleScript_EffectHitEscape: jumpifbyte CMP_NOT_EQUAL gBattleOutcome 0, BattleScript_HitEscapeEnd jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_HitEscapeEnd jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_HitEscapeEnd + jumpifemergencyexited BS_TARGET, BattleScript_HitEscapeEnd openpartyscreen BS_ATTACKER, BattleScript_HitEscapeEnd switchoutabilities BS_ATTACKER waitstate @@ -6796,12 +6779,14 @@ BattleScript_OverworldWeatherStarts:: printfromtable gWeatherStartsStringIds waitmessage B_WAIT_TIME_LONG playanimation_var BS_ATTACKER, sB_ANIM_ARG1 + call BattleScript_WeatherFormChanges end3 BattleScript_OverworldTerrain:: printfromtable gTerrainStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG + call BattleScript_TerrainSeedLoop end3 BattleScript_SideStatusWoreOff:: @@ -7258,6 +7243,7 @@ BattleScript_GulpMissileGulping:: tryfaintmon BS_ATTACKER getbattlerfainted BS_ATTACKER jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_GulpMissileNoSecondEffectGulping + jumpifholdeffect BS_ATTACKER, HOLD_EFFECT_CLEAR_AMULET, BattleScript_GulpMissileNoSecondEffectGulping jumpifability BS_ATTACKER, ABILITY_CLEAR_BODY, BattleScript_GulpMissileNoSecondEffectGulping jumpifability BS_ATTACKER, ABILITY_FULL_METAL_BODY, BattleScript_GulpMissileNoSecondEffectGulping jumpifability BS_ATTACKER, ABILITY_WHITE_SMOKE, BattleScript_GulpMissileNoSecondEffectGulping @@ -7894,6 +7880,35 @@ BattleScript_TargetFormChange:: handleformchange BS_TARGET, 2 return +BattleScript_TargetFormChangeWithString:: + pause 5 + copybyte gBattlerAbility, gBattlerTarget + call BattleScript_AbilityPopUp + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + handleformchange BS_TARGET, 0 + handleformchange BS_TARGET, 1 + playanimation BS_TARGET, B_ANIM_FORM_CHANGE, NULL + waitanimation + handleformchange BS_TARGET, 2 + printstring STRINGID_PKMNTRANSFORMED + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_BattlerFormChangeWithStringEnd3:: + pause 5 + call BattleScript_AbilityPopUp + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + handleformchange BS_SCRIPTING, 0 + handleformchange BS_SCRIPTING, 1 + playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE, NULL + waitanimation + handleformchange BS_SCRIPTING, 2 + printstring STRINGID_PKMNTRANSFORMED + waitmessage B_WAIT_TIME_LONG + end3 + BattleScript_IllusionOff:: spriteignore0hp TRUE playanimation BS_TARGET, B_ANIM_ILLUSION_OFF @@ -8537,6 +8552,7 @@ BattleScript_TryAdrenalineOrbRet: return BattleScript_IntimidateActivates:: + jumpifnovalidtargets BattleScript_IntimidateEnd showabilitypopup BS_ATTACKER pause B_WAIT_TIME_LONG destroyabilitypopup @@ -8545,6 +8561,7 @@ BattleScript_IntimidateLoop: jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_IntimidateLoopIncrement jumpiftargetally BattleScript_IntimidateLoopIncrement jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement + jumpifholdeffect BS_TARGET, HOLD_EFFECT_CLEAR_AMULET, BattleScript_IntimidatePrevented_Item jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_IntimidatePrevented @@ -8575,6 +8592,7 @@ BattleScript_IntimidateEnd: BattleScript_IntimidatePrevented: call BattleScript_AbilityPopUp pause B_WAIT_TIME_LONG +BattleScript_IntimidatePrevented_Item: setbyte gBattleCommunication STAT_ATK stattextbuffer BS_TARGET printstring STRINGID_STATWASNOTLOWERED @@ -8690,6 +8708,13 @@ BattleScript_AttackWeakenedByStrongWinds:: waitmessage B_WAIT_TIME_LONG return +BattleScript_MimicryActivates_End3:: + pause B_WAIT_TIME_SHORT + call BattleScript_AbilityPopUp + printstring STRINGID_BATTLERTYPECHANGEDTO + waitmessage B_WAIT_TIME_SHORT + end3 + BattleScript_SnowWarningActivates:: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp @@ -8710,6 +8735,7 @@ BattleScript_TerrainSeedLoop_NextBattler: addbyte gBattlerTarget, 0x1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_TerrainSeedLoopIter restoretarget + call BattleScript_ActivateSwitchInAbilities return BattleScript_ActivateSwitchInAbilities: @@ -8950,6 +8976,16 @@ BattleScript_SoundproofProtected:: orhalfword gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE goto BattleScript_MoveEnd +BattleScript_IceFaceNullsDamage:: + attackstring + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + call BattleScript_TargetFormChangeWithString + goto BattleScript_MoveEnd + BattleScript_DazzlingProtected:: attackstring ppreduce @@ -9008,12 +9044,6 @@ BattleScript_ColorChangeActivates:: waitmessage B_WAIT_TIME_LONG return -BattleScript_MimicryActivatesEnd3:: - call BattleScript_AbilityPopUp - printstring STRINGID_BATTLERTYPECHANGEDTO - waitmessage B_WAIT_TIME_LONG - end3 - BattleScript_ProteanActivates:: pause B_WAIT_TIME_SHORTEST call BattleScript_AbilityPopUp diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index 4e7284fd0..e99c7f88e 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -411,7 +411,13 @@ BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge:: special LoadPlayerParty closemessage delay 2 +@ The command tower_save ultimately calls TrySavingData(SAVE_LINK), which writes data in SaveBlock1 and SaveBlock2 +@ to the flash, but not data in PokemonStorage. The SaveGame script that follows asks the player to do a full save, +@ which they can opt out of. As a result the player can save their party and quit without having saved the PC. +@ This allows players to clone pokemon and their held items by withdrawing them (or erase them by despositing). +.ifndef BUGFIX tower_save 0 +.endif call Common_EventScript_SaveGame setvar VAR_TEMP_0, 255 goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed diff --git a/data/scripts/repel.inc b/data/scripts/repel.inc index fc32df1d9..ab7924bd2 100644 --- a/data/scripts/repel.inc +++ b/data/scripts/repel.inc @@ -19,6 +19,7 @@ EventScript_RepelUseAnother: lock msgbox Text_UseAnotherRepel, MSGBOX_YESNO .if I_REPEL_LURE_MENU == TRUE + goto_if_eq VAR_RESULT, NO, EventScript_RepelWoreOff_End callnative TryDrawRepelMenu goto_if_eq VAR_RESULT, FALSE, EventScript_RepelWoreOff_Chose waitstate @@ -68,6 +69,7 @@ EventScript_LureUseAnother: lock msgbox Text_UseAnotherLure, MSGBOX_YESNO .if I_REPEL_LURE_MENU == TRUE + goto_if_eq VAR_RESULT, NO, EventScript_LureWoreOff_End callnative TryDrawLureMenu goto_if_eq VAR_RESULT, FALSE, EventScript_LureWoreOff_Chose waitstate diff --git a/data/specials.inc b/data/specials.inc index a1b2fd201..9c336b376 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -258,7 +258,7 @@ gSpecials:: def_special CallSlateportTentFunction def_special ChoosePartyForBattleFrontier def_special ValidateEReaderTrainer - def_special GetBestBattleTowerStreak + def_special GetBattleTowerSinglesStreak def_special ReducePlayerPartyToSelectedMons def_special BedroomPC def_special PlayerPC @@ -430,7 +430,7 @@ gSpecials:: def_special ShowWirelessCommunicationScreen def_special InitUnionRoom def_special BufferUnionRoomPlayerName - def_special RetrieveWonderNewsVal + def_special WonderNews_GetRewardInfo def_special ChooseMonForWirelessMinigame def_special Script_ResetUnionRoomTrade def_special IsBadEggInParty diff --git a/gflib/bg.c b/gflib/bg.c index f300e4609..968c46272 100644 --- a/gflib/bg.c +++ b/gflib/bg.c @@ -1053,7 +1053,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt for (x16 = x; x16 < (x + width); x16++) { CopyTileMapEntry(&firstTileNum, &((u16 *)sGpuBgConfigs2[bg].tilemap)[(u16)GetTileMapIndexFromCoords(x16, y16, attribute, mode, mode2)], paletteSlot, 0, 0); - firstTileNum = (firstTileNum & (MAPGRID_COLLISION_MASK | MAPGRID_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & MAPGRID_METATILE_ID_MASK); + firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF); } } break; @@ -1064,7 +1064,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt for (x16 = x; x16 < (x + width); x16++) { ((u8 *)sGpuBgConfigs2[bg].tilemap)[(y16 * mode3) + x16] = firstTileNum; - firstTileNum = (firstTileNum & (MAPGRID_COLLISION_MASK | MAPGRID_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & MAPGRID_METATILE_ID_MASK); + firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF); } } break; diff --git a/gflib/sprite.c b/gflib/sprite.c index cbcd6fb7c..c489eb6a4 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1615,7 +1615,7 @@ void LoadSpritePalettes(const struct SpritePalette *palettes) void DoLoadSpritePalette(const u16 *src, u16 paletteOffset) { - LoadPalette(src, paletteOffset + 0x100, 32); + LoadPalette(src, OBJ_PLTT_OFFSET + paletteOffset, PLTT_SIZE_4BPP); } u8 AllocSpritePalette(u16 tag) diff --git a/graphics/battle_frontier/tourney_info_card.png b/graphics/battle_frontier/tourney_info_card.png index a3c225c89..e6fff76ae 100644 Binary files a/graphics/battle_frontier/tourney_info_card.png and b/graphics/battle_frontier/tourney_info_card.png differ diff --git a/graphics/battle_interface/ability_pop_up.png b/graphics/battle_interface/ability_pop_up.png index 92971a7a5..ede0a7b5d 100644 Binary files a/graphics/battle_interface/ability_pop_up.png and b/graphics/battle_interface/ability_pop_up.png differ diff --git a/graphics/battle_interface/ball_caught_indicator.png b/graphics/battle_interface/ball_caught_indicator.png new file mode 100644 index 000000000..5473d53df Binary files /dev/null and b/graphics/battle_interface/ball_caught_indicator.png differ diff --git a/graphics/battle_interface/ball_display_unused_extra.png b/graphics/battle_interface/ball_display_unused_extra.png deleted file mode 100644 index 4eb765d28..000000000 Binary files a/graphics/battle_interface/ball_display_unused_extra.png and /dev/null differ diff --git a/graphics/battle_interface/status.png b/graphics/battle_interface/status.png new file mode 100644 index 000000000..9fae45b71 Binary files /dev/null and b/graphics/battle_interface/status.png differ diff --git a/graphics/battle_interface/status2.png b/graphics/battle_interface/status2.png index a412e160e..af7ce05d3 100644 Binary files a/graphics/battle_interface/status2.png and b/graphics/battle_interface/status2.png differ diff --git a/graphics/battle_interface/status3.png b/graphics/battle_interface/status3.png index 8a0db0321..d0febfb17 100644 Binary files a/graphics/battle_interface/status3.png and b/graphics/battle_interface/status3.png differ diff --git a/graphics/battle_interface/status4.png b/graphics/battle_interface/status4.png index e267940be..9704a3611 100644 Binary files a/graphics/battle_interface/status4.png and b/graphics/battle_interface/status4.png differ diff --git a/graphics/battle_interface/status_brn.png b/graphics/battle_interface/status_brn.png deleted file mode 100644 index 8f13fe6de..000000000 Binary files a/graphics/battle_interface/status_brn.png and /dev/null differ diff --git a/graphics/battle_interface/status_frz.png b/graphics/battle_interface/status_frz.png deleted file mode 100644 index ce10db3e4..000000000 Binary files a/graphics/battle_interface/status_frz.png and /dev/null differ diff --git a/graphics/battle_interface/status_par.png b/graphics/battle_interface/status_par.png deleted file mode 100644 index 904b13242..000000000 Binary files a/graphics/battle_interface/status_par.png and /dev/null differ diff --git a/graphics/battle_interface/status_psn.png b/graphics/battle_interface/status_psn.png deleted file mode 100644 index 700e7038a..000000000 Binary files a/graphics/battle_interface/status_psn.png and /dev/null differ diff --git a/graphics/battle_interface/status_slp.png b/graphics/battle_interface/status_slp.png deleted file mode 100644 index bcbd16d1d..000000000 Binary files a/graphics/battle_interface/status_slp.png and /dev/null differ diff --git a/graphics/berry_crush/crusher.pal b/graphics/berry_crush/crusher.pal deleted file mode 100644 index 13ea34e59..000000000 --- a/graphics/berry_crush/crusher.pal +++ /dev/null @@ -1,147 +0,0 @@ -JASC-PAL -0100 -144 -98 172 180 -255 213 156 -255 197 139 -255 164 106 -238 131 82 -222 123 74 -213 98 49 -197 82 41 -156 213 189 -123 180 156 -222 156 255 -172 123 222 -255 0 255 -255 0 255 -230 230 255 -65 74 90 -156 148 172 -255 213 156 -255 197 139 -255 164 106 -238 131 82 -222 123 74 -213 98 49 -197 82 41 -255 238 0 -230 189 0 -180 180 180 -139 139 139 -255 0 255 -255 0 255 -230 230 255 -65 74 90 -156 148 172 -255 213 156 -255 197 139 -255 164 106 -238 131 82 -222 123 74 -213 98 49 -197 82 41 -197 213 246 -255 255 255 -238 238 246 -205 205 213 -255 0 255 -255 0 255 -230 230 255 -65 74 90 -255 180 255 -164 172 172 -98 106 115 -123 131 139 -139 148 156 -148 222 164 -156 189 222 -197 213 246 -180 164 115 -205 189 148 -213 205 172 -230 222 189 -246 238 205 -139 123 74 -74 131 189 -65 74 90 -0 0 0 -148 222 164 -164 230 172 -180 238 189 -197 246 205 -213 255 222 -238 255 238 -255 255 255 -65 180 238 -255 255 255 -0 197 57 -255 255 255 -246 213 0 -255 0 255 -246 238 205 -139 123 74 -255 164 106 -164 172 172 -98 106 115 -123 131 139 -139 148 156 -115 156 189 -156 189 222 -197 213 246 -180 164 115 -205 189 148 -213 205 172 -230 222 189 -246 238 205 -139 123 74 -74 131 189 -65 74 90 -0 0 0 -148 222 164 -164 230 172 -180 238 189 -197 246 205 -213 255 222 -238 255 238 -255 255 255 -189 65 255 -255 255 255 -123 123 123 -255 0 255 -246 238 205 -139 123 74 -180 189 189 -255 255 255 -0 0 255 -164 172 172 -98 106 115 -123 131 139 -139 148 156 -115 156 189 -156 189 222 -148 222 164 -180 164 115 -205 189 148 -213 205 172 -230 222 189 -246 238 205 -139 123 74 -74 131 189 -65 74 90 -98 172 180 -41 41 57 -213 213 222 -205 205 205 -238 238 238 -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 diff --git a/graphics/berry_crush/crusher.png b/graphics/berry_crush/crusher.png index 6e43adb27..6a57360a7 100644 Binary files a/graphics/berry_crush/crusher.png and b/graphics/berry_crush/crusher.png differ diff --git a/graphics/cable_car/bg.pal b/graphics/cable_car/bg.pal deleted file mode 100644 index d543b4cce..000000000 --- a/graphics/cable_car/bg.pal +++ /dev/null @@ -1,67 +0,0 @@ -JASC-PAL -0100 -64 -0 0 0 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -255 230 139 -238 205 123 -222 189 115 -205 172 106 -189 156 98 -180 139 90 -230 106 189 -230 106 189 -230 106 189 -0 0 0 -189 255 148 -156 222 98 -131 197 74 -106 164 49 -82 115 24 -57 82 0 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -230 106 189 -0 0 0 -213 238 255 -189 230 255 -164 222 255 -139 213 255 -115 205 255 -98 205 255 -197 205 222 -189 189 197 -180 164 164 -156 131 131 -131 90 90 -123 65 65 -230 106 189 -230 106 189 -230 106 189 -0 0 0 -197 205 246 -172 189 238 -156 172 238 -131 156 230 -115 139 230 -98 123 230 -65 74 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/cable_car/bg.png b/graphics/cable_car/bg.png index f268ea990..6a21ca354 100644 Binary files a/graphics/cable_car/bg.png and b/graphics/cable_car/bg.png differ diff --git a/graphics/contest/interface.png b/graphics/contest/interface.png index 5e3b40462..f4ad5b854 100644 Binary files a/graphics/contest/interface.png and b/graphics/contest/interface.png differ diff --git a/graphics/contest/interface_audience.pal b/graphics/contest/interface_audience.pal deleted file mode 100644 index 3fb174790..000000000 --- a/graphics/contest/interface_audience.pal +++ /dev/null @@ -1,259 +0,0 @@ -JASC-PAL -0100 -256 -0 0 0 -255 255 255 -230 230 230 -197 197 197 -148 148 148 -74 65 82 -0 255 0 -0 255 0 -65 74 123 -139 123 131 -82 82 197 -189 82 74 -131 74 98 -74 74 131 -131 139 222 -106 164 164 -0 0 0 -115 123 156 -90 65 57 -148 197 106 -123 98 65 -131 123 49 -222 189 148 -164 131 106 -115 164 82 -164 148 57 -90 106 139 -180 172 82 -82 139 49 -255 230 189 -222 131 41 -246 246 222 -205 148 115 -255 106 115 -255 57 57 -156 0 0 -164 222 255 -106 148 255 -49 82 255 -255 255 115 -246 222 65 -230 106 0 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -0 0 0 -255 255 115 -246 222 90 -238 189 65 -238 164 41 -230 131 16 -230 106 0 -255 41 0 -255 148 82 -255 255 164 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -0 0 0 -255 131 106 -197 24 16 -164 222 255 -106 148 255 -49 82 255 -255 197 255 -255 139 255 -213 0 139 -148 255 164 -65 205 57 -246 222 65 -230 106 0 -255 255 255 -65 74 106 -65 74 106 -197 255 255 -246 246 90 -205 205 65 -255 255 180 -180 180 24 -74 65 82 -255 255 255 -156 156 156 -255 156 156 -0 0 0 -255 255 255 -255 148 148 -255 123 98 -255 0 0 -148 148 148 -0 0 0 -197 255 255 -246 246 90 -205 205 65 -255 255 180 -180 180 24 -74 65 82 -255 255 255 -156 156 156 -255 156 156 -0 0 0 -255 255 255 -255 148 148 -255 123 98 -255 0 0 -148 148 148 -0 0 0 -197 255 255 -246 246 90 -205 205 65 -255 255 180 -180 180 24 -74 65 82 -255 255 255 -156 156 156 -255 156 156 -0 0 0 -255 255 255 -255 148 148 -255 123 98 -255 0 0 -148 148 148 -0 0 0 -197 255 255 -213 255 213 -156 222 148 -222 255 230 -123 189 115 -74 65 82 -255 255 255 -156 156 156 -255 156 156 -0 0 0 -255 255 255 -255 148 148 -255 123 98 -255 0 0 -148 148 148 -0 0 0 -0 172 255 -0 0 0 -255 255 255 -230 230 213 -0 0 0 -197 197 197 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -197 255 255 -0 0 0 -0 0 0 -0 0 0 -65 0 0 -123 0 0 -189 0 0 -255 8 0 -255 65 0 -255 123 0 -255 189 0 -255 255 0 -255 255 123 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -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 -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 -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 -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 -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 diff --git a/graphics/contest/results_screen/tiles.pal b/graphics/contest/results_screen/tiles.pal deleted file mode 100644 index 869aef9e1..000000000 --- a/graphics/contest/results_screen/tiles.pal +++ /dev/null @@ -1,259 +0,0 @@ -JASC-PAL -0100 -256 -0 0 0 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -255 106 115 -255 57 57 -205 32 0 -246 213 0 -255 123 98 -156 180 90 -164 148 57 -90 106 139 -180 172 82 -0 0 0 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -164 222 255 -106 148 255 -24 57 205 -246 213 0 -255 123 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -255 197 255 -255 139 255 -213 0 139 -246 213 0 -255 123 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -180 255 197 -148 255 164 -65 172 57 -246 213 0 -255 123 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 255 255 -189 189 197 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -255 255 164 -246 213 0 -230 106 0 -246 213 0 -255 123 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -197 255 255 -255 255 255 -213 213 213 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -164 222 255 -106 148 255 -49 82 255 -180 255 197 -148 255 164 -65 172 57 -0 0 0 -0 0 0 -0 0 0 -197 255 255 -255 255 255 -213 213 213 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -255 139 230 -255 139 230 -255 49 156 -255 255 0 -255 255 0 -189 172 0 -41 49 90 -41 49 90 -0 0 0 -197 123 131 -255 255 255 -230 246 255 -205 238 255 -180 238 255 -156 230 255 -139 230 255 -255 205 230 -255 255 139 -255 230 255 -255 255 197 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -197 255 255 -255 255 255 -213 213 213 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -255 172 197 -255 172 172 -255 180 148 -255 189 123 -255 197 98 -255 205 82 -156 156 156 -156 156 156 -156 156 156 -197 255 255 -255 255 255 -213 213 213 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -164 222 255 -106 148 255 -49 82 255 -180 255 197 -148 255 164 -65 172 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -164 222 255 -106 230 222 -49 238 189 -0 255 156 -0 255 156 -82 255 98 -164 255 49 -255 255 0 -255 172 16 -255 90 32 -255 8 57 -230 57 106 -205 115 156 -180 164 205 -164 222 255 -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 -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 -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 -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 -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 diff --git a/graphics/contest/results_screen/tiles.png b/graphics/contest/results_screen/tiles.png index 106b975cf..bb6aa701e 100644 Binary files a/graphics/contest/results_screen/tiles.png and b/graphics/contest/results_screen/tiles.png differ diff --git a/graphics/door_anims/battle_dome_pre_battle_room.png b/graphics/door_anims/battle_dome_pre_battle_room.png index 6e4e7ee18..114ed3a00 100644 Binary files a/graphics/door_anims/battle_dome_pre_battle_room.png and b/graphics/door_anims/battle_dome_pre_battle_room.png differ diff --git a/graphics/door_anims/dewford.png b/graphics/door_anims/dewford.png index 86ac1fe4a..708b52ccb 100644 Binary files a/graphics/door_anims/dewford.png and b/graphics/door_anims/dewford.png differ diff --git a/graphics/door_anims/fallarbor_dark_roof.png b/graphics/door_anims/fallarbor_dark_roof.png index ec43e37f9..0785945d3 100644 Binary files a/graphics/door_anims/fallarbor_dark_roof.png and b/graphics/door_anims/fallarbor_dark_roof.png differ diff --git a/graphics/door_anims/lilycove_dept_store_elevator.png b/graphics/door_anims/lilycove_dept_store_elevator.png index 8285e69c4..2929e300b 100644 Binary files a/graphics/door_anims/lilycove_dept_store_elevator.png and b/graphics/door_anims/lilycove_dept_store_elevator.png differ diff --git a/graphics/door_anims/littleroot.png b/graphics/door_anims/littleroot.png index 8c1ca34a5..599517ceb 100644 Binary files a/graphics/door_anims/littleroot.png and b/graphics/door_anims/littleroot.png differ diff --git a/graphics/door_anims/mossdeep.png b/graphics/door_anims/mossdeep.png index 163b2d6dd..2970d4d3b 100644 Binary files a/graphics/door_anims/mossdeep.png and b/graphics/door_anims/mossdeep.png differ diff --git a/graphics/door_anims/oldale.png b/graphics/door_anims/oldale.png index cf637918a..81f50d94d 100644 Binary files a/graphics/door_anims/oldale.png and b/graphics/door_anims/oldale.png differ diff --git a/graphics/door_anims/poke_mart.png b/graphics/door_anims/poke_mart.png index 2d9b7d319..12a176069 100644 Binary files a/graphics/door_anims/poke_mart.png and b/graphics/door_anims/poke_mart.png differ diff --git a/graphics/door_anims/slateport.png b/graphics/door_anims/slateport.png index 1283395ea..c82b5a678 100644 Binary files a/graphics/door_anims/slateport.png and b/graphics/door_anims/slateport.png differ diff --git a/graphics/door_anims/trainer_hill_roof_elevator.png b/graphics/door_anims/trainer_hill_roof_elevator.png index dc9c6bcee..a143b8c59 100644 Binary files a/graphics/door_anims/trainer_hill_roof_elevator.png and b/graphics/door_anims/trainer_hill_roof_elevator.png differ diff --git a/graphics/door_anims/verdanturf.png b/graphics/door_anims/verdanturf.png index 204a47612..aff9a0f58 100644 Binary files a/graphics/door_anims/verdanturf.png and b/graphics/door_anims/verdanturf.png differ diff --git a/graphics/frontier_pass/bg.pal b/graphics/frontier_pass/bg.pal deleted file mode 100644 index 2bfcff098..000000000 --- a/graphics/frontier_pass/bg.pal +++ /dev/null @@ -1,131 +0,0 @@ -JASC-PAL -0100 -128 -57 74 74 -255 255 255 -205 205 205 -164 164 164 -123 123 123 -98 98 115 -57 74 74 -230 246 255 -98 41 65 -255 255 230 -230 230 197 -255 32 32 -98 164 222 -82 139 197 -74 115 172 -74 98 106 -139 98 115 -255 255 255 -230 255 222 -164 164 164 -123 123 123 -98 98 115 -41 57 65 -57 106 139 -65 139 197 -180 230 156 -148 238 131 -131 222 115 -82 172 74 -106 189 255 -205 205 205 -0 0 0 -139 98 115 -238 255 246 -213 238 230 -164 164 164 -123 123 123 -98 98 115 -41 57 65 -57 106 139 -65 139 197 -189 213 205 -148 180 164 -106 148 123 -65 115 90 -106 189 255 -205 205 205 -0 0 0 -139 98 115 -255 246 230 -246 230 213 -205 156 90 -180 131 65 -98 98 115 -41 57 65 -57 106 139 -65 139 197 -230 189 139 -205 156 115 -180 131 82 -156 106 41 -106 189 255 -205 205 205 -0 0 0 -139 98 115 -246 246 255 -230 230 238 -189 189 197 -156 156 156 -156 106 41 -41 57 65 -57 106 139 -65 139 197 -230 230 238 -189 189 197 -156 156 156 -123 123 123 -106 189 255 -205 205 205 -0 0 0 -139 98 115 -246 246 222 -246 238 172 -164 164 164 -123 123 123 -98 98 115 -41 57 65 -57 106 139 -65 139 197 -246 230 139 -230 213 49 -213 197 57 -156 115 57 -106 189 255 -205 205 205 -0 0 0 -0 0 0 -106 131 238 -139 164 213 -189 205 205 -213 197 131 -246 222 164 -172 131 131 -148 98 106 -115 106 148 -106 123 197 -197 230 230 -139 189 131 -106 156 74 -148 222 189 -238 156 131 -238 246 255 -0 0 0 -123 148 189 -65 74 106 -106 98 115 -82 90 180 -139 123 139 -164 172 189 -106 148 131 -180 205 213 -156 156 156 -213 238 230 -255 255 255 -213 180 172 -222 230 238 -213 205 156 -0 0 0 diff --git a/graphics/frontier_pass/bg.png b/graphics/frontier_pass/bg.png index 520c34b3d..9e7c59c97 100644 Binary files a/graphics/frontier_pass/bg.png and b/graphics/frontier_pass/bg.png differ diff --git a/graphics/frontier_pass/map_screen.png b/graphics/frontier_pass/map_screen.png index 5d2b4467f..64061d45a 100644 Binary files a/graphics/frontier_pass/map_screen.png and b/graphics/frontier_pass/map_screen.png differ diff --git a/graphics/interface/menu_info.png b/graphics/interface/menu_info.png index b16d008cb..a7439e2a0 100644 Binary files a/graphics/interface/menu_info.png and b/graphics/interface/menu_info.png differ diff --git a/graphics/intro/scene_1/bg.pal b/graphics/intro/scene_1/bg.pal deleted file mode 100644 index 95145b854..000000000 --- a/graphics/intro/scene_1/bg.pal +++ /dev/null @@ -1,259 +0,0 @@ -JASC-PAL -0100 -256 -0 0 0 -24 90 0 -49 115 0 -65 139 0 -90 172 0 -164 172 255 -164 197 255 -139 213 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -148 205 98 -180 255 131 -164 238 98 -0 0 0 -24 90 0 -49 115 0 -65 139 0 -90 172 0 -164 172 255 -164 197 255 -139 213 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -148 205 98 -180 255 131 -164 238 98 -0 0 0 -24 82 0 -32 90 0 -41 98 0 -49 115 0 -57 123 0 -65 139 0 -74 148 0 -82 156 0 -90 172 0 -0 16 0 -8 41 0 -16 57 0 -123 197 16 -180 255 131 -164 238 98 -0 0 0 -24 82 0 -32 90 0 -41 98 0 -49 115 0 -57 123 0 -65 139 0 -74 148 0 -82 156 0 -90 172 0 -8 24 8 -8 41 0 -16 57 0 -148 205 98 -98 172 74 -238 255 238 -0 0 0 -24 90 0 -49 115 0 -65 139 0 -90 172 0 -164 172 255 -164 197 255 -139 213 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -148 205 98 -180 255 131 -164 238 98 -0 0 0 -255 255 255 -246 246 238 -238 246 230 -230 246 222 -205 238 222 -180 230 230 -172 213 238 -131 205 238 -180 180 156 -213 213 230 -205 197 213 -189 230 115 -156 213 98 -222 230 222 -115 172 98 -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 -156 246 0 -65 90 156 -49 115 255 -82 82 82 -98 98 98 -115 115 115 -131 131 131 -148 148 148 -164 164 164 -180 180 180 -197 197 197 -213 213 213 -230 230 230 -255 255 255 -255 255 255 -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 -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 -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 -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 -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 -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 -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 -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 diff --git a/graphics/intro/scene_1/bg.png b/graphics/intro/scene_1/bg.png index 041901463..df9f920ba 100644 Binary files a/graphics/intro/scene_1/bg.png and b/graphics/intro/scene_1/bg.png differ diff --git a/graphics/misc/mirage_tower.png b/graphics/misc/mirage_tower.png index 69ac6a51e..c851953d2 100644 Binary files a/graphics/misc/mirage_tower.png and b/graphics/misc/mirage_tower.png differ diff --git a/graphics/party_menu/bg.pal b/graphics/party_menu/bg.pal deleted file mode 100644 index 0b4b30f81..000000000 --- a/graphics/party_menu/bg.pal +++ /dev/null @@ -1,179 +0,0 @@ -JASC-PAL -0100 -176 -123 156 115 -255 255 255 -106 106 106 -0 0 0 -65 205 255 -0 139 189 -49 189 238 -255 156 148 -189 90 82 -222 123 115 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -139 148 123 -74 74 98 -65 156 148 -139 156 41 -205 213 123 -180 180 90 -82 65 74 -32 16 24 -255 0 255 -255 0 255 -255 255 255 -230 238 139 -98 90 0 -255 0 255 -255 0 255 -115 90 180 -139 148 123 -255 115 49 -65 156 148 -139 156 41 -205 213 123 -180 180 90 -82 65 74 -82 82 90 -255 0 255 -255 0 255 -255 255 255 -123 205 180 -57 148 123 -255 0 255 -255 0 255 -164 115 246 -123 156 115 -74 74 98 -115 115 115 -255 255 255 -131 197 222 -57 148 222 -41 123 180 -131 197 222 -41 123 180 -115 255 172 -90 213 131 -65 205 255 -0 98 148 -82 82 82 -255 213 82 -255 180 65 -123 156 115 -74 74 98 -115 115 115 -255 255 255 -213 197 90 -197 164 24 -156 156 32 -213 197 90 -156 156 32 -255 230 57 -205 172 8 -255 156 148 -156 65 57 -82 82 82 -255 213 82 -255 180 65 -123 156 115 -74 74 98 -115 115 115 -255 255 255 -213 164 32 -197 106 16 -164 74 0 -213 164 32 -164 74 0 -255 115 49 -197 57 0 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -123 156 115 -255 115 49 -115 115 115 -255 255 255 -180 255 164 -123 222 131 -123 156 98 -255 115 49 -255 115 49 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -57 156 255 -255 115 49 -115 115 115 -255 255 255 -172 238 255 -123 213 238 -74 172 205 -255 115 49 -255 115 49 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -57 156 255 -255 115 49 -115 115 115 -255 255 255 -246 246 148 -246 230 98 -222 197 32 -255 115 49 -255 115 49 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -57 156 255 -255 115 49 -115 115 115 -255 255 255 -255 213 222 -255 189 148 -238 164 131 -255 115 49 -255 115 49 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -57 156 255 -255 255 115 -115 115 115 -255 255 255 -180 255 164 -123 222 131 -131 172 106 -255 255 115 -255 255 115 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 diff --git a/graphics/party_menu/bg.png b/graphics/party_menu/bg.png index c58f3aae9..21d1e5ef1 100644 Binary files a/graphics/party_menu/bg.png and b/graphics/party_menu/bg.png differ diff --git a/graphics/picture_frame/beauty.png b/graphics/picture_frame/beauty.png index 72e9d0ab7..2a9c2d644 100644 Binary files a/graphics/picture_frame/beauty.png and b/graphics/picture_frame/beauty.png differ diff --git a/graphics/picture_frame/cool.png b/graphics/picture_frame/cool.png index 33f2baf09..cd2910c38 100644 Binary files a/graphics/picture_frame/cool.png and b/graphics/picture_frame/cool.png differ diff --git a/graphics/picture_frame/cute.png b/graphics/picture_frame/cute.png index 38e6ba209..6d689c918 100644 Binary files a/graphics/picture_frame/cute.png and b/graphics/picture_frame/cute.png differ diff --git a/graphics/picture_frame/lobby.png b/graphics/picture_frame/lobby.png index 2f04105ff..bfa6c0dd9 100644 Binary files a/graphics/picture_frame/lobby.png and b/graphics/picture_frame/lobby.png differ diff --git a/graphics/picture_frame/smart.png b/graphics/picture_frame/smart.png index 93fbf373f..4c8c4fe60 100644 Binary files a/graphics/picture_frame/smart.png and b/graphics/picture_frame/smart.png differ diff --git a/graphics/picture_frame/tough.png b/graphics/picture_frame/tough.png index c7db2e3be..4efccc288 100644 Binary files a/graphics/picture_frame/tough.png and b/graphics/picture_frame/tough.png differ diff --git a/graphics/pokemon/abomasnow/anim_front.png b/graphics/pokemon/abomasnow/anim_front.png index b7b43b1fd..3ba7033b8 100644 Binary files a/graphics/pokemon/abomasnow/anim_front.png and b/graphics/pokemon/abomasnow/anim_front.png differ diff --git a/graphics/pokemon/abomasnow/front.png b/graphics/pokemon/abomasnow/front.png index 49a9d0649..eec72b647 100644 Binary files a/graphics/pokemon/abomasnow/front.png and b/graphics/pokemon/abomasnow/front.png differ diff --git a/graphics/pokemon/abomasnow/normal.pal b/graphics/pokemon/abomasnow/normal.pal index 4408f90cd..764cb356c 100644 --- a/graphics/pokemon/abomasnow/normal.pal +++ b/graphics/pokemon/abomasnow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 80 88 -112 160 144 -16 16 16 -64 120 112 -88 104 136 +32 96 88 +80 160 144 +32 40 48 +40 128 112 +96 112 128 248 248 248 -200 200 224 -168 168 192 -168 104 192 -128 72 144 -216 168 208 -152 144 176 -16 16 16 +192 208 216 +168 184 200 +152 112 224 +96 64 184 +216 160 240 +144 152 176 +0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/abra/anim_front.png b/graphics/pokemon/abra/anim_front.png index 927be7344..725024737 100644 Binary files a/graphics/pokemon/abra/anim_front.png and b/graphics/pokemon/abra/anim_front.png differ diff --git a/graphics/pokemon/abra/front.png b/graphics/pokemon/abra/front.png index 362022801..4fa83f553 100644 Binary files a/graphics/pokemon/abra/front.png and b/graphics/pokemon/abra/front.png differ diff --git a/graphics/pokemon/abra/normal.pal b/graphics/pokemon/abra/normal.pal index 5b75ffb31..96bbd5db7 100644 --- a/graphics/pokemon/abra/normal.pal +++ b/graphics/pokemon/abra/normal.pal @@ -4,14 +4,14 @@ JASC-PAL 152 208 160 88 56 8 120 96 24 -240 208 80 -64 48 40 -192 160 56 -248 232 168 -152 120 32 -160 128 112 +248 224 40 +72 48 64 +200 184 32 +240 240 160 +168 136 24 +152 120 120 16 16 16 -104 80 72 +104 72 64 208 176 80 176 160 152 0 0 0 diff --git a/graphics/pokemon/absol/anim_front.png b/graphics/pokemon/absol/anim_front.png index 896b8bca9..9a53d575c 100644 Binary files a/graphics/pokemon/absol/anim_front.png and b/graphics/pokemon/absol/anim_front.png differ diff --git a/graphics/pokemon/absol/normal.pal b/graphics/pokemon/absol/normal.pal index 281044a79..ad45e777e 100644 --- a/graphics/pokemon/absol/normal.pal +++ b/graphics/pokemon/absol/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 72 112 -24 32 56 -104 120 176 -72 88 128 -16 16 16 -128 144 176 -248 248 248 -88 96 120 -168 176 224 -200 224 248 -120 56 56 -208 56 64 -224 136 144 +65 74 106 +41 57 57 +115 123 172 +82 90 123 +0 0 0 +139 139 172 +255 255 255 +98 98 131 +180 180 213 +213 222 238 +123 41 49 +205 41 32 +255 123 115 0 0 0 0 0 0 diff --git a/graphics/pokemon/accelgor/anim_front.png b/graphics/pokemon/accelgor/anim_front.png index d7a8355ca..353aa67e0 100644 Binary files a/graphics/pokemon/accelgor/anim_front.png and b/graphics/pokemon/accelgor/anim_front.png differ diff --git a/graphics/pokemon/accelgor/front.png b/graphics/pokemon/accelgor/front.png index 5d5fbc1a5..1f55e29ac 100644 Binary files a/graphics/pokemon/accelgor/front.png and b/graphics/pokemon/accelgor/front.png differ diff --git a/graphics/pokemon/accelgor/normal.pal b/graphics/pokemon/accelgor/normal.pal index 8be8b0685..50360984e 100644 --- a/graphics/pokemon/accelgor/normal.pal +++ b/graphics/pokemon/accelgor/normal.pal @@ -3,16 +3,16 @@ JASC-PAL 16 152 208 160 112 40 48 -168 64 80 -248 96 120 +192 56 104 +248 72 120 16 16 16 -168 128 104 -112 200 112 -80 136 72 -32 40 48 -40 56 80 -112 136 184 -88 104 128 +160 128 104 +64 176 88 +80 120 64 +56 40 24 +40 56 104 +104 128 192 +88 96 128 184 184 200 248 248 248 0 0 0 diff --git a/graphics/pokemon/aerodactyl/anim_front.png b/graphics/pokemon/aerodactyl/anim_front.png index 42874a632..4129852f9 100644 Binary files a/graphics/pokemon/aerodactyl/anim_front.png and b/graphics/pokemon/aerodactyl/anim_front.png differ diff --git a/graphics/pokemon/aerodactyl/front.png b/graphics/pokemon/aerodactyl/front.png index 65a1496f4..da85d812a 100644 Binary files a/graphics/pokemon/aerodactyl/front.png and b/graphics/pokemon/aerodactyl/front.png differ diff --git a/graphics/pokemon/aerodactyl/normal.pal b/graphics/pokemon/aerodactyl/normal.pal index 7f67f0390..a88533ce2 100644 --- a/graphics/pokemon/aerodactyl/normal.pal +++ b/graphics/pokemon/aerodactyl/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 120 104 128 -72 56 80 +64 48 96 184 184 224 152 144 160 -128 96 144 -152 120 184 -176 136 208 +112 80 144 +144 96 200 +168 128 216 16 16 16 248 248 248 200 200 200 56 112 80 -104 56 72 -168 112 120 -224 160 160 +128 32 64 +200 56 72 +224 136 152 72 56 80 diff --git a/graphics/pokemon/aggron/anim_front.png b/graphics/pokemon/aggron/anim_front.png index 026740681..08a5913a7 100644 Binary files a/graphics/pokemon/aggron/anim_front.png and b/graphics/pokemon/aggron/anim_front.png differ diff --git a/graphics/pokemon/aggron/front.png b/graphics/pokemon/aggron/front.png index bb07d0a9d..0d59202ca 100644 Binary files a/graphics/pokemon/aggron/front.png and b/graphics/pokemon/aggron/front.png differ diff --git a/graphics/pokemon/aggron/normal.pal b/graphics/pokemon/aggron/normal.pal index 0f22972a7..6c0edcb15 100644 --- a/graphics/pokemon/aggron/normal.pal +++ b/graphics/pokemon/aggron/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 128 144 -80 96 104 +88 88 96 16 16 16 248 248 248 -192 200 200 -152 160 176 -160 168 160 -72 168 208 -128 128 136 +200 200 200 +160 160 168 +168 168 168 +104 192 248 +136 136 136 104 104 104 -64 64 80 -160 104 128 -224 168 192 +80 80 72 +160 48 64 +224 80 80 192 200 200 0 0 0 diff --git a/graphics/pokemon/aipom/anim_front.png b/graphics/pokemon/aipom/anim_front.png index 88b55fdd0..c3e884d87 100644 Binary files a/graphics/pokemon/aipom/anim_front.png and b/graphics/pokemon/aipom/anim_front.png differ diff --git a/graphics/pokemon/aipom/front.png b/graphics/pokemon/aipom/front.png index 384ef8565..227584fcb 100644 Binary files a/graphics/pokemon/aipom/front.png and b/graphics/pokemon/aipom/front.png differ diff --git a/graphics/pokemon/aipom/normal.pal b/graphics/pokemon/aipom/normal.pal index a9004ed8f..795f51deb 100644 --- a/graphics/pokemon/aipom/normal.pal +++ b/graphics/pokemon/aipom/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 72 128 -88 32 96 -184 128 192 -152 96 184 -16 16 16 -152 136 104 -208 184 128 -248 232 176 +128 64 168 +80 32 104 +184 120 216 +160 88 192 +0 0 0 +184 136 96 +216 176 112 +248 232 160 248 248 248 -80 144 152 -40 104 120 -120 104 72 168 168 160 +88 88 88 +136 104 64 +192 192 192 0 0 0 0 0 0 diff --git a/graphics/pokemon/alakazam/anim_front.png b/graphics/pokemon/alakazam/anim_front.png index 22364b3e7..2a75e717d 100644 Binary files a/graphics/pokemon/alakazam/anim_front.png and b/graphics/pokemon/alakazam/anim_front.png differ diff --git a/graphics/pokemon/alakazam/front.png b/graphics/pokemon/alakazam/front.png index 3fcd5981b..6ba500cdb 100644 Binary files a/graphics/pokemon/alakazam/front.png and b/graphics/pokemon/alakazam/front.png differ diff --git a/graphics/pokemon/alakazam/normal.pal b/graphics/pokemon/alakazam/normal.pal index 611683409..bffaed05e 100644 --- a/graphics/pokemon/alakazam/normal.pal +++ b/graphics/pokemon/alakazam/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 96 24 -240 208 88 -192 160 56 +112 88 8 +248 232 24 +200 176 16 16 16 16 -248 232 168 -104 72 80 -56 32 48 +248 240 168 +104 72 64 +72 48 64 200 184 168 -160 128 112 +152 120 120 88 88 88 248 248 248 176 176 168 -216 216 208 +216 216 216 96 96 88 -112 88 8 +80 48 8 diff --git a/graphics/pokemon/alomomola/anim_front.png b/graphics/pokemon/alomomola/anim_front.png index 8fdf9da30..641299c3f 100644 Binary files a/graphics/pokemon/alomomola/anim_front.png and b/graphics/pokemon/alomomola/anim_front.png differ diff --git a/graphics/pokemon/alomomola/front.png b/graphics/pokemon/alomomola/front.png index 80a1cfb33..bbf90238b 100644 Binary files a/graphics/pokemon/alomomola/front.png and b/graphics/pokemon/alomomola/front.png differ diff --git a/graphics/pokemon/alomomola/normal.pal b/graphics/pokemon/alomomola/normal.pal index 932beea0b..19be03879 100644 --- a/graphics/pokemon/alomomola/normal.pal +++ b/graphics/pokemon/alomomola/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 72 96 -248 192 200 -176 96 112 +136 64 96 +248 184 184 +192 88 120 16 16 16 -96 56 72 -232 144 168 -224 120 152 +96 56 64 +248 136 168 +240 112 128 248 232 240 248 208 224 -200 144 152 -16 32 56 -48 72 112 -192 144 88 +224 136 152 +0 40 48 +0 80 96 +152 136 16 248 248 248 -136 64 96 +0 0 0 diff --git a/graphics/pokemon/altaria/anim_front.png b/graphics/pokemon/altaria/anim_front.png index c3d4b0611..56ae85998 100644 Binary files a/graphics/pokemon/altaria/anim_front.png and b/graphics/pokemon/altaria/anim_front.png differ diff --git a/graphics/pokemon/altaria/front.png b/graphics/pokemon/altaria/front.png index f2386c3ae..d22c4b80c 100644 Binary files a/graphics/pokemon/altaria/front.png and b/graphics/pokemon/altaria/front.png differ diff --git a/graphics/pokemon/altaria/normal.pal b/graphics/pokemon/altaria/normal.pal index 5039733ec..040e4b014 100644 --- a/graphics/pokemon/altaria/normal.pal +++ b/graphics/pokemon/altaria/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 120 152 -16 16 16 -48 160 200 -112 200 240 -40 88 112 -160 224 248 +72 96 144 +0 0 0 +16 152 200 +88 192 248 +40 56 88 +152 216 248 248 248 248 -120 136 168 -208 224 240 +112 112 152 +216 224 232 168 176 192 -192 200 232 -173 90 140 -239 165 206 +200 200 224 +224 104 120 +168 56 80 0 0 0 0 0 0 diff --git a/graphics/pokemon/ambipom/anim_front.png b/graphics/pokemon/ambipom/anim_front.png index b037e445a..0cfc58439 100644 Binary files a/graphics/pokemon/ambipom/anim_front.png and b/graphics/pokemon/ambipom/anim_front.png differ diff --git a/graphics/pokemon/ambipom/front.png b/graphics/pokemon/ambipom/front.png index fac8c0cad..064cbb4e6 100644 Binary files a/graphics/pokemon/ambipom/front.png and b/graphics/pokemon/ambipom/front.png differ diff --git a/graphics/pokemon/ambipom/normal.pal b/graphics/pokemon/ambipom/normal.pal index 5da71c6f2..86a9c3948 100644 --- a/graphics/pokemon/ambipom/normal.pal +++ b/graphics/pokemon/ambipom/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -128 56 56 -168 72 72 -240 104 104 +112 72 64 +168 80 64 +248 112 88 16 16 16 -208 176 120 -248 224 160 -120 104 64 -56 40 88 -112 72 136 -168 120 184 -136 96 160 +216 184 112 +248 232 160 +136 104 64 +80 32 104 +128 56 168 +176 96 224 +152 72 192 168 144 96 248 248 248 168 168 160 diff --git a/graphics/pokemon/amoonguss/anim_front.png b/graphics/pokemon/amoonguss/anim_front.png index 8f6e3daab..e959d5ce5 100644 Binary files a/graphics/pokemon/amoonguss/anim_front.png and b/graphics/pokemon/amoonguss/anim_front.png differ diff --git a/graphics/pokemon/amoonguss/front.png b/graphics/pokemon/amoonguss/front.png index fc6ffa783..baec9f8dd 100644 Binary files a/graphics/pokemon/amoonguss/front.png and b/graphics/pokemon/amoonguss/front.png differ diff --git a/graphics/pokemon/amoonguss/normal.pal b/graphics/pokemon/amoonguss/normal.pal index fb605cb67..1a27c77ef 100644 --- a/graphics/pokemon/amoonguss/normal.pal +++ b/graphics/pokemon/amoonguss/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 136 112 88 -72 56 48 -16 16 16 -184 200 176 -96 80 64 -144 144 120 -160 56 80 -208 88 120 +64 48 48 +0 0 0 +200 192 192 +96 72 64 +152 144 128 +168 48 96 +216 80 136 184 184 200 -96 40 56 -240 160 200 -176 112 136 -40 32 40 +104 48 72 +248 168 200 +216 136 160 +40 24 24 0 0 0 0 0 0 diff --git a/graphics/pokemon/ampharos/anim_front.png b/graphics/pokemon/ampharos/anim_front.png index 0defd4e3e..1b3930f64 100644 Binary files a/graphics/pokemon/ampharos/anim_front.png and b/graphics/pokemon/ampharos/anim_front.png differ diff --git a/graphics/pokemon/ampharos/front.png b/graphics/pokemon/ampharos/front.png index 21701e861..cc9711f87 100644 Binary files a/graphics/pokemon/ampharos/front.png and b/graphics/pokemon/ampharos/front.png differ diff --git a/graphics/pokemon/ampharos/normal.pal b/graphics/pokemon/ampharos/normal.pal index e883c9689..dd9818d6b 100644 --- a/graphics/pokemon/ampharos/normal.pal +++ b/graphics/pokemon/ampharos/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 16 16 16 88 80 88 -208 160 48 -168 128 40 -112 88 40 -208 48 72 -248 208 72 -224 88 112 +248 192 16 +200 136 16 +128 88 48 +192 0 0 +248 232 72 +248 32 32 248 248 248 -136 24 40 -184 168 176 -232 224 216 +168 0 0 +176 176 176 +224 224 224 248 176 160 127 63 75 198 121 121 diff --git a/graphics/pokemon/anorith/anim_front.png b/graphics/pokemon/anorith/anim_front.png index 0abc0fd60..914970850 100644 Binary files a/graphics/pokemon/anorith/anim_front.png and b/graphics/pokemon/anorith/anim_front.png differ diff --git a/graphics/pokemon/anorith/front.png b/graphics/pokemon/anorith/front.png index bb410b167..e08948a30 100644 Binary files a/graphics/pokemon/anorith/front.png and b/graphics/pokemon/anorith/front.png differ diff --git a/graphics/pokemon/anorith/normal.pal b/graphics/pokemon/anorith/normal.pal index 6129409de..b82fc5775 100644 --- a/graphics/pokemon/anorith/normal.pal +++ b/graphics/pokemon/anorith/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 0 176 232 16 16 16 -168 176 184 -96 96 96 -144 176 152 -120 152 112 -136 56 56 -232 104 112 -208 72 80 -192 216 200 +176 176 184 +104 104 120 +136 168 136 +112 136 112 +112 56 64 +248 80 80 +216 48 72 +168 200 168 216 216 216 248 248 248 -88 112 80 +88 112 88 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/arbok/anim_front.png b/graphics/pokemon/arbok/anim_front.png index 508beb8bd..a9d2c95e7 100644 Binary files a/graphics/pokemon/arbok/anim_front.png and b/graphics/pokemon/arbok/anim_front.png differ diff --git a/graphics/pokemon/arbok/front.png b/graphics/pokemon/arbok/front.png index 2980a8a49..532677a86 100644 Binary files a/graphics/pokemon/arbok/front.png and b/graphics/pokemon/arbok/front.png differ diff --git a/graphics/pokemon/arbok/normal.pal b/graphics/pokemon/arbok/normal.pal index 75cee0e40..d921ec974 100644 --- a/graphics/pokemon/arbok/normal.pal +++ b/graphics/pokemon/arbok/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -160 144 184 -208 184 224 -128 104 136 -88 56 96 +160 128 192 +192 160 232 +120 96 168 +80 56 120 192 192 192 248 248 248 160 56 96 -208 120 152 -128 48 32 -184 64 56 -224 160 176 -192 152 56 -128 104 136 +216 96 112 +192 64 24 +240 112 72 +240 176 200 +232 224 80 +120 96 168 0 0 0 diff --git a/graphics/pokemon/arcanine/anim_front.png b/graphics/pokemon/arcanine/anim_front.png index 9b504f241..1fc6e9806 100644 Binary files a/graphics/pokemon/arcanine/anim_front.png and b/graphics/pokemon/arcanine/anim_front.png differ diff --git a/graphics/pokemon/arcanine/back.png b/graphics/pokemon/arcanine/back.png index a527a59e9..feb3343d7 100644 Binary files a/graphics/pokemon/arcanine/back.png and b/graphics/pokemon/arcanine/back.png differ diff --git a/graphics/pokemon/arcanine/front.png b/graphics/pokemon/arcanine/front.png index 8385425e3..752a55c9c 100644 Binary files a/graphics/pokemon/arcanine/front.png and b/graphics/pokemon/arcanine/front.png differ diff --git a/graphics/pokemon/arcanine/normal.pal b/graphics/pokemon/arcanine/normal.pal index 943342cf9..e00259609 100644 --- a/graphics/pokemon/arcanine/normal.pal +++ b/graphics/pokemon/arcanine/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 80 48 +112 96 32 16 16 16 -240 208 168 -192 160 128 -96 64 48 -240 144 72 -184 112 64 +248 232 152 +216 192 120 +96 48 0 +224 104 16 +184 80 8 216 216 208 248 248 240 88 104 112 -232 160 120 -158 90 117 -0 0 0 +248 136 24 +168 48 16 +184 152 88 0 0 0 0 0 0 diff --git a/graphics/pokemon/arcanine/shiny.pal b/graphics/pokemon/arcanine/shiny.pal index a60089517..e6ce73d7f 100644 --- a/graphics/pokemon/arcanine/shiny.pal +++ b/graphics/pokemon/arcanine/shiny.pal @@ -14,6 +14,6 @@ JASC-PAL 128 104 96 240 240 144 181 78 66 -0 0 0 +176 144 64 0 0 0 0 0 0 diff --git a/graphics/pokemon/arceus/anim_front.png b/graphics/pokemon/arceus/anim_front.png index 8e1f8a538..867c4730c 100644 Binary files a/graphics/pokemon/arceus/anim_front.png and b/graphics/pokemon/arceus/anim_front.png differ diff --git a/graphics/pokemon/arceus/bug/normal.pal b/graphics/pokemon/arceus/bug/normal.pal index c4d61c164..052761abc 100644 --- a/graphics/pokemon/arceus/bug/normal.pal +++ b/graphics/pokemon/arceus/bug/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -72 116 40 -136 208 112 -80 72 88 -48 40 56 -40 76 32 -48 100 56 -232 160 232 -192 116 192 -112 164 56 +80 128 48 +144 224 120 +96 96 112 +56 64 80 +48 96 40 +48 112 56 +248 168 248 +200 112 208 +112 168 56 248 248 248 diff --git a/graphics/pokemon/arceus/dark/normal.pal b/graphics/pokemon/arceus/dark/normal.pal index 8adb3fa6f..12401f0ad 100644 --- a/graphics/pokemon/arceus/dark/normal.pal +++ b/graphics/pokemon/arceus/dark/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -68 78 92 -160 164 176 -88 72 80 -64 44 56 -32 44 56 -24 28 24 -232 84 64 -160 56 32 -104 112 128 +72 88 104 +144 152 176 +104 80 96 +72 48 64 +56 64 80 +32 40 40 +248 104 0 +200 0 56 +96 104 120 248 248 248 diff --git a/graphics/pokemon/arceus/dragon/normal.pal b/graphics/pokemon/arceus/dragon/normal.pal index 7c0332135..1020ebdbc 100644 --- a/graphics/pokemon/arceus/dragon/normal.pal +++ b/graphics/pokemon/arceus/dragon/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -96 6 124 -192 108 232 -56 116 88 -16 84 40 -96 6 124 -160 32 32 -72 192 72 -56 128 56 -152 44 192 +128 16 160 +184 80 224 +64 104 88 +32 80 56 +104 0 144 +200 0 56 +0 224 0 +0 160 0 +144 32 184 248 248 248 diff --git a/graphics/pokemon/arceus/electric/normal.pal b/graphics/pokemon/arceus/electric/normal.pal index 37cec5e5b..396375181 100644 --- a/graphics/pokemon/arceus/electric/normal.pal +++ b/graphics/pokemon/arceus/electric/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -160 156 56 -240 236 136 -92 90 40 -56 48 16 -92 90 40 -160 32 32 -224 180 40 -168 120 32 -208 200 80 +184 160 24 +248 240 88 +112 96 56 +80 64 32 +128 112 0 +192 0 0 +240 128 0 +208 96 0 +224 200 56 248 248 248 diff --git a/graphics/pokemon/arceus/fairy/normal.pal b/graphics/pokemon/arceus/fairy/normal.pal index 89bedb760..c81dfb067 100644 --- a/graphics/pokemon/arceus/fairy/normal.pal +++ b/graphics/pokemon/arceus/fairy/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -160 92 112 -248 188 208 -136 52 88 -104 16 64 -96 60 72 -32 60 192 -232 160 208 -192 116 160 -216 140 160 +216 112 144 +248 200 248 +184 112 144 +120 72 96 +136 72 104 +96 56 96 +248 64 144 +200 64 120 +240 144 176 248 248 248 diff --git a/graphics/pokemon/arceus/fighting/normal.pal b/graphics/pokemon/arceus/fighting/normal.pal index 37faf20e9..c093262bb 100644 --- a/graphics/pokemon/arceus/fighting/normal.pal +++ b/graphics/pokemon/arceus/fighting/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -112 48 32 -192 116 80 -80 72 88 -48 40 56 -80 24 16 -160 32 32 -224 180 40 -168 120 32 -160 72 48 +104 24 8 +184 80 32 +96 96 112 +56 64 80 +88 16 0 +200 0 56 +240 184 0 +176 112 0 +152 56 32 248 248 248 diff --git a/graphics/pokemon/arceus/fire/normal.pal b/graphics/pokemon/arceus/fire/normal.pal index d351203fc..05cba4390 100644 --- a/graphics/pokemon/arceus/fire/normal.pal +++ b/graphics/pokemon/arceus/fire/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -172 38 20 -248 148 32 -112 60 56 -80 28 24 -120 16 8 -172 38 20 -224 208 40 -168 136 32 -216 84 8 +216 48 16 +248 144 32 +128 32 32 +80 16 0 +160 24 16 +200 0 0 +248 232 0 +208 120 0 +248 96 16 248 248 248 diff --git a/graphics/pokemon/arceus/flying/normal.pal b/graphics/pokemon/arceus/flying/normal.pal index 233059fe5..3d62c829b 100644 --- a/graphics/pokemon/arceus/flying/normal.pal +++ b/graphics/pokemon/arceus/flying/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -104 112 168 -184 196 248 -80 72 88 -48 40 56 -64 72 120 -48 148 176 -208 244 240 -144 144 168 -144 156 208 +104 112 176 +192 200 248 +96 96 112 +56 64 80 +72 80 144 +48 144 184 +232 232 248 +168 168 176 +144 152 216 248 248 248 diff --git a/graphics/pokemon/arceus/front.png b/graphics/pokemon/arceus/front.png index 72349052d..c143e4e69 100644 Binary files a/graphics/pokemon/arceus/front.png and b/graphics/pokemon/arceus/front.png differ diff --git a/graphics/pokemon/arceus/ghost/normal.pal b/graphics/pokemon/arceus/ghost/normal.pal index 307884148..92061f25c 100644 --- a/graphics/pokemon/arceus/ghost/normal.pal +++ b/graphics/pokemon/arceus/ghost/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -80 46 128 -176 120 224 -80 46 128 -48 32 80 -48 16 104 -184 188 88 -232 84 64 -160 56 32 -120 80 184 +88 40 144 +168 96 232 +80 48 136 +64 24 120 +72 32 128 +248 248 0 +240 64 0 +168 32 0 +120 80 192 248 248 248 diff --git a/graphics/pokemon/arceus/grass/normal.pal b/graphics/pokemon/arceus/grass/normal.pal index d62d422dd..898495631 100644 --- a/graphics/pokemon/arceus/grass/normal.pal +++ b/graphics/pokemon/arceus/grass/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -64 144 40 -160 252 112 -56 120 64 -28 90 32 -28 90 32 -208 40 48 -224 208 40 -168 136 32 -88 196 56 +64 152 48 +120 248 56 +56 112 80 +24 80 48 +40 104 48 +200 0 64 +248 232 0 +200 176 0 +88 208 56 248 248 248 diff --git a/graphics/pokemon/arceus/ground/normal.pal b/graphics/pokemon/arceus/ground/normal.pal index 832180a3a..b0ffc9a02 100644 --- a/graphics/pokemon/arceus/ground/normal.pal +++ b/graphics/pokemon/arceus/ground/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -152 104 32 -216 180 88 -88 84 48 -56 48 16 -112 64 16 -160 32 32 -164 172 200 -128 128 160 -192 140 56 +176 104 24 +224 184 88 +104 88 56 +72 64 32 +144 64 0 +192 0 0 +184 184 200 +128 128 144 +200 144 56 248 248 248 diff --git a/graphics/pokemon/arceus/ice/normal.pal b/graphics/pokemon/arceus/ice/normal.pal index 06f187980..f74dbc1fa 100644 --- a/graphics/pokemon/arceus/ice/normal.pal +++ b/graphics/pokemon/arceus/ice/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 80 144 184 -176 252 248 -88 136 160 -36 76 96 -36 76 96 -160 32 32 -192 192 232 -136 136 168 -112 184 232 +168 248 248 +72 144 168 +40 96 128 +40 80 96 +200 0 56 +232 232 248 +192 192 200 +128 200 248 248 248 248 diff --git a/graphics/pokemon/arceus/normal.pal b/graphics/pokemon/arceus/normal.pal index f602de85c..7c2734893 100644 --- a/graphics/pokemon/arceus/normal.pal +++ b/graphics/pokemon/arceus/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -160 144 56 -248 216 144 -80 72 88 -48 40 56 -104 88 32 -160 32 32 -72 192 72 -56 128 56 -208 176 80 +184 160 24 +248 240 88 +96 96 112 +56 64 80 +128 112 0 +200 0 56 +0 224 0 +0 160 0 +224 200 56 248 248 248 diff --git a/graphics/pokemon/arceus/poison/normal.pal b/graphics/pokemon/arceus/poison/normal.pal index 7f7a066cc..ce8edcc00 100644 --- a/graphics/pokemon/arceus/poison/normal.pal +++ b/graphics/pokemon/arceus/poison/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -136 60 152 -216 132 224 -80 72 88 -48 40 56 -88 32 112 -160 32 32 -224 156 216 -184 108 192 +128 48 144 +224 128 232 +96 96 112 +56 64 80 +80 24 96 +200 0 56 +248 160 248 +200 96 216 176 96 184 248 248 248 diff --git a/graphics/pokemon/arceus/psychic/normal.pal b/graphics/pokemon/arceus/psychic/normal.pal index fbb92c93b..0c330517a 100644 --- a/graphics/pokemon/arceus/psychic/normal.pal +++ b/graphics/pokemon/arceus/psychic/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -192 44 88 -248 132 168 -80 72 88 -48 40 56 -112 20 48 -160 32 32 -72 192 72 -56 128 56 -232 92 128 +200 24 72 +248 128 176 +96 96 112 +56 64 80 +152 0 48 +200 0 56 +0 224 0 +0 160 0 +240 72 112 248 248 248 diff --git a/graphics/pokemon/arceus/rock/normal.pal b/graphics/pokemon/arceus/rock/normal.pal index ec5fd85f4..60f8739e8 100644 --- a/graphics/pokemon/arceus/rock/normal.pal +++ b/graphics/pokemon/arceus/rock/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -104 96 56 -176 172 128 -80 72 88 -48 40 56 -72 64 24 -64 108 64 -208 188 136 -160 144 88 -144 140 96 +112 104 64 +184 176 136 +96 96 112 +56 64 80 +96 88 48 +96 96 96 +224 200 120 +184 152 80 +144 144 96 248 248 248 diff --git a/graphics/pokemon/arceus/steel/normal.pal b/graphics/pokemon/arceus/steel/normal.pal index 703f66ffc..b1c145182 100644 --- a/graphics/pokemon/arceus/steel/normal.pal +++ b/graphics/pokemon/arceus/steel/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -128 132 136 -224 228 224 -80 72 88 -48 40 56 -72 76 80 -48 100 56 -224 220 40 -160 152 32 -176 180 184 +128 128 136 +232 232 248 +96 96 112 +56 64 80 +88 88 96 +96 96 96 +240 240 0 +168 168 0 +184 184 192 248 248 248 diff --git a/graphics/pokemon/arceus/water/normal.pal b/graphics/pokemon/arceus/water/normal.pal index b3be4a519..61cd5c15b 100644 --- a/graphics/pokemon/arceus/water/normal.pal +++ b/graphics/pokemon/arceus/water/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 112 152 -224 224 216 +232 232 240 16 16 16 -160 168 192 +184 184 192 72 72 96 -8 92 176 -72 204 248 -64 80 108 -24 56 88 +8 96 200 +24 176 248 +0 56 168 +0 40 136 16 48 120 -208 40 48 -40 204 216 -32 148 160 -24 144 224 +200 0 56 +0 232 248 +0 168 208 +8 144 248 248 248 248 diff --git a/graphics/pokemon/archen/anim_front.png b/graphics/pokemon/archen/anim_front.png index db62a5558..128c3cf07 100644 Binary files a/graphics/pokemon/archen/anim_front.png and b/graphics/pokemon/archen/anim_front.png differ diff --git a/graphics/pokemon/archen/front.png b/graphics/pokemon/archen/front.png index 35b7f39a6..ebd166254 100644 Binary files a/graphics/pokemon/archen/front.png and b/graphics/pokemon/archen/front.png differ diff --git a/graphics/pokemon/archen/normal.pal b/graphics/pokemon/archen/normal.pal index 103f02d98..5aa6ad2bd 100644 --- a/graphics/pokemon/archen/normal.pal +++ b/graphics/pokemon/archen/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 40 48 -24 72 96 -224 88 88 -40 152 216 -160 64 64 -16 16 16 +80 48 48 +16 48 104 +216 80 72 +48 128 240 +144 64 64 +0 0 0 224 224 224 -168 160 152 -32 112 144 -40 40 40 -80 64 48 -168 128 72 -248 192 112 +152 152 168 +48 80 152 +56 56 56 +80 64 40 +184 144 80 +240 200 96 0 0 0 0 0 0 diff --git a/graphics/pokemon/archeops/anim_front.png b/graphics/pokemon/archeops/anim_front.png index 6824ee95b..12b90b0fc 100644 Binary files a/graphics/pokemon/archeops/anim_front.png and b/graphics/pokemon/archeops/anim_front.png differ diff --git a/graphics/pokemon/archeops/front.png b/graphics/pokemon/archeops/front.png index 314c7def7..bbbf6e3a2 100644 Binary files a/graphics/pokemon/archeops/front.png and b/graphics/pokemon/archeops/front.png differ diff --git a/graphics/pokemon/archeops/normal.pal b/graphics/pokemon/archeops/normal.pal index 0b8de41c3..11de57408 100644 --- a/graphics/pokemon/archeops/normal.pal +++ b/graphics/pokemon/archeops/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -24 64 88 -40 112 152 -40 152 224 +16 48 104 +48 80 152 +48 128 240 248 248 248 -152 144 144 -80 64 32 -176 128 80 -248 192 112 -232 96 88 -160 72 64 -0 176 160 -0 112 104 -160 88 96 -96 48 56 +152 152 168 +96 80 40 +184 144 80 +240 200 96 +216 80 72 +152 72 72 +16 160 144 +8 104 88 +128 64 80 +80 48 48 diff --git a/graphics/pokemon/ariados/anim_front.png b/graphics/pokemon/ariados/anim_front.png index 913cbe6e6..c579c4c01 100644 Binary files a/graphics/pokemon/ariados/anim_front.png and b/graphics/pokemon/ariados/anim_front.png differ diff --git a/graphics/pokemon/ariados/front.png b/graphics/pokemon/ariados/front.png index 2c7dde50e..8d11202a2 100644 Binary files a/graphics/pokemon/ariados/front.png and b/graphics/pokemon/ariados/front.png differ diff --git a/graphics/pokemon/ariados/normal.pal b/graphics/pokemon/ariados/normal.pal index 4b2b177a3..5939c4fcb 100644 --- a/graphics/pokemon/ariados/normal.pal +++ b/graphics/pokemon/ariados/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 64 24 -248 200 120 -16 16 16 -200 144 72 -128 104 184 -176 152 216 -80 64 120 -120 24 32 -176 56 72 -232 88 104 -248 128 144 +104 80 24 +248 216 64 +0 0 0 +192 176 72 +152 88 192 +184 128 224 +96 48 152 +136 32 0 +200 40 56 +240 72 112 +240 136 152 104 104 104 -176 176 168 +184 184 184 248 248 248 80 0 0 diff --git a/graphics/pokemon/armaldo/anim_front.png b/graphics/pokemon/armaldo/anim_front.png index 1a88f3cd6..372cd2cfe 100644 Binary files a/graphics/pokemon/armaldo/anim_front.png and b/graphics/pokemon/armaldo/anim_front.png differ diff --git a/graphics/pokemon/armaldo/front.png b/graphics/pokemon/armaldo/front.png index 18899c0e2..2ab629340 100644 Binary files a/graphics/pokemon/armaldo/front.png and b/graphics/pokemon/armaldo/front.png differ diff --git a/graphics/pokemon/armaldo/normal.pal b/graphics/pokemon/armaldo/normal.pal index 67cd62655..1de332d93 100644 --- a/graphics/pokemon/armaldo/normal.pal +++ b/graphics/pokemon/armaldo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 104 136 +80 104 144 16 16 16 -176 200 232 -48 48 56 -128 168 216 -96 96 104 -160 160 160 +160 184 216 +56 64 80 +136 168 208 +104 104 120 +176 176 184 248 248 248 -88 128 168 -208 216 232 -160 40 48 -224 80 88 -200 168 96 -248 224 120 -96 96 104 +104 136 176 +216 216 216 +160 24 32 +232 72 96 +216 176 96 +248 216 104 +104 104 120 diff --git a/graphics/pokemon/aron/anim_front.png b/graphics/pokemon/aron/anim_front.png index 921be8f6f..06cd54cf8 100644 Binary files a/graphics/pokemon/aron/anim_front.png and b/graphics/pokemon/aron/anim_front.png differ diff --git a/graphics/pokemon/aron/front.png b/graphics/pokemon/aron/front.png index a676b8334..72b0da8ec 100644 Binary files a/graphics/pokemon/aron/front.png and b/graphics/pokemon/aron/front.png differ diff --git a/graphics/pokemon/aron/normal.pal b/graphics/pokemon/aron/normal.pal index 427e63043..a3a7d4aea 100644 --- a/graphics/pokemon/aron/normal.pal +++ b/graphics/pokemon/aron/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -80 104 104 -200 208 208 -144 160 160 -32 56 64 -240 240 240 +80 88 104 +208 208 216 +136 144 152 +56 56 72 +248 248 248 16 16 16 96 96 96 -40 128 160 -80 192 232 -64 88 104 -96 128 144 +48 104 152 +104 184 248 +80 80 96 +112 120 144 56 56 64 0 0 0 0 0 0 diff --git a/graphics/pokemon/articuno/anim_front.png b/graphics/pokemon/articuno/anim_front.png index 892ad5b5e..25fe5e13b 100644 Binary files a/graphics/pokemon/articuno/anim_front.png and b/graphics/pokemon/articuno/anim_front.png differ diff --git a/graphics/pokemon/articuno/front.png b/graphics/pokemon/articuno/front.png index a54f2dfe1..d24f9a762 100644 Binary files a/graphics/pokemon/articuno/front.png and b/graphics/pokemon/articuno/front.png differ diff --git a/graphics/pokemon/articuno/normal.pal b/graphics/pokemon/articuno/normal.pal index 6b41f9855..cb595f23e 100644 --- a/graphics/pokemon/articuno/normal.pal +++ b/graphics/pokemon/articuno/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 80 128 -152 208 248 -80 136 168 -96 176 232 +0 80 112 +144 192 248 +0 120 184 +104 168 240 16 16 16 8 48 80 32 136 176 -168 192 192 +144 192 248 248 248 248 -96 64 48 -80 56 40 -184 160 152 -128 120 112 -200 240 248 +184 40 56 +88 56 24 +176 144 112 +136 104 80 +200 224 248 192 200 200 diff --git a/graphics/pokemon/audino/anim_front.png b/graphics/pokemon/audino/anim_front.png index b62b9882b..cbdbde042 100644 Binary files a/graphics/pokemon/audino/anim_front.png and b/graphics/pokemon/audino/anim_front.png differ diff --git a/graphics/pokemon/audino/front.png b/graphics/pokemon/audino/front.png index 809b56792..5aad0eb99 100644 Binary files a/graphics/pokemon/audino/front.png and b/graphics/pokemon/audino/front.png differ diff --git a/graphics/pokemon/audino/normal.pal b/graphics/pokemon/audino/normal.pal index f9cd2a500..f14fd9a54 100644 --- a/graphics/pokemon/audino/normal.pal +++ b/graphics/pokemon/audino/normal.pal @@ -12,8 +12,8 @@ JASC-PAL 16 16 16 248 248 248 160 136 96 -112 96 88 -200 184 184 -232 224 216 +96 96 104 +208 208 224 +232 232 240 0 0 0 0 0 0 diff --git a/graphics/pokemon/axew/anim_front.png b/graphics/pokemon/axew/anim_front.png index 2eea59fc9..43d4825ee 100644 Binary files a/graphics/pokemon/axew/anim_front.png and b/graphics/pokemon/axew/anim_front.png differ diff --git a/graphics/pokemon/axew/front.png b/graphics/pokemon/axew/front.png index 3d349d3fe..993b44321 100644 Binary files a/graphics/pokemon/axew/front.png and b/graphics/pokemon/axew/front.png differ diff --git a/graphics/pokemon/axew/normal.pal b/graphics/pokemon/axew/normal.pal index 2e00670b8..1b6c96532 100644 --- a/graphics/pokemon/axew/normal.pal +++ b/graphics/pokemon/axew/normal.pal @@ -9,10 +9,10 @@ JASC-PAL 16 16 16 120 160 112 88 104 88 -184 72 72 +200 0 0 248 248 248 -192 184 176 -88 48 48 +176 176 208 +96 0 0 128 208 112 208 232 160 144 144 104 diff --git a/graphics/pokemon/azelf/anim_front.png b/graphics/pokemon/azelf/anim_front.png index 6a1f9aba2..36dc5a992 100644 Binary files a/graphics/pokemon/azelf/anim_front.png and b/graphics/pokemon/azelf/anim_front.png differ diff --git a/graphics/pokemon/azelf/front.png b/graphics/pokemon/azelf/front.png index 82646121b..67d155bbf 100644 Binary files a/graphics/pokemon/azelf/front.png and b/graphics/pokemon/azelf/front.png differ diff --git a/graphics/pokemon/azelf/normal.pal b/graphics/pokemon/azelf/normal.pal index ad64742b0..bee2e3d8b 100644 --- a/graphics/pokemon/azelf/normal.pal +++ b/graphics/pokemon/azelf/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 72 88 -56 112 128 -80 160 176 +56 72 112 +64 96 144 +88 144 192 16 16 16 -96 56 56 -224 104 96 +88 56 64 +232 64 64 168 64 64 248 248 248 -112 184 200 -128 160 184 -176 216 248 -240 200 32 -80 112 128 +112 168 224 +144 152 192 +176 200 240 +248 176 32 +120 112 144 168 136 64 -48 64 72 +64 64 64 diff --git a/graphics/pokemon/azumarill/anim_front.png b/graphics/pokemon/azumarill/anim_front.png index b28b18636..eaeaf0c8e 100644 Binary files a/graphics/pokemon/azumarill/anim_front.png and b/graphics/pokemon/azumarill/anim_front.png differ diff --git a/graphics/pokemon/azumarill/front.png b/graphics/pokemon/azumarill/front.png index a21ca7a5a..6513b5f21 100644 Binary files a/graphics/pokemon/azumarill/front.png and b/graphics/pokemon/azumarill/front.png differ diff --git a/graphics/pokemon/azumarill/normal.pal b/graphics/pokemon/azumarill/normal.pal index 4fcf284ef..f67789782 100644 --- a/graphics/pokemon/azumarill/normal.pal +++ b/graphics/pokemon/azumarill/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 80 96 -40 120 168 -80 176 216 +48 80 144 +72 144 224 +112 184 248 16 16 16 -120 48 56 -208 72 80 -216 104 104 -32 144 208 +152 0 8 +200 40 0 +232 80 0 +80 176 240 248 248 248 -128 88 104 +168 48 32 120 200 232 -192 136 168 -200 184 184 -208 208 200 +232 128 120 +192 192 208 +216 224 248 80 176 208 diff --git a/graphics/pokemon/azurill/anim_front.png b/graphics/pokemon/azurill/anim_front.png index 79b48f5e1..3c6b62c47 100644 Binary files a/graphics/pokemon/azurill/anim_front.png and b/graphics/pokemon/azurill/anim_front.png differ diff --git a/graphics/pokemon/azurill/front.png b/graphics/pokemon/azurill/front.png index e4e7e7e2f..269e181dc 100644 Binary files a/graphics/pokemon/azurill/front.png and b/graphics/pokemon/azurill/front.png differ diff --git a/graphics/pokemon/azurill/normal.pal b/graphics/pokemon/azurill/normal.pal index aaa7caeca..db48624d1 100644 --- a/graphics/pokemon/azurill/normal.pal +++ b/graphics/pokemon/azurill/normal.pal @@ -1,18 +1,18 @@ JASC-PAL 0100 16 -152 208 160 -40 96 128 -48 144 192 -128 192 232 -72 168 224 +248 248 192 +56 88 184 +64 120 248 +104 176 248 +88 144 248 16 16 16 -168 88 152 -208 128 152 -168 208 232 +192 72 64 +240 120 112 +160 216 248 48 112 176 -216 232 248 -56 56 88 +224 240 248 +48 64 88 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/bagon/anim_front.png b/graphics/pokemon/bagon/anim_front.png index 784d38eec..fd6e28672 100644 Binary files a/graphics/pokemon/bagon/anim_front.png and b/graphics/pokemon/bagon/anim_front.png differ diff --git a/graphics/pokemon/bagon/front.png b/graphics/pokemon/bagon/front.png index 3a84b0fa5..21314fe08 100644 Binary files a/graphics/pokemon/bagon/front.png and b/graphics/pokemon/bagon/front.png differ diff --git a/graphics/pokemon/bagon/normal.pal b/graphics/pokemon/bagon/normal.pal index a2b6e4a4a..3f04b4fe5 100644 --- a/graphics/pokemon/bagon/normal.pal +++ b/graphics/pokemon/bagon/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -136 120 120 -96 88 88 -232 232 224 -200 200 192 +128 144 144 +72 80 96 +240 240 248 +208 200 216 16 16 16 -160 160 152 -88 136 160 +160 152 176 +88 128 168 248 224 144 192 160 96 -120 176 200 -160 208 224 +96 168 224 +144 208 248 128 112 80 232 232 224 124 74 95 diff --git a/graphics/pokemon/baltoy/anim_front.png b/graphics/pokemon/baltoy/anim_front.png index cf4b1a851..0227496d0 100644 Binary files a/graphics/pokemon/baltoy/anim_front.png and b/graphics/pokemon/baltoy/anim_front.png differ diff --git a/graphics/pokemon/baltoy/front.png b/graphics/pokemon/baltoy/front.png index 2529be0cf..c1bdd8e90 100644 Binary files a/graphics/pokemon/baltoy/front.png and b/graphics/pokemon/baltoy/front.png differ diff --git a/graphics/pokemon/baltoy/normal.pal b/graphics/pokemon/baltoy/normal.pal index e8fa0056f..a1c829101 100644 --- a/graphics/pokemon/baltoy/normal.pal +++ b/graphics/pokemon/baltoy/normal.pal @@ -3,14 +3,14 @@ JASC-PAL 16 152 208 160 16 16 16 -96 80 64 -240 224 184 -176 160 112 -208 200 136 -152 128 96 -152 64 72 -216 96 88 -248 128 112 +96 80 80 +224 224 168 +152 144 72 +192 192 96 +128 128 96 +160 32 64 +216 64 96 +240 128 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/banette/anim_front.png b/graphics/pokemon/banette/anim_front.png index 4929293c3..8a7618396 100644 Binary files a/graphics/pokemon/banette/anim_front.png and b/graphics/pokemon/banette/anim_front.png differ diff --git a/graphics/pokemon/banette/front.png b/graphics/pokemon/banette/front.png index c80fc20e1..48a48753e 100644 Binary files a/graphics/pokemon/banette/front.png and b/graphics/pokemon/banette/front.png differ diff --git a/graphics/pokemon/banette/normal.pal b/graphics/pokemon/banette/normal.pal index 04008aaf2..0c367bb88 100644 --- a/graphics/pokemon/banette/normal.pal +++ b/graphics/pokemon/banette/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 80 80 -48 48 56 -160 152 152 -128 120 120 -16 16 16 -184 176 176 -192 56 96 +88 80 96 +56 48 64 +152 152 160 +120 120 128 +0 0 0 +176 168 184 +168 40 56 192 64 88 248 248 248 -248 128 136 -64 56 32 -160 136 80 -208 168 72 -112 88 48 -240 216 128 +224 96 112 +80 56 0 +160 120 16 +208 152 56 +120 88 40 +232 184 88 diff --git a/graphics/pokemon/barboach/anim_front.png b/graphics/pokemon/barboach/anim_front.png index d6dddc94f..a1805b0a8 100644 Binary files a/graphics/pokemon/barboach/anim_front.png and b/graphics/pokemon/barboach/anim_front.png differ diff --git a/graphics/pokemon/barboach/front.png b/graphics/pokemon/barboach/front.png index 798563000..78f0c69eb 100644 Binary files a/graphics/pokemon/barboach/front.png and b/graphics/pokemon/barboach/front.png differ diff --git a/graphics/pokemon/barboach/normal.pal b/graphics/pokemon/barboach/normal.pal index 9dd20f600..b16d2dabb 100644 --- a/graphics/pokemon/barboach/normal.pal +++ b/graphics/pokemon/barboach/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -40 128 152 -48 104 120 -88 176 208 -16 16 16 -120 200 240 +16 112 168 +48 88 128 +48 176 224 +0 0 0 +96 200 240 40 48 64 -80 80 88 -208 224 224 -176 192 200 -64 152 184 -144 144 168 +80 80 80 +208 208 216 +184 184 192 +32 144 184 +136 144 160 232 240 240 0 0 0 0 0 0 diff --git a/graphics/pokemon/basculin/anim_front.png b/graphics/pokemon/basculin/anim_front.png index 800c4e257..2981cdbdc 100644 Binary files a/graphics/pokemon/basculin/anim_front.png and b/graphics/pokemon/basculin/anim_front.png differ diff --git a/graphics/pokemon/basculin/blue_striped/front.png b/graphics/pokemon/basculin/blue_striped/front.png index 5f3a435b6..cd6e6cda1 100644 Binary files a/graphics/pokemon/basculin/blue_striped/front.png and b/graphics/pokemon/basculin/blue_striped/front.png differ diff --git a/graphics/pokemon/basculin/blue_striped/normal.pal b/graphics/pokemon/basculin/blue_striped/normal.pal index 58da0489d..5eb98ee61 100644 --- a/graphics/pokemon/basculin/blue_striped/normal.pal +++ b/graphics/pokemon/basculin/blue_striped/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 +152 208 160 16 16 16 -98 117 113 -222 239 222 -172 183 163 -52 49 56 -78 86 76 -0 99 122 -0 143 183 -50 81 59 -83 178 102 -71 130 77 -255 255 255 +96 96 96 +224 224 224 +160 160 160 +32 48 56 +64 80 80 +0 72 152 +32 128 208 +24 72 24 +64 160 80 +40 112 48 +248 248 248 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/basculin/front.png b/graphics/pokemon/basculin/front.png index 81af37ca8..ac3f6ded3 100644 Binary files a/graphics/pokemon/basculin/front.png and b/graphics/pokemon/basculin/front.png differ diff --git a/graphics/pokemon/basculin/normal.pal b/graphics/pokemon/basculin/normal.pal index 6857b1460..d20ada23c 100644 --- a/graphics/pokemon/basculin/normal.pal +++ b/graphics/pokemon/basculin/normal.pal @@ -3,16 +3,16 @@ JASC-PAL 16 152 208 160 16 16 16 -96 112 112 -216 232 216 -168 176 160 -48 48 56 -72 80 72 -144 56 48 -240 80 80 -80 176 96 -48 80 56 -64 128 72 +96 96 96 +224 224 224 +160 160 160 +32 48 56 +64 80 80 +152 32 24 +248 88 72 +64 160 80 +24 72 24 +40 112 48 248 248 248 0 0 0 0 0 0 diff --git a/graphics/pokemon/bastiodon/anim_front.png b/graphics/pokemon/bastiodon/anim_front.png index c887532c0..3a36e62a3 100644 Binary files a/graphics/pokemon/bastiodon/anim_front.png and b/graphics/pokemon/bastiodon/anim_front.png differ diff --git a/graphics/pokemon/bastiodon/front.png b/graphics/pokemon/bastiodon/front.png index 5d78b4080..c662e853c 100644 Binary files a/graphics/pokemon/bastiodon/front.png and b/graphics/pokemon/bastiodon/front.png differ diff --git a/graphics/pokemon/bastiodon/normal.pal b/graphics/pokemon/bastiodon/normal.pal index 9a404744a..cd8635b50 100644 --- a/graphics/pokemon/bastiodon/normal.pal +++ b/graphics/pokemon/bastiodon/normal.pal @@ -12,7 +12,7 @@ JASC-PAL 248 208 120 104 96 64 32 32 32 -168 96 104 +176 56 72 248 248 248 0 0 0 0 0 0 diff --git a/graphics/pokemon/bayleef/anim_front.png b/graphics/pokemon/bayleef/anim_front.png index 0a5158ccf..3b5b90f51 100644 Binary files a/graphics/pokemon/bayleef/anim_front.png and b/graphics/pokemon/bayleef/anim_front.png differ diff --git a/graphics/pokemon/bayleef/front.png b/graphics/pokemon/bayleef/front.png index 3d2e48acf..24cec2bcb 100644 Binary files a/graphics/pokemon/bayleef/front.png and b/graphics/pokemon/bayleef/front.png differ diff --git a/graphics/pokemon/bayleef/normal.pal b/graphics/pokemon/bayleef/normal.pal index dc76e97d7..2602bc257 100644 --- a/graphics/pokemon/bayleef/normal.pal +++ b/graphics/pokemon/bayleef/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 56 24 -96 112 64 -144 184 88 -112 152 72 +40 80 8 +80 120 8 +136 184 48 +104 152 16 16 16 16 -152 128 80 -88 72 32 -248 224 128 -208 184 112 +168 128 40 +104 80 0 +248 232 160 +216 184 112 248 248 248 -248 232 184 -152 56 48 -224 120 112 -144 144 144 -0 0 0 +248 240 200 +208 56 0 +208 136 80 +96 96 96 +192 192 192 diff --git a/graphics/pokemon/beartic/anim_front.png b/graphics/pokemon/beartic/anim_front.png index 26444777b..136ca5ec0 100644 Binary files a/graphics/pokemon/beartic/anim_front.png and b/graphics/pokemon/beartic/anim_front.png differ diff --git a/graphics/pokemon/beautifly/anim_front.png b/graphics/pokemon/beautifly/anim_front.png index de198b039..018925f02 100644 Binary files a/graphics/pokemon/beautifly/anim_front.png and b/graphics/pokemon/beautifly/anim_front.png differ diff --git a/graphics/pokemon/beautifly/front.png b/graphics/pokemon/beautifly/front.png index 00f74fd73..41d5bc0ca 100644 Binary files a/graphics/pokemon/beautifly/front.png and b/graphics/pokemon/beautifly/front.png differ diff --git a/graphics/pokemon/beautifly/normal.pal b/graphics/pokemon/beautifly/normal.pal index 55c4b51ae..5ae2f12e5 100644 --- a/graphics/pokemon/beautifly/normal.pal +++ b/graphics/pokemon/beautifly/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 56 56 -176 160 160 -72 72 72 -16 16 16 -120 104 104 -96 88 88 -152 120 80 -248 200 72 -224 160 72 -168 48 80 -224 64 64 -232 216 216 -96 208 248 -0 176 240 +56 56 48 +168 168 160 +80 80 80 +0 0 0 +96 96 96 +104 96 96 +160 128 64 +248 208 40 +232 168 88 +160 72 64 +240 40 56 +224 216 216 +136 208 248 +80 160 248 248 248 232 diff --git a/graphics/pokemon/beedrill/anim_front.png b/graphics/pokemon/beedrill/anim_front.png index 2284c252f..26e0ea3cf 100644 Binary files a/graphics/pokemon/beedrill/anim_front.png and b/graphics/pokemon/beedrill/anim_front.png differ diff --git a/graphics/pokemon/beedrill/front.png b/graphics/pokemon/beedrill/front.png index f6828a1f1..b38fb8993 100644 Binary files a/graphics/pokemon/beedrill/front.png and b/graphics/pokemon/beedrill/front.png differ diff --git a/graphics/pokemon/beedrill/normal.pal b/graphics/pokemon/beedrill/normal.pal index 75cf527c6..6499a81c2 100644 --- a/graphics/pokemon/beedrill/normal.pal +++ b/graphics/pokemon/beedrill/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 112 152 +136 120 144 184 168 192 248 248 248 24 24 24 216 200 240 -72 64 104 -120 88 32 -200 144 48 -248 224 136 -232 192 56 -120 32 40 -176 48 56 -224 120 104 -160 112 32 +80 88 120 +120 88 0 +200 152 16 +248 240 160 +248 200 72 +152 0 8 +208 24 48 +248 144 104 +152 120 0 232 224 248 diff --git a/graphics/pokemon/beheeyem/anim_front.png b/graphics/pokemon/beheeyem/anim_front.png index 1ff4d1c5c..f61201cbb 100644 Binary files a/graphics/pokemon/beheeyem/anim_front.png and b/graphics/pokemon/beheeyem/anim_front.png differ diff --git a/graphics/pokemon/beheeyem/front.png b/graphics/pokemon/beheeyem/front.png index 0e9579a44..b8817b50b 100644 Binary files a/graphics/pokemon/beheeyem/front.png and b/graphics/pokemon/beheeyem/front.png differ diff --git a/graphics/pokemon/beheeyem/normal.pal b/graphics/pokemon/beheeyem/normal.pal index 3194944af..57d9a9b39 100644 --- a/graphics/pokemon/beheeyem/normal.pal +++ b/graphics/pokemon/beheeyem/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 80 88 -200 144 128 -88 48 56 -160 104 96 +136 80 56 +216 152 120 +96 64 40 +160 96 72 16 16 16 40 40 40 -16 112 72 -64 192 120 -176 128 136 -112 96 112 -224 184 168 -120 40 24 -224 88 80 -248 232 88 -0 0 0 +32 96 40 +32 152 56 +192 160 120 +136 88 56 +224 192 160 +136 40 40 +200 0 0 +56 176 32 +224 200 0 diff --git a/graphics/pokemon/beldum/anim_front.png b/graphics/pokemon/beldum/anim_front.png index 158f4ede2..e8437e440 100644 Binary files a/graphics/pokemon/beldum/anim_front.png and b/graphics/pokemon/beldum/anim_front.png differ diff --git a/graphics/pokemon/beldum/front.png b/graphics/pokemon/beldum/front.png index cebf0961d..065d7a854 100644 Binary files a/graphics/pokemon/beldum/front.png and b/graphics/pokemon/beldum/front.png differ diff --git a/graphics/pokemon/beldum/normal.pal b/graphics/pokemon/beldum/normal.pal index f9dc9c185..a811b8fe9 100644 --- a/graphics/pokemon/beldum/normal.pal +++ b/graphics/pokemon/beldum/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 144 176 -40 72 96 -144 184 208 -64 112 144 +88 160 248 +64 72 128 +128 208 248 +56 96 184 16 16 16 -120 168 200 +72 128 216 248 104 104 -152 72 72 +136 72 72 248 248 248 -240 104 112 -216 216 216 -168 168 176 -96 104 112 -144 152 160 +216 72 80 +224 224 224 +200 200 200 +128 128 128 +176 176 176 0 0 0 diff --git a/graphics/pokemon/bellossom/anim_front.png b/graphics/pokemon/bellossom/anim_front.png index dd690aee8..e46c11c0d 100644 Binary files a/graphics/pokemon/bellossom/anim_front.png and b/graphics/pokemon/bellossom/anim_front.png differ diff --git a/graphics/pokemon/bellossom/front.png b/graphics/pokemon/bellossom/front.png index eb57b8189..c0b1a0e3d 100644 Binary files a/graphics/pokemon/bellossom/front.png and b/graphics/pokemon/bellossom/front.png differ diff --git a/graphics/pokemon/bellossom/normal.pal b/graphics/pokemon/bellossom/normal.pal index a31ae17fd..995ebad76 100644 --- a/graphics/pokemon/bellossom/normal.pal +++ b/graphics/pokemon/bellossom/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -112 32 16 -232 128 72 +128 0 0 +240 104 0 16 16 16 -248 224 120 -192 160 72 -120 96 32 -208 64 32 +248 240 128 +208 168 72 +144 112 16 +208 32 0 80 120 32 -176 216 128 -152 168 96 +184 232 136 +144 192 64 248 248 248 -88 112 48 -24 64 24 -64 120 72 -104 168 96 +96 128 40 +8 96 56 +48 144 64 +72 208 80 diff --git a/graphics/pokemon/bellsprout/anim_front.png b/graphics/pokemon/bellsprout/anim_front.png index db998a093..caf929916 100644 Binary files a/graphics/pokemon/bellsprout/anim_front.png and b/graphics/pokemon/bellsprout/anim_front.png differ diff --git a/graphics/pokemon/bellsprout/front.png b/graphics/pokemon/bellsprout/front.png index e58788796..4a6d8523b 100644 Binary files a/graphics/pokemon/bellsprout/front.png and b/graphics/pokemon/bellsprout/front.png differ diff --git a/graphics/pokemon/bellsprout/normal.pal b/graphics/pokemon/bellsprout/normal.pal index 5091b3e65..a03d87f63 100644 --- a/graphics/pokemon/bellsprout/normal.pal +++ b/graphics/pokemon/bellsprout/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 136 104 +168 120 64 248 248 176 240 240 88 -96 80 64 +88 56 0 208 200 72 248 248 248 16 16 16 -128 104 80 -136 64 56 -240 184 184 -48 104 48 -232 160 160 -152 208 112 -184 120 120 -96 168 104 +144 104 64 +152 32 72 +232 168 176 +64 104 16 +232 136 160 +120 192 80 +208 96 136 +96 160 64 diff --git a/graphics/pokemon/bibarel/anim_front.png b/graphics/pokemon/bibarel/anim_front.png index 6b826dfa3..c9a7d4031 100644 Binary files a/graphics/pokemon/bibarel/anim_front.png and b/graphics/pokemon/bibarel/anim_front.png differ diff --git a/graphics/pokemon/bibarel/front.png b/graphics/pokemon/bibarel/front.png index 648ce53af..1963eb81a 100644 Binary files a/graphics/pokemon/bibarel/front.png and b/graphics/pokemon/bibarel/front.png differ diff --git a/graphics/pokemon/bibarel/normal.pal b/graphics/pokemon/bibarel/normal.pal index c8f3547b5..71a5f280a 100644 --- a/graphics/pokemon/bibarel/normal.pal +++ b/graphics/pokemon/bibarel/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 56 32 -192 136 64 +88 56 48 +184 128 72 16 16 16 -136 88 40 -240 208 136 -176 160 104 -192 176 176 +136 88 48 +224 208 152 +168 144 120 +192 192 176 248 248 248 -88 72 64 -232 136 128 -240 64 64 56 48 40 +232 64 32 +176 24 16 +64 56 48 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/bidoof/anim_front.png b/graphics/pokemon/bidoof/anim_front.png index 31677a01f..23c318781 100644 Binary files a/graphics/pokemon/bidoof/anim_front.png and b/graphics/pokemon/bidoof/anim_front.png differ diff --git a/graphics/pokemon/bidoof/front.png b/graphics/pokemon/bidoof/front.png index ef0db513d..299e48749 100644 Binary files a/graphics/pokemon/bidoof/front.png and b/graphics/pokemon/bidoof/front.png differ diff --git a/graphics/pokemon/bidoof/normal.pal b/graphics/pokemon/bidoof/normal.pal index df2d84a3e..018af6413 100644 --- a/graphics/pokemon/bidoof/normal.pal +++ b/graphics/pokemon/bidoof/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 48 24 -136 88 40 -184 128 80 -112 80 32 +64 48 16 +152 96 48 +192 136 64 +96 72 48 16 16 16 -184 184 120 -248 224 168 +200 184 128 +248 232 184 248 248 248 -80 64 56 -224 80 80 -160 48 48 -192 192 184 +88 64 40 +232 88 72 +200 184 128 +200 192 192 128 128 128 0 0 0 0 0 0 diff --git a/graphics/pokemon/bisharp/anim_front.png b/graphics/pokemon/bisharp/anim_front.png index c96d28350..d75b02373 100644 Binary files a/graphics/pokemon/bisharp/anim_front.png and b/graphics/pokemon/bisharp/anim_front.png differ diff --git a/graphics/pokemon/bisharp/front.png b/graphics/pokemon/bisharp/front.png index 95d12bf26..003da831f 100644 Binary files a/graphics/pokemon/bisharp/front.png and b/graphics/pokemon/bisharp/front.png differ diff --git a/graphics/pokemon/bisharp/normal.pal b/graphics/pokemon/bisharp/normal.pal index 58c6f51a1..c7ec7b468 100644 --- a/graphics/pokemon/bisharp/normal.pal +++ b/graphics/pokemon/bisharp/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 80 64 32 64 64 64 -152 112 56 -248 200 88 +152 112 32 +248 200 64 16 16 16 -224 208 224 -144 128 128 -72 32 40 -168 152 152 -176 80 80 -120 40 48 -64 64 72 +224 224 224 +128 128 128 +104 24 24 +168 168 168 +192 48 48 +144 48 64 +64 64 80 96 96 112 -40 32 48 +40 40 48 248 248 248 diff --git a/graphics/pokemon/blastoise/anim_front.png b/graphics/pokemon/blastoise/anim_front.png index a9203ec43..ed0b15e70 100644 Binary files a/graphics/pokemon/blastoise/anim_front.png and b/graphics/pokemon/blastoise/anim_front.png differ diff --git a/graphics/pokemon/blastoise/back.png b/graphics/pokemon/blastoise/back.png index 7c800350d..af667e7a4 100644 Binary files a/graphics/pokemon/blastoise/back.png and b/graphics/pokemon/blastoise/back.png differ diff --git a/graphics/pokemon/blastoise/front.png b/graphics/pokemon/blastoise/front.png index 0522432ac..6c87e4fd3 100644 Binary files a/graphics/pokemon/blastoise/front.png and b/graphics/pokemon/blastoise/front.png differ diff --git a/graphics/pokemon/blastoise/normal.pal b/graphics/pokemon/blastoise/normal.pal index 1721e21c9..d21a9f013 100644 --- a/graphics/pokemon/blastoise/normal.pal +++ b/graphics/pokemon/blastoise/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -80 120 176 -48 72 112 -168 184 224 -120 160 208 +248 192 248 +88 136 192 +48 88 144 +128 192 248 +96 168 240 72 72 72 16 16 16 200 200 208 -104 80 56 +96 88 56 144 144 144 -160 120 80 +136 104 80 248 248 248 -192 160 120 -248 224 192 -216 184 144 -136 96 64 +208 200 128 +248 240 184 +200 144 96 +156 136 80 diff --git a/graphics/pokemon/blaziken/anim_front.png b/graphics/pokemon/blaziken/anim_front.png index 8a2416fd3..7e2077423 100644 Binary files a/graphics/pokemon/blaziken/anim_front.png and b/graphics/pokemon/blaziken/anim_front.png differ diff --git a/graphics/pokemon/blaziken/front.png b/graphics/pokemon/blaziken/front.png index 21300b80f..5336ff9b3 100644 Binary files a/graphics/pokemon/blaziken/front.png and b/graphics/pokemon/blaziken/front.png differ diff --git a/graphics/pokemon/blaziken/normal.pal b/graphics/pokemon/blaziken/normal.pal index 01614decb..66f80cf62 100644 --- a/graphics/pokemon/blaziken/normal.pal +++ b/graphics/pokemon/blaziken/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -216 64 40 +184 64 64 16 16 16 -216 184 136 -168 144 104 -232 120 96 -248 136 96 -248 240 216 -104 96 80 -112 40 32 -248 216 104 +192 176 144 +144 128 96 +240 96 96 +248 128 96 +224 224 176 +96 80 72 +128 40 40 +248 216 96 40 120 208 -208 168 96 +224 160 80 160 136 120 248 248 248 136 96 56 diff --git a/graphics/pokemon/blissey/anim_front.png b/graphics/pokemon/blissey/anim_front.png index 96a74a308..81bbd243c 100644 Binary files a/graphics/pokemon/blissey/anim_front.png and b/graphics/pokemon/blissey/anim_front.png differ diff --git a/graphics/pokemon/blissey/front.png b/graphics/pokemon/blissey/front.png index 2a0263161..629594beb 100644 Binary files a/graphics/pokemon/blissey/front.png and b/graphics/pokemon/blissey/front.png differ diff --git a/graphics/pokemon/blissey/normal.pal b/graphics/pokemon/blissey/normal.pal index 7fbdbf991..19ff811eb 100644 --- a/graphics/pokemon/blissey/normal.pal +++ b/graphics/pokemon/blissey/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 48 88 -128 80 112 -248 192 208 +136 56 64 +192 88 96 +248 192 200 16 16 16 -248 160 184 -200 120 152 +248 168 192 +216 128 160 248 248 248 56 40 80 -216 112 112 -80 112 112 -176 224 216 -128 176 176 +208 72 96 +104 104 104 +216 208 208 +176 176 176 248 160 184 0 0 0 0 0 0 diff --git a/graphics/pokemon/blitzle/anim_front.png b/graphics/pokemon/blitzle/anim_front.png index 62857f3fe..73f4dcc8b 100644 Binary files a/graphics/pokemon/blitzle/anim_front.png and b/graphics/pokemon/blitzle/anim_front.png differ diff --git a/graphics/pokemon/blitzle/front.png b/graphics/pokemon/blitzle/front.png index 4d4c121f7..8eb3033d2 100644 Binary files a/graphics/pokemon/blitzle/front.png and b/graphics/pokemon/blitzle/front.png differ diff --git a/graphics/pokemon/blitzle/normal.pal b/graphics/pokemon/blitzle/normal.pal index 242e3fa48..543f4b4ad 100644 --- a/graphics/pokemon/blitzle/normal.pal +++ b/graphics/pokemon/blitzle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 88 88 -232 224 216 -40 32 32 -48 176 208 -48 40 40 +80 80 80 +248 248 248 +24 32 32 +0 168 216 +40 40 40 16 16 16 -152 128 48 -240 216 88 -48 120 136 -64 56 64 -136 128 112 -200 192 176 -136 128 112 +136 112 32 +248 224 0 +0 88 152 +56 56 56 +120 120 120 +200 200 200 +120 120 120 0 0 0 0 0 0 diff --git a/graphics/pokemon/boldore/anim_front.png b/graphics/pokemon/boldore/anim_front.png index 5fe8379dc..c0d5ec5e2 100644 Binary files a/graphics/pokemon/boldore/anim_front.png and b/graphics/pokemon/boldore/anim_front.png differ diff --git a/graphics/pokemon/boldore/front.png b/graphics/pokemon/boldore/front.png index 63f20d0b2..d5fef1c2f 100644 Binary files a/graphics/pokemon/boldore/front.png and b/graphics/pokemon/boldore/front.png differ diff --git a/graphics/pokemon/boldore/normal.pal b/graphics/pokemon/boldore/normal.pal index b65f3a774..ef0f4a880 100644 --- a/graphics/pokemon/boldore/normal.pal +++ b/graphics/pokemon/boldore/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -40 56 96 +40 56 104 16 16 16 -64 80 128 -24 32 56 -80 40 32 -224 80 56 -136 56 40 -240 112 80 -128 96 40 -168 120 48 -248 200 96 +64 80 136 +32 40 56 +112 48 32 +200 72 56 +168 40 24 +248 104 80 +88 64 32 +152 120 16 +248 200 64 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/bonsly/anim_front.png b/graphics/pokemon/bonsly/anim_front.png index c44a6eebe..074473680 100644 Binary files a/graphics/pokemon/bonsly/anim_front.png and b/graphics/pokemon/bonsly/anim_front.png differ diff --git a/graphics/pokemon/bonsly/front.png b/graphics/pokemon/bonsly/front.png index e038a994e..328a0b031 100644 Binary files a/graphics/pokemon/bonsly/front.png and b/graphics/pokemon/bonsly/front.png differ diff --git a/graphics/pokemon/bonsly/normal.pal b/graphics/pokemon/bonsly/normal.pal index 26e43311e..86c2976eb 100644 --- a/graphics/pokemon/bonsly/normal.pal +++ b/graphics/pokemon/bonsly/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 88 56 -72 128 80 -184 208 128 -72 184 112 +48 88 24 +88 136 88 +152 216 120 +72 192 64 0 0 0 -120 88 72 -64 48 32 -168 120 80 -200 160 104 -240 216 120 -216 184 48 -200 112 120 +128 104 64 +80 64 48 +168 128 88 +192 160 72 +248 232 120 +240 200 56 +160 64 72 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/bouffalant/anim_front.png b/graphics/pokemon/bouffalant/anim_front.png index 7e0fbb9e7..116a6eebe 100644 Binary files a/graphics/pokemon/bouffalant/anim_front.png and b/graphics/pokemon/bouffalant/anim_front.png differ diff --git a/graphics/pokemon/bouffalant/front.png b/graphics/pokemon/bouffalant/front.png index 57e397209..e3562d816 100644 Binary files a/graphics/pokemon/bouffalant/front.png and b/graphics/pokemon/bouffalant/front.png differ diff --git a/graphics/pokemon/bouffalant/normal.pal b/graphics/pokemon/bouffalant/normal.pal index 721ce9202..9dce91e75 100644 --- a/graphics/pokemon/bouffalant/normal.pal +++ b/graphics/pokemon/bouffalant/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 56 48 -96 80 72 -16 16 16 -72 48 24 -152 104 56 -104 72 40 -128 104 88 -200 176 128 -232 192 80 -248 240 200 -160 128 56 -56 56 64 -112 96 112 -152 160 168 -200 176 128 +49 41 32 +74 65 49 +0 0 0 +74 49 24 +148 106 49 +106 74 41 +156 131 90 +246 213 156 +255 197 74 +255 246 205 +172 139 41 +57 57 65 +106 106 115 +156 164 164 +189 164 123 diff --git a/graphics/pokemon/braviary/anim_front.png b/graphics/pokemon/braviary/anim_front.png index c6c6194e6..7cfc167a5 100644 Binary files a/graphics/pokemon/braviary/anim_front.png and b/graphics/pokemon/braviary/anim_front.png differ diff --git a/graphics/pokemon/braviary/front.png b/graphics/pokemon/braviary/front.png index 4e37d13a0..8efa81512 100644 Binary files a/graphics/pokemon/braviary/front.png and b/graphics/pokemon/braviary/front.png differ diff --git a/graphics/pokemon/braviary/normal.pal b/graphics/pokemon/braviary/normal.pal index a7c143390..080f4c38e 100644 --- a/graphics/pokemon/braviary/normal.pal +++ b/graphics/pokemon/braviary/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 24 24 -104 40 40 -160 56 56 +72 16 0 +112 32 32 +160 48 48 16 16 16 -56 40 56 -80 72 104 -176 168 136 -248 240 224 -240 224 184 -88 64 40 -176 168 152 -64 48 64 -168 128 72 -248 200 104 -32 104 176 +64 48 32 +80 80 112 +160 144 104 +224 224 224 +208 200 168 +96 80 32 +168 168 176 +48 48 72 +184 152 16 +232 208 88 +24 96 168 diff --git a/graphics/pokemon/breloom/anim_front.png b/graphics/pokemon/breloom/anim_front.png index 630ddd030..7dd5f4869 100644 Binary files a/graphics/pokemon/breloom/anim_front.png and b/graphics/pokemon/breloom/anim_front.png differ diff --git a/graphics/pokemon/breloom/front.png b/graphics/pokemon/breloom/front.png index 1556680ca..ebfe14335 100644 Binary files a/graphics/pokemon/breloom/front.png and b/graphics/pokemon/breloom/front.png differ diff --git a/graphics/pokemon/breloom/normal.pal b/graphics/pokemon/breloom/normal.pal index 105e8d9b6..e51660a7a 100644 --- a/graphics/pokemon/breloom/normal.pal +++ b/graphics/pokemon/breloom/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -48 80 40 -136 184 128 -96 144 88 -128 32 40 -240 120 128 -16 16 16 -200 64 80 +32 80 48 +128 176 112 +96 144 80 +128 32 56 +240 96 104 +0 0 0 +184 48 72 176 152 120 96 72 56 -208 184 144 -232 216 184 +216 184 136 +240 216 168 248 248 248 -153 96 121 -204 148 190 +168 16 0 +232 64 48 0 0 0 diff --git a/graphics/pokemon/bronzong/anim_front.png b/graphics/pokemon/bronzong/anim_front.png index 1eaf22900..6ac7575ed 100644 Binary files a/graphics/pokemon/bronzong/anim_front.png and b/graphics/pokemon/bronzong/anim_front.png differ diff --git a/graphics/pokemon/bronzong/front.png b/graphics/pokemon/bronzong/front.png index 3d27ef4e5..8ede6d683 100644 Binary files a/graphics/pokemon/bronzong/front.png and b/graphics/pokemon/bronzong/front.png differ diff --git a/graphics/pokemon/bronzong/normal.pal b/graphics/pokemon/bronzong/normal.pal index d61b8f8c3..68fd123fb 100644 --- a/graphics/pokemon/bronzong/normal.pal +++ b/graphics/pokemon/bronzong/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 120 120 -32 64 72 -136 216 200 -88 184 168 +32 112 128 +32 72 88 +112 208 232 +64 168 200 16 16 16 -80 152 144 -136 168 152 -152 208 192 -192 240 224 -56 96 96 -136 88 88 -224 96 88 +48 144 176 +136 168 176 +160 192 200 +184 208 216 +24 88 112 +152 104 120 +248 72 72 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/bronzor/anim_front.png b/graphics/pokemon/bronzor/anim_front.png index bdefc0d5a..e9d219a38 100644 Binary files a/graphics/pokemon/bronzor/anim_front.png and b/graphics/pokemon/bronzor/anim_front.png differ diff --git a/graphics/pokemon/bronzor/front.png b/graphics/pokemon/bronzor/front.png index 15b9a8372..71a928cc3 100644 Binary files a/graphics/pokemon/bronzor/front.png and b/graphics/pokemon/bronzor/front.png differ diff --git a/graphics/pokemon/bronzor/normal.pal b/graphics/pokemon/bronzor/normal.pal index 770eb182a..3bc74c7f7 100644 --- a/graphics/pokemon/bronzor/normal.pal +++ b/graphics/pokemon/bronzor/normal.pal @@ -2,14 +2,14 @@ JASC-PAL 0100 16 152 208 160 -24 56 64 -48 136 152 -32 88 112 -88 176 184 +16 56 72 +40 128 160 +24 88 120 +64 160 192 16 16 16 -240 184 96 +248 216 112 144 176 136 -128 200 200 +96 192 224 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/budew/anim_front.png b/graphics/pokemon/budew/anim_front.png index 089eddb32..1c8e447f5 100644 Binary files a/graphics/pokemon/budew/anim_front.png and b/graphics/pokemon/budew/anim_front.png differ diff --git a/graphics/pokemon/budew/front.png b/graphics/pokemon/budew/front.png index 3b232c4b1..09a81838a 100644 Binary files a/graphics/pokemon/budew/front.png and b/graphics/pokemon/budew/front.png differ diff --git a/graphics/pokemon/budew/normal.pal b/graphics/pokemon/budew/normal.pal index 8db24b7b6..0e710e61d 100644 --- a/graphics/pokemon/budew/normal.pal +++ b/graphics/pokemon/budew/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -112 160 56 +112 160 72 192 224 144 16 16 16 56 88 40 -128 200 80 -120 120 48 -232 232 104 -152 168 64 -40 72 32 -64 112 48 -80 144 64 +120 208 88 +144 128 0 +248 232 104 +224 184 56 +32 80 72 +48 120 96 +72 144 112 160 200 120 216 120 128 0 0 0 diff --git a/graphics/pokemon/buizel/anim_front.png b/graphics/pokemon/buizel/anim_front.png index 2cca44ba6..3cdc6e327 100644 Binary files a/graphics/pokemon/buizel/anim_front.png and b/graphics/pokemon/buizel/anim_front.png differ diff --git a/graphics/pokemon/buizel/front.png b/graphics/pokemon/buizel/front.png index 4794f1d58..e52b77c57 100644 Binary files a/graphics/pokemon/buizel/front.png and b/graphics/pokemon/buizel/front.png differ diff --git a/graphics/pokemon/buizel/normal.pal b/graphics/pokemon/buizel/normal.pal index dfab66d4b..592c4dd20 100644 --- a/graphics/pokemon/buizel/normal.pal +++ b/graphics/pokemon/buizel/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -168 80 40 -232 128 56 +168 88 32 +232 120 24 96 56 32 24 24 24 -64 112 128 -208 176 104 -104 192 232 -248 232 176 +32 96 160 +216 192 128 +96 184 224 +240 240 176 248 248 248 96 88 88 216 216 232 -248 208 56 -192 152 48 +248 216 0 +224 160 48 200 104 40 0 0 0 diff --git a/graphics/pokemon/bulbasaur/anim_front.png b/graphics/pokemon/bulbasaur/anim_front.png index c0a4f5d8f..ad2a2f4ec 100644 Binary files a/graphics/pokemon/bulbasaur/anim_front.png and b/graphics/pokemon/bulbasaur/anim_front.png differ diff --git a/graphics/pokemon/bulbasaur/back.png b/graphics/pokemon/bulbasaur/back.png index c19e3c171..a16779fc7 100644 Binary files a/graphics/pokemon/bulbasaur/back.png and b/graphics/pokemon/bulbasaur/back.png differ diff --git a/graphics/pokemon/bulbasaur/front.png b/graphics/pokemon/bulbasaur/front.png index 9c43bed4a..cd7a485b9 100644 Binary files a/graphics/pokemon/bulbasaur/front.png and b/graphics/pokemon/bulbasaur/front.png differ diff --git a/graphics/pokemon/bulbasaur/normal.pal b/graphics/pokemon/bulbasaur/normal.pal index dea43adff..2df2358d9 100644 --- a/graphics/pokemon/bulbasaur/normal.pal +++ b/graphics/pokemon/bulbasaur/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -208 248 184 +248 192 248 40 96 48 -112 184 112 +96 192 112 16 16 16 -72 136 72 -152 208 160 -40 80 64 -80 144 128 -160 216 184 -56 120 88 -96 184 144 -160 40 48 +56 144 72 +144 216 144 +24 72 72 +56 144 144 +128 232 192 +48 112 112 +96 208 176 +168 0 48 248 248 248 248 104 96 -104 64 88 -184 120 152 +160 48 16 +200 200 200 diff --git a/graphics/pokemon/bulbasaur/shiny.pal b/graphics/pokemon/bulbasaur/shiny.pal index fa53f927f..30895158b 100644 --- a/graphics/pokemon/bulbasaur/shiny.pal +++ b/graphics/pokemon/bulbasaur/shiny.pal @@ -16,4 +16,4 @@ JASC-PAL 248 248 248 248 128 120 184 56 48 -248 128 120 +200 200 200 diff --git a/graphics/pokemon/buneary/anim_front.png b/graphics/pokemon/buneary/anim_front.png index 927b92507..5d6bb799d 100644 Binary files a/graphics/pokemon/buneary/anim_front.png and b/graphics/pokemon/buneary/anim_front.png differ diff --git a/graphics/pokemon/buneary/front.png b/graphics/pokemon/buneary/front.png index f204cb020..efb01359d 100644 Binary files a/graphics/pokemon/buneary/front.png and b/graphics/pokemon/buneary/front.png differ diff --git a/graphics/pokemon/buneary/normal.pal b/graphics/pokemon/buneary/normal.pal index 3bab71a53..499f3a9ac 100644 --- a/graphics/pokemon/buneary/normal.pal +++ b/graphics/pokemon/buneary/normal.pal @@ -10,8 +10,8 @@ JASC-PAL 16 16 16 136 88 56 112 64 72 -216 144 152 -168 96 112 +248 136 160 +192 88 120 248 248 248 56 40 24 0 0 0 diff --git a/graphics/pokemon/burmy/anim_front.png b/graphics/pokemon/burmy/anim_front.png index 5eaebd47e..8047a7896 100644 Binary files a/graphics/pokemon/burmy/anim_front.png and b/graphics/pokemon/burmy/anim_front.png differ diff --git a/graphics/pokemon/burmy/front.png b/graphics/pokemon/burmy/front.png index 9612600e4..20e449da8 100644 Binary files a/graphics/pokemon/burmy/front.png and b/graphics/pokemon/burmy/front.png differ diff --git a/graphics/pokemon/burmy/normal.pal b/graphics/pokemon/burmy/normal.pal index 6895b8b9c..f7de8d3ec 100644 --- a/graphics/pokemon/burmy/normal.pal +++ b/graphics/pokemon/burmy/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 40 48 -136 136 120 -56 56 56 -88 88 96 +41 41 49 +90 90 90 +57 57 65 +131 131 123 16 16 16 -32 64 32 -112 160 80 -72 120 48 -248 200 48 -160 128 24 -152 112 72 -88 64 40 +49 74 57 +123 156 74 +82 115 65 +255 213 74 +156 139 41 +139 106 74 +98 74 57 192 152 104 0 0 0 0 0 0 diff --git a/graphics/pokemon/burmy/sandy_cloak/anim_front.png b/graphics/pokemon/burmy/sandy_cloak/anim_front.png index 0819e2b4c..32c1ceb46 100644 Binary files a/graphics/pokemon/burmy/sandy_cloak/anim_front.png and b/graphics/pokemon/burmy/sandy_cloak/anim_front.png differ diff --git a/graphics/pokemon/burmy/sandy_cloak/front.png b/graphics/pokemon/burmy/sandy_cloak/front.png index 4dadea3df..13f9c353a 100644 Binary files a/graphics/pokemon/burmy/sandy_cloak/front.png and b/graphics/pokemon/burmy/sandy_cloak/front.png differ diff --git a/graphics/pokemon/burmy/sandy_cloak/normal.pal b/graphics/pokemon/burmy/sandy_cloak/normal.pal index 498bc6ef4..e88cc7b0c 100644 --- a/graphics/pokemon/burmy/sandy_cloak/normal.pal +++ b/graphics/pokemon/burmy/sandy_cloak/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 40 48 -136 136 120 -56 56 56 -88 88 96 +41 41 49 +132 132 123 +58 58 66 +90 90 90 16 16 16 -136 128 88 -240 216 144 -96 80 80 -176 152 104 -248 200 48 -160 128 24 -96 104 112 -128 152 152 +132 115 99 +214 197 115 +99 82 82 +173 148 115 +255 214 74 +156 140 41 +99 107 107 +132 140 140 240 216 144 0 0 0 diff --git a/graphics/pokemon/burmy/trash_cloak/anim_front.png b/graphics/pokemon/burmy/trash_cloak/anim_front.png index d24fb3427..ec25c45f3 100644 Binary files a/graphics/pokemon/burmy/trash_cloak/anim_front.png and b/graphics/pokemon/burmy/trash_cloak/anim_front.png differ diff --git a/graphics/pokemon/burmy/trash_cloak/front.png b/graphics/pokemon/burmy/trash_cloak/front.png index 585d07238..39004627d 100644 Binary files a/graphics/pokemon/burmy/trash_cloak/front.png and b/graphics/pokemon/burmy/trash_cloak/front.png differ diff --git a/graphics/pokemon/burmy/trash_cloak/normal.pal b/graphics/pokemon/burmy/trash_cloak/normal.pal index 68533a009..3be75e1e9 100644 --- a/graphics/pokemon/burmy/trash_cloak/normal.pal +++ b/graphics/pokemon/burmy/trash_cloak/normal.pal @@ -9,8 +9,8 @@ JASC-PAL 16 16 16 136 80 88 96 64 72 -192 104 112 -232 160 144 +176 104 120 +240 144 152 248 200 48 160 128 24 120 120 128 diff --git a/graphics/pokemon/butterfree/anim_front.png b/graphics/pokemon/butterfree/anim_front.png index 58e1f5e10..ee2ef504a 100644 Binary files a/graphics/pokemon/butterfree/anim_front.png and b/graphics/pokemon/butterfree/anim_front.png differ diff --git a/graphics/pokemon/butterfree/front.png b/graphics/pokemon/butterfree/front.png index fe1b9ceea..fb8f2bc34 100644 Binary files a/graphics/pokemon/butterfree/front.png and b/graphics/pokemon/butterfree/front.png differ diff --git a/graphics/pokemon/butterfree/normal.pal b/graphics/pokemon/butterfree/normal.pal index e3eb5312f..8467d6e81 100644 --- a/graphics/pokemon/butterfree/normal.pal +++ b/graphics/pokemon/butterfree/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -40 32 56 -72 56 112 -144 128 168 +0 0 0 +48 48 48 +64 48 96 +128 120 144 232 232 248 -96 88 144 +96 80 120 184 184 224 -216 88 80 +224 96 128 96 48 56 -232 168 160 +248 152 176 48 48 80 -184 56 48 -56 128 160 -96 184 208 +216 48 48 +80 120 192 +104 184 200 240 248 248 diff --git a/graphics/pokemon/cacnea/anim_front.png b/graphics/pokemon/cacnea/anim_front.png index ede9c40b8..5d0969d8f 100644 Binary files a/graphics/pokemon/cacnea/anim_front.png and b/graphics/pokemon/cacnea/anim_front.png differ diff --git a/graphics/pokemon/cacnea/front.png b/graphics/pokemon/cacnea/front.png index 5cf6efd8f..2fa30c173 100644 Binary files a/graphics/pokemon/cacnea/front.png and b/graphics/pokemon/cacnea/front.png differ diff --git a/graphics/pokemon/cacnea/normal.pal b/graphics/pokemon/cacnea/normal.pal index d669aeda0..85eb8be5c 100644 --- a/graphics/pokemon/cacnea/normal.pal +++ b/graphics/pokemon/cacnea/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 0 176 232 16 16 16 -128 112 64 -248 224 144 -224 184 88 -48 80 32 -112 184 128 -72 144 88 -72 112 80 -152 192 112 -112 152 80 -184 224 160 -72 112 48 -40 40 40 +136 104 56 +248 224 56 +240 184 24 +32 80 0 +96 184 104 +48 144 72 +24 104 48 +144 192 80 +112 152 56 +184 216 120 +72 112 16 +0 56 16 248 248 248 0 0 0 diff --git a/graphics/pokemon/cacturne/anim_front.png b/graphics/pokemon/cacturne/anim_front.png index 3d391e864..b9ab8625d 100644 Binary files a/graphics/pokemon/cacturne/anim_front.png and b/graphics/pokemon/cacturne/anim_front.png differ diff --git a/graphics/pokemon/cacturne/front.png b/graphics/pokemon/cacturne/front.png index 97a1373a9..0e7587f6f 100644 Binary files a/graphics/pokemon/cacturne/front.png and b/graphics/pokemon/cacturne/front.png differ diff --git a/graphics/pokemon/cacturne/normal.pal b/graphics/pokemon/cacturne/normal.pal index 70cdb6a14..2584eaab4 100644 --- a/graphics/pokemon/cacturne/normal.pal +++ b/graphics/pokemon/cacturne/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -32 80 32 +32 82 0 16 16 16 -144 176 112 -104 160 104 -56 96 64 -40 120 56 -24 104 32 -64 128 72 -168 208 144 -176 136 56 -80 80 80 -248 200 88 -128 160 104 -192 232 176 +139 189 98 +98 180 106 +74 115 16 +49 148 82 +24 106 32 +74 164 82 +164 213 115 +139 106 57 +82 82 82 +246 205 0 +123 164 98 +189 238 131 104 104 104 diff --git a/graphics/pokemon/camerupt/anim_front.png b/graphics/pokemon/camerupt/anim_front.png index 77f13e14e..394f96e9f 100644 Binary files a/graphics/pokemon/camerupt/anim_front.png and b/graphics/pokemon/camerupt/anim_front.png differ diff --git a/graphics/pokemon/camerupt/front.png b/graphics/pokemon/camerupt/front.png index 631f35416..9baaa98c7 100644 Binary files a/graphics/pokemon/camerupt/front.png and b/graphics/pokemon/camerupt/front.png differ diff --git a/graphics/pokemon/camerupt/normal.pal b/graphics/pokemon/camerupt/normal.pal index d97bf53f3..13fea6106 100644 --- a/graphics/pokemon/camerupt/normal.pal +++ b/graphics/pokemon/camerupt/normal.pal @@ -7,9 +7,9 @@ JASC-PAL 224 200 184 24 24 24 248 248 248 -112 56 40 -216 120 96 -176 88 56 +112 40 56 +232 104 72 +192 56 32 112 192 224 64 144 176 232 160 136 diff --git a/graphics/pokemon/carnivine/anim_front.png b/graphics/pokemon/carnivine/anim_front.png index fabccf9ac..ef9f5a154 100644 Binary files a/graphics/pokemon/carnivine/anim_front.png and b/graphics/pokemon/carnivine/anim_front.png differ diff --git a/graphics/pokemon/carnivine/front.png b/graphics/pokemon/carnivine/front.png index eb977bbaa..2d26ac904 100644 Binary files a/graphics/pokemon/carnivine/front.png and b/graphics/pokemon/carnivine/front.png differ diff --git a/graphics/pokemon/carnivine/normal.pal b/graphics/pokemon/carnivine/normal.pal index b6bd7da6d..6330295d7 100644 --- a/graphics/pokemon/carnivine/normal.pal +++ b/graphics/pokemon/carnivine/normal.pal @@ -8,12 +8,12 @@ JASC-PAL 136 160 88 16 16 16 248 248 248 -128 48 48 +152 32 72 56 24 16 32 56 24 -224 80 80 +224 40 24 64 104 48 -184 152 56 +192 152 48 112 104 40 -240 200 72 +240 200 48 96 104 72 diff --git a/graphics/pokemon/carracosta/anim_front.png b/graphics/pokemon/carracosta/anim_front.png index 42a2e992f..e93c3cb39 100644 Binary files a/graphics/pokemon/carracosta/anim_front.png and b/graphics/pokemon/carracosta/anim_front.png differ diff --git a/graphics/pokemon/carracosta/front.png b/graphics/pokemon/carracosta/front.png index d064205ee..7297c4b24 100644 Binary files a/graphics/pokemon/carracosta/front.png and b/graphics/pokemon/carracosta/front.png differ diff --git a/graphics/pokemon/carracosta/normal.pal b/graphics/pokemon/carracosta/normal.pal index fd2b5d042..8371a3af4 100644 --- a/graphics/pokemon/carracosta/normal.pal +++ b/graphics/pokemon/carracosta/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 48 64 -104 112 136 -16 16 16 -72 112 144 -88 152 208 -56 72 96 -72 72 96 -128 184 232 -72 88 120 -144 200 208 +40 48 56 +96 112 128 +0 0 0 +56 112 152 +72 144 208 +40 56 96 +64 72 88 +88 168 224 +80 88 104 +160 200 208 224 224 224 56 96 128 -0 0 0 +40 56 96 0 0 0 0 0 0 diff --git a/graphics/pokemon/carvanha/anim_front.png b/graphics/pokemon/carvanha/anim_front.png index 9f616c400..d2383d127 100644 Binary files a/graphics/pokemon/carvanha/anim_front.png and b/graphics/pokemon/carvanha/anim_front.png differ diff --git a/graphics/pokemon/carvanha/front.png b/graphics/pokemon/carvanha/front.png index f6a33d69a..b5b9ec4d1 100644 Binary files a/graphics/pokemon/carvanha/front.png and b/graphics/pokemon/carvanha/front.png differ diff --git a/graphics/pokemon/carvanha/normal.pal b/graphics/pokemon/carvanha/normal.pal index 6ac96e800..d12d83d8d 100644 --- a/graphics/pokemon/carvanha/normal.pal +++ b/graphics/pokemon/carvanha/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 80 56 +96 72 56 248 248 248 16 16 16 -248 232 120 -176 144 88 -224 184 96 -104 48 56 -160 72 72 -24 64 136 -48 112 168 -16 40 80 -224 72 88 -248 120 128 -200 200 232 -211 139 161 +232 200 96 +200 168 40 +216 184 56 +120 56 56 +184 56 64 +56 80 144 +80 112 184 +40 56 80 +240 64 72 +248 128 128 +160 184 208 +224 104 120 diff --git a/graphics/pokemon/cascoon/anim_front.png b/graphics/pokemon/cascoon/anim_front.png index f5165017e..c1eb0e0d8 100644 Binary files a/graphics/pokemon/cascoon/anim_front.png and b/graphics/pokemon/cascoon/anim_front.png differ diff --git a/graphics/pokemon/cascoon/front.png b/graphics/pokemon/cascoon/front.png index 9f5867c09..54081095c 100644 Binary files a/graphics/pokemon/cascoon/front.png and b/graphics/pokemon/cascoon/front.png differ diff --git a/graphics/pokemon/cascoon/normal.pal b/graphics/pokemon/cascoon/normal.pal index 1134f1eef..5dcc0e9e2 100644 --- a/graphics/pokemon/cascoon/normal.pal +++ b/graphics/pokemon/cascoon/normal.pal @@ -9,11 +9,11 @@ JASC-PAL 240 216 240 184 152 184 168 168 176 -168 72 80 -112 40 40 +184 48 80 +136 0 32 232 224 248 -240 128 128 -144 8 40 +248 104 128 +128 0 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/caterpie/anim_front.png b/graphics/pokemon/caterpie/anim_front.png index 877ed1ac1..9ac8da377 100644 Binary files a/graphics/pokemon/caterpie/anim_front.png and b/graphics/pokemon/caterpie/anim_front.png differ diff --git a/graphics/pokemon/caterpie/front.png b/graphics/pokemon/caterpie/front.png index 44b30824c..1898998b9 100644 Binary files a/graphics/pokemon/caterpie/front.png and b/graphics/pokemon/caterpie/front.png differ diff --git a/graphics/pokemon/caterpie/normal.pal b/graphics/pokemon/caterpie/normal.pal index 1c8bf2bb0..6120e433b 100644 --- a/graphics/pokemon/caterpie/normal.pal +++ b/graphics/pokemon/caterpie/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 56 32 -240 104 64 -248 176 152 -192 80 48 -72 120 56 -168 216 152 +128 56 72 +248 120 64 +248 176 56 +248 64 64 +32 120 72 +168 240 64 16 16 16 -56 88 40 -112 200 88 -96 160 72 -248 224 128 -216 184 72 -136 120 40 -104 184 80 -248 224 128 +24 88 64 +104 208 48 +48 168 64 +240 232 136 +208 184 128 +120 128 72 +72 200 40 +240 232 136 diff --git a/graphics/pokemon/celebi/anim_front.png b/graphics/pokemon/celebi/anim_front.png index d6ffb512f..e6b312384 100644 Binary files a/graphics/pokemon/celebi/anim_front.png and b/graphics/pokemon/celebi/anim_front.png differ diff --git a/graphics/pokemon/celebi/front.png b/graphics/pokemon/celebi/front.png index d88004802..492be76a9 100644 Binary files a/graphics/pokemon/celebi/front.png and b/graphics/pokemon/celebi/front.png differ diff --git a/graphics/pokemon/celebi/normal.pal b/graphics/pokemon/celebi/normal.pal index 9a17d2a1e..a5aef9a6d 100644 --- a/graphics/pokemon/celebi/normal.pal +++ b/graphics/pokemon/celebi/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 160 176 -104 152 80 -144 200 112 +112 160 48 +160 216 80 16 16 16 -40 144 192 -104 184 216 -40 104 160 -72 96 56 -200 240 224 -216 248 184 -160 192 152 +80 136 168 +136 176 200 +0 96 176 +72 112 32 +192 216 224 +248 248 216 +176 192 88 248 248 248 -184 224 168 +216 232 144 104 112 128 176 176 184 -163 106 106 +192 0 0 diff --git a/graphics/pokemon/chandelure/anim_front.png b/graphics/pokemon/chandelure/anim_front.png index 97a34c8fd..847bc7815 100644 Binary files a/graphics/pokemon/chandelure/anim_front.png and b/graphics/pokemon/chandelure/anim_front.png differ diff --git a/graphics/pokemon/chandelure/front.png b/graphics/pokemon/chandelure/front.png index 66032c7a9..4dfc4d189 100644 Binary files a/graphics/pokemon/chandelure/front.png and b/graphics/pokemon/chandelure/front.png differ diff --git a/graphics/pokemon/chandelure/normal.pal b/graphics/pokemon/chandelure/normal.pal index ca8912667..aa3fc312f 100644 --- a/graphics/pokemon/chandelure/normal.pal +++ b/graphics/pokemon/chandelure/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -72 56 136 -96 96 176 -136 184 224 +64 40 176 +112 80 224 +168 160 240 16 16 16 -48 40 40 -72 72 72 -184 208 240 +48 48 48 +88 88 88 +192 208 208 248 248 248 120 136 136 -240 200 48 -72 72 72 +248 224 32 +0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/chansey/anim_front.png b/graphics/pokemon/chansey/anim_front.png index d83d55c92..487cdb2b4 100644 Binary files a/graphics/pokemon/chansey/anim_front.png and b/graphics/pokemon/chansey/anim_front.png differ diff --git a/graphics/pokemon/chansey/front.png b/graphics/pokemon/chansey/front.png index 2c2ab8541..c032d0faf 100644 Binary files a/graphics/pokemon/chansey/front.png and b/graphics/pokemon/chansey/front.png differ diff --git a/graphics/pokemon/chansey/normal.pal b/graphics/pokemon/chansey/normal.pal index 9e745b501..384b9e8c5 100644 --- a/graphics/pokemon/chansey/normal.pal +++ b/graphics/pokemon/chansey/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -168 120 160 -112 72 104 -248 216 240 -248 200 232 -136 72 80 -208 128 136 -248 152 176 +224 120 128 +152 64 80 +248 224 232 +248 208 224 +152 48 80 +232 120 136 +240 152 168 248 248 248 16 16 16 56 136 184 -216 168 192 -184 160 144 -112 96 80 -232 216 208 +232 168 184 +168 160 112 +112 104 72 +224 216 184 0 0 0 diff --git a/graphics/pokemon/charizard/anim_front.png b/graphics/pokemon/charizard/anim_front.png index 4c7416350..b3421924f 100644 Binary files a/graphics/pokemon/charizard/anim_front.png and b/graphics/pokemon/charizard/anim_front.png differ diff --git a/graphics/pokemon/charizard/back.png b/graphics/pokemon/charizard/back.png index 60f010405..6782e1e75 100644 Binary files a/graphics/pokemon/charizard/back.png and b/graphics/pokemon/charizard/back.png differ diff --git a/graphics/pokemon/charizard/front.png b/graphics/pokemon/charizard/front.png index afb68a6e0..97a6fd5ef 100644 Binary files a/graphics/pokemon/charizard/front.png and b/graphics/pokemon/charizard/front.png differ diff --git a/graphics/pokemon/charizard/normal.pal b/graphics/pokemon/charizard/normal.pal index f9e888220..87269fdd3 100644 --- a/graphics/pokemon/charizard/normal.pal +++ b/graphics/pokemon/charizard/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 232 64 32 -96 56 32 +128 48 24 240 160 16 -248 184 136 +232 176 88 248 224 104 -184 104 64 +200 80 64 16 16 16 -240 144 64 -0 72 80 -0 112 136 +232 128 40 +8 64 80 +32 112 144 200 200 200 248 248 248 -168 96 104 -248 224 152 -216 184 112 +0 128 248 +232 216 120 +232 176 88 diff --git a/graphics/pokemon/charizard/shiny.pal b/graphics/pokemon/charizard/shiny.pal index 2b40c3c20..dce3f7832 100644 --- a/graphics/pokemon/charizard/shiny.pal +++ b/graphics/pokemon/charizard/shiny.pal @@ -14,6 +14,6 @@ JASC-PAL 184 32 64 200 200 200 248 248 248 -208 80 16 +192 0 0 216 216 184 184 184 168 diff --git a/graphics/pokemon/charmander/anim_front.png b/graphics/pokemon/charmander/anim_front.png index 9788e3d3e..66904b580 100644 Binary files a/graphics/pokemon/charmander/anim_front.png and b/graphics/pokemon/charmander/anim_front.png differ diff --git a/graphics/pokemon/charmander/front.png b/graphics/pokemon/charmander/front.png index f25d50320..eb0a9590d 100644 Binary files a/graphics/pokemon/charmander/front.png and b/graphics/pokemon/charmander/front.png differ diff --git a/graphics/pokemon/charmander/normal.pal b/graphics/pokemon/charmander/normal.pal index c1dfa5299..d365db830 100644 --- a/graphics/pokemon/charmander/normal.pal +++ b/graphics/pokemon/charmander/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 112 72 -112 64 40 -240 152 96 -232 192 160 +216 80 56 +136 40 0 +248 144 64 +248 192 96 16 16 16 -32 104 128 -72 136 168 +16 64 136 +48 168 232 248 248 248 248 208 80 232 56 24 240 160 0 -168 88 128 -208 184 152 -248 232 192 +192 96 104 +224 200 136 +248 232 200 176 176 176 diff --git a/graphics/pokemon/charmeleon/anim_front.png b/graphics/pokemon/charmeleon/anim_front.png index 0d1206a9f..570b50669 100644 Binary files a/graphics/pokemon/charmeleon/anim_front.png and b/graphics/pokemon/charmeleon/anim_front.png differ diff --git a/graphics/pokemon/charmeleon/front.png b/graphics/pokemon/charmeleon/front.png index 9e963a684..bdbd577e2 100644 Binary files a/graphics/pokemon/charmeleon/front.png and b/graphics/pokemon/charmeleon/front.png differ diff --git a/graphics/pokemon/charmeleon/normal.pal b/graphics/pokemon/charmeleon/normal.pal index 28e262a7a..c72de3517 100644 --- a/graphics/pokemon/charmeleon/normal.pal +++ b/graphics/pokemon/charmeleon/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 248 208 80 248 160 0 232 56 24 -112 40 32 -184 72 48 -232 104 80 +144 32 16 +208 56 56 +248 80 72 16 16 16 104 104 104 248 248 248 176 176 176 -96 136 160 -232 152 136 -232 200 184 -224 184 160 -192 152 120 +0 88 248 +248 128 104 +232 200 176 +200 168 120 +184 152 104 diff --git a/graphics/pokemon/chatot/anim_front.png b/graphics/pokemon/chatot/anim_front.png index e769ef2d6..a7b9fa5bc 100644 Binary files a/graphics/pokemon/chatot/anim_front.png and b/graphics/pokemon/chatot/anim_front.png differ diff --git a/graphics/pokemon/chatot/front.png b/graphics/pokemon/chatot/front.png index cb40baa3d..41d53718e 100644 Binary files a/graphics/pokemon/chatot/front.png and b/graphics/pokemon/chatot/front.png differ diff --git a/graphics/pokemon/chatot/normal.pal b/graphics/pokemon/chatot/normal.pal index 35758891c..0588ebcb5 100644 --- a/graphics/pokemon/chatot/normal.pal +++ b/graphics/pokemon/chatot/normal.pal @@ -8,12 +8,12 @@ JASC-PAL 0 0 0 224 240 240 160 176 176 -232 120 136 -160 64 72 -40 136 200 -24 64 104 -40 104 144 -168 128 48 -240 200 104 -40 104 56 +224 120 152 +192 24 80 +40 144 200 +32 48 120 +40 96 176 +160 136 32 +240 208 64 +32 96 16 0 0 0 diff --git a/graphics/pokemon/cherrim/normal/anim_front.png b/graphics/pokemon/cherrim/normal/anim_front.png index 5b10c48d1..591396454 100644 Binary files a/graphics/pokemon/cherrim/normal/anim_front.png and b/graphics/pokemon/cherrim/normal/anim_front.png differ diff --git a/graphics/pokemon/cherrim/normal/normal.pal b/graphics/pokemon/cherrim/normal/normal.pal index b04e7c0e6..1a91fdc24 100644 --- a/graphics/pokemon/cherrim/normal/normal.pal +++ b/graphics/pokemon/cherrim/normal/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 48 64 -200 88 112 -216 136 136 +120 40 72 +200 80 120 +216 112 144 16 16 16 -152 64 80 +160 56 96 16 80 16 48 120 48 56 168 56 -96 192 96 -96 56 112 -152 120 176 -120 88 152 -56 32 72 +88 192 88 +104 64 120 +152 120 184 +128 88 168 +72 40 64 0 0 0 0 0 0 diff --git a/graphics/pokemon/cherrim/sunshine/front.png b/graphics/pokemon/cherrim/sunshine/front.png index 42c789389..8c65c561c 100644 Binary files a/graphics/pokemon/cherrim/sunshine/front.png and b/graphics/pokemon/cherrim/sunshine/front.png differ diff --git a/graphics/pokemon/cherrim/sunshine/normal.pal b/graphics/pokemon/cherrim/sunshine/normal.pal index 434b8ec78..a90df8210 100644 --- a/graphics/pokemon/cherrim/sunshine/normal.pal +++ b/graphics/pokemon/cherrim/sunshine/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -88 48 56 -152 80 88 -248 192 184 +144 32 64 +200 56 104 +248 192 224 16 16 16 -192 120 128 -248 168 160 +224 128 168 +248 160 200 248 96 128 248 224 240 -120 104 40 -208 176 80 -248 224 136 +152 104 16 +216 176 88 +248 224 112 40 112 48 48 160 56 200 56 104 diff --git a/graphics/pokemon/cherubi/anim_front.png b/graphics/pokemon/cherubi/anim_front.png index ed64f3405..c8908ed77 100644 Binary files a/graphics/pokemon/cherubi/anim_front.png and b/graphics/pokemon/cherubi/anim_front.png differ diff --git a/graphics/pokemon/cherubi/front.png b/graphics/pokemon/cherubi/front.png index 6aaa22267..75b735e57 100644 Binary files a/graphics/pokemon/cherubi/front.png and b/graphics/pokemon/cherubi/front.png differ diff --git a/graphics/pokemon/cherubi/normal.pal b/graphics/pokemon/cherubi/normal.pal index f001b9d03..1fe243b8c 100644 --- a/graphics/pokemon/cherubi/normal.pal +++ b/graphics/pokemon/cherubi/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 112 48 -88 200 96 -24 72 32 -56 168 56 -48 136 48 +57 115 74 +115 205 90 +49 65 82 +82 164 74 +65 148 65 16 16 16 -112 16 56 -184 64 88 -232 96 120 -144 32 88 -56 32 32 -248 168 152 -248 248 248 +106 57 74 +172 65 106 +222 98 131 +131 49 82 +65 49 49 +255 139 172 +255 255 255 0 0 0 0 0 0 diff --git a/graphics/pokemon/chikorita/anim_front.png b/graphics/pokemon/chikorita/anim_front.png index 038f845b6..ebba2d94f 100644 Binary files a/graphics/pokemon/chikorita/anim_front.png and b/graphics/pokemon/chikorita/anim_front.png differ diff --git a/graphics/pokemon/chikorita/front.png b/graphics/pokemon/chikorita/front.png index 40200bfa0..687e8ee36 100644 Binary files a/graphics/pokemon/chikorita/front.png and b/graphics/pokemon/chikorita/front.png differ diff --git a/graphics/pokemon/chikorita/normal.pal b/graphics/pokemon/chikorita/normal.pal index 9cc099b62..0cda9b7dd 100644 --- a/graphics/pokemon/chikorita/normal.pal +++ b/graphics/pokemon/chikorita/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -72 136 72 -32 88 32 -128 208 112 -88 168 80 -8 8 8 -80 96 56 -128 152 88 -200 232 144 -240 248 168 -176 184 112 +192 192 248 +80 136 32 +64 96 24 +144 208 96 +104 176 72 +0 0 0 +96 96 56 +152 152 88 +224 232 168 +240 240 208 +184 200 120 192 192 192 248 248 248 -96 32 56 -152 56 64 -200 104 112 +96 64 88 +192 40 40 +232 120 120 diff --git a/graphics/pokemon/chimchar/anim_front.png b/graphics/pokemon/chimchar/anim_front.png index 86c266d0d..4e6879f52 100644 Binary files a/graphics/pokemon/chimchar/anim_front.png and b/graphics/pokemon/chimchar/anim_front.png differ diff --git a/graphics/pokemon/chimchar/front.png b/graphics/pokemon/chimchar/front.png index 7d09db465..1a0e606a8 100644 Binary files a/graphics/pokemon/chimchar/front.png and b/graphics/pokemon/chimchar/front.png differ diff --git a/graphics/pokemon/chimchar/normal.pal b/graphics/pokemon/chimchar/normal.pal index 8a65f6fa1..42ac104af 100644 --- a/graphics/pokemon/chimchar/normal.pal +++ b/graphics/pokemon/chimchar/normal.pal @@ -2,10 +2,10 @@ JASC-PAL 0100 16 152 208 160 -152 88 40 -208 120 40 -104 56 8 -240 152 56 +176 104 40 +216 128 0 +120 64 16 +248 168 80 16 16 16 144 120 80 208 176 120 diff --git a/graphics/pokemon/chimecho/anim_front.png b/graphics/pokemon/chimecho/anim_front.png index 01cd83e59..991130d1b 100644 Binary files a/graphics/pokemon/chimecho/anim_front.png and b/graphics/pokemon/chimecho/anim_front.png differ diff --git a/graphics/pokemon/chimecho/front.png b/graphics/pokemon/chimecho/front.png index 19d3b806e..7d9992580 100644 Binary files a/graphics/pokemon/chimecho/front.png and b/graphics/pokemon/chimecho/front.png differ diff --git a/graphics/pokemon/chimecho/normal.pal b/graphics/pokemon/chimecho/normal.pal index 698f769f8..3b3e590f2 100644 --- a/graphics/pokemon/chimecho/normal.pal +++ b/graphics/pokemon/chimecho/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 120 80 +160 112 80 248 248 248 -248 232 168 +248 224 144 16 16 16 -240 208 112 -200 168 120 +248 208 88 +224 160 72 80 104 112 -208 232 248 -160 200 224 -152 72 88 -120 152 168 -232 104 120 -128 40 56 -240 208 112 +192 224 248 +152 192 224 +176 64 88 +104 144 176 +240 80 120 +120 40 64 +248 208 88 0 0 0 diff --git a/graphics/pokemon/chinchou/anim_front.png b/graphics/pokemon/chinchou/anim_front.png index 25d4fd97e..370a5a99d 100644 Binary files a/graphics/pokemon/chinchou/anim_front.png and b/graphics/pokemon/chinchou/anim_front.png differ diff --git a/graphics/pokemon/chinchou/front.png b/graphics/pokemon/chinchou/front.png index ac68315e3..348090d34 100644 Binary files a/graphics/pokemon/chinchou/front.png and b/graphics/pokemon/chinchou/front.png differ diff --git a/graphics/pokemon/chinchou/normal.pal b/graphics/pokemon/chinchou/normal.pal index 12749df0d..a2d9c8aca 100644 --- a/graphics/pokemon/chinchou/normal.pal +++ b/graphics/pokemon/chinchou/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 104 184 -64 80 144 -96 136 224 -192 168 88 -240 224 128 -200 208 240 -24 40 80 -16 16 16 -128 120 80 -80 72 40 -248 224 184 -232 200 96 -136 160 232 -184 96 96 +88 112 192 +40 80 144 +120 152 216 +184 152 32 +240 216 56 +184 192 232 +8 40 88 +0 0 0 +128 96 80 +80 40 24 +248 232 128 +216 184 48 +144 160 224 +176 0 0 0 0 0 diff --git a/graphics/pokemon/chingling/anim_front.png b/graphics/pokemon/chingling/anim_front.png index 738e9cb54..d564a3fa2 100644 Binary files a/graphics/pokemon/chingling/anim_front.png and b/graphics/pokemon/chingling/anim_front.png differ diff --git a/graphics/pokemon/chingling/front.png b/graphics/pokemon/chingling/front.png index 89060a363..d8092f393 100644 Binary files a/graphics/pokemon/chingling/front.png and b/graphics/pokemon/chingling/front.png differ diff --git a/graphics/pokemon/chingling/normal.pal b/graphics/pokemon/chingling/normal.pal index 46e51c7f1..06fd1ce75 100644 --- a/graphics/pokemon/chingling/normal.pal +++ b/graphics/pokemon/chingling/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 32 24 -168 56 56 -232 88 88 -200 216 232 -144 160 184 -16 16 16 -80 72 40 -232 208 64 -176 152 48 -248 224 120 -128 112 48 -248 248 248 +106 57 49 +172 82 49 +230 98 82 +213 213 246 +164 164 205 +0 0 0 +98 82 74 +255 213 90 +189 156 74 +255 230 148 +131 106 74 +255 255 255 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/cinccino/anim_front.png b/graphics/pokemon/cinccino/anim_front.png index 971054fb0..013385d78 100644 Binary files a/graphics/pokemon/cinccino/anim_front.png and b/graphics/pokemon/cinccino/anim_front.png differ diff --git a/graphics/pokemon/cinccino/front.png b/graphics/pokemon/cinccino/front.png index 9c1b5c697..12d953daf 100644 Binary files a/graphics/pokemon/cinccino/front.png and b/graphics/pokemon/cinccino/front.png differ diff --git a/graphics/pokemon/cinccino/normal.pal b/graphics/pokemon/cinccino/normal.pal index f2cc37dc8..fcc63c5f6 100644 --- a/graphics/pokemon/cinccino/normal.pal +++ b/graphics/pokemon/cinccino/normal.pal @@ -1,17 +1,17 @@ JASC-PAL 0100 16 -153 210 164 -189 180 180 -254 255 255 -125 130 153 -201 185 196 -65 67 81 -173 90 133 +152 208 160 +184 176 176 +248 248 248 +128 120 112 +184 168 152 +80 72 64 +208 80 80 16 16 16 -237 113 132 -184 197 237 -58 45 43 +232 128 128 +216 200 216 +0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/clamperl/anim_front.png b/graphics/pokemon/clamperl/anim_front.png index 54d2e38cb..d857bf65d 100644 Binary files a/graphics/pokemon/clamperl/anim_front.png and b/graphics/pokemon/clamperl/anim_front.png differ diff --git a/graphics/pokemon/clamperl/front.png b/graphics/pokemon/clamperl/front.png index 2c93e5903..dab2d9881 100644 Binary files a/graphics/pokemon/clamperl/front.png and b/graphics/pokemon/clamperl/front.png differ diff --git a/graphics/pokemon/clamperl/normal.pal b/graphics/pokemon/clamperl/normal.pal index eb3fcb764..ee5b68988 100644 --- a/graphics/pokemon/clamperl/normal.pal +++ b/graphics/pokemon/clamperl/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 96 160 -24 56 96 -104 144 208 +56 96 184 +56 56 96 +104 128 224 16 16 16 248 248 248 -184 208 248 +192 216 208 128 136 136 -56 96 152 -136 72 80 -112 184 224 -232 136 144 +48 64 120 +112 72 88 +112 152 208 +232 120 152 248 168 168 -200 232 248 -152 216 248 +184 216 248 +144 192 248 0 0 0 diff --git a/graphics/pokemon/claydol/anim_front.png b/graphics/pokemon/claydol/anim_front.png index c327f949f..bada994ff 100644 Binary files a/graphics/pokemon/claydol/anim_front.png and b/graphics/pokemon/claydol/anim_front.png differ diff --git a/graphics/pokemon/claydol/front.png b/graphics/pokemon/claydol/front.png index e4adecf65..cc2f1c16e 100644 Binary files a/graphics/pokemon/claydol/front.png and b/graphics/pokemon/claydol/front.png differ diff --git a/graphics/pokemon/claydol/normal.pal b/graphics/pokemon/claydol/normal.pal index 6583cb9ad..c36497707 100644 --- a/graphics/pokemon/claydol/normal.pal +++ b/graphics/pokemon/claydol/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 48 48 -112 96 96 +72 64 56 +112 104 104 16 16 16 88 80 80 -32 32 24 -208 192 200 -168 152 168 +40 40 32 +192 192 208 +152 144 168 248 248 248 -120 48 64 -232 128 136 -224 96 104 -248 160 160 -248 224 144 -176 160 112 -56 48 48 +120 32 72 +248 128 152 +232 88 128 +248 168 200 +248 208 144 +160 144 104 +72 64 56 diff --git a/graphics/pokemon/clefable/anim_front.png b/graphics/pokemon/clefable/anim_front.png index c35163070..e4a6228e1 100644 Binary files a/graphics/pokemon/clefable/anim_front.png and b/graphics/pokemon/clefable/anim_front.png differ diff --git a/graphics/pokemon/clefable/front.png b/graphics/pokemon/clefable/front.png index a4bc1111d..c3c70dc1e 100644 Binary files a/graphics/pokemon/clefable/front.png and b/graphics/pokemon/clefable/front.png differ diff --git a/graphics/pokemon/clefable/normal.pal b/graphics/pokemon/clefable/normal.pal index 6b40f550c..69bf321d7 100644 --- a/graphics/pokemon/clefable/normal.pal +++ b/graphics/pokemon/clefable/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 80 64 +80 64 56 16 16 16 -136 120 104 -136 88 80 -168 120 104 -240 208 200 -208 176 168 -184 112 136 +120 104 96 +136 72 80 +216 96 96 +248 192 176 +232 144 144 +184 88 120 104 72 80 -224 144 160 +208 120 160 248 248 248 128 128 128 -184 152 144 +208 120 136 136 72 80 104 72 80 diff --git a/graphics/pokemon/clefairy/anim_front.png b/graphics/pokemon/clefairy/anim_front.png index 20b777edc..ecbe37a1b 100644 Binary files a/graphics/pokemon/clefairy/anim_front.png and b/graphics/pokemon/clefairy/anim_front.png differ diff --git a/graphics/pokemon/clefairy/front.png b/graphics/pokemon/clefairy/front.png index b0606bf7b..613905a3a 100644 Binary files a/graphics/pokemon/clefairy/front.png and b/graphics/pokemon/clefairy/front.png differ diff --git a/graphics/pokemon/clefairy/normal.pal b/graphics/pokemon/clefairy/normal.pal index b8106ff81..6d31bfa49 100644 --- a/graphics/pokemon/clefairy/normal.pal +++ b/graphics/pokemon/clefairy/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 136 80 88 184 128 136 -248 216 224 -136 104 72 -88 56 40 -176 144 112 +248 208 184 +112 72 56 +88 48 32 +152 128 112 16 16 16 -240 176 184 +248 168 168 144 144 144 248 248 248 -216 136 192 +232 64 56 64 120 168 -176 72 136 +176 56 40 0 0 0 0 0 0 diff --git a/graphics/pokemon/cleffa/anim_front.png b/graphics/pokemon/cleffa/anim_front.png index cda348916..2f3e541f7 100644 Binary files a/graphics/pokemon/cleffa/anim_front.png and b/graphics/pokemon/cleffa/anim_front.png differ diff --git a/graphics/pokemon/cleffa/front.png b/graphics/pokemon/cleffa/front.png index 876b912b2..a8d989f26 100644 Binary files a/graphics/pokemon/cleffa/front.png and b/graphics/pokemon/cleffa/front.png differ diff --git a/graphics/pokemon/cleffa/normal.pal b/graphics/pokemon/cleffa/normal.pal index 386cfca65..d6dafd798 100644 --- a/graphics/pokemon/cleffa/normal.pal +++ b/graphics/pokemon/cleffa/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 112 112 -248 208 184 -232 176 168 -200 144 144 +168 80 80 +248 208 200 +248 160 160 +200 128 128 80 48 40 -96 72 48 -144 112 72 +88 48 32 +112 72 56 16 16 16 -192 160 120 +152 128 112 248 248 248 248 112 80 248 152 120 -200 96 96 +192 64 64 0 0 0 0 0 0 diff --git a/graphics/pokemon/cloyster/anim_front.png b/graphics/pokemon/cloyster/anim_front.png index aec8a00ee..4ed517f83 100644 Binary files a/graphics/pokemon/cloyster/anim_front.png and b/graphics/pokemon/cloyster/anim_front.png differ diff --git a/graphics/pokemon/cloyster/front.png b/graphics/pokemon/cloyster/front.png index deae322b0..1d9237036 100644 Binary files a/graphics/pokemon/cloyster/front.png and b/graphics/pokemon/cloyster/front.png differ diff --git a/graphics/pokemon/cloyster/normal.pal b/graphics/pokemon/cloyster/normal.pal index c7ee3b969..2e777740f 100644 --- a/graphics/pokemon/cloyster/normal.pal +++ b/graphics/pokemon/cloyster/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 96 136 -176 168 216 -144 136 192 -56 48 72 +104 88 144 +184 168 232 +136 120 184 +40 32 72 16 16 16 192 192 192 -48 48 72 +64 64 64 248 248 248 -144 160 176 -88 96 112 -40 32 56 -112 112 168 -64 64 120 -128 112 192 -144 120 168 +144 144 144 +96 96 96 +56 40 104 +112 104 176 +64 56 152 +160 120 184 +120 96 176 diff --git a/graphics/pokemon/cobalion/anim_front.png b/graphics/pokemon/cobalion/anim_front.png index 4ed828e5b..556761a0d 100644 Binary files a/graphics/pokemon/cobalion/anim_front.png and b/graphics/pokemon/cobalion/anim_front.png differ diff --git a/graphics/pokemon/cobalion/front.png b/graphics/pokemon/cobalion/front.png index 4d6ef8f2f..c57b709d3 100644 Binary files a/graphics/pokemon/cobalion/front.png and b/graphics/pokemon/cobalion/front.png differ diff --git a/graphics/pokemon/cobalion/normal.pal b/graphics/pokemon/cobalion/normal.pal index d93596c7c..6d3925587 100644 --- a/graphics/pokemon/cobalion/normal.pal +++ b/graphics/pokemon/cobalion/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -104 72 48 -160 112 80 +153 204 153 +128 104 64 +168 144 56 0 0 0 -224 168 112 -40 32 32 -16 72 80 -56 56 56 -32 160 176 -104 96 88 +224 200 120 +32 32 32 +16 80 88 +80 80 80 +24 168 176 +104 104 104 248 248 248 -112 144 152 -40 112 120 -160 200 216 -88 88 88 -176 168 160 +136 176 192 +48 120 136 +192 216 232 +96 96 96 +184 184 184 diff --git a/graphics/pokemon/cofagrigus/anim_front.png b/graphics/pokemon/cofagrigus/anim_front.png index e473ae317..5724f0e22 100644 Binary files a/graphics/pokemon/cofagrigus/anim_front.png and b/graphics/pokemon/cofagrigus/anim_front.png differ diff --git a/graphics/pokemon/cofagrigus/front.png b/graphics/pokemon/cofagrigus/front.png index 69a27ba08..c48dbdaa4 100644 Binary files a/graphics/pokemon/cofagrigus/front.png and b/graphics/pokemon/cofagrigus/front.png differ diff --git a/graphics/pokemon/cofagrigus/normal.pal b/graphics/pokemon/cofagrigus/normal.pal index 263c7a5d0..e52a4c18c 100644 --- a/graphics/pokemon/cofagrigus/normal.pal +++ b/graphics/pokemon/cofagrigus/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -56 64 56 +56 56 64 16 16 16 -88 144 176 -40 64 80 -72 104 120 +48 144 168 +40 72 72 +32 104 120 248 248 248 -248 208 112 -176 136 80 -112 88 64 -232 120 104 -128 56 56 +248 184 48 +176 128 48 +104 88 32 +248 48 32 +152 32 64 120 120 120 176 184 176 0 0 0 diff --git a/graphics/pokemon/combee/anim_front.png b/graphics/pokemon/combee/anim_front.png index 2c07de339..cc85ef4c9 100644 Binary files a/graphics/pokemon/combee/anim_front.png and b/graphics/pokemon/combee/anim_front.png differ diff --git a/graphics/pokemon/combee/anim_frontf.png b/graphics/pokemon/combee/anim_frontf.png deleted file mode 100644 index 45acd64e3..000000000 Binary files a/graphics/pokemon/combee/anim_frontf.png and /dev/null differ diff --git a/graphics/pokemon/combee/back.png b/graphics/pokemon/combee/back.png index 1366cb1f8..89dfa4f0c 100644 Binary files a/graphics/pokemon/combee/back.png and b/graphics/pokemon/combee/back.png differ diff --git a/graphics/pokemon/combee/front.png b/graphics/pokemon/combee/front.png index ab591053b..4c1368df4 100644 Binary files a/graphics/pokemon/combee/front.png and b/graphics/pokemon/combee/front.png differ diff --git a/graphics/pokemon/combee/normal.pal b/graphics/pokemon/combee/normal.pal index badc68861..ae331aac6 100644 --- a/graphics/pokemon/combee/normal.pal +++ b/graphics/pokemon/combee/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -56 56 56 -96 112 120 -168 192 216 -216 224 232 -232 128 64 -112 80 16 -248 184 64 -160 120 40 -232 72 64 +56 56 64 +80 88 112 +192 192 216 +240 240 248 +240 112 0 +104 88 0 +248 208 8 +168 128 0 +248 208 0 176 88 32 200 144 40 -0 0 0 +248 208 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/combee/normalf.pal b/graphics/pokemon/combee/normalf.pal new file mode 100644 index 000000000..045177137 --- /dev/null +++ b/graphics/pokemon/combee/normalf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +56 56 64 +80 88 112 +192 192 216 +240 240 248 +240 112 0 +104 88 0 +248 208 8 +168 128 0 +224 56 56 +176 88 32 +200 144 40 +240 112 136 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/combee/shiny.pal b/graphics/pokemon/combee/shiny.pal index 91e9abeee..8fe9e48ce 100644 --- a/graphics/pokemon/combee/shiny.pal +++ b/graphics/pokemon/combee/shiny.pal @@ -11,9 +11,9 @@ JASC-PAL 104 56 0 248 136 88 160 56 32 -152 40 40 +248 136 88 176 40 16 200 88 48 -0 0 0 +248 136 88 0 0 0 0 0 0 diff --git a/graphics/pokemon/combee/shinyf.pal b/graphics/pokemon/combee/shinyf.pal new file mode 100644 index 000000000..54b0e92cf --- /dev/null +++ b/graphics/pokemon/combee/shinyf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +56 56 64 +80 88 112 +184 184 208 +232 232 248 +232 88 32 +104 56 0 +248 136 88 +160 56 32 +248 0 0 +176 40 16 +200 88 48 +192 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/combusken/anim_front.png b/graphics/pokemon/combusken/anim_front.png index c26350450..96cdd9d79 100644 Binary files a/graphics/pokemon/combusken/anim_front.png and b/graphics/pokemon/combusken/anim_front.png differ diff --git a/graphics/pokemon/combusken/front.png b/graphics/pokemon/combusken/front.png index c587f1f2c..2c2b6a5a1 100644 Binary files a/graphics/pokemon/combusken/front.png and b/graphics/pokemon/combusken/front.png differ diff --git a/graphics/pokemon/combusken/normal.pal b/graphics/pokemon/combusken/normal.pal index 2a84f18b0..d97e531d7 100644 --- a/graphics/pokemon/combusken/normal.pal +++ b/graphics/pokemon/combusken/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -216 104 48 +216 88 40 24 24 24 -248 144 88 -144 48 8 -144 112 56 -208 184 96 -248 224 160 -160 80 48 +248 120 72 +152 48 16 +152 112 40 +232 184 72 +232 216 112 +208 48 48 248 248 248 104 104 112 216 216 200 -176 160 144 +152 136 128 88 72 72 -136 120 104 +128 112 104 0 0 0 diff --git a/graphics/pokemon/conkeldurr/anim_front.png b/graphics/pokemon/conkeldurr/anim_front.png index b021370d2..1e15ffd29 100644 Binary files a/graphics/pokemon/conkeldurr/anim_front.png and b/graphics/pokemon/conkeldurr/anim_front.png differ diff --git a/graphics/pokemon/conkeldurr/front.png b/graphics/pokemon/conkeldurr/front.png index 447368c02..bfa9221f9 100644 Binary files a/graphics/pokemon/conkeldurr/front.png and b/graphics/pokemon/conkeldurr/front.png differ diff --git a/graphics/pokemon/conkeldurr/normal.pal b/graphics/pokemon/conkeldurr/normal.pal index 0be98550a..e9986fc14 100644 --- a/graphics/pokemon/conkeldurr/normal.pal +++ b/graphics/pokemon/conkeldurr/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 96 72 -72 56 56 -176 144 112 +136 104 88 +88 56 32 +192 152 112 16 16 16 -88 48 64 -184 104 160 -136 72 104 +112 48 80 +192 104 176 +152 72 128 136 144 152 104 104 112 48 48 56 248 248 248 -104 32 48 -168 56 72 +112 40 64 +168 40 64 0 0 0 0 0 0 diff --git a/graphics/pokemon/corphish/anim_front.png b/graphics/pokemon/corphish/anim_front.png index 8ea965910..7cd114961 100644 Binary files a/graphics/pokemon/corphish/anim_front.png and b/graphics/pokemon/corphish/anim_front.png differ diff --git a/graphics/pokemon/corphish/front.png b/graphics/pokemon/corphish/front.png index 13c9c09d8..3a78a7b01 100644 Binary files a/graphics/pokemon/corphish/front.png and b/graphics/pokemon/corphish/front.png differ diff --git a/graphics/pokemon/corphish/normal.pal b/graphics/pokemon/corphish/normal.pal index 4d12bad51..f1e3e9578 100644 --- a/graphics/pokemon/corphish/normal.pal +++ b/graphics/pokemon/corphish/normal.pal @@ -3,14 +3,14 @@ JASC-PAL 16 152 208 160 16 16 16 -160 64 40 -240 184 160 -224 96 56 -112 48 24 -232 136 96 -208 176 144 -176 152 120 -240 224 192 +160 56 32 +248 152 144 +224 80 8 +104 56 64 +240 112 80 +200 176 144 +168 152 128 +224 224 200 248 248 248 128 104 80 200 200 200 diff --git a/graphics/pokemon/corsola/anim_front.png b/graphics/pokemon/corsola/anim_front.png index ef828b5e2..b3b460e69 100644 Binary files a/graphics/pokemon/corsola/anim_front.png and b/graphics/pokemon/corsola/anim_front.png differ diff --git a/graphics/pokemon/corsola/front.png b/graphics/pokemon/corsola/front.png index 30ab14423..b82fbceb5 100644 Binary files a/graphics/pokemon/corsola/front.png and b/graphics/pokemon/corsola/front.png differ diff --git a/graphics/pokemon/corsola/normal.pal b/graphics/pokemon/corsola/normal.pal index 5e2e34345..4f899432f 100644 --- a/graphics/pokemon/corsola/normal.pal +++ b/graphics/pokemon/corsola/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 72 88 -248 192 184 +200 32 72 +248 200 224 16 16 16 -248 152 160 -216 104 120 -248 120 136 -96 56 72 +248 160 192 +224 96 144 +240 120 184 +144 0 32 224 224 232 40 48 96 -176 224 232 -144 80 104 -144 184 200 -96 128 144 +216 224 240 +232 80 104 +168 192 216 +88 120 168 144 80 104 0 0 0 diff --git a/graphics/pokemon/cottonee/anim_front.png b/graphics/pokemon/cottonee/anim_front.png index 9daa48775..d2abe0c67 100644 Binary files a/graphics/pokemon/cottonee/anim_front.png and b/graphics/pokemon/cottonee/anim_front.png differ diff --git a/graphics/pokemon/cottonee/front.png b/graphics/pokemon/cottonee/front.png index b66802def..0e807ff42 100644 Binary files a/graphics/pokemon/cottonee/front.png and b/graphics/pokemon/cottonee/front.png differ diff --git a/graphics/pokemon/cottonee/normal.pal b/graphics/pokemon/cottonee/normal.pal index f42407dfe..3b42ec646 100644 --- a/graphics/pokemon/cottonee/normal.pal +++ b/graphics/pokemon/cottonee/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 160 136 -216 232 200 -112 120 104 -80 80 88 +165 173 132 +222 230 197 +123 132 107 +74 90 82 16 16 16 -232 232 240 -192 192 208 -56 120 72 -40 80 64 -80 184 104 -184 96 48 -248 248 248 -224 136 88 +255 255 255 +206 206 214 +66 123 66 +25 74 25 +82 165 74 +173 107 16 +255 255 255 +230 132 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/cradily/anim_front.png b/graphics/pokemon/cradily/anim_front.png index 370899f39..b12899e3e 100644 Binary files a/graphics/pokemon/cradily/anim_front.png and b/graphics/pokemon/cradily/anim_front.png differ diff --git a/graphics/pokemon/cradily/front.png b/graphics/pokemon/cradily/front.png index c2e3e952d..0280dedf9 100644 Binary files a/graphics/pokemon/cradily/front.png and b/graphics/pokemon/cradily/front.png differ diff --git a/graphics/pokemon/cradily/normal.pal b/graphics/pokemon/cradily/normal.pal index b6b3ca660..fb26a4018 100644 --- a/graphics/pokemon/cradily/normal.pal +++ b/graphics/pokemon/cradily/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -128 56 64 +144 64 96 248 208 232 -232 184 168 -208 112 120 -16 16 16 -192 128 120 -128 192 128 -64 104 48 -168 216 168 -96 152 88 -232 200 104 -240 216 168 -184 152 80 -136 112 48 +248 152 168 +200 96 144 +0 0 0 +232 104 136 +120 192 112 +56 104 80 +160 224 136 +80 152 88 +240 208 64 +248 240 120 +200 160 48 +160 120 16 0 0 0 diff --git a/graphics/pokemon/cranidos/anim_front.png b/graphics/pokemon/cranidos/anim_front.png index 4c40d1e27..4cfea0dd4 100644 Binary files a/graphics/pokemon/cranidos/anim_front.png and b/graphics/pokemon/cranidos/anim_front.png differ diff --git a/graphics/pokemon/cranidos/front.png b/graphics/pokemon/cranidos/front.png index f0d534a60..000533a92 100644 Binary files a/graphics/pokemon/cranidos/front.png and b/graphics/pokemon/cranidos/front.png differ diff --git a/graphics/pokemon/cranidos/normal.pal b/graphics/pokemon/cranidos/normal.pal index 8cac83fe8..73f9d7b45 100644 --- a/graphics/pokemon/cranidos/normal.pal +++ b/graphics/pokemon/cranidos/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 136 144 +112 120 136 248 248 248 -208 208 216 -40 72 96 +208 216 224 +40 72 112 16 16 16 -64 104 136 -72 136 184 -64 80 96 -168 184 192 -128 144 160 -120 184 216 -104 112 128 -240 120 112 -176 56 48 -178 103 103 +56 96 152 +72 128 184 +72 88 104 +160 176 184 +128 144 152 +112 168 232 +96 112 128 +200 96 96 +168 64 64 +168 16 0 diff --git a/graphics/pokemon/crawdaunt/anim_front.png b/graphics/pokemon/crawdaunt/anim_front.png index 83573963d..a9a6ce7fb 100644 Binary files a/graphics/pokemon/crawdaunt/anim_front.png and b/graphics/pokemon/crawdaunt/anim_front.png differ diff --git a/graphics/pokemon/crawdaunt/front.png b/graphics/pokemon/crawdaunt/front.png index 127f889b7..ede486992 100644 Binary files a/graphics/pokemon/crawdaunt/front.png and b/graphics/pokemon/crawdaunt/front.png differ diff --git a/graphics/pokemon/crawdaunt/normal.pal b/graphics/pokemon/crawdaunt/normal.pal index 731f1a5cf..114ecd22a 100644 --- a/graphics/pokemon/crawdaunt/normal.pal +++ b/graphics/pokemon/crawdaunt/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -192 160 88 -120 96 48 +240 152 24 +120 88 48 248 248 248 -16 16 16 -248 224 128 -112 32 24 -176 56 48 -232 88 72 -224 152 152 -232 208 192 -184 168 144 -24 72 104 -48 128 176 -112 96 80 -104 168 232 +0 0 0 +248 224 88 +136 40 40 +200 48 48 +232 80 80 +240 136 136 +216 216 216 +176 168 160 +24 64 104 +64 112 168 +96 88 88 +80 152 240 diff --git a/graphics/pokemon/cresselia/anim_front.png b/graphics/pokemon/cresselia/anim_front.png index 8e84b970e..23e1a2ab9 100644 Binary files a/graphics/pokemon/cresselia/anim_front.png and b/graphics/pokemon/cresselia/anim_front.png differ diff --git a/graphics/pokemon/cresselia/front.png b/graphics/pokemon/cresselia/front.png index 88b7dba06..56a6f004f 100644 Binary files a/graphics/pokemon/cresselia/front.png and b/graphics/pokemon/cresselia/front.png differ diff --git a/graphics/pokemon/cresselia/normal.pal b/graphics/pokemon/cresselia/normal.pal index 187fdee2b..190705d9b 100644 --- a/graphics/pokemon/cresselia/normal.pal +++ b/graphics/pokemon/cresselia/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 88 64 +104 80 48 16 16 16 -240 224 208 -184 144 88 -240 200 136 -136 72 104 -184 104 144 -216 160 184 -88 48 80 -240 216 208 +248 232 184 +168 144 88 +248 208 112 +136 64 120 +192 88 152 +208 136 200 +80 56 88 +224 192 232 248 248 248 -136 168 208 -104 128 160 -64 88 112 +128 144 240 +80 104 176 +56 64 120 192 176 176 diff --git a/graphics/pokemon/croagunk/anim_front.png b/graphics/pokemon/croagunk/anim_front.png index 3d4d81f7c..84c7edb09 100644 Binary files a/graphics/pokemon/croagunk/anim_front.png and b/graphics/pokemon/croagunk/anim_front.png differ diff --git a/graphics/pokemon/croagunk/front.png b/graphics/pokemon/croagunk/front.png index 1c34d1791..6725ae39e 100644 Binary files a/graphics/pokemon/croagunk/front.png and b/graphics/pokemon/croagunk/front.png differ diff --git a/graphics/pokemon/croagunk/normal.pal b/graphics/pokemon/croagunk/normal.pal index 5ebbaf6e1..99a60ec65 100644 --- a/graphics/pokemon/croagunk/normal.pal +++ b/graphics/pokemon/croagunk/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 72 120 +72 72 136 16 16 16 128 152 248 -72 120 192 -88 80 80 -56 48 48 -248 192 72 -168 128 32 -128 72 32 -232 136 80 -232 192 136 +104 112 208 +80 80 80 +48 48 64 +248 208 24 +176 136 24 +152 56 56 +232 128 64 +240 200 160 248 248 248 -184 176 168 -136 120 120 +176 176 192 +120 120 136 56 56 80 diff --git a/graphics/pokemon/crobat/anim_front.png b/graphics/pokemon/crobat/anim_front.png index 653b35170..abf3b22be 100644 Binary files a/graphics/pokemon/crobat/anim_front.png and b/graphics/pokemon/crobat/anim_front.png differ diff --git a/graphics/pokemon/crobat/front.png b/graphics/pokemon/crobat/front.png index 8c7b36bbf..e0b69bad7 100644 Binary files a/graphics/pokemon/crobat/front.png and b/graphics/pokemon/crobat/front.png differ diff --git a/graphics/pokemon/crobat/normal.pal b/graphics/pokemon/crobat/normal.pal index 242717590..c8b289770 100644 --- a/graphics/pokemon/crobat/normal.pal +++ b/graphics/pokemon/crobat/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -72 40 96 -104 72 128 -160 128 192 +96 24 120 +120 72 152 +176 120 200 16 16 16 -40 72 88 -56 112 120 -128 96 168 -80 160 176 -176 152 40 -248 216 88 -184 24 24 +8 64 104 +32 104 144 +160 88 200 +72 152 184 +208 144 0 +248 208 0 +176 0 0 104 104 104 160 160 160 248 248 248 diff --git a/graphics/pokemon/croconaw/anim_front.png b/graphics/pokemon/croconaw/anim_front.png index 27a97b7a1..bdd5340fd 100644 Binary files a/graphics/pokemon/croconaw/anim_front.png and b/graphics/pokemon/croconaw/anim_front.png differ diff --git a/graphics/pokemon/croconaw/front.png b/graphics/pokemon/croconaw/front.png index 9876f80eb..b1cd5b3b6 100644 Binary files a/graphics/pokemon/croconaw/front.png and b/graphics/pokemon/croconaw/front.png differ diff --git a/graphics/pokemon/croconaw/normal.pal b/graphics/pokemon/croconaw/normal.pal index be301424b..95fb4e450 100644 --- a/graphics/pokemon/croconaw/normal.pal +++ b/graphics/pokemon/croconaw/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 24 48 -248 168 160 +128 0 8 +248 136 128 16 16 16 -240 72 96 -176 48 72 -48 88 104 -72 144 152 -112 208 216 -176 224 216 +240 80 88 +200 40 56 +32 96 120 +32 136 184 +104 200 200 +136 232 224 248 248 248 -128 40 56 -232 120 120 -88 72 32 -192 168 96 -248 224 128 +120 0 0 +224 64 32 +104 80 0 +200 184 96 +248 224 136 diff --git a/graphics/pokemon/crustle/anim_front.png b/graphics/pokemon/crustle/anim_front.png index 91434933a..8ff103bcf 100644 Binary files a/graphics/pokemon/crustle/anim_front.png and b/graphics/pokemon/crustle/anim_front.png differ diff --git a/graphics/pokemon/crustle/front.png b/graphics/pokemon/crustle/front.png index eb37ec891..44fa563a2 100644 Binary files a/graphics/pokemon/crustle/front.png and b/graphics/pokemon/crustle/front.png differ diff --git a/graphics/pokemon/crustle/normal.pal b/graphics/pokemon/crustle/normal.pal index 8e676bf9e..371a48520 100644 --- a/graphics/pokemon/crustle/normal.pal +++ b/graphics/pokemon/crustle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 88 72 -160 128 112 -80 64 56 -248 168 80 +136 104 72 +168 152 128 +88 64 48 +240 184 56 16 16 16 -176 120 64 -80 40 32 -184 88 64 -216 128 96 +192 136 24 +104 40 24 +232 128 72 +248 184 120 248 248 248 56 56 56 -136 64 48 -56 40 40 +184 80 48 +56 48 32 0 0 0 0 0 0 diff --git a/graphics/pokemon/cryogonal/anim_front.png b/graphics/pokemon/cryogonal/anim_front.png index 30063cb47..523611731 100644 Binary files a/graphics/pokemon/cryogonal/anim_front.png and b/graphics/pokemon/cryogonal/anim_front.png differ diff --git a/graphics/pokemon/cryogonal/front.png b/graphics/pokemon/cryogonal/front.png index 245b8c270..e3cd4c10f 100644 Binary files a/graphics/pokemon/cryogonal/front.png and b/graphics/pokemon/cryogonal/front.png differ diff --git a/graphics/pokemon/cryogonal/normal.pal b/graphics/pokemon/cryogonal/normal.pal index cd61187d7..10063fa01 100644 --- a/graphics/pokemon/cryogonal/normal.pal +++ b/graphics/pokemon/cryogonal/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 88 152 -80 120 184 +48 64 160 +80 96 192 16 16 16 -136 152 208 +120 136 192 248 248 248 -40 56 80 +40 48 88 96 128 208 -184 200 232 -152 192 232 -208 224 248 -88 160 224 -128 208 248 -40 104 184 +160 176 208 +136 168 248 +200 216 248 +96 160 232 +128 208 232 +64 104 240 32 64 160 0 0 0 diff --git a/graphics/pokemon/cubchoo/anim_front.png b/graphics/pokemon/cubchoo/anim_front.png index 51cec3830..3350209b8 100644 Binary files a/graphics/pokemon/cubchoo/anim_front.png and b/graphics/pokemon/cubchoo/anim_front.png differ diff --git a/graphics/pokemon/cubchoo/front.png b/graphics/pokemon/cubchoo/front.png index a0844fd4b..82e5e9194 100644 Binary files a/graphics/pokemon/cubchoo/front.png and b/graphics/pokemon/cubchoo/front.png differ diff --git a/graphics/pokemon/cubchoo/normal.pal b/graphics/pokemon/cubchoo/normal.pal index 8715e5d72..9d187e7ec 100644 --- a/graphics/pokemon/cubchoo/normal.pal +++ b/graphics/pokemon/cubchoo/normal.pal @@ -8,12 +8,12 @@ JASC-PAL 16 16 16 40 56 88 72 112 160 -120 192 240 -56 56 56 +120 168 224 +56 72 72 248 248 248 -72 144 208 -104 96 96 -152 168 224 +96 128 200 +136 144 144 +192 192 200 232 240 248 152 224 248 0 0 0 diff --git a/graphics/pokemon/cubone/anim_front.png b/graphics/pokemon/cubone/anim_front.png index 48605d96d..8294ce638 100644 Binary files a/graphics/pokemon/cubone/anim_front.png and b/graphics/pokemon/cubone/anim_front.png differ diff --git a/graphics/pokemon/cubone/front.png b/graphics/pokemon/cubone/front.png index c321969d1..f26df5792 100644 Binary files a/graphics/pokemon/cubone/front.png and b/graphics/pokemon/cubone/front.png differ diff --git a/graphics/pokemon/cubone/normal.pal b/graphics/pokemon/cubone/normal.pal index 8d8b3ad56..e18a70567 100644 --- a/graphics/pokemon/cubone/normal.pal +++ b/graphics/pokemon/cubone/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -128 136 144 +128 128 128 248 248 248 -16 16 16 -192 200 200 -80 80 96 -152 120 88 -208 168 104 -80 64 48 -192 168 144 -240 224 176 -216 232 232 +0 0 0 +192 192 208 +80 80 56 +144 104 88 +192 152 72 +80 56 16 +200 168 136 +240 208 176 +224 224 232 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/cyndaquil/anim_front.png b/graphics/pokemon/cyndaquil/anim_front.png index a0d3affc4..bfdf5a622 100644 Binary files a/graphics/pokemon/cyndaquil/anim_front.png and b/graphics/pokemon/cyndaquil/anim_front.png differ diff --git a/graphics/pokemon/cyndaquil/front.png b/graphics/pokemon/cyndaquil/front.png index 8ca05c4ff..448a51f8a 100644 Binary files a/graphics/pokemon/cyndaquil/front.png and b/graphics/pokemon/cyndaquil/front.png differ diff --git a/graphics/pokemon/cyndaquil/normal.pal b/graphics/pokemon/cyndaquil/normal.pal index bd9296ca7..f5182e5ee 100644 --- a/graphics/pokemon/cyndaquil/normal.pal +++ b/graphics/pokemon/cyndaquil/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 56 40 -232 88 48 -32 64 72 -48 112 120 -104 144 144 -240 152 40 +216 0 0 +248 56 0 +16 56 80 +48 104 128 +96 168 184 +248 152 0 16 16 16 -248 200 56 +248 216 16 16 40 48 -168 144 96 -248 216 152 -112 88 48 +200 168 80 +248 240 160 +120 96 32 216 176 120 168 168 168 248 248 248 diff --git a/graphics/pokemon/darkrai/anim_front.png b/graphics/pokemon/darkrai/anim_front.png index 81cf1e35b..741c69af0 100644 Binary files a/graphics/pokemon/darkrai/anim_front.png and b/graphics/pokemon/darkrai/anim_front.png differ diff --git a/graphics/pokemon/darkrai/front.png b/graphics/pokemon/darkrai/front.png index 29f627df0..e3f284abd 100644 Binary files a/graphics/pokemon/darkrai/front.png and b/graphics/pokemon/darkrai/front.png differ diff --git a/graphics/pokemon/darkrai/normal.pal b/graphics/pokemon/darkrai/normal.pal index 66020cc4b..7edcd825d 100644 --- a/graphics/pokemon/darkrai/normal.pal +++ b/graphics/pokemon/darkrai/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 112 112 -192 176 176 -88 80 80 +128 128 128 +192 200 208 +64 64 88 16 16 16 -48 40 48 -224 224 216 -80 24 24 -152 56 48 -40 112 120 -40 200 192 +48 40 56 +224 232 240 +96 0 0 +144 40 64 +16 136 168 +40 232 248 248 248 248 -208 104 96 +232 16 24 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/darmanitan/anim_front.png b/graphics/pokemon/darmanitan/anim_front.png index ddfe2a62a..7fa8675a3 100644 Binary files a/graphics/pokemon/darmanitan/anim_front.png and b/graphics/pokemon/darmanitan/anim_front.png differ diff --git a/graphics/pokemon/darmanitan/front.png b/graphics/pokemon/darmanitan/front.png index 502461632..137b407ba 100644 Binary files a/graphics/pokemon/darmanitan/front.png and b/graphics/pokemon/darmanitan/front.png differ diff --git a/graphics/pokemon/darmanitan/normal.pal b/graphics/pokemon/darmanitan/normal.pal index 42af84755..04d244d4b 100644 --- a/graphics/pokemon/darmanitan/normal.pal +++ b/graphics/pokemon/darmanitan/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 48 32 -224 72 64 +184 0 0 +232 16 16 184 144 40 -248 200 56 -120 104 40 -112 40 40 -168 56 48 -64 24 24 -16 16 16 -184 112 72 -168 152 144 -248 152 96 -80 72 72 +232 200 16 +104 88 16 +136 24 40 +168 32 24 +96 24 24 +0 0 0 +176 120 72 +136 136 152 +232 160 104 +72 72 80 240 240 240 -104 56 56 +80 56 32 diff --git a/graphics/pokemon/darmanitan/zen_mode/anim_front.png b/graphics/pokemon/darmanitan/zen_mode/anim_front.png index 0cf859368..6cc10f7ac 100644 Binary files a/graphics/pokemon/darmanitan/zen_mode/anim_front.png and b/graphics/pokemon/darmanitan/zen_mode/anim_front.png differ diff --git a/graphics/pokemon/darmanitan/zen_mode/front.png b/graphics/pokemon/darmanitan/zen_mode/front.png index d4e403d0f..84ace43cf 100644 Binary files a/graphics/pokemon/darmanitan/zen_mode/front.png and b/graphics/pokemon/darmanitan/zen_mode/front.png differ diff --git a/graphics/pokemon/darmanitan/zen_mode/normal.pal b/graphics/pokemon/darmanitan/zen_mode/normal.pal index 393e9ba2b..9695dddf6 100644 --- a/graphics/pokemon/darmanitan/zen_mode/normal.pal +++ b/graphics/pokemon/darmanitan/zen_mode/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 80 96 -88 168 192 -96 72 56 -184 112 64 -248 176 104 +32 82 98 +82 156 172 +123 82 41 +172 106 41 +230 164 98 0 0 0 -72 104 120 -168 208 240 -72 72 80 -152 152 160 +65 90 98 +180 213 238 +74 74 82 +156 156 164 240 240 240 -64 120 144 -128 168 200 +57 123 139 +123 164 189 0 0 0 0 0 0 diff --git a/graphics/pokemon/darumaka/anim_front.png b/graphics/pokemon/darumaka/anim_front.png index 1b3a1f874..7d0b10c8c 100644 Binary files a/graphics/pokemon/darumaka/anim_front.png and b/graphics/pokemon/darumaka/anim_front.png differ diff --git a/graphics/pokemon/darumaka/front.png b/graphics/pokemon/darumaka/front.png index fb8c71b50..92a3645d2 100644 Binary files a/graphics/pokemon/darumaka/front.png and b/graphics/pokemon/darumaka/front.png differ diff --git a/graphics/pokemon/darumaka/normal.pal b/graphics/pokemon/darumaka/normal.pal index 73fe3d46b..14fb73ec4 100644 --- a/graphics/pokemon/darumaka/normal.pal +++ b/graphics/pokemon/darumaka/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -144 104 40 +144 112 16 96 64 48 -16 16 16 -240 184 80 -184 136 64 -144 48 48 -192 64 64 -80 24 24 -168 96 40 -232 152 88 +0 0 0 +248 200 32 +200 160 24 +152 40 40 +200 48 48 +88 24 24 +168 88 40 +248 144 80 88 88 88 248 248 248 160 160 168 diff --git a/graphics/pokemon/deerling/anim_front.png b/graphics/pokemon/deerling/anim_front.png index cfc1c74ea..2bf2f1b29 100644 Binary files a/graphics/pokemon/deerling/anim_front.png and b/graphics/pokemon/deerling/anim_front.png differ diff --git a/graphics/pokemon/deerling/autumn/normal.pal b/graphics/pokemon/deerling/autumn/normal.pal index 7c7880a96..32058c780 100644 --- a/graphics/pokemon/deerling/autumn/normal.pal +++ b/graphics/pokemon/deerling/autumn/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -109 59 35 +152 208 160 +128 72 16 0 0 0 -173 94 55 -191 157 47 -255 214 50 -122 84 24 -237 129 71 -255 235 193 -145 116 132 -81 66 57 -255 255 255 -186 162 130 -73 68 73 -127 114 108 +160 112 32 +200 152 8 +248 216 80 +120 80 16 +232 128 24 +240 232 192 +152 120 88 +80 64 24 +248 248 248 +184 160 136 +48 48 48 +80 80 80 0 0 0 diff --git a/graphics/pokemon/deerling/front.png b/graphics/pokemon/deerling/front.png index 1b204cc2a..cade6f0db 100644 Binary files a/graphics/pokemon/deerling/front.png and b/graphics/pokemon/deerling/front.png differ diff --git a/graphics/pokemon/deerling/normal.pal b/graphics/pokemon/deerling/normal.pal index cc6ab4a71..e61755715 100644 --- a/graphics/pokemon/deerling/normal.pal +++ b/graphics/pokemon/deerling/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 56 88 +136 64 64 0 0 0 -184 96 112 -184 152 40 -248 208 48 -120 80 24 -232 152 160 -248 232 192 -144 112 128 -80 64 56 +176 104 104 +200 152 8 +248 216 80 +120 80 16 +248 152 168 +240 232 192 +152 120 88 +80 64 24 248 248 248 -184 160 128 -72 64 72 -120 112 104 +184 160 136 +48 48 48 +80 80 80 0 0 0 diff --git a/graphics/pokemon/deerling/summer/normal.pal b/graphics/pokemon/deerling/summer/normal.pal index 3435fd868..240d90f18 100644 --- a/graphics/pokemon/deerling/summer/normal.pal +++ b/graphics/pokemon/deerling/summer/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -32 81 32 +152 208 160 +48 80 48 0 0 0 -56 135 54 -191 157 47 -255 214 50 -122 84 24 -72 188 66 -255 235 193 -145 116 132 -81 66 57 -255 255 255 -186 162 130 -73 68 73 -127 114 108 +48 120 64 +200 152 8 +248 216 80 +120 80 16 +64 176 64 +240 232 192 +152 120 88 +80 64 24 +248 248 248 +184 160 136 +48 48 48 +80 80 80 0 0 0 diff --git a/graphics/pokemon/deerling/winter/normal.pal b/graphics/pokemon/deerling/winter/normal.pal index 59d1a46c4..2aa19e299 100644 --- a/graphics/pokemon/deerling/winter/normal.pal +++ b/graphics/pokemon/deerling/winter/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -71 60 46 +152 208 160 +88 80 64 0 0 0 -130 89 84 -191 157 47 -255 214 50 -122 84 24 -175 127 119 -255 235 193 -145 116 132 -81 66 57 -255 255 255 -186 162 130 -73 68 73 -127 114 108 +120 80 72 +200 152 8 +248 216 80 +120 80 16 +168 128 96 +240 232 192 +152 120 88 +80 64 24 +248 248 248 +184 160 136 +48 48 48 +80 80 80 0 0 0 diff --git a/graphics/pokemon/deino/anim_front.png b/graphics/pokemon/deino/anim_front.png index 5482bd67a..d0a21c0a2 100644 Binary files a/graphics/pokemon/deino/anim_front.png and b/graphics/pokemon/deino/anim_front.png differ diff --git a/graphics/pokemon/deino/front.png b/graphics/pokemon/deino/front.png index e3f13a0f7..835771003 100644 Binary files a/graphics/pokemon/deino/front.png and b/graphics/pokemon/deino/front.png differ diff --git a/graphics/pokemon/deino/normal.pal b/graphics/pokemon/deino/normal.pal index cc79f1a44..69d66dd53 100644 --- a/graphics/pokemon/deino/normal.pal +++ b/graphics/pokemon/deino/normal.pal @@ -2,13 +2,13 @@ JASC-PAL 0100 16 152 208 160 -48 40 40 -88 80 80 +40 32 40 +80 80 80 16 16 16 64 56 64 -40 56 80 -96 144 200 -80 104 136 +24 48 104 +96 144 216 +56 96 160 112 72 88 184 112 128 112 56 80 diff --git a/graphics/pokemon/delcatty/anim_front.png b/graphics/pokemon/delcatty/anim_front.png index 1e80be259..01ccb1292 100644 Binary files a/graphics/pokemon/delcatty/anim_front.png and b/graphics/pokemon/delcatty/anim_front.png differ diff --git a/graphics/pokemon/delcatty/front.png b/graphics/pokemon/delcatty/front.png index cb049001e..bdb666e03 100644 Binary files a/graphics/pokemon/delcatty/front.png and b/graphics/pokemon/delcatty/front.png differ diff --git a/graphics/pokemon/delcatty/normal.pal b/graphics/pokemon/delcatty/normal.pal index 3a4c87efa..087fc1ccf 100644 --- a/graphics/pokemon/delcatty/normal.pal +++ b/graphics/pokemon/delcatty/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 72 120 -88 48 80 -192 136 192 -16 16 16 -152 96 152 -224 192 120 -120 96 72 -248 240 208 -80 48 48 -248 232 160 +96 72 120 +64 40 96 +160 112 192 +0 0 0 +128 80 160 +224 176 96 +112 80 56 +248 240 184 +80 80 88 +248 216 136 240 240 216 -136 104 104 -216 176 120 +152 152 152 +200 144 72 0 0 0 0 0 0 diff --git a/graphics/pokemon/delibird/anim_front.png b/graphics/pokemon/delibird/anim_front.png index fa64c96ff..c093ee531 100644 Binary files a/graphics/pokemon/delibird/anim_front.png and b/graphics/pokemon/delibird/anim_front.png differ diff --git a/graphics/pokemon/delibird/front.png b/graphics/pokemon/delibird/front.png index cbe357d8a..a0eaf79af 100644 Binary files a/graphics/pokemon/delibird/front.png and b/graphics/pokemon/delibird/front.png differ diff --git a/graphics/pokemon/delibird/normal.pal b/graphics/pokemon/delibird/normal.pal index 0e1996243..e279c6e76 100644 --- a/graphics/pokemon/delibird/normal.pal +++ b/graphics/pokemon/delibird/normal.pal @@ -7,13 +7,13 @@ JASC-PAL 248 248 248 16 16 16 168 168 176 -216 88 80 -160 48 32 -152 136 72 -96 88 32 -248 224 112 -200 192 200 -96 32 16 -200 48 40 +216 48 48 +168 24 0 +200 136 40 +120 64 0 +248 200 64 +208 208 208 +120 24 0 +192 40 24 0 0 0 0 0 0 diff --git a/graphics/pokemon/deoxys/anim_front.png b/graphics/pokemon/deoxys/anim_front.png index 87f6a6fae..d2f3e9938 100644 Binary files a/graphics/pokemon/deoxys/anim_front.png and b/graphics/pokemon/deoxys/anim_front.png differ diff --git a/graphics/pokemon/deoxys/attack/anim_front.png b/graphics/pokemon/deoxys/attack/anim_front.png index f731109ae..0b43a9fe1 100644 Binary files a/graphics/pokemon/deoxys/attack/anim_front.png and b/graphics/pokemon/deoxys/attack/anim_front.png differ diff --git a/graphics/pokemon/deoxys/attack/front.png b/graphics/pokemon/deoxys/attack/front.png index c61f3adb9..5080dd28e 100644 Binary files a/graphics/pokemon/deoxys/attack/front.png and b/graphics/pokemon/deoxys/attack/front.png differ diff --git a/graphics/pokemon/deoxys/attack/normal.pal b/graphics/pokemon/deoxys/attack/normal.pal index a478fcd11..246d4784a 100644 --- a/graphics/pokemon/deoxys/attack/normal.pal +++ b/graphics/pokemon/deoxys/attack/normal.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 248 160 176 -64 40 32 -224 112 64 -160 80 56 +96 56 56 +248 112 72 +184 104 104 24 24 24 -128 192 192 -72 144 160 -152 112 144 -48 80 96 -96 64 112 +104 200 224 +80 144 176 +152 96 176 +56 80 96 +112 56 136 248 248 248 192 192 208 88 80 80 diff --git a/graphics/pokemon/deoxys/defense/anim_front.png b/graphics/pokemon/deoxys/defense/anim_front.png index ee4259be5..2ee6e0c52 100644 Binary files a/graphics/pokemon/deoxys/defense/anim_front.png and b/graphics/pokemon/deoxys/defense/anim_front.png differ diff --git a/graphics/pokemon/deoxys/defense/front.png b/graphics/pokemon/deoxys/defense/front.png index 7cd7365bc..2e21b5592 100644 Binary files a/graphics/pokemon/deoxys/defense/front.png and b/graphics/pokemon/deoxys/defense/front.png differ diff --git a/graphics/pokemon/deoxys/defense/normal.pal b/graphics/pokemon/deoxys/defense/normal.pal index b2b609f25..8b37f5111 100644 --- a/graphics/pokemon/deoxys/defense/normal.pal +++ b/graphics/pokemon/deoxys/defense/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 160 176 -64 40 32 -160 80 56 -224 112 64 +96 56 56 +192 104 104 +248 112 72 96 64 48 240 176 144 -128 192 192 -72 144 160 -48 80 96 -152 112 144 +104 200 224 +80 144 176 +56 80 96 +152 96 176 24 24 24 248 248 248 192 192 208 -96 64 112 +112 56 136 0 0 0 0 0 0 diff --git a/graphics/pokemon/deoxys/front.png b/graphics/pokemon/deoxys/front.png index 5e02cd1c5..5c2c25314 100644 Binary files a/graphics/pokemon/deoxys/front.png and b/graphics/pokemon/deoxys/front.png differ diff --git a/graphics/pokemon/deoxys/normal.pal b/graphics/pokemon/deoxys/normal.pal index 5948f302e..59124c56a 100644 --- a/graphics/pokemon/deoxys/normal.pal +++ b/graphics/pokemon/deoxys/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 160 176 -160 80 56 -240 176 144 -224 112 64 +184 104 104 +248 176 144 +248 112 72 96 56 56 -128 192 192 +104 200 224 88 56 48 56 80 96 -72 144 160 -152 112 144 +80 144 176 +152 96 176 24 24 24 248 248 248 192 192 208 -96 64 112 +112 56 136 88 80 80 120 120 112 diff --git a/graphics/pokemon/deoxys/speed/anim_front.png b/graphics/pokemon/deoxys/speed/anim_front.png index c6f490d2f..947052f81 100644 Binary files a/graphics/pokemon/deoxys/speed/anim_front.png and b/graphics/pokemon/deoxys/speed/anim_front.png differ diff --git a/graphics/pokemon/deoxys/speed/front.png b/graphics/pokemon/deoxys/speed/front.png index 922acc0b2..776d0083b 100644 Binary files a/graphics/pokemon/deoxys/speed/front.png and b/graphics/pokemon/deoxys/speed/front.png differ diff --git a/graphics/pokemon/deoxys/speed/normal.pal b/graphics/pokemon/deoxys/speed/normal.pal index c3dcd2101..dad052e1d 100644 --- a/graphics/pokemon/deoxys/speed/normal.pal +++ b/graphics/pokemon/deoxys/speed/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 248 160 176 -48 80 96 -72 144 160 -128 192 192 -64 40 32 -224 112 64 +56 80 96 +80 144 176 +104 200 224 +96 56 56 +248 112 72 24 24 24 -160 80 56 +192 104 104 192 192 208 -152 112 144 +152 96 176 248 248 248 -96 64 112 +112 56 136 88 80 80 120 120 112 0 0 0 diff --git a/graphics/pokemon/dewgong/anim_front.png b/graphics/pokemon/dewgong/anim_front.png index f42ded8c7..441976782 100644 Binary files a/graphics/pokemon/dewgong/anim_front.png and b/graphics/pokemon/dewgong/anim_front.png differ diff --git a/graphics/pokemon/dewgong/normal.pal b/graphics/pokemon/dewgong/normal.pal index 11622f8d6..ea9cd39ea 100644 --- a/graphics/pokemon/dewgong/normal.pal +++ b/graphics/pokemon/dewgong/normal.pal @@ -10,8 +10,8 @@ JASC-PAL 192 207 226 255 255 255 114 92 75 -137 93 117 -211 139 173 +112 40 40 +232 128 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/dewott/anim_front.png b/graphics/pokemon/dewott/anim_front.png index 7410cb4e8..8ea90c880 100644 Binary files a/graphics/pokemon/dewott/anim_front.png and b/graphics/pokemon/dewott/anim_front.png differ diff --git a/graphics/pokemon/dewott/front.png b/graphics/pokemon/dewott/front.png index f30e2f395..d8665e601 100644 Binary files a/graphics/pokemon/dewott/front.png and b/graphics/pokemon/dewott/front.png differ diff --git a/graphics/pokemon/dewott/normal.pal b/graphics/pokemon/dewott/normal.pal index c1c858ea8..3ffe4198c 100644 --- a/graphics/pokemon/dewott/normal.pal +++ b/graphics/pokemon/dewott/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 80 88 -16 16 16 -128 216 224 -88 144 152 -72 72 80 -248 248 248 -208 120 112 -136 64 64 -48 48 56 -48 64 104 -56 96 152 -240 224 152 -104 88 48 -160 144 96 +49 90 115 +0 0 0 +82 189 189 +32 139 148 +74 74 74 +255 255 255 +197 82 90 +115 57 57 +49 49 49 +41 57 106 +49 82 139 +238 213 139 +123 90 16 +197 148 41 192 200 216 diff --git a/graphics/pokemon/dialga/anim_front.png b/graphics/pokemon/dialga/anim_front.png index cfb10e9c5..c4234913b 100644 Binary files a/graphics/pokemon/dialga/anim_front.png and b/graphics/pokemon/dialga/anim_front.png differ diff --git a/graphics/pokemon/dialga/front.png b/graphics/pokemon/dialga/front.png index b1c79e98b..e4a6172ac 100644 Binary files a/graphics/pokemon/dialga/front.png and b/graphics/pokemon/dialga/front.png differ diff --git a/graphics/pokemon/dialga/normal.pal b/graphics/pokemon/dialga/normal.pal index 71226dfeb..102e0ff12 100644 --- a/graphics/pokemon/dialga/normal.pal +++ b/graphics/pokemon/dialga/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 136 176 -16 16 16 -72 72 96 -176 200 216 -48 56 104 -32 24 72 -232 240 240 -96 160 184 -160 216 224 -56 88 136 -248 88 88 +136 160 176 +8 8 8 +64 64 80 +192 208 224 +32 88 144 +32 64 104 +232 240 248 +96 160 200 +152 216 248 +56 120 176 +248 80 64 88 96 112 -184 96 104 -40 72 160 -80 112 144 +168 16 0 +32 72 248 +64 112 152 diff --git a/graphics/pokemon/diglett/anim_front.png b/graphics/pokemon/diglett/anim_front.png index 973cdf7cc..9bea44acb 100644 Binary files a/graphics/pokemon/diglett/anim_front.png and b/graphics/pokemon/diglett/anim_front.png differ diff --git a/graphics/pokemon/diglett/front.png b/graphics/pokemon/diglett/front.png index c10f9ff07..34bb253af 100644 Binary files a/graphics/pokemon/diglett/front.png and b/graphics/pokemon/diglett/front.png differ diff --git a/graphics/pokemon/diglett/normal.pal b/graphics/pokemon/diglett/normal.pal index b83bc4b5b..b8930cba2 100644 --- a/graphics/pokemon/diglett/normal.pal +++ b/graphics/pokemon/diglett/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -136 104 80 -208 168 144 -176 128 104 -80 56 40 +160 88 88 +216 152 88 +192 112 64 +88 48 24 248 248 248 16 16 16 -168 96 136 -120 56 96 -240 200 224 -216 136 184 +192 32 136 +144 64 112 +248 176 224 +232 120 184 96 96 104 136 136 144 56 56 56 diff --git a/graphics/pokemon/ditto/anim_front.png b/graphics/pokemon/ditto/anim_front.png index 692a080f3..f93a8adc4 100644 Binary files a/graphics/pokemon/ditto/anim_front.png and b/graphics/pokemon/ditto/anim_front.png differ diff --git a/graphics/pokemon/ditto/front.png b/graphics/pokemon/ditto/front.png index 03ce29b08..73603b303 100644 Binary files a/graphics/pokemon/ditto/front.png and b/graphics/pokemon/ditto/front.png differ diff --git a/graphics/pokemon/ditto/normal.pal b/graphics/pokemon/ditto/normal.pal index 3fc5e998e..3709b13ee 100644 --- a/graphics/pokemon/ditto/normal.pal +++ b/graphics/pokemon/ditto/normal.pal @@ -2,14 +2,14 @@ JASC-PAL 0100 16 152 208 160 -184 152 216 -136 112 168 -232 208 248 -200 176 224 -96 56 128 -8 8 8 -152 128 184 -198 119 119 +192 120 224 +152 88 176 +248 200 248 +224 160 240 +88 24 144 +0 0 0 +176 104 200 +192 120 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/dodrio/anim_front.png b/graphics/pokemon/dodrio/anim_front.png index 0f09d9b66..a569e5893 100644 Binary files a/graphics/pokemon/dodrio/anim_front.png and b/graphics/pokemon/dodrio/anim_front.png differ diff --git a/graphics/pokemon/dodrio/front.png b/graphics/pokemon/dodrio/front.png index e4617fedd..5edcba27c 100644 Binary files a/graphics/pokemon/dodrio/front.png and b/graphics/pokemon/dodrio/front.png differ diff --git a/graphics/pokemon/dodrio/normal.pal b/graphics/pokemon/dodrio/normal.pal index 0d05314c0..e4205972a 100644 --- a/graphics/pokemon/dodrio/normal.pal +++ b/graphics/pokemon/dodrio/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 64 64 64 16 16 16 104 104 104 -160 104 80 +160 120 88 88 48 32 -224 152 112 +200 152 80 248 248 248 -112 72 56 -240 200 168 -176 136 128 -120 80 112 -200 128 176 -152 64 56 -232 120 112 -240 168 168 +96 88 64 +232 216 168 +176 160 120 +112 40 40 +232 128 120 +176 64 64 +240 128 160 +248 208 224 diff --git a/graphics/pokemon/doduo/anim_front.png b/graphics/pokemon/doduo/anim_front.png index 7039733ed..bda88f3de 100644 Binary files a/graphics/pokemon/doduo/anim_front.png and b/graphics/pokemon/doduo/anim_front.png differ diff --git a/graphics/pokemon/doduo/front.png b/graphics/pokemon/doduo/front.png index 1a626f16f..6222a7e27 100644 Binary files a/graphics/pokemon/doduo/front.png and b/graphics/pokemon/doduo/front.png differ diff --git a/graphics/pokemon/doduo/normal.pal b/graphics/pokemon/doduo/normal.pal index e2b1ed4d7..594e03325 100644 --- a/graphics/pokemon/doduo/normal.pal +++ b/graphics/pokemon/doduo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 48 24 -152 104 64 -208 136 88 -224 168 128 +80 56 24 +144 104 88 +184 136 80 +216 168 112 16 16 16 248 248 248 -96 64 40 +96 80 16 96 96 96 -168 128 104 -240 200 168 -192 128 160 -64 64 64 +160 128 72 +232 216 168 216 184 136 0 0 0 0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/donphan/anim_front.png b/graphics/pokemon/donphan/anim_front.png index 25f7fcf0a..a051ebc2b 100644 Binary files a/graphics/pokemon/donphan/anim_front.png and b/graphics/pokemon/donphan/anim_front.png differ diff --git a/graphics/pokemon/donphan/front.png b/graphics/pokemon/donphan/front.png index 182ab384f..cb344b85b 100644 Binary files a/graphics/pokemon/donphan/front.png and b/graphics/pokemon/donphan/front.png differ diff --git a/graphics/pokemon/donphan/normal.pal b/graphics/pokemon/donphan/normal.pal index df4ceec1b..b397df3f9 100644 --- a/graphics/pokemon/donphan/normal.pal +++ b/graphics/pokemon/donphan/normal.pal @@ -9,9 +9,9 @@ JASC-PAL 16 16 16 128 160 176 192 216 232 -104 32 72 +128 32 40 72 104 120 -184 48 88 +192 64 16 144 168 184 248 248 248 176 184 184 diff --git a/graphics/pokemon/dragonair/anim_front.png b/graphics/pokemon/dragonair/anim_front.png index d7d319d8b..0868dd485 100644 Binary files a/graphics/pokemon/dragonair/anim_front.png and b/graphics/pokemon/dragonair/anim_front.png differ diff --git a/graphics/pokemon/dragonair/front.png b/graphics/pokemon/dragonair/front.png index 73cb21609..91fea694e 100644 Binary files a/graphics/pokemon/dragonair/front.png and b/graphics/pokemon/dragonair/front.png differ diff --git a/graphics/pokemon/dragonair/normal.pal b/graphics/pokemon/dragonair/normal.pal index 8e1301377..1f5a7c704 100644 --- a/graphics/pokemon/dragonair/normal.pal +++ b/graphics/pokemon/dragonair/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 160 152 176 248 248 248 -96 80 96 -200 216 216 -24 48 96 -64 120 160 -104 160 216 +88 80 88 +216 208 216 +24 48 112 +72 104 192 +88 136 232 8 8 8 -152 200 240 -88 144 192 -120 40 88 -184 96 144 +120 168 248 +80 104 200 +128 8 56 +176 8 72 24 40 120 -32 104 176 -96 168 232 +64 88 248 +120 200 248 diff --git a/graphics/pokemon/dragonite/anim_front.png b/graphics/pokemon/dragonite/anim_front.png index 7eaa37393..b0a230528 100644 Binary files a/graphics/pokemon/dragonite/anim_front.png and b/graphics/pokemon/dragonite/anim_front.png differ diff --git a/graphics/pokemon/dragonite/front.png b/graphics/pokemon/dragonite/front.png index 6d1caf8be..0d4314b70 100644 Binary files a/graphics/pokemon/dragonite/front.png and b/graphics/pokemon/dragonite/front.png differ diff --git a/graphics/pokemon/dragonite/normal.pal b/graphics/pokemon/dragonite/normal.pal index e269aad02..493e8a7f7 100644 --- a/graphics/pokemon/dragonite/normal.pal +++ b/graphics/pokemon/dragonite/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 96 56 -248 232 192 -200 136 64 -216 192 144 -248 200 136 -240 168 88 +152 88 72 +248 232 184 +208 136 48 +232 184 136 +248 200 104 +232 176 72 88 56 32 248 248 248 -208 208 184 +200 200 200 16 16 16 -112 112 72 -16 88 88 -24 128 128 -56 184 168 +96 96 96 +32 80 64 +24 104 96 +32 160 120 152 128 88 diff --git a/graphics/pokemon/drapion/anim_front.png b/graphics/pokemon/drapion/anim_front.png index edd0a9502..624556e4e 100644 Binary files a/graphics/pokemon/drapion/anim_front.png and b/graphics/pokemon/drapion/anim_front.png differ diff --git a/graphics/pokemon/drapion/front.png b/graphics/pokemon/drapion/front.png index 3f0cc0f4c..57734a284 100644 Binary files a/graphics/pokemon/drapion/front.png and b/graphics/pokemon/drapion/front.png differ diff --git a/graphics/pokemon/drapion/normal.pal b/graphics/pokemon/drapion/normal.pal index b7d47ea42..1b476677c 100644 --- a/graphics/pokemon/drapion/normal.pal +++ b/graphics/pokemon/drapion/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 40 104 -112 64 128 +74 49 98 +123 65 123 16 16 16 -40 16 48 -136 88 152 -192 120 192 -224 160 200 -0 144 168 -24 88 96 -136 168 192 -248 248 248 -192 208 224 -136 56 128 +57 24 57 +139 90 156 +197 123 180 +222 148 205 +16 139 172 +41 90 98 +156 172 180 +255 255 255 +213 205 230 +131 49 123 0 0 0 0 0 0 diff --git a/graphics/pokemon/dratini/anim_front.png b/graphics/pokemon/dratini/anim_front.png index f34ac70d8..4b3f1a6c0 100644 Binary files a/graphics/pokemon/dratini/anim_front.png and b/graphics/pokemon/dratini/anim_front.png differ diff --git a/graphics/pokemon/dratini/front.png b/graphics/pokemon/dratini/front.png index 57c8d94b5..ee6f3bc45 100644 Binary files a/graphics/pokemon/dratini/front.png and b/graphics/pokemon/dratini/front.png differ diff --git a/graphics/pokemon/dratini/normal.pal b/graphics/pokemon/dratini/normal.pal index bb6334623..0367cec18 100644 --- a/graphics/pokemon/dratini/normal.pal +++ b/graphics/pokemon/dratini/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 128 144 -240 232 232 -200 192 184 -88 88 88 -88 104 176 -40 48 88 -160 192 232 -112 144 184 +152 144 136 248 248 248 -16 16 16 -120 48 120 -184 120 184 +208 200 208 +88 88 88 +88 96 184 +40 48 128 +160 176 240 +112 128 208 +248 248 248 +0 0 0 +72 24 104 +96 56 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/drifblim/anim_front.png b/graphics/pokemon/drifblim/anim_front.png index 177cce55d..9ed62c859 100644 Binary files a/graphics/pokemon/drifblim/anim_front.png and b/graphics/pokemon/drifblim/anim_front.png differ diff --git a/graphics/pokemon/drifblim/front.png b/graphics/pokemon/drifblim/front.png index eb766375e..f6cf9d5f9 100644 Binary files a/graphics/pokemon/drifblim/front.png and b/graphics/pokemon/drifblim/front.png differ diff --git a/graphics/pokemon/drifblim/normal.pal b/graphics/pokemon/drifblim/normal.pal index 8c3533930..fc8ae23dd 100644 --- a/graphics/pokemon/drifblim/normal.pal +++ b/graphics/pokemon/drifblim/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -200 184 176 +192 192 224 248 248 248 -96 88 88 +88 88 96 16 16 16 -88 72 104 -120 96 152 -64 48 72 -160 136 168 -224 80 80 +88 64 120 +128 80 168 +64 56 88 +152 112 216 +224 72 80 96 80 56 -184 152 56 -232 200 96 -168 144 176 -216 192 224 -136 48 48 +184 152 0 +248 216 8 +160 128 192 +208 176 248 +144 56 88 diff --git a/graphics/pokemon/drifloon/anim_front.png b/graphics/pokemon/drifloon/anim_front.png index f7bd5aa4f..feb7b51fa 100644 Binary files a/graphics/pokemon/drifloon/anim_front.png and b/graphics/pokemon/drifloon/anim_front.png differ diff --git a/graphics/pokemon/drifloon/front.png b/graphics/pokemon/drifloon/front.png index 76536179d..dea6e8871 100644 Binary files a/graphics/pokemon/drifloon/front.png and b/graphics/pokemon/drifloon/front.png differ diff --git a/graphics/pokemon/drifloon/normal.pal b/graphics/pokemon/drifloon/normal.pal index 8d6797178..a13591932 100644 --- a/graphics/pokemon/drifloon/normal.pal +++ b/graphics/pokemon/drifloon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 200 216 +192 208 224 248 248 248 -72 96 112 +88 88 96 16 16 16 -112 80 120 -152 112 176 -80 64 96 -200 160 208 -56 40 72 -208 168 64 -128 104 40 -240 208 96 +120 64 160 +144 104 224 +96 48 128 +192 176 248 +72 48 104 +200 176 0 +136 104 32 +248 216 8 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/drilbur/anim_front.png b/graphics/pokemon/drilbur/anim_front.png index e7ff763c5..f6073ae88 100644 Binary files a/graphics/pokemon/drilbur/anim_front.png and b/graphics/pokemon/drilbur/anim_front.png differ diff --git a/graphics/pokemon/drilbur/front.png b/graphics/pokemon/drilbur/front.png index b55412a8e..1bb3bb20d 100644 Binary files a/graphics/pokemon/drilbur/front.png and b/graphics/pokemon/drilbur/front.png differ diff --git a/graphics/pokemon/drilbur/normal.pal b/graphics/pokemon/drilbur/normal.pal index 9d401f41f..75efa8cdb 100644 --- a/graphics/pokemon/drilbur/normal.pal +++ b/graphics/pokemon/drilbur/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 104 96 -56 48 48 +96 96 96 +48 48 48 16 16 16 248 248 248 -176 160 144 -216 200 200 -232 144 136 -192 112 96 -88 72 64 -72 72 96 -96 96 136 -128 64 72 -208 112 112 -128 112 104 +160 160 160 +208 208 208 +232 152 136 +200 120 104 +64 64 64 +72 72 88 +96 104 128 +128 40 64 +168 80 80 +88 88 88 0 0 0 diff --git a/graphics/pokemon/drowzee/anim_front.png b/graphics/pokemon/drowzee/anim_front.png index 22b551c8c..3bab74224 100644 Binary files a/graphics/pokemon/drowzee/anim_front.png and b/graphics/pokemon/drowzee/anim_front.png differ diff --git a/graphics/pokemon/drowzee/front.png b/graphics/pokemon/drowzee/front.png index 2c158d2c4..b1296df0e 100644 Binary files a/graphics/pokemon/drowzee/front.png and b/graphics/pokemon/drowzee/front.png differ diff --git a/graphics/pokemon/drowzee/normal.pal b/graphics/pokemon/drowzee/normal.pal index 145024f56..0ea8f35c4 100644 --- a/graphics/pokemon/drowzee/normal.pal +++ b/graphics/pokemon/drowzee/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 128 24 -96 80 16 -240 200 64 -56 48 40 -184 152 48 -248 224 152 -16 16 16 -120 72 88 -248 248 248 -128 72 88 -200 120 144 -120 112 96 -160 152 136 -88 72 64 +168 136 0 +112 88 0 +240 232 0 +80 56 32 +208 168 72 +248 232 112 +0 0 0 +104 80 64 +248 248 248 +136 32 56 +232 56 56 +136 112 88 +176 152 120 +104 80 64 0 0 0 diff --git a/graphics/pokemon/druddigon/anim_front.png b/graphics/pokemon/druddigon/anim_front.png index 5c4989f1d..25fffae7f 100644 Binary files a/graphics/pokemon/druddigon/anim_front.png and b/graphics/pokemon/druddigon/anim_front.png differ diff --git a/graphics/pokemon/druddigon/front.png b/graphics/pokemon/druddigon/front.png index b0643a418..a522546a2 100644 Binary files a/graphics/pokemon/druddigon/front.png and b/graphics/pokemon/druddigon/front.png differ diff --git a/graphics/pokemon/druddigon/normal.pal b/graphics/pokemon/druddigon/normal.pal index 0e25f8564..3fdd0d60d 100644 --- a/graphics/pokemon/druddigon/normal.pal +++ b/graphics/pokemon/druddigon/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -0 56 80 -0 120 152 -0 88 104 +0 56 72 +0 120 168 +0 88 120 80 16 48 -136 32 56 -192 48 80 +144 0 64 +208 0 64 248 248 248 -232 176 112 -176 168 168 -208 120 136 -152 112 64 -80 64 48 -232 184 136 +232 192 0 +176 176 176 +208 80 112 +136 120 88 +96 80 48 +208 184 104 104 104 104 diff --git a/graphics/pokemon/ducklett/anim_front.png b/graphics/pokemon/ducklett/anim_front.png index 189932769..59d600e5e 100644 Binary files a/graphics/pokemon/ducklett/anim_front.png and b/graphics/pokemon/ducklett/anim_front.png differ diff --git a/graphics/pokemon/ducklett/front.png b/graphics/pokemon/ducklett/front.png index 7f0fd9423..f86b61a3d 100644 Binary files a/graphics/pokemon/ducklett/front.png and b/graphics/pokemon/ducklett/front.png differ diff --git a/graphics/pokemon/ducklett/normal.pal b/graphics/pokemon/ducklett/normal.pal index 7fd752704..d28a791b3 100644 --- a/graphics/pokemon/ducklett/normal.pal +++ b/graphics/pokemon/ducklett/normal.pal @@ -1,18 +1,18 @@ JASC-PAL 0100 16 -152 208 160 -88 128 120 -72 104 96 -152 224 216 -128 176 168 +248 192 248 +64 136 184 +48 72 112 +144 216 240 +96 176 200 16 16 16 -80 152 168 +64 136 184 248 248 248 -184 152 64 -120 104 56 -248 216 112 -80 184 216 +168 160 96 +104 104 64 +248 240 72 +88 176 232 32 104 104 0 0 0 0 0 0 diff --git a/graphics/pokemon/dugtrio/anim_front.png b/graphics/pokemon/dugtrio/anim_front.png index 511ecaeff..80339c70d 100644 Binary files a/graphics/pokemon/dugtrio/anim_front.png and b/graphics/pokemon/dugtrio/anim_front.png differ diff --git a/graphics/pokemon/dugtrio/front.png b/graphics/pokemon/dugtrio/front.png index 0a9afd978..4e1b6c280 100644 Binary files a/graphics/pokemon/dugtrio/front.png and b/graphics/pokemon/dugtrio/front.png differ diff --git a/graphics/pokemon/dugtrio/normal.pal b/graphics/pokemon/dugtrio/normal.pal index 3cc63312f..592302dc8 100644 --- a/graphics/pokemon/dugtrio/normal.pal +++ b/graphics/pokemon/dugtrio/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -136 104 80 -208 168 144 -80 56 40 -176 128 104 +160 88 88 +216 152 88 +88 48 24 +192 112 64 248 248 248 16 16 16 -120 56 96 -240 200 224 -216 136 184 -168 96 136 +144 64 112 +248 176 224 +232 120 184 +192 32 136 96 96 104 136 136 144 56 56 56 diff --git a/graphics/pokemon/dunsparce/anim_front.png b/graphics/pokemon/dunsparce/anim_front.png index 6b29ff012..b2216c6e2 100644 Binary files a/graphics/pokemon/dunsparce/anim_front.png and b/graphics/pokemon/dunsparce/anim_front.png differ diff --git a/graphics/pokemon/dunsparce/front.png b/graphics/pokemon/dunsparce/front.png index d097d92d2..660f5e1a1 100644 Binary files a/graphics/pokemon/dunsparce/front.png and b/graphics/pokemon/dunsparce/front.png differ diff --git a/graphics/pokemon/dunsparce/normal.pal b/graphics/pokemon/dunsparce/normal.pal index 5a2d1aae3..0aadd552d 100644 --- a/graphics/pokemon/dunsparce/normal.pal +++ b/graphics/pokemon/dunsparce/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 88 64 -248 224 136 -200 184 80 -160 144 56 +240 224 120 +216 184 56 +184 136 32 16 16 16 -112 104 96 +88 96 112 240 248 248 -192 184 184 -224 216 208 -104 192 192 -248 232 200 -56 152 168 -48 112 120 -163 110 138 +184 200 224 +208 224 240 +104 184 200 +248 240 192 +48 136 160 +32 104 128 +168 32 32 0 0 0 diff --git a/graphics/pokemon/duosion/anim_front.png b/graphics/pokemon/duosion/anim_front.png index edd0ce9fa..e8c48d6c0 100644 Binary files a/graphics/pokemon/duosion/anim_front.png and b/graphics/pokemon/duosion/anim_front.png differ diff --git a/graphics/pokemon/duosion/front.png b/graphics/pokemon/duosion/front.png index 7c463f848..acf0c1c0d 100644 Binary files a/graphics/pokemon/duosion/front.png and b/graphics/pokemon/duosion/front.png differ diff --git a/graphics/pokemon/duosion/normal.pal b/graphics/pokemon/duosion/normal.pal index 990c6486b..9af82073e 100644 --- a/graphics/pokemon/duosion/normal.pal +++ b/graphics/pokemon/duosion/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -56 136 104 -112 184 136 -96 128 88 -48 104 80 -208 232 168 -168 168 128 +64 152 96 +88 176 120 +96 120 96 +48 120 72 +192 216 176 +152 184 136 16 16 16 -184 232 184 +128 216 160 224 248 216 -160 88 88 -112 56 72 -0 0 0 +112 56 56 +176 64 64 +128 216 160 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/durant/anim_front.png b/graphics/pokemon/durant/anim_front.png index 236346e11..46e975814 100644 Binary files a/graphics/pokemon/durant/anim_front.png and b/graphics/pokemon/durant/anim_front.png differ diff --git a/graphics/pokemon/durant/front.png b/graphics/pokemon/durant/front.png index efd8d0ced..0320e654f 100644 Binary files a/graphics/pokemon/durant/front.png and b/graphics/pokemon/durant/front.png differ diff --git a/graphics/pokemon/durant/normal.pal b/graphics/pokemon/durant/normal.pal index ae4b4bfd4..4b438dc85 100644 --- a/graphics/pokemon/durant/normal.pal +++ b/graphics/pokemon/durant/normal.pal @@ -1,17 +1,17 @@ JASC-PAL 0100 16 -152 208 160 -136 128 144 -168 168 184 -200 200 224 -64 64 72 -24 24 32 -40 40 48 -88 88 96 -128 24 32 -192 64 72 -0 0 0 +153 204 153 +136 136 136 +170 170 187 +204 204 221 +68 68 68 +17 17 34 +34 34 51 +85 85 102 +128 32 0 +208 56 24 +255 255 255 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/dusclops/anim_front.png b/graphics/pokemon/dusclops/anim_front.png index 5fe60bbed..fee45d14a 100644 Binary files a/graphics/pokemon/dusclops/anim_front.png and b/graphics/pokemon/dusclops/anim_front.png differ diff --git a/graphics/pokemon/dusclops/front.png b/graphics/pokemon/dusclops/front.png index b2c01d029..58a0d15ab 100644 Binary files a/graphics/pokemon/dusclops/front.png and b/graphics/pokemon/dusclops/front.png differ diff --git a/graphics/pokemon/dusclops/normal.pal b/graphics/pokemon/dusclops/normal.pal index 882f3c79e..481bff7a6 100644 --- a/graphics/pokemon/dusclops/normal.pal +++ b/graphics/pokemon/dusclops/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 72 56 -152 136 120 -80 64 48 -224 208 192 -200 184 160 +104 88 72 +152 144 128 +80 56 48 +216 208 192 +184 176 160 16 16 16 -112 112 104 -176 176 160 -144 144 128 -80 80 72 +96 96 88 +160 160 144 +136 136 120 +72 72 72 128 104 104 248 248 248 -240 128 136 -224 80 88 +248 104 120 +216 16 64 24 24 24 diff --git a/graphics/pokemon/dusknoir/anim_front.png b/graphics/pokemon/dusknoir/anim_front.png index 59c490a6d..abbef6aac 100644 Binary files a/graphics/pokemon/dusknoir/anim_front.png and b/graphics/pokemon/dusknoir/anim_front.png differ diff --git a/graphics/pokemon/dusknoir/front.png b/graphics/pokemon/dusknoir/front.png index ad418e102..95a5ccea9 100644 Binary files a/graphics/pokemon/dusknoir/front.png and b/graphics/pokemon/dusknoir/front.png differ diff --git a/graphics/pokemon/dusknoir/normal.pal b/graphics/pokemon/dusknoir/normal.pal index 65731923d..ce4803194 100644 --- a/graphics/pokemon/dusknoir/normal.pal +++ b/graphics/pokemon/dusknoir/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 72 40 -160 120 72 -216 184 120 +96 72 48 +152 120 40 +224 176 48 64 56 56 16 16 16 -104 96 88 -168 176 160 -128 128 112 +96 88 96 +168 160 152 +128 112 112 88 88 72 176 144 56 224 192 56 -208 208 184 +200 200 168 232 64 64 40 40 32 0 0 0 diff --git a/graphics/pokemon/duskull/anim_front.png b/graphics/pokemon/duskull/anim_front.png index 89d92ec38..ede00efff 100644 Binary files a/graphics/pokemon/duskull/anim_front.png and b/graphics/pokemon/duskull/anim_front.png differ diff --git a/graphics/pokemon/duskull/front.png b/graphics/pokemon/duskull/front.png index 1e337d3ac..33903c773 100644 Binary files a/graphics/pokemon/duskull/front.png and b/graphics/pokemon/duskull/front.png differ diff --git a/graphics/pokemon/duskull/normal.pal b/graphics/pokemon/duskull/normal.pal index 657950b54..9b027e69f 100644 --- a/graphics/pokemon/duskull/normal.pal +++ b/graphics/pokemon/duskull/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 120 112 -40 56 40 -72 88 80 -160 168 160 -16 16 16 -248 240 224 +104 104 88 +48 48 40 +72 72 64 +128 128 112 +8 8 8 +248 248 224 216 208 168 176 176 144 -152 152 112 +144 136 112 232 224 192 -240 184 184 -232 80 96 -104 88 80 -0 0 0 -0 0 0 +248 72 16 +176 48 80 +248 96 32 +248 248 248 +8 8 8 diff --git a/graphics/pokemon/dustox/anim_front.png b/graphics/pokemon/dustox/anim_front.png index 8ed2b9a20..3a47c01e7 100644 Binary files a/graphics/pokemon/dustox/anim_front.png and b/graphics/pokemon/dustox/anim_front.png differ diff --git a/graphics/pokemon/dustox/front.png b/graphics/pokemon/dustox/front.png index d1d4927b9..356320c18 100644 Binary files a/graphics/pokemon/dustox/front.png and b/graphics/pokemon/dustox/front.png differ diff --git a/graphics/pokemon/dustox/normal.pal b/graphics/pokemon/dustox/normal.pal index e2f17b0e2..cc1a72661 100644 --- a/graphics/pokemon/dustox/normal.pal +++ b/graphics/pokemon/dustox/normal.pal @@ -2,10 +2,10 @@ JASC-PAL 0100 16 144 144 248 -144 112 48 -248 216 112 +152 104 56 +248 232 112 80 64 88 -192 160 88 +208 176 80 16 16 16 144 112 160 248 184 232 diff --git a/graphics/pokemon/dwebble/anim_front.png b/graphics/pokemon/dwebble/anim_front.png index ef81e4864..087dc3ff7 100644 Binary files a/graphics/pokemon/dwebble/anim_front.png and b/graphics/pokemon/dwebble/anim_front.png differ diff --git a/graphics/pokemon/dwebble/front.png b/graphics/pokemon/dwebble/front.png index 6be5250a1..560295f56 100644 Binary files a/graphics/pokemon/dwebble/front.png and b/graphics/pokemon/dwebble/front.png differ diff --git a/graphics/pokemon/dwebble/normal.pal b/graphics/pokemon/dwebble/normal.pal index 1b74d2b54..45efc6c54 100644 --- a/graphics/pokemon/dwebble/normal.pal +++ b/graphics/pokemon/dwebble/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 104 96 -72 72 80 -200 184 152 -152 136 128 +120 112 112 +88 80 72 +192 184 128 +160 152 136 16 16 16 248 248 248 -56 56 56 -232 128 72 -168 88 48 -80 56 32 -248 184 152 -128 80 56 +64 64 64 +232 152 72 +192 96 32 +96 64 40 +248 184 120 +144 96 72 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/eelektrik/anim_front.png b/graphics/pokemon/eelektrik/anim_front.png index 5823c55de..567a58c2b 100644 Binary files a/graphics/pokemon/eelektrik/anim_front.png and b/graphics/pokemon/eelektrik/anim_front.png differ diff --git a/graphics/pokemon/eelektrik/front.png b/graphics/pokemon/eelektrik/front.png index 4189c85eb..6bb7cc764 100644 Binary files a/graphics/pokemon/eelektrik/front.png and b/graphics/pokemon/eelektrik/front.png differ diff --git a/graphics/pokemon/eelektrik/normal.pal b/graphics/pokemon/eelektrik/normal.pal index 64a26e74e..4e64a32a9 100644 --- a/graphics/pokemon/eelektrik/normal.pal +++ b/graphics/pokemon/eelektrik/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -176 160 112 -120 104 72 -248 232 176 +192 168 120 +128 112 64 +232 216 160 24 24 32 -48 64 88 -72 96 128 -112 24 16 -160 64 64 -232 112 104 -176 152 40 -240 208 48 +16 56 72 +32 88 96 +112 32 0 +176 72 40 +216 112 80 +216 176 0 +248 208 0 248 248 248 184 184 184 0 0 0 diff --git a/graphics/pokemon/eelektross/anim_front.png b/graphics/pokemon/eelektross/anim_front.png index bb8037f8c..938f781a5 100644 Binary files a/graphics/pokemon/eelektross/anim_front.png and b/graphics/pokemon/eelektross/anim_front.png differ diff --git a/graphics/pokemon/eelektross/front.png b/graphics/pokemon/eelektross/front.png index 3b7931c0b..b1ae70adb 100644 Binary files a/graphics/pokemon/eelektross/front.png and b/graphics/pokemon/eelektross/front.png differ diff --git a/graphics/pokemon/eelektross/normal.pal b/graphics/pokemon/eelektross/normal.pal index 90f3d7bf0..37f8ca946 100644 --- a/graphics/pokemon/eelektross/normal.pal +++ b/graphics/pokemon/eelektross/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 120 0 -48 64 80 +16 48 64 0 32 48 -64 96 136 -144 152 184 +32 96 112 +112 176 200 16 16 24 -96 104 80 -176 152 104 -184 160 64 -248 224 88 -240 232 160 -232 88 88 -160 64 64 -152 144 136 +128 112 64 +192 168 120 +216 176 0 +248 208 0 +232 216 160 +216 112 80 +152 48 16 +128 128 128 248 248 248 0 0 0 diff --git a/graphics/pokemon/eevee/anim_front.png b/graphics/pokemon/eevee/anim_front.png index 59d53bacc..d419e87fc 100644 Binary files a/graphics/pokemon/eevee/anim_front.png and b/graphics/pokemon/eevee/anim_front.png differ diff --git a/graphics/pokemon/eevee/anim_frontf.png b/graphics/pokemon/eevee/anim_frontf.png index e923202b4..48cb88317 100644 Binary files a/graphics/pokemon/eevee/anim_frontf.png and b/graphics/pokemon/eevee/anim_frontf.png differ diff --git a/graphics/pokemon/eevee/front.png b/graphics/pokemon/eevee/front.png index 9833109f7..1a2292913 100644 Binary files a/graphics/pokemon/eevee/front.png and b/graphics/pokemon/eevee/front.png differ diff --git a/graphics/pokemon/eevee/frontf.png b/graphics/pokemon/eevee/frontf.png new file mode 100644 index 000000000..f7241f496 Binary files /dev/null and b/graphics/pokemon/eevee/frontf.png differ diff --git a/graphics/pokemon/eevee/normal.pal b/graphics/pokemon/eevee/normal.pal index 6bd8aad58..43bc46c9b 100644 --- a/graphics/pokemon/eevee/normal.pal +++ b/graphics/pokemon/eevee/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -152 96 56 -96 72 56 -208 136 72 +160 96 72 +112 72 72 +208 152 72 16 16 16 56 40 24 -96 48 8 -176 152 112 -224 192 136 +96 48 32 +184 152 120 +224 192 144 248 248 248 -248 216 160 +248 224 168 224 184 120 96 72 56 0 0 0 diff --git a/graphics/pokemon/ekans/anim_front.png b/graphics/pokemon/ekans/anim_front.png index d7d2241ba..abea49e51 100644 Binary files a/graphics/pokemon/ekans/anim_front.png and b/graphics/pokemon/ekans/anim_front.png differ diff --git a/graphics/pokemon/ekans/front.png b/graphics/pokemon/ekans/front.png index 1afc14625..721886da3 100644 Binary files a/graphics/pokemon/ekans/front.png and b/graphics/pokemon/ekans/front.png differ diff --git a/graphics/pokemon/ekans/normal.pal b/graphics/pokemon/ekans/normal.pal index fa10d90fa..10208771e 100644 --- a/graphics/pokemon/ekans/normal.pal +++ b/graphics/pokemon/ekans/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 32 64 -144 80 128 -224 160 224 -184 120 184 -96 56 88 -160 128 104 -248 232 176 +88 16 72 +160 72 160 +216 160 232 +192 96 200 +120 48 104 +176 152 48 +248 224 120 16 16 16 -200 176 112 -144 80 88 +208 184 72 +160 56 96 88 72 48 -192 120 128 -240 176 200 +216 96 112 +224 168 192 248 224 152 0 0 0 diff --git a/graphics/pokemon/electabuzz/anim_front.png b/graphics/pokemon/electabuzz/anim_front.png index c718c7648..a1f470a0a 100644 Binary files a/graphics/pokemon/electabuzz/anim_front.png and b/graphics/pokemon/electabuzz/anim_front.png differ diff --git a/graphics/pokemon/electabuzz/front.png b/graphics/pokemon/electabuzz/front.png index 4a77ab9c8..0459ecb3b 100644 Binary files a/graphics/pokemon/electabuzz/front.png and b/graphics/pokemon/electabuzz/front.png differ diff --git a/graphics/pokemon/electabuzz/normal.pal b/graphics/pokemon/electabuzz/normal.pal index 724c755c7..7a072e9d8 100644 --- a/graphics/pokemon/electabuzz/normal.pal +++ b/graphics/pokemon/electabuzz/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -168 136 72 -16 16 16 -248 232 168 -248 208 96 -88 64 48 -72 104 128 -16 48 72 +192 160 16 +0 0 0 +248 240 176 +248 224 56 +104 88 24 +88 104 120 +56 64 80 248 248 248 200 200 216 -160 104 104 -224 144 144 -200 160 72 -0 0 0 +176 56 104 +224 96 144 +224 192 80 +248 240 176 0 0 0 0 0 0 diff --git a/graphics/pokemon/electivire/anim_front.png b/graphics/pokemon/electivire/anim_front.png index 78bc8c048..a5f05a7e8 100644 Binary files a/graphics/pokemon/electivire/anim_front.png and b/graphics/pokemon/electivire/anim_front.png differ diff --git a/graphics/pokemon/electivire/front.png b/graphics/pokemon/electivire/front.png index 42f378b60..41bf884b5 100644 Binary files a/graphics/pokemon/electivire/front.png and b/graphics/pokemon/electivire/front.png differ diff --git a/graphics/pokemon/electivire/normal.pal b/graphics/pokemon/electivire/normal.pal index 03836274f..e751bd37e 100644 --- a/graphics/pokemon/electivire/normal.pal +++ b/graphics/pokemon/electivire/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 24 24 -8 8 8 -200 72 72 -216 120 104 -40 32 40 -128 120 72 -240 200 104 -80 72 64 -248 232 192 -176 144 80 -248 248 248 -80 72 72 -104 104 104 -192 176 184 +112 24 0 +0 0 0 +176 56 24 +240 80 56 +48 40 40 +152 128 72 +248 216 32 +88 72 64 +248 232 144 +192 168 64 +248 248 248 +104 104 104 +176 176 192 +0 0 0 0 0 0 diff --git a/graphics/pokemon/electrike/anim_front.png b/graphics/pokemon/electrike/anim_front.png index 7c25c7c89..b1acce4c9 100644 Binary files a/graphics/pokemon/electrike/anim_front.png and b/graphics/pokemon/electrike/anim_front.png differ diff --git a/graphics/pokemon/electrike/front.png b/graphics/pokemon/electrike/front.png index 74f7cd334..3e2b74a75 100644 Binary files a/graphics/pokemon/electrike/front.png and b/graphics/pokemon/electrike/front.png differ diff --git a/graphics/pokemon/electrike/normal.pal b/graphics/pokemon/electrike/normal.pal index 6d3244c0f..e179c60e9 100644 --- a/graphics/pokemon/electrike/normal.pal +++ b/graphics/pokemon/electrike/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -136 112 64 -248 216 112 +128 104 64 +248 232 64 16 16 16 -112 152 96 -72 104 64 -176 232 168 -144 208 136 -208 176 88 -136 184 120 -176 184 216 +96 152 96 +56 88 80 +176 232 152 +128 208 120 +200 160 56 +96 184 96 +184 184 192 248 248 248 -136 80 104 -200 128 160 -88 96 112 -176 232 168 +128 72 96 +224 104 160 +96 96 96 +176 232 152 diff --git a/graphics/pokemon/electrode/anim_front.png b/graphics/pokemon/electrode/anim_front.png index 10d09ecb7..e2342827e 100644 Binary files a/graphics/pokemon/electrode/anim_front.png and b/graphics/pokemon/electrode/anim_front.png differ diff --git a/graphics/pokemon/electrode/front.png b/graphics/pokemon/electrode/front.png index 15aecc817..e448ff25d 100644 Binary files a/graphics/pokemon/electrode/front.png and b/graphics/pokemon/electrode/front.png differ diff --git a/graphics/pokemon/electrode/normal.pal b/graphics/pokemon/electrode/normal.pal index a6073872e..187f196ea 100644 --- a/graphics/pokemon/electrode/normal.pal +++ b/graphics/pokemon/electrode/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -80 88 120 -152 160 176 +88 80 80 +160 160 160 232 232 232 248 248 248 -192 200 208 +200 200 224 16 16 16 -168 96 112 -240 120 112 -240 152 144 -112 48 56 -208 112 112 +200 40 64 +248 80 32 +240 160 136 +128 16 16 +232 56 48 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/elekid/anim_front.png b/graphics/pokemon/elekid/anim_front.png index cc05d9068..3b38ebfa2 100644 Binary files a/graphics/pokemon/elekid/anim_front.png and b/graphics/pokemon/elekid/anim_front.png differ diff --git a/graphics/pokemon/elekid/front.png b/graphics/pokemon/elekid/front.png index 7261262a9..dc1c694b2 100644 Binary files a/graphics/pokemon/elekid/front.png and b/graphics/pokemon/elekid/front.png differ diff --git a/graphics/pokemon/elekid/normal.pal b/graphics/pokemon/elekid/normal.pal index 1035472af..0c1a77d4a 100644 --- a/graphics/pokemon/elekid/normal.pal +++ b/graphics/pokemon/elekid/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 72 32 -144 112 72 -240 224 144 -192 160 64 +120 80 0 +176 104 0 +248 216 88 +200 136 0 16 16 16 160 160 160 248 248 248 200 200 200 -104 104 96 -216 184 80 -56 56 48 -127 81 77 -193 142 135 +96 96 96 +240 176 0 +48 48 48 +168 16 0 +232 64 48 0 0 0 0 0 0 diff --git a/graphics/pokemon/elgyem/anim_front.png b/graphics/pokemon/elgyem/anim_front.png index 019ce1dfa..2900d3b3e 100644 Binary files a/graphics/pokemon/elgyem/anim_front.png and b/graphics/pokemon/elgyem/anim_front.png differ diff --git a/graphics/pokemon/elgyem/front.png b/graphics/pokemon/elgyem/front.png index b034ed9ed..f1a930f82 100644 Binary files a/graphics/pokemon/elgyem/front.png and b/graphics/pokemon/elgyem/front.png differ diff --git a/graphics/pokemon/elgyem/normal.pal b/graphics/pokemon/elgyem/normal.pal index fcc15c286..29f2d2365 100644 --- a/graphics/pokemon/elgyem/normal.pal +++ b/graphics/pokemon/elgyem/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 160 176 -56 96 88 -72 120 104 -96 152 144 -136 216 216 +32 90 82 +57 115 82 +98 148 131 +164 205 189 16 16 16 -64 56 64 -112 104 112 -40 112 72 -248 248 248 -64 184 120 -120 56 48 -208 88 80 -248 232 88 -120 120 56 +65 65 65 +106 106 115 +16 82 41 +255 255 255 +32 156 16 +123 41 41 +205 0 0 +230 205 0 +106 98 16 0 0 0 diff --git a/graphics/pokemon/emboar/anim_front.png b/graphics/pokemon/emboar/anim_front.png index 6040135f8..ad36ed955 100644 Binary files a/graphics/pokemon/emboar/anim_front.png and b/graphics/pokemon/emboar/anim_front.png differ diff --git a/graphics/pokemon/emboar/front.png b/graphics/pokemon/emboar/front.png index 2ae4b79e4..009ecfd4d 100644 Binary files a/graphics/pokemon/emboar/front.png and b/graphics/pokemon/emboar/front.png differ diff --git a/graphics/pokemon/emboar/normal.pal b/graphics/pokemon/emboar/normal.pal index 4058c5649..ebd2efcaa 100644 --- a/graphics/pokemon/emboar/normal.pal +++ b/graphics/pokemon/emboar/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 24 24 -40 32 40 -224 64 64 -56 48 56 -112 48 16 -224 112 56 -160 80 48 +120 24 16 +32 32 32 +224 48 40 +48 48 48 +112 40 0 +232 96 32 +184 80 32 16 16 16 -224 144 16 -168 168 192 -232 192 72 +232 136 8 +168 168 168 +232 184 8 240 240 240 -152 48 48 -112 80 16 -168 136 48 +160 56 48 +120 88 8 +176 136 32 diff --git a/graphics/pokemon/emolga/anim_front.png b/graphics/pokemon/emolga/anim_front.png index 14f44870b..97b86d00b 100644 Binary files a/graphics/pokemon/emolga/anim_front.png and b/graphics/pokemon/emolga/anim_front.png differ diff --git a/graphics/pokemon/emolga/front.png b/graphics/pokemon/emolga/front.png index 8f296f15f..23a5856b4 100644 Binary files a/graphics/pokemon/emolga/front.png and b/graphics/pokemon/emolga/front.png differ diff --git a/graphics/pokemon/emolga/normal.pal b/graphics/pokemon/emolga/normal.pal index 4d72d2e48..92cb1b116 100644 --- a/graphics/pokemon/emolga/normal.pal +++ b/graphics/pokemon/emolga/normal.pal @@ -6,11 +6,11 @@ JASC-PAL 88 80 88 32 32 40 16 16 16 -192 152 48 +208 160 48 192 184 184 -160 120 24 +176 136 8 248 248 248 -248 200 56 +248 208 0 152 152 112 152 144 144 112 64 88 diff --git a/graphics/pokemon/empoleon/anim_front.png b/graphics/pokemon/empoleon/anim_front.png index 85d41c602..697609916 100644 Binary files a/graphics/pokemon/empoleon/anim_front.png and b/graphics/pokemon/empoleon/anim_front.png differ diff --git a/graphics/pokemon/empoleon/front.png b/graphics/pokemon/empoleon/front.png index 8cf43c938..3b3dff0bc 100644 Binary files a/graphics/pokemon/empoleon/front.png and b/graphics/pokemon/empoleon/front.png differ diff --git a/graphics/pokemon/empoleon/normal.pal b/graphics/pokemon/empoleon/normal.pal index 0b49c0a5e..b026b6f74 100644 --- a/graphics/pokemon/empoleon/normal.pal +++ b/graphics/pokemon/empoleon/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -184 128 56 -248 200 128 -96 80 32 -240 176 96 +184 136 104 +248 224 128 +120 80 64 +232 200 96 16 16 16 -56 64 72 -40 72 120 -64 112 184 -32 32 40 -120 176 232 -232 232 232 +40 64 80 +40 88 144 +80 136 224 +32 40 48 +152 200 248 +232 232 248 216 232 248 32 32 40 0 0 0 diff --git a/graphics/pokemon/entei/anim_front.png b/graphics/pokemon/entei/anim_front.png index 10472e133..267cc4cb6 100644 Binary files a/graphics/pokemon/entei/anim_front.png and b/graphics/pokemon/entei/anim_front.png differ diff --git a/graphics/pokemon/entei/front.png b/graphics/pokemon/entei/front.png index bdd6c1f7e..efed934d7 100644 Binary files a/graphics/pokemon/entei/front.png and b/graphics/pokemon/entei/front.png differ diff --git a/graphics/pokemon/entei/normal.pal b/graphics/pokemon/entei/normal.pal index eda697433..5c26ab549 100644 --- a/graphics/pokemon/entei/normal.pal +++ b/graphics/pokemon/entei/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 32 8 -248 192 40 -144 72 32 -200 112 56 -248 216 120 +80 40 0 +248 200 0 +128 80 40 +168 112 80 +248 224 144 16 16 16 -176 144 40 -184 24 24 -168 152 144 -128 24 16 -200 80 72 +192 136 0 +216 0 0 +168 168 168 +152 0 0 +232 64 64 248 248 248 -208 208 200 -96 80 96 -104 56 24 +208 208 208 +80 80 88 +104 64 56 diff --git a/graphics/pokemon/escavalier/anim_front.png b/graphics/pokemon/escavalier/anim_front.png index a296de1aa..78d215a42 100644 Binary files a/graphics/pokemon/escavalier/anim_front.png and b/graphics/pokemon/escavalier/anim_front.png differ diff --git a/graphics/pokemon/escavalier/front.png b/graphics/pokemon/escavalier/front.png index 72bb5ca64..eb56edb91 100644 Binary files a/graphics/pokemon/escavalier/front.png and b/graphics/pokemon/escavalier/front.png differ diff --git a/graphics/pokemon/escavalier/normal.pal b/graphics/pokemon/escavalier/normal.pal index ee4897d93..3aa60cf27 100644 --- a/graphics/pokemon/escavalier/normal.pal +++ b/graphics/pokemon/escavalier/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 32 48 -224 72 96 -160 48 64 +128 8 8 +232 40 80 +184 32 80 16 16 16 -136 128 120 -192 184 176 -80 72 56 -112 96 88 -176 104 24 -176 128 48 -240 192 80 +144 144 152 +192 192 192 +56 64 72 +104 104 104 +224 88 16 +184 152 24 +248 216 24 248 248 248 -120 96 48 -40 104 152 -32 72 112 +112 96 32 +24 88 184 +40 72 128 diff --git a/graphics/pokemon/espeon/anim_front.png b/graphics/pokemon/espeon/anim_front.png index e9aeb6713..1010130c1 100644 Binary files a/graphics/pokemon/espeon/anim_front.png and b/graphics/pokemon/espeon/anim_front.png differ diff --git a/graphics/pokemon/espeon/front.png b/graphics/pokemon/espeon/front.png index d2cc671fb..9c0cc5bba 100644 Binary files a/graphics/pokemon/espeon/front.png and b/graphics/pokemon/espeon/front.png differ diff --git a/graphics/pokemon/espeon/normal.pal b/graphics/pokemon/espeon/normal.pal index 8c1c52e7e..2c4844e87 100644 --- a/graphics/pokemon/espeon/normal.pal +++ b/graphics/pokemon/espeon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 56 72 -232 184 216 +120 72 120 +232 184 232 16 16 16 -168 120 136 -208 152 184 -56 80 104 -72 120 160 -200 64 64 +176 120 176 +224 160 208 +48 64 112 +72 112 176 +192 32 80 248 248 248 -104 72 168 -160 32 56 -160 144 208 -120 88 112 -155 49 106 -175 91 136 +128 96 176 +136 32 80 +192 192 192 +144 88 136 +168 16 0 +232 64 48 diff --git a/graphics/pokemon/excadrill/anim_front.png b/graphics/pokemon/excadrill/anim_front.png index bf9970785..4a07a4d87 100644 Binary files a/graphics/pokemon/excadrill/anim_front.png and b/graphics/pokemon/excadrill/anim_front.png differ diff --git a/graphics/pokemon/excadrill/front.png b/graphics/pokemon/excadrill/front.png index 437845c11..35cb0a172 100644 Binary files a/graphics/pokemon/excadrill/front.png and b/graphics/pokemon/excadrill/front.png differ diff --git a/graphics/pokemon/excadrill/normal.pal b/graphics/pokemon/excadrill/normal.pal index f393e696d..a193d953e 100644 --- a/graphics/pokemon/excadrill/normal.pal +++ b/graphics/pokemon/excadrill/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 80 80 -216 208 208 +96 96 96 +208 208 208 16 16 16 -160 152 152 -56 48 48 +160 160 160 +64 48 40 88 72 64 -40 32 32 -112 56 72 -168 72 80 +40 32 24 +128 64 64 +184 64 64 248 248 248 -176 96 96 -224 136 144 +200 112 104 +232 128 120 128 40 48 0 0 0 0 0 0 diff --git a/graphics/pokemon/exeggcute/anim_front.png b/graphics/pokemon/exeggcute/anim_front.png index 5ce0963fe..502e226db 100644 Binary files a/graphics/pokemon/exeggcute/anim_front.png and b/graphics/pokemon/exeggcute/anim_front.png differ diff --git a/graphics/pokemon/exeggcute/front.png b/graphics/pokemon/exeggcute/front.png index 8257e5bf3..49dc90ad3 100644 Binary files a/graphics/pokemon/exeggcute/front.png and b/graphics/pokemon/exeggcute/front.png differ diff --git a/graphics/pokemon/exeggcute/normal.pal b/graphics/pokemon/exeggcute/normal.pal index b9fa9d86a..b3489a08c 100644 --- a/graphics/pokemon/exeggcute/normal.pal +++ b/graphics/pokemon/exeggcute/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -192 136 152 +192 112 144 136 56 88 -248 200 200 +248 208 216 16 16 16 -248 216 128 -216 184 56 +248 232 136 +200 136 8 248 248 248 248 232 232 216 216 216 -184 120 152 -232 176 176 +224 176 184 +232 192 192 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/exeggutor/anim_front.png b/graphics/pokemon/exeggutor/anim_front.png index 019119288..44351f59b 100644 Binary files a/graphics/pokemon/exeggutor/anim_front.png and b/graphics/pokemon/exeggutor/anim_front.png differ diff --git a/graphics/pokemon/exeggutor/front.png b/graphics/pokemon/exeggutor/front.png index d5aa3ce24..7f825b094 100644 Binary files a/graphics/pokemon/exeggutor/front.png and b/graphics/pokemon/exeggutor/front.png differ diff --git a/graphics/pokemon/exeggutor/normal.pal b/graphics/pokemon/exeggutor/normal.pal index f680838c9..7af14aec0 100644 --- a/graphics/pokemon/exeggutor/normal.pal +++ b/graphics/pokemon/exeggutor/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -48 96 64 +32 72 16 16 16 16 -72 152 96 -144 208 112 -88 184 120 -80 72 56 -200 192 128 -248 240 176 -248 248 200 +56 128 32 +88 192 64 +72 160 48 +96 72 56 +208 200 112 +240 240 144 +248 248 168 248 248 248 120 120 72 -160 104 120 -136 120 96 -216 144 168 -192 168 144 +112 40 40 +136 104 72 +232 128 120 +192 144 112 diff --git a/graphics/pokemon/exploud/anim_front.png b/graphics/pokemon/exploud/anim_front.png index 0b0fc2aab..c46727542 100644 Binary files a/graphics/pokemon/exploud/anim_front.png and b/graphics/pokemon/exploud/anim_front.png differ diff --git a/graphics/pokemon/exploud/front.png b/graphics/pokemon/exploud/front.png index c5e3bddb2..03eb4fa59 100644 Binary files a/graphics/pokemon/exploud/front.png and b/graphics/pokemon/exploud/front.png differ diff --git a/graphics/pokemon/exploud/normal.pal b/graphics/pokemon/exploud/normal.pal index da7be4205..b36fd399c 100644 --- a/graphics/pokemon/exploud/normal.pal +++ b/graphics/pokemon/exploud/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 136 80 -248 216 120 -16 16 16 -208 176 104 -88 80 120 -192 200 232 -152 160 216 -112 120 176 -112 40 80 -136 56 104 -232 128 128 -168 88 128 +160 120 32 +248 224 104 +0 0 0 +224 176 80 +80 72 136 +184 184 232 +160 160 216 +120 112 176 +88 32 88 +120 48 96 +224 112 152 +176 64 120 248 248 248 136 136 136 -200 144 168 +184 192 208 diff --git a/graphics/pokemon/farfetchd/anim_front.png b/graphics/pokemon/farfetchd/anim_front.png index 10073f534..6554a4c9f 100644 Binary files a/graphics/pokemon/farfetchd/anim_front.png and b/graphics/pokemon/farfetchd/anim_front.png differ diff --git a/graphics/pokemon/farfetchd/front.png b/graphics/pokemon/farfetchd/front.png index 6844e8572..ea6aa6637 100644 Binary files a/graphics/pokemon/farfetchd/front.png and b/graphics/pokemon/farfetchd/front.png differ diff --git a/graphics/pokemon/farfetchd/normal.pal b/graphics/pokemon/farfetchd/normal.pal index 901576f95..306a547b1 100644 --- a/graphics/pokemon/farfetchd/normal.pal +++ b/graphics/pokemon/farfetchd/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 112 104 -88 72 64 -192 152 136 +144 88 104 +96 64 56 +192 152 144 16 16 16 -88 128 56 -232 224 192 -144 184 40 -192 184 152 -208 216 176 +80 152 0 +232 232 216 +144 208 72 +192 176 152 +208 208 208 200 168 160 248 248 248 -200 216 112 -248 208 120 -248 184 40 -184 136 32 +200 248 136 +248 216 104 +240 176 64 +184 112 24 diff --git a/graphics/pokemon/fearow/anim_front.png b/graphics/pokemon/fearow/anim_front.png index b0b4626d0..d9650bc87 100644 Binary files a/graphics/pokemon/fearow/anim_front.png and b/graphics/pokemon/fearow/anim_front.png differ diff --git a/graphics/pokemon/fearow/back.png b/graphics/pokemon/fearow/back.png index a2999d373..429ab9a4b 100644 Binary files a/graphics/pokemon/fearow/back.png and b/graphics/pokemon/fearow/back.png differ diff --git a/graphics/pokemon/fearow/front.png b/graphics/pokemon/fearow/front.png index ec674d634..6cb779e78 100644 Binary files a/graphics/pokemon/fearow/front.png and b/graphics/pokemon/fearow/front.png differ diff --git a/graphics/pokemon/fearow/normal.pal b/graphics/pokemon/fearow/normal.pal index 48cc7dd7d..555e50474 100644 --- a/graphics/pokemon/fearow/normal.pal +++ b/graphics/pokemon/fearow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 88 48 -80 48 32 -224 192 152 +160 104 48 +96 64 40 +232 232 152 16 16 16 -176 112 56 -208 144 80 +192 136 48 +176 32 32 112 32 32 -208 80 64 -144 72 56 -224 136 128 -208 184 152 +224 64 64 +160 64 64 +248 128 104 +224 208 176 248 248 248 -168 144 112 -240 184 200 -200 144 144 +168 160 104 +232 168 160 +208 128 128 diff --git a/graphics/pokemon/fearow/shiny.pal b/graphics/pokemon/fearow/shiny.pal index 4d0161920..66bce8b73 100644 --- a/graphics/pokemon/fearow/shiny.pal +++ b/graphics/pokemon/fearow/shiny.pal @@ -7,7 +7,7 @@ JASC-PAL 208 216 88 16 16 16 176 184 32 -208 216 88 +208 120 0 136 48 0 248 160 0 208 120 0 diff --git a/graphics/pokemon/feebas/anim_front.png b/graphics/pokemon/feebas/anim_front.png index 46874f95f..f08426d73 100644 Binary files a/graphics/pokemon/feebas/anim_front.png and b/graphics/pokemon/feebas/anim_front.png differ diff --git a/graphics/pokemon/feebas/front.png b/graphics/pokemon/feebas/front.png index 014124a8e..2b746a493 100644 Binary files a/graphics/pokemon/feebas/front.png and b/graphics/pokemon/feebas/front.png differ diff --git a/graphics/pokemon/feebas/normal.pal b/graphics/pokemon/feebas/normal.pal index 365a9f2a4..13358ec65 100644 --- a/graphics/pokemon/feebas/normal.pal +++ b/graphics/pokemon/feebas/normal.pal @@ -15,5 +15,5 @@ JASC-PAL 144 120 88 216 224 240 248 248 248 -240 160 168 -224 112 120 +248 120 128 +200 80 112 diff --git a/graphics/pokemon/feraligatr/anim_front.png b/graphics/pokemon/feraligatr/anim_front.png index 853c80e2e..d644a30ae 100644 Binary files a/graphics/pokemon/feraligatr/anim_front.png and b/graphics/pokemon/feraligatr/anim_front.png differ diff --git a/graphics/pokemon/feraligatr/front.png b/graphics/pokemon/feraligatr/front.png index 30307772e..dda82ea74 100644 Binary files a/graphics/pokemon/feraligatr/front.png and b/graphics/pokemon/feraligatr/front.png differ diff --git a/graphics/pokemon/feraligatr/normal.pal b/graphics/pokemon/feraligatr/normal.pal index 16320dcd5..166ae9add 100644 --- a/graphics/pokemon/feraligatr/normal.pal +++ b/graphics/pokemon/feraligatr/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 40 40 -248 160 136 +128 0 8 +248 136 128 16 16 16 240 80 88 -24 88 120 -96 200 232 -64 152 168 -152 232 240 +8 104 144 +64 208 232 +40 152 184 +136 232 248 248 248 248 192 192 192 248 184 112 -112 88 40 -240 216 152 -192 168 112 +128 88 0 +248 224 136 +200 184 96 0 0 0 diff --git a/graphics/pokemon/ferroseed/anim_front.png b/graphics/pokemon/ferroseed/anim_front.png index 51b2ae0ae..4c5275b5c 100644 Binary files a/graphics/pokemon/ferroseed/anim_front.png and b/graphics/pokemon/ferroseed/anim_front.png differ diff --git a/graphics/pokemon/ferroseed/front.png b/graphics/pokemon/ferroseed/front.png index f7c87b2dd..8242059a0 100644 Binary files a/graphics/pokemon/ferroseed/front.png and b/graphics/pokemon/ferroseed/front.png differ diff --git a/graphics/pokemon/ferroseed/normal.pal b/graphics/pokemon/ferroseed/normal.pal index 58ca62664..db9e02ebe 100644 --- a/graphics/pokemon/ferroseed/normal.pal +++ b/graphics/pokemon/ferroseed/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 80 72 -96 176 120 +16 64 32 +0 176 88 16 16 16 88 88 88 -192 192 200 -56 128 80 +176 184 184 +32 104 64 136 136 136 -48 48 56 +64 64 64 232 232 232 200 200 200 -184 120 56 -248 168 80 -0 0 0 +176 136 64 +232 184 72 +176 184 184 0 0 0 0 0 0 diff --git a/graphics/pokemon/ferrothorn/anim_front.png b/graphics/pokemon/ferrothorn/anim_front.png index 7542019e7..ccec2bda8 100644 Binary files a/graphics/pokemon/ferrothorn/anim_front.png and b/graphics/pokemon/ferrothorn/anim_front.png differ diff --git a/graphics/pokemon/ferrothorn/front.png b/graphics/pokemon/ferrothorn/front.png index 2f43f4e9c..eeee76f76 100644 Binary files a/graphics/pokemon/ferrothorn/front.png and b/graphics/pokemon/ferrothorn/front.png differ diff --git a/graphics/pokemon/ferrothorn/normal.pal b/graphics/pokemon/ferrothorn/normal.pal index c02ea55fa..284ef0063 100644 --- a/graphics/pokemon/ferrothorn/normal.pal +++ b/graphics/pokemon/ferrothorn/normal.pal @@ -3,16 +3,16 @@ JASC-PAL 16 152 208 160 88 88 88 -16 16 16 -48 48 56 -136 128 136 -40 72 64 -192 192 200 -56 128 80 -104 176 128 +0 0 0 +48 48 48 +128 128 136 +24 80 48 +176 184 184 +32 136 80 +0 176 88 248 248 248 -184 120 56 -240 152 72 +192 136 40 +232 184 72 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/finneon/anim_front.png b/graphics/pokemon/finneon/anim_front.png index 7e8e99a0e..c18dd41cf 100644 Binary files a/graphics/pokemon/finneon/anim_front.png and b/graphics/pokemon/finneon/anim_front.png differ diff --git a/graphics/pokemon/finneon/front.png b/graphics/pokemon/finneon/front.png index 063d58973..635dcfc7e 100644 Binary files a/graphics/pokemon/finneon/front.png and b/graphics/pokemon/finneon/front.png differ diff --git a/graphics/pokemon/finneon/normal.pal b/graphics/pokemon/finneon/normal.pal index 3cb0afe37..cc4af552a 100644 --- a/graphics/pokemon/finneon/normal.pal +++ b/graphics/pokemon/finneon/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -80 120 120 -144 216 208 -32 40 48 -200 232 224 +80 104 136 +144 208 224 +40 40 56 +192 224 240 16 16 8 112 160 160 -144 64 104 -224 136 152 -200 88 136 -80 112 112 -48 72 80 +112 64 120 +168 136 184 +192 72 144 +64 104 128 +48 64 88 232 248 248 16 16 16 0 0 0 diff --git a/graphics/pokemon/flaaffy/anim_front.png b/graphics/pokemon/flaaffy/anim_front.png index 6cf5bc557..0cc7d0439 100644 Binary files a/graphics/pokemon/flaaffy/anim_front.png and b/graphics/pokemon/flaaffy/anim_front.png differ diff --git a/graphics/pokemon/flaaffy/front.png b/graphics/pokemon/flaaffy/front.png index 0a6382039..373ff986f 100644 Binary files a/graphics/pokemon/flaaffy/front.png and b/graphics/pokemon/flaaffy/front.png differ diff --git a/graphics/pokemon/flaaffy/normal.pal b/graphics/pokemon/flaaffy/normal.pal index 1581a2a70..9b6781342 100644 --- a/graphics/pokemon/flaaffy/normal.pal +++ b/graphics/pokemon/flaaffy/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 184 184 -248 248 240 -112 136 136 -208 216 216 +176 176 208 +248 248 248 +128 112 136 +200 216 240 16 16 16 -80 80 80 -144 88 104 -248 144 176 -216 120 152 -248 176 192 -120 56 72 -48 104 144 -72 136 168 -88 192 232 -48 88 120 +72 72 88 +208 96 120 +248 176 200 +248 136 152 +248 200 208 +136 32 48 +64 112 168 +80 128 192 +128 192 248 +40 64 136 diff --git a/graphics/pokemon/flareon/anim_front.png b/graphics/pokemon/flareon/anim_front.png index e76a63044..fcb04af2a 100644 Binary files a/graphics/pokemon/flareon/anim_front.png and b/graphics/pokemon/flareon/anim_front.png differ diff --git a/graphics/pokemon/flareon/front.png b/graphics/pokemon/flareon/front.png index b587918dd..7f233214c 100644 Binary files a/graphics/pokemon/flareon/front.png and b/graphics/pokemon/flareon/front.png differ diff --git a/graphics/pokemon/flareon/normal.pal b/graphics/pokemon/flareon/normal.pal index 6d80e3fed..648c2c51c 100644 --- a/graphics/pokemon/flareon/normal.pal +++ b/graphics/pokemon/flareon/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -104 88 56 -224 200 128 -248 232 152 +112 88 64 +224 192 136 +248 240 160 96 40 32 -176 152 96 +192 160 104 16 16 16 -192 80 32 -136 48 56 -240 120 64 -0 56 80 +216 64 80 +112 32 24 +248 112 72 +32 32 104 248 248 248 0 0 0 0 0 0 diff --git a/graphics/pokemon/floatzel/anim_front.png b/graphics/pokemon/floatzel/anim_front.png index 1b66fe15d..d5dd3a61f 100644 Binary files a/graphics/pokemon/floatzel/anim_front.png and b/graphics/pokemon/floatzel/anim_front.png differ diff --git a/graphics/pokemon/floatzel/front.png b/graphics/pokemon/floatzel/front.png index 64759500b..6ff6ec136 100644 Binary files a/graphics/pokemon/floatzel/front.png and b/graphics/pokemon/floatzel/front.png differ diff --git a/graphics/pokemon/floatzel/normal.pal b/graphics/pokemon/floatzel/normal.pal index 7494e2886..c92f189e8 100644 --- a/graphics/pokemon/floatzel/normal.pal +++ b/graphics/pokemon/floatzel/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 48 24 -232 128 80 -168 80 40 +120 64 32 +232 120 24 +168 88 32 24 24 24 -248 224 168 -192 168 112 +240 240 176 +200 184 128 120 104 40 248 248 248 -200 160 40 +224 160 48 96 96 80 -248 216 80 -56 120 152 -96 200 224 -200 96 48 +248 216 0 +32 96 160 +96 184 224 +200 104 24 248 248 248 diff --git a/graphics/pokemon/flygon/anim_front.png b/graphics/pokemon/flygon/anim_front.png index 4a9d71d59..dcc03a1c5 100644 Binary files a/graphics/pokemon/flygon/anim_front.png and b/graphics/pokemon/flygon/anim_front.png differ diff --git a/graphics/pokemon/flygon/front.png b/graphics/pokemon/flygon/front.png index cd2bc9fb3..64b9467a5 100644 Binary files a/graphics/pokemon/flygon/front.png and b/graphics/pokemon/flygon/front.png differ diff --git a/graphics/pokemon/flygon/normal.pal b/graphics/pokemon/flygon/normal.pal index 5c5bf302f..f9b4b8a31 100644 --- a/graphics/pokemon/flygon/normal.pal +++ b/graphics/pokemon/flygon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 176 176 176 -56 96 56 -88 160 88 +48 88 88 +104 160 112 88 120 80 16 16 16 -136 200 136 -136 48 56 -224 104 112 +144 208 152 +128 40 56 +216 96 112 248 248 248 -176 72 96 -184 208 136 -232 144 160 -128 168 96 +200 56 72 +176 216 112 +248 160 176 +136 160 80 128 184 96 216 248 136 -88 96 64 +80 96 32 diff --git a/graphics/pokemon/foongus/anim_front.png b/graphics/pokemon/foongus/anim_front.png index 8bf943daa..8c7b13ecf 100644 Binary files a/graphics/pokemon/foongus/anim_front.png and b/graphics/pokemon/foongus/anim_front.png differ diff --git a/graphics/pokemon/foongus/front.png b/graphics/pokemon/foongus/front.png index fe85bd399..0d584f1da 100644 Binary files a/graphics/pokemon/foongus/front.png and b/graphics/pokemon/foongus/front.png differ diff --git a/graphics/pokemon/foongus/normal.pal b/graphics/pokemon/foongus/normal.pal index cd7a381b5..78b7900af 100644 --- a/graphics/pokemon/foongus/normal.pal +++ b/graphics/pokemon/foongus/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 64 64 -232 96 88 +120 48 48 +216 88 80 16 16 16 -168 72 64 -120 104 88 -80 64 56 -184 160 144 -240 224 208 -160 88 120 +152 56 56 +104 72 48 +64 40 40 +192 176 152 +248 240 224 +152 56 120 128 104 96 -216 120 168 -0 0 0 +208 96 152 +16 16 16 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/forretress/anim_front.png b/graphics/pokemon/forretress/anim_front.png index 77dccba4d..3ddc37f38 100644 Binary files a/graphics/pokemon/forretress/anim_front.png and b/graphics/pokemon/forretress/anim_front.png differ diff --git a/graphics/pokemon/forretress/front.png b/graphics/pokemon/forretress/front.png index 99f779de8..dde5eac09 100644 Binary files a/graphics/pokemon/forretress/front.png and b/graphics/pokemon/forretress/front.png differ diff --git a/graphics/pokemon/forretress/normal.pal b/graphics/pokemon/forretress/normal.pal index 5fe04b703..56fce78f9 100644 --- a/graphics/pokemon/forretress/normal.pal +++ b/graphics/pokemon/forretress/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -168 136 152 -248 224 216 -88 72 96 +152 120 144 +232 216 224 +80 64 96 16 16 16 -224 184 208 +208 184 192 160 24 24 -184 64 64 -104 24 16 +208 64 56 +120 24 24 248 248 248 -208 112 112 +248 96 96 88 80 80 248 224 216 0 0 0 diff --git a/graphics/pokemon/fraxure/anim_front.png b/graphics/pokemon/fraxure/anim_front.png index 70fac2dd2..de1d6b8da 100644 Binary files a/graphics/pokemon/fraxure/anim_front.png and b/graphics/pokemon/fraxure/anim_front.png differ diff --git a/graphics/pokemon/fraxure/front.png b/graphics/pokemon/fraxure/front.png index 8add7891a..5171acb52 100644 Binary files a/graphics/pokemon/fraxure/front.png and b/graphics/pokemon/fraxure/front.png differ diff --git a/graphics/pokemon/fraxure/normal.pal b/graphics/pokemon/fraxure/normal.pal index 67bffd94e..90a3d97bf 100644 --- a/graphics/pokemon/fraxure/normal.pal +++ b/graphics/pokemon/fraxure/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 64 40 +48 72 40 16 16 16 -72 144 80 -56 96 56 -112 112 120 -88 80 88 -96 32 32 -192 104 96 -48 48 56 +72 136 72 +64 104 56 +112 112 112 +88 88 80 +96 0 0 +216 64 64 +56 56 56 248 248 248 -128 56 56 -160 144 152 -96 72 80 -120 112 112 -208 120 136 +176 32 32 +152 152 152 +120 40 48 +120 120 120 +232 128 120 diff --git a/graphics/pokemon/frillish/anim_front.png b/graphics/pokemon/frillish/anim_front.png index 908c66ace..161c4bfb1 100644 Binary files a/graphics/pokemon/frillish/anim_front.png and b/graphics/pokemon/frillish/anim_front.png differ diff --git a/graphics/pokemon/frillish/anim_frontf.png b/graphics/pokemon/frillish/anim_frontf.png index ae2c2ecee..b3fa9621b 100644 Binary files a/graphics/pokemon/frillish/anim_frontf.png and b/graphics/pokemon/frillish/anim_frontf.png differ diff --git a/graphics/pokemon/frillish/back.png b/graphics/pokemon/frillish/back.png index 70886b6b5..ee17f90cd 100644 Binary files a/graphics/pokemon/frillish/back.png and b/graphics/pokemon/frillish/back.png differ diff --git a/graphics/pokemon/frillish/backf.png b/graphics/pokemon/frillish/backf.png index ac2074aa6..fcfd88dce 100644 Binary files a/graphics/pokemon/frillish/backf.png and b/graphics/pokemon/frillish/backf.png differ diff --git a/graphics/pokemon/frillish/front.png b/graphics/pokemon/frillish/front.png index 9631e3060..cd48a39ac 100644 Binary files a/graphics/pokemon/frillish/front.png and b/graphics/pokemon/frillish/front.png differ diff --git a/graphics/pokemon/frillish/frontf.png b/graphics/pokemon/frillish/frontf.png new file mode 100644 index 000000000..88713ea3a Binary files /dev/null and b/graphics/pokemon/frillish/frontf.png differ diff --git a/graphics/pokemon/frillish/normal.pal b/graphics/pokemon/frillish/normal.pal index a6fdeb9f9..33cbd2d10 100644 --- a/graphics/pokemon/frillish/normal.pal +++ b/graphics/pokemon/frillish/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -56 104 128 +56 88 104 16 16 16 -136 176 208 -184 240 240 -104 168 208 -144 224 232 +176 192 224 +208 224 248 +88 160 192 +128 208 248 248 248 248 -64 112 184 -232 96 80 -0 0 0 +56 96 192 +216 40 16 +56 88 104 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/frillish/normalf.pal b/graphics/pokemon/frillish/normalf.pal index 252ae04b6..2932ece56 100644 --- a/graphics/pokemon/frillish/normalf.pal +++ b/graphics/pokemon/frillish/normalf.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 153 210 164 -132 87 106 +160 64 96 16 16 16 -185 166 216 -252 214 232 -190 139 198 -255 186 215 +216 184 192 +248 224 232 +192 128 160 +248 184 216 255 255 255 -242 112 92 -115 149 209 +168 48 64 +88 160 200 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/froslass/anim_front.png b/graphics/pokemon/froslass/anim_front.png index ea5207baa..b6ef59fd4 100644 Binary files a/graphics/pokemon/froslass/anim_front.png and b/graphics/pokemon/froslass/anim_front.png differ diff --git a/graphics/pokemon/froslass/front.png b/graphics/pokemon/froslass/front.png index 3ad383321..28597b428 100644 Binary files a/graphics/pokemon/froslass/front.png and b/graphics/pokemon/froslass/front.png differ diff --git a/graphics/pokemon/froslass/normal.pal b/graphics/pokemon/froslass/normal.pal index 7d4fd3b87..eba1feb42 100644 --- a/graphics/pokemon/froslass/normal.pal +++ b/graphics/pokemon/froslass/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 152 160 -152 200 184 -72 80 88 -160 152 136 -72 104 120 -248 248 240 -216 208 200 -128 80 160 -96 56 112 +80 120 176 +112 176 208 +64 64 104 +136 136 168 +64 80 136 +248 248 248 +192 200 216 +112 48 160 +72 48 112 16 16 16 -192 168 48 -248 224 104 -104 56 48 -176 72 40 -208 128 96 +216 144 56 +248 208 88 +104 48 48 +192 40 32 +224 120 72 diff --git a/graphics/pokemon/furret/anim_front.png b/graphics/pokemon/furret/anim_front.png index 14e651c69..bd0119c56 100644 Binary files a/graphics/pokemon/furret/anim_front.png and b/graphics/pokemon/furret/anim_front.png differ diff --git a/graphics/pokemon/furret/back.png b/graphics/pokemon/furret/back.png index 1c035910c..1f93600ab 100644 Binary files a/graphics/pokemon/furret/back.png and b/graphics/pokemon/furret/back.png differ diff --git a/graphics/pokemon/furret/front.png b/graphics/pokemon/furret/front.png index 5e4fc0364..bab4d95b6 100644 Binary files a/graphics/pokemon/furret/front.png and b/graphics/pokemon/furret/front.png differ diff --git a/graphics/pokemon/furret/normal.pal b/graphics/pokemon/furret/normal.pal index c927ef516..661f34207 100644 --- a/graphics/pokemon/furret/normal.pal +++ b/graphics/pokemon/furret/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 40 40 -192 160 128 -112 72 56 -16 16 16 -232 200 152 -152 96 80 -160 128 104 -152 112 80 -248 216 184 +80 40 32 +208 176 104 +120 64 56 +32 32 40 +192 152 64 +232 208 160 +152 96 72 +168 128 40 +248 248 192 248 248 248 -32 96 80 -96 64 88 -224 112 112 -0 0 0 +112 112 112 +152 0 0 +248 144 96 +120 64 56 0 0 0 diff --git a/graphics/pokemon/furret/shiny.pal b/graphics/pokemon/furret/shiny.pal index b221862e5..75a750fca 100644 --- a/graphics/pokemon/furret/shiny.pal +++ b/graphics/pokemon/furret/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 16 64 +112 0 56 248 176 184 160 48 104 -16 16 16 -248 224 200 +32 32 40 +232 152 160 +248 232 216 216 88 136 -224 144 152 216 112 120 248 232 240 248 248 248 112 112 112 -152 56 56 +152 0 0 248 144 96 -0 0 0 +120 64 56 0 0 0 diff --git a/graphics/pokemon/gabite/anim_front.png b/graphics/pokemon/gabite/anim_front.png index 64dd7fd42..da2701ab0 100644 Binary files a/graphics/pokemon/gabite/anim_front.png and b/graphics/pokemon/gabite/anim_front.png differ diff --git a/graphics/pokemon/gabite/front.png b/graphics/pokemon/gabite/front.png index 59ab36b06..3495a5f18 100644 Binary files a/graphics/pokemon/gabite/front.png and b/graphics/pokemon/gabite/front.png differ diff --git a/graphics/pokemon/gabite/normal.pal b/graphics/pokemon/gabite/normal.pal index 300521aa6..6e64e91d8 100644 --- a/graphics/pokemon/gabite/normal.pal +++ b/graphics/pokemon/gabite/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 80 120 -40 48 80 -88 112 168 -128 120 176 -168 168 232 -128 144 184 -16 16 16 -248 200 56 -160 128 32 -80 24 16 -160 56 40 +56 72 136 +16 40 80 +88 104 184 +136 136 184 +176 184 240 +112 136 200 +16 24 32 +248 248 24 +216 152 24 +88 16 0 +168 48 72 248 248 248 -216 96 72 -136 128 120 -200 192 184 +216 88 40 +112 120 128 +192 200 208 diff --git a/graphics/pokemon/gallade/anim_front.png b/graphics/pokemon/gallade/anim_front.png index dd3d07c4e..b2da036ff 100644 Binary files a/graphics/pokemon/gallade/anim_front.png and b/graphics/pokemon/gallade/anim_front.png differ diff --git a/graphics/pokemon/gallade/front.png b/graphics/pokemon/gallade/front.png index 958215914..93f200159 100644 Binary files a/graphics/pokemon/gallade/front.png and b/graphics/pokemon/gallade/front.png differ diff --git a/graphics/pokemon/gallade/normal.pal b/graphics/pokemon/gallade/normal.pal index 0514a63f3..5f3e73587 100644 --- a/graphics/pokemon/gallade/normal.pal +++ b/graphics/pokemon/gallade/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 80 56 +56 80 80 16 16 16 -56 128 72 -96 152 152 -112 200 192 -56 112 104 -80 176 120 -152 128 128 -224 216 216 +64 128 88 +112 144 160 +120 192 176 +80 120 128 +88 176 104 +112 128 168 +200 200 224 248 248 248 -200 184 184 -112 40 64 -248 144 152 -208 72 96 +160 176 200 +128 40 72 +248 120 144 +208 72 112 248 248 248 diff --git a/graphics/pokemon/galvantula/anim_front.png b/graphics/pokemon/galvantula/anim_front.png index 5aa7dca3c..20b458676 100644 Binary files a/graphics/pokemon/galvantula/anim_front.png and b/graphics/pokemon/galvantula/anim_front.png differ diff --git a/graphics/pokemon/galvantula/front.png b/graphics/pokemon/galvantula/front.png index fb0ec3152..980ca86f9 100644 Binary files a/graphics/pokemon/galvantula/front.png and b/graphics/pokemon/galvantula/front.png differ diff --git a/graphics/pokemon/galvantula/normal.pal b/graphics/pokemon/galvantula/normal.pal index 10c8be6f9..e8975e877 100644 --- a/graphics/pokemon/galvantula/normal.pal +++ b/graphics/pokemon/galvantula/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -79 85 122 -49 50 81 -102 121 186 +152 208 160 +40 56 120 +24 40 64 +56 80 176 16 16 16 -57 57 65 -178 142 71 -244 200 97 -175 143 186 -96 74 52 -132 110 72 -135 101 127 -255 255 255 -181 181 239 +56 56 64 +200 168 0 +248 216 80 +152 128 152 +104 80 56 +152 128 24 +112 104 104 +248 248 248 +0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/garbodor/anim_front.png b/graphics/pokemon/garbodor/anim_front.png index c8cb7329c..b211c33cb 100644 Binary files a/graphics/pokemon/garbodor/anim_front.png and b/graphics/pokemon/garbodor/anim_front.png differ diff --git a/graphics/pokemon/garbodor/front.png b/graphics/pokemon/garbodor/front.png index 0d6dd06ca..959931034 100644 Binary files a/graphics/pokemon/garbodor/front.png and b/graphics/pokemon/garbodor/front.png differ diff --git a/graphics/pokemon/garbodor/normal.pal b/graphics/pokemon/garbodor/normal.pal index 6770ac733..a6e27fa2a 100644 --- a/graphics/pokemon/garbodor/normal.pal +++ b/graphics/pokemon/garbodor/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 112 88 -88 72 72 -16 16 16 -168 144 128 -184 64 120 -224 96 160 -40 128 120 -40 176 176 -24 56 40 -80 112 88 -56 80 64 -168 184 192 -96 104 128 -248 248 248 +120 104 88 +88 72 64 0 0 0 +160 136 112 +184 48 120 +232 80 160 +24 104 128 +0 168 208 +24 56 40 +40 104 72 +24 72 48 +184 184 184 +112 112 112 +248 248 248 +160 136 112 diff --git a/graphics/pokemon/garchomp/anim_front.png b/graphics/pokemon/garchomp/anim_front.png index 240708b95..de7f101ea 100644 Binary files a/graphics/pokemon/garchomp/anim_front.png and b/graphics/pokemon/garchomp/anim_front.png differ diff --git a/graphics/pokemon/garchomp/front.png b/graphics/pokemon/garchomp/front.png index 285c1b42e..e84e0270f 100644 Binary files a/graphics/pokemon/garchomp/front.png and b/graphics/pokemon/garchomp/front.png differ diff --git a/graphics/pokemon/garchomp/normal.pal b/graphics/pokemon/garchomp/normal.pal index 679803423..610ed93b5 100644 --- a/graphics/pokemon/garchomp/normal.pal +++ b/graphics/pokemon/garchomp/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 72 104 -184 144 32 -32 40 64 -128 136 168 -248 200 72 -88 104 152 +64 64 136 +192 144 16 +40 40 80 +120 120 200 +248 208 24 +88 96 168 16 16 16 248 248 248 -120 112 112 -200 184 184 -104 64 72 -224 88 64 -184 104 112 -88 24 8 -160 56 32 +112 120 128 +192 200 208 +104 56 88 +224 72 48 +184 112 120 +88 16 0 +184 56 64 diff --git a/graphics/pokemon/gardevoir/anim_front.png b/graphics/pokemon/gardevoir/anim_front.png index f3e85d042..2b539caee 100644 Binary files a/graphics/pokemon/gardevoir/anim_front.png and b/graphics/pokemon/gardevoir/anim_front.png differ diff --git a/graphics/pokemon/gardevoir/front.png b/graphics/pokemon/gardevoir/front.png index f03c7de87..2bfc83879 100644 Binary files a/graphics/pokemon/gardevoir/front.png and b/graphics/pokemon/gardevoir/front.png differ diff --git a/graphics/pokemon/gardevoir/normal.pal b/graphics/pokemon/gardevoir/normal.pal index 94ea8ef6c..e3030295a 100644 --- a/graphics/pokemon/gardevoir/normal.pal +++ b/graphics/pokemon/gardevoir/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -48 112 48 -96 168 88 -192 232 176 -128 200 128 +248 128 0 +48 120 64 +112 192 112 +184 240 144 +136 232 136 16 16 16 -120 112 160 -232 232 240 -248 144 152 +120 136 176 +240 240 248 +248 120 144 248 248 248 -192 184 216 -216 80 96 +200 200 232 +216 72 112 160 176 200 -120 48 56 +128 40 72 0 0 0 0 0 0 diff --git a/graphics/pokemon/gastly/anim_front.png b/graphics/pokemon/gastly/anim_front.png index 83037875d..3c5f16339 100644 Binary files a/graphics/pokemon/gastly/anim_front.png and b/graphics/pokemon/gastly/anim_front.png differ diff --git a/graphics/pokemon/gastly/front.png b/graphics/pokemon/gastly/front.png index 63bb5b572..b5131034e 100644 Binary files a/graphics/pokemon/gastly/front.png and b/graphics/pokemon/gastly/front.png differ diff --git a/graphics/pokemon/gastly/normal.pal b/graphics/pokemon/gastly/normal.pal index 19d4c8257..c4bfdcbd8 100644 --- a/graphics/pokemon/gastly/normal.pal +++ b/graphics/pokemon/gastly/normal.pal @@ -2,9 +2,9 @@ JASC-PAL 0100 16 152 208 160 -176 144 176 -136 104 136 -112 64 112 +176 144 184 +136 104 144 +104 72 120 16 8 8 16 16 16 56 40 40 diff --git a/graphics/pokemon/gastrodon/anim_front.png b/graphics/pokemon/gastrodon/anim_front.png index fa48c288c..c47a0e86b 100644 Binary files a/graphics/pokemon/gastrodon/anim_front.png and b/graphics/pokemon/gastrodon/anim_front.png differ diff --git a/graphics/pokemon/gastrodon/back.png b/graphics/pokemon/gastrodon/back.png index d16eab76f..a20c30c77 100644 Binary files a/graphics/pokemon/gastrodon/back.png and b/graphics/pokemon/gastrodon/back.png differ diff --git a/graphics/pokemon/gastrodon/east_sea/anim_front.png b/graphics/pokemon/gastrodon/east_sea/anim_front.png index a71fed66f..6e8ab451b 100644 Binary files a/graphics/pokemon/gastrodon/east_sea/anim_front.png and b/graphics/pokemon/gastrodon/east_sea/anim_front.png differ diff --git a/graphics/pokemon/gastrodon/east_sea/back.png b/graphics/pokemon/gastrodon/east_sea/back.png index 3cf071733..f200a3997 100644 Binary files a/graphics/pokemon/gastrodon/east_sea/back.png and b/graphics/pokemon/gastrodon/east_sea/back.png differ diff --git a/graphics/pokemon/gastrodon/east_sea/front.png b/graphics/pokemon/gastrodon/east_sea/front.png index f156301b6..ca68f56d3 100644 Binary files a/graphics/pokemon/gastrodon/east_sea/front.png and b/graphics/pokemon/gastrodon/east_sea/front.png differ diff --git a/graphics/pokemon/gastrodon/east_sea/normal.pal b/graphics/pokemon/gastrodon/east_sea/normal.pal index 1bf21b13c..2f2405e45 100644 --- a/graphics/pokemon/gastrodon/east_sea/normal.pal +++ b/graphics/pokemon/gastrodon/east_sea/normal.pal @@ -8,12 +8,12 @@ JASC-PAL 51 104 47 115 186 126 49 49 41 -160 140 59 -252 231 95 -84 79 53 +160 144 56 +248 224 112 +80 72 56 115 98 98 255 255 255 -50 145 158 -65 206 219 -35 94 102 -0 0 0 +104 120 168 +104 176 248 +88 80 120 +168 56 80 diff --git a/graphics/pokemon/gastrodon/east_sea/shiny.pal b/graphics/pokemon/gastrodon/east_sea/shiny.pal index 68e4a6d27..e5d9166a7 100644 --- a/graphics/pokemon/gastrodon/east_sea/shiny.pal +++ b/graphics/pokemon/gastrodon/east_sea/shiny.pal @@ -16,4 +16,4 @@ JASC-PAL 101 145 155 131 222 222 81 94 119 -0 0 0 +168 56 80 diff --git a/graphics/pokemon/gastrodon/front.png b/graphics/pokemon/gastrodon/front.png index 97f5c4d69..b28352aed 100644 Binary files a/graphics/pokemon/gastrodon/front.png and b/graphics/pokemon/gastrodon/front.png differ diff --git a/graphics/pokemon/gastrodon/normal.pal b/graphics/pokemon/gastrodon/normal.pal index 13b545944..c9428d8bd 100644 --- a/graphics/pokemon/gastrodon/normal.pal +++ b/graphics/pokemon/gastrodon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 48 32 +72 56 56 16 16 16 -152 112 64 -112 80 40 -184 152 104 +160 104 56 +104 72 56 +192 144 72 48 48 40 -152 136 64 -248 224 88 -80 72 48 +160 136 56 +248 216 112 +80 72 56 112 96 96 248 248 248 -184 96 128 -240 152 192 -96 48 64 -0 0 0 +168 96 144 +248 136 192 +104 56 80 +168 56 80 diff --git a/graphics/pokemon/gastrodon/shiny.pal b/graphics/pokemon/gastrodon/shiny.pal index 8e8be79ea..8b58c4c87 100644 --- a/graphics/pokemon/gastrodon/shiny.pal +++ b/graphics/pokemon/gastrodon/shiny.pal @@ -16,4 +16,4 @@ JASC-PAL 216 112 104 248 168 160 104 48 48 -0 0 0 +168 56 80 diff --git a/graphics/pokemon/genesect/anim_front.png b/graphics/pokemon/genesect/anim_front.png index ebded3024..b83f0d786 100644 Binary files a/graphics/pokemon/genesect/anim_front.png and b/graphics/pokemon/genesect/anim_front.png differ diff --git a/graphics/pokemon/genesect/burn_drive/normal.pal b/graphics/pokemon/genesect/burn_drive/normal.pal index bb265f06e..7c6721d62 100644 --- a/graphics/pokemon/genesect/burn_drive/normal.pal +++ b/graphics/pokemon/genesect/burn_drive/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 48 104 -120 72 128 -168 120 184 +80 40 72 +112 64 136 +152 88 192 16 16 16 -224 192 232 -102 21 18 -244 79 53 -168 50 42 -152 120 144 -112 56 48 -232 96 80 -136 80 56 +200 176 248 +72 0 0 +248 0 0 +176 0 0 +160 128 184 +112 48 40 +240 80 32 +176 64 32 248 248 248 112 112 112 0 0 0 diff --git a/graphics/pokemon/genesect/chill_drive/normal.pal b/graphics/pokemon/genesect/chill_drive/normal.pal index 9413f8cf5..555a29e77 100644 --- a/graphics/pokemon/genesect/chill_drive/normal.pal +++ b/graphics/pokemon/genesect/chill_drive/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 48 104 -120 72 128 -168 120 184 +80 40 72 +112 64 136 +152 88 192 16 16 16 -224 192 232 -85 87 96 -227 229 239 -150 154 165 -152 120 144 -112 56 48 -232 96 80 -136 80 56 +200 176 248 +72 72 72 +248 248 248 +176 176 176 +160 128 184 +112 48 40 +240 80 32 +176 64 32 248 248 248 112 112 112 0 0 0 diff --git a/graphics/pokemon/genesect/douse_drive/normal.pal b/graphics/pokemon/genesect/douse_drive/normal.pal index 4657de7fe..418458adb 100644 --- a/graphics/pokemon/genesect/douse_drive/normal.pal +++ b/graphics/pokemon/genesect/douse_drive/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 48 104 -120 72 128 -168 120 184 +80 40 72 +112 64 136 +152 88 192 16 16 16 -224 192 232 -18 88 102 -53 193 244 -42 143 168 -152 120 144 -112 56 48 -232 96 80 -136 80 56 +200 176 248 +0 64 72 +0 200 248 +0 128 176 +160 128 184 +112 48 40 +240 80 32 +176 64 32 248 248 248 112 112 112 0 0 0 diff --git a/graphics/pokemon/genesect/front.png b/graphics/pokemon/genesect/front.png index 40cc15d05..fff9ce885 100644 Binary files a/graphics/pokemon/genesect/front.png and b/graphics/pokemon/genesect/front.png differ diff --git a/graphics/pokemon/genesect/normal.pal b/graphics/pokemon/genesect/normal.pal index 98b6b9cf1..59230abc5 100644 --- a/graphics/pokemon/genesect/normal.pal +++ b/graphics/pokemon/genesect/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -72 48 107 -121 74 135 -169 122 191 +152 208 160 +80 40 72 +112 64 136 +152 88 192 16 16 16 -228 192 234 -104 61 18 -247 170 54 -170 111 42 -155 125 144 -114 57 51 -234 97 82 -140 83 63 -255 255 255 -115 115 115 +200 176 248 +104 72 8 +232 184 0 +192 128 0 +160 128 184 +112 48 40 +240 80 32 +176 64 32 +248 248 248 +112 112 112 0 0 0 diff --git a/graphics/pokemon/genesect/shock_drive/normal.pal b/graphics/pokemon/genesect/shock_drive/normal.pal index 7df38ccbd..e67c671f5 100644 --- a/graphics/pokemon/genesect/shock_drive/normal.pal +++ b/graphics/pokemon/genesect/shock_drive/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 48 104 -120 72 128 -168 120 184 +80 40 72 +112 64 136 +152 88 192 16 16 16 -224 192 232 -102 88 18 -244 235 53 -168 151 42 -152 120 144 -112 56 48 -232 96 80 -136 80 56 +200 176 248 +72 64 8 +248 248 0 +176 176 0 +160 128 184 +112 48 40 +240 80 32 +176 64 32 248 248 248 112 112 112 0 0 0 diff --git a/graphics/pokemon/gengar/anim_front.png b/graphics/pokemon/gengar/anim_front.png index 2d646a7bf..8cd8a8667 100644 Binary files a/graphics/pokemon/gengar/anim_front.png and b/graphics/pokemon/gengar/anim_front.png differ diff --git a/graphics/pokemon/gengar/front.png b/graphics/pokemon/gengar/front.png index bf06bd8fa..d9a054a1e 100644 Binary files a/graphics/pokemon/gengar/front.png and b/graphics/pokemon/gengar/front.png differ diff --git a/graphics/pokemon/gengar/normal.pal b/graphics/pokemon/gengar/normal.pal index 851c8f48a..efa15a3b0 100644 --- a/graphics/pokemon/gengar/normal.pal +++ b/graphics/pokemon/gengar/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 72 120 -144 136 192 +88 72 152 +176 136 184 16 16 16 -112 104 168 -40 40 64 -80 80 160 -232 104 96 -248 144 144 +144 112 176 +72 40 72 +120 96 160 +248 24 24 +248 96 96 184 168 184 248 240 248 104 96 120 216 208 216 -168 72 56 -40 40 64 +168 16 16 +72 40 72 0 0 0 diff --git a/graphics/pokemon/geodude/anim_front.png b/graphics/pokemon/geodude/anim_front.png index 8c3970a41..2346e37bb 100644 Binary files a/graphics/pokemon/geodude/anim_front.png and b/graphics/pokemon/geodude/anim_front.png differ diff --git a/graphics/pokemon/geodude/front.png b/graphics/pokemon/geodude/front.png index 44aa52516..c01d52995 100644 Binary files a/graphics/pokemon/geodude/front.png and b/graphics/pokemon/geodude/front.png differ diff --git a/graphics/pokemon/geodude/normal.pal b/graphics/pokemon/geodude/normal.pal index 281606f80..9dc93a2b2 100644 --- a/graphics/pokemon/geodude/normal.pal +++ b/graphics/pokemon/geodude/normal.pal @@ -2,8 +2,8 @@ JASC-PAL 0100 16 152 208 160 -112 96 112 -56 40 56 +104 104 80 +64 56 48 200 200 176 184 176 160 152 144 120 @@ -11,8 +11,8 @@ JASC-PAL 200 216 200 248 248 248 56 40 56 -132 72 90 -186 132 156 +136 16 16 +232 128 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/gible/anim_front.png b/graphics/pokemon/gible/anim_front.png index 3c268714e..459d543f2 100644 Binary files a/graphics/pokemon/gible/anim_front.png and b/graphics/pokemon/gible/anim_front.png differ diff --git a/graphics/pokemon/gible/front.png b/graphics/pokemon/gible/front.png index eea25b497..d3d5b4873 100644 Binary files a/graphics/pokemon/gible/front.png and b/graphics/pokemon/gible/front.png differ diff --git a/graphics/pokemon/gible/normal.pal b/graphics/pokemon/gible/normal.pal index f5668f01d..602482b45 100644 --- a/graphics/pokemon/gible/normal.pal +++ b/graphics/pokemon/gible/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 40 64 80 -104 152 168 -168 192 192 -80 104 120 +80 144 168 +136 192 208 +64 104 128 16 16 16 -96 192 216 +64 208 216 248 248 248 208 200 192 -80 152 160 -96 56 64 +56 168 192 +120 32 24 112 24 16 -184 120 144 -224 88 64 -160 56 32 +200 104 120 +216 88 40 +168 56 16 96 88 88 diff --git a/graphics/pokemon/gigalith/anim_front.png b/graphics/pokemon/gigalith/anim_front.png index f49973964..67f9a51f2 100644 Binary files a/graphics/pokemon/gigalith/anim_front.png and b/graphics/pokemon/gigalith/anim_front.png differ diff --git a/graphics/pokemon/gigalith/front.png b/graphics/pokemon/gigalith/front.png index 51d57f766..9cf2b0446 100644 Binary files a/graphics/pokemon/gigalith/front.png and b/graphics/pokemon/gigalith/front.png differ diff --git a/graphics/pokemon/gigalith/normal.pal b/graphics/pokemon/gigalith/normal.pal index 939ad60be..96c182254 100644 --- a/graphics/pokemon/gigalith/normal.pal +++ b/graphics/pokemon/gigalith/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 32 32 -240 144 112 -16 16 16 -152 56 48 -232 88 80 -32 32 48 -48 48 88 -72 80 128 -160 112 48 -248 192 72 -32 32 40 -144 128 128 -88 80 80 +104 32 32 +232 112 112 +8 8 8 +152 48 48 +224 48 48 +32 40 64 +40 56 104 +64 80 136 +168 128 24 +216 184 88 +24 24 32 +128 128 128 +72 72 72 0 0 0 0 0 0 diff --git a/graphics/pokemon/girafarig/anim_front.png b/graphics/pokemon/girafarig/anim_front.png index 441dbd4db..d39510467 100644 Binary files a/graphics/pokemon/girafarig/anim_front.png and b/graphics/pokemon/girafarig/anim_front.png differ diff --git a/graphics/pokemon/girafarig/front.png b/graphics/pokemon/girafarig/front.png index 76d56b97d..2a43c76e5 100644 Binary files a/graphics/pokemon/girafarig/front.png and b/graphics/pokemon/girafarig/front.png differ diff --git a/graphics/pokemon/girafarig/normal.pal b/graphics/pokemon/girafarig/normal.pal index cead7b5f1..98cf2c5bc 100644 --- a/graphics/pokemon/girafarig/normal.pal +++ b/graphics/pokemon/girafarig/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 72 64 +64 72 112 248 248 248 -192 200 168 -160 152 112 -96 64 24 -144 104 40 -208 136 32 -248 192 80 -240 144 152 -184 88 104 -48 24 24 +168 176 208 +104 136 176 +72 56 56 +152 120 64 +208 144 56 +248 200 96 +200 104 144 +152 56 88 +72 56 56 16 16 16 -136 88 88 -80 48 40 -104 72 72 +144 120 104 +96 80 80 +136 112 88 diff --git a/graphics/pokemon/giratina/anim_front.png b/graphics/pokemon/giratina/anim_front.png index 7bf2e97f8..af1332ed5 100644 Binary files a/graphics/pokemon/giratina/anim_front.png and b/graphics/pokemon/giratina/anim_front.png differ diff --git a/graphics/pokemon/giratina/front.png b/graphics/pokemon/giratina/front.png index 33ed6ece9..d0004746a 100644 Binary files a/graphics/pokemon/giratina/front.png and b/graphics/pokemon/giratina/front.png differ diff --git a/graphics/pokemon/giratina/normal.pal b/graphics/pokemon/giratina/normal.pal index be4ff55cd..6aa922c8e 100644 --- a/graphics/pokemon/giratina/normal.pal +++ b/graphics/pokemon/giratina/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 24 8 -40 48 56 -80 72 24 -184 80 80 -240 224 176 -136 48 48 -168 136 56 -96 88 104 -224 192 88 -144 136 144 -192 192 184 +80 16 0 +56 56 72 +112 80 0 +248 64 80 +248 248 208 +160 32 56 +200 152 0 +104 104 120 +248 208 0 +144 144 160 +192 200 208 16 16 16 -120 96 48 -64 64 80 +168 120 0 +72 72 88 0 0 0 diff --git a/graphics/pokemon/giratina/origin/anim_front.png b/graphics/pokemon/giratina/origin/anim_front.png index 788853e9d..8dd5d89a0 100644 Binary files a/graphics/pokemon/giratina/origin/anim_front.png and b/graphics/pokemon/giratina/origin/anim_front.png differ diff --git a/graphics/pokemon/giratina/origin/front.png b/graphics/pokemon/giratina/origin/front.png index a86079135..14f631d09 100644 Binary files a/graphics/pokemon/giratina/origin/front.png and b/graphics/pokemon/giratina/origin/front.png differ diff --git a/graphics/pokemon/giratina/origin/normal.pal b/graphics/pokemon/giratina/origin/normal.pal index daf42489b..9285df191 100644 --- a/graphics/pokemon/giratina/origin/normal.pal +++ b/graphics/pokemon/giratina/origin/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 24 32 -48 48 56 -184 80 80 -136 48 48 -72 24 8 -80 72 24 -80 72 80 -224 192 88 -120 96 48 -168 144 72 -184 192 200 -136 144 136 -240 224 176 -8 8 8 -104 104 112 +40 40 40 +56 56 72 +248 64 80 +160 32 56 +88 48 16 +112 80 0 +72 72 88 +248 208 0 +168 120 0 +200 152 0 +192 200 208 +144 144 160 +248 232 192 +0 0 0 +104 104 120 diff --git a/graphics/pokemon/glaceon/anim_front.png b/graphics/pokemon/glaceon/anim_front.png index 06e9ac43d..a175e8a43 100644 Binary files a/graphics/pokemon/glaceon/anim_front.png and b/graphics/pokemon/glaceon/anim_front.png differ diff --git a/graphics/pokemon/glaceon/front.png b/graphics/pokemon/glaceon/front.png index 36dd1d595..463bd723d 100644 Binary files a/graphics/pokemon/glaceon/front.png and b/graphics/pokemon/glaceon/front.png differ diff --git a/graphics/pokemon/glaceon/normal.pal b/graphics/pokemon/glaceon/normal.pal index d3e2fcf42..bd4ad34a5 100644 --- a/graphics/pokemon/glaceon/normal.pal +++ b/graphics/pokemon/glaceon/normal.pal @@ -3,16 +3,16 @@ JASC-PAL 16 152 208 160 80 112 120 -120 160 152 -160 224 224 +120 152 176 +144 224 232 16 16 16 -16 56 64 -56 136 152 -88 184 200 -32 104 112 +56 56 80 +80 96 152 +80 152 216 +64 88 104 232 248 248 -112 67 89 -163 107 137 +168 56 80 +224 104 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/glalie/anim_front.png b/graphics/pokemon/glalie/anim_front.png index 9d7727bd0..4b05ec51d 100644 Binary files a/graphics/pokemon/glalie/anim_front.png and b/graphics/pokemon/glalie/anim_front.png differ diff --git a/graphics/pokemon/glalie/front.png b/graphics/pokemon/glalie/front.png index 9371d35d2..cb6ecd492 100644 Binary files a/graphics/pokemon/glalie/front.png and b/graphics/pokemon/glalie/front.png differ diff --git a/graphics/pokemon/glalie/normal.pal b/graphics/pokemon/glalie/normal.pal index 81be19c29..539d396c3 100644 --- a/graphics/pokemon/glalie/normal.pal +++ b/graphics/pokemon/glalie/normal.pal @@ -11,9 +11,9 @@ JASC-PAL 200 208 232 168 176 224 80 88 120 -48 136 168 -120 184 208 -176 208 224 +40 128 184 +96 184 232 +160 216 248 248 248 248 0 0 0 0 0 0 diff --git a/graphics/pokemon/glameow/anim_front.png b/graphics/pokemon/glameow/anim_front.png index e2a988684..d03df5738 100644 Binary files a/graphics/pokemon/glameow/anim_front.png and b/graphics/pokemon/glameow/anim_front.png differ diff --git a/graphics/pokemon/glameow/front.png b/graphics/pokemon/glameow/front.png index 38d6b0688..bd72d82c1 100644 Binary files a/graphics/pokemon/glameow/front.png and b/graphics/pokemon/glameow/front.png differ diff --git a/graphics/pokemon/glameow/normal.pal b/graphics/pokemon/glameow/normal.pal index 3b80e4edd..82cb3f86e 100644 --- a/graphics/pokemon/glameow/normal.pal +++ b/graphics/pokemon/glameow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 64 80 +64 64 80 16 16 16 248 248 248 160 160 192 -184 200 216 +200 200 216 88 112 136 -136 152 176 +136 152 184 80 88 96 -168 88 112 -240 120 152 -168 184 192 +208 72 128 +248 120 152 +168 176 200 104 80 112 -56 120 192 -240 192 88 +40 112 208 +248 216 112 192 152 72 diff --git a/graphics/pokemon/gligar/anim_front.png b/graphics/pokemon/gligar/anim_front.png index fea961a08..d3daf460f 100644 Binary files a/graphics/pokemon/gligar/anim_front.png and b/graphics/pokemon/gligar/anim_front.png differ diff --git a/graphics/pokemon/gligar/front.png b/graphics/pokemon/gligar/front.png index c6a1e3f9f..5164cb452 100644 Binary files a/graphics/pokemon/gligar/front.png and b/graphics/pokemon/gligar/front.png differ diff --git a/graphics/pokemon/gligar/normal.pal b/graphics/pokemon/gligar/normal.pal index 7ddd7733d..77bb9f9ef 100644 --- a/graphics/pokemon/gligar/normal.pal +++ b/graphics/pokemon/gligar/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 56 96 -240 168 208 +82 41 98 +222 148 197 16 16 16 -224 128 184 -184 96 152 -72 88 112 -248 248 248 -168 184 192 -56 96 160 -32 56 96 -64 136 200 -184 96 104 -120 64 72 -248 152 160 +205 98 164 +164 74 131 +74 90 115 +255 255 255 +172 189 197 +32 115 164 +32 65 115 +49 148 189 +139 41 49 +139 41 49 +197 115 139 0 0 0 diff --git a/graphics/pokemon/gliscor/anim_front.png b/graphics/pokemon/gliscor/anim_front.png index 136265168..8c12ed4ef 100644 Binary files a/graphics/pokemon/gliscor/anim_front.png and b/graphics/pokemon/gliscor/anim_front.png differ diff --git a/graphics/pokemon/gliscor/front.png b/graphics/pokemon/gliscor/front.png index fb9f0d640..24be70580 100644 Binary files a/graphics/pokemon/gliscor/front.png and b/graphics/pokemon/gliscor/front.png differ diff --git a/graphics/pokemon/gliscor/normal.pal b/graphics/pokemon/gliscor/normal.pal index 21465ec01..13b9917f1 100644 --- a/graphics/pokemon/gliscor/normal.pal +++ b/graphics/pokemon/gliscor/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 104 136 -144 152 200 -48 56 80 -176 184 208 -120 128 168 +88 96 160 +152 136 232 +40 48 96 +176 160 248 +112 120 192 248 248 248 16 16 16 -80 32 24 -160 48 48 -232 80 80 -152 128 24 -240 208 56 -48 56 64 -176 160 248 -152 80 112 +112 8 0 +168 32 48 +216 56 104 +168 144 0 +248 216 0 +64 64 80 +192 80 144 +104 104 120 diff --git a/graphics/pokemon/gloom/anim_front.png b/graphics/pokemon/gloom/anim_front.png index 9961368e8..3ade71dc7 100644 Binary files a/graphics/pokemon/gloom/anim_front.png and b/graphics/pokemon/gloom/anim_front.png differ diff --git a/graphics/pokemon/gloom/front.png b/graphics/pokemon/gloom/front.png index 9bfaeb2da..d4727f034 100644 Binary files a/graphics/pokemon/gloom/front.png and b/graphics/pokemon/gloom/front.png differ diff --git a/graphics/pokemon/gloom/normal.pal b/graphics/pokemon/gloom/normal.pal index d9b4b2f12..aced223e7 100644 --- a/graphics/pokemon/gloom/normal.pal +++ b/graphics/pokemon/gloom/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 24 16 -136 64 48 -224 184 176 -168 88 72 +88 40 0 +128 56 24 +240 128 96 +168 80 56 16 16 16 -224 144 112 -216 104 64 +240 128 96 +224 80 32 240 232 184 -176 72 40 -136 48 16 -48 96 128 -24 48 72 -104 144 168 -136 120 192 -176 168 184 +168 56 32 +136 32 16 +56 96 136 +16 48 72 +112 144 168 +176 88 192 +152 160 200 diff --git a/graphics/pokemon/golbat/anim_front.png b/graphics/pokemon/golbat/anim_front.png index 06f1401f5..eb6f8ad38 100644 Binary files a/graphics/pokemon/golbat/anim_front.png and b/graphics/pokemon/golbat/anim_front.png differ diff --git a/graphics/pokemon/golbat/front.png b/graphics/pokemon/golbat/front.png index 8a5445300..2898946b5 100644 Binary files a/graphics/pokemon/golbat/front.png and b/graphics/pokemon/golbat/front.png differ diff --git a/graphics/pokemon/golbat/normal.pal b/graphics/pokemon/golbat/normal.pal index b230ccfda..93d12fcf4 100644 --- a/graphics/pokemon/golbat/normal.pal +++ b/graphics/pokemon/golbat/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 112 144 -16 48 72 -16 16 16 -112 184 216 -56 152 192 -160 80 160 -112 64 112 -88 32 72 -184 120 192 -80 80 80 +40 120 152 +24 56 80 +0 0 0 +136 200 224 +72 160 200 +168 80 168 +144 56 120 +96 16 80 +200 104 176 +96 96 96 208 208 208 248 248 248 -96 96 96 +0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/goldeen/anim_front.png b/graphics/pokemon/goldeen/anim_front.png index 122831905..327ab59c3 100644 Binary files a/graphics/pokemon/goldeen/anim_front.png and b/graphics/pokemon/goldeen/anim_front.png differ diff --git a/graphics/pokemon/goldeen/front.png b/graphics/pokemon/goldeen/front.png index 09bac5324..4f4b6db93 100644 Binary files a/graphics/pokemon/goldeen/front.png and b/graphics/pokemon/goldeen/front.png differ diff --git a/graphics/pokemon/goldeen/normal.pal b/graphics/pokemon/goldeen/normal.pal index 694684b85..ed88a1b59 100644 --- a/graphics/pokemon/goldeen/normal.pal +++ b/graphics/pokemon/goldeen/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 80 96 +80 80 88 248 248 248 -152 136 168 -240 232 248 -208 200 232 -248 184 176 +136 136 144 +232 232 232 +208 208 216 +248 192 120 16 16 16 -240 136 104 -208 184 160 -208 72 48 -136 56 40 -32 120 120 -120 192 200 -160 88 104 -232 136 160 +232 120 64 +200 176 120 +208 64 16 +168 16 0 +0 104 96 +64 168 160 +168 80 112 +240 128 136 diff --git a/graphics/pokemon/golduck/anim_front.png b/graphics/pokemon/golduck/anim_front.png index 013adf608..f3c5674a7 100644 Binary files a/graphics/pokemon/golduck/anim_front.png and b/graphics/pokemon/golduck/anim_front.png differ diff --git a/graphics/pokemon/golduck/front.png b/graphics/pokemon/golduck/front.png index 20ba1a104..fe9836e68 100644 Binary files a/graphics/pokemon/golduck/front.png and b/graphics/pokemon/golduck/front.png differ diff --git a/graphics/pokemon/golduck/normal.pal b/graphics/pokemon/golduck/normal.pal index 46418a628..f3b96e83f 100644 --- a/graphics/pokemon/golduck/normal.pal +++ b/graphics/pokemon/golduck/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 80 112 -136 184 224 +64 72 112 +104 176 224 16 16 16 -72 136 176 -208 80 48 +72 120 168 +216 24 24 248 248 248 -136 40 24 -248 144 112 +136 0 0 +240 104 104 208 208 208 136 112 56 -248 232 208 -184 168 128 -232 216 152 -120 64 88 +248 240 176 +192 160 72 +240 216 128 +168 48 16 160 216 248 diff --git a/graphics/pokemon/golem/anim_front.png b/graphics/pokemon/golem/anim_front.png index c5dc51991..a551e71dc 100644 Binary files a/graphics/pokemon/golem/anim_front.png and b/graphics/pokemon/golem/anim_front.png differ diff --git a/graphics/pokemon/golem/front.png b/graphics/pokemon/golem/front.png index 46902682a..c03692638 100644 Binary files a/graphics/pokemon/golem/front.png and b/graphics/pokemon/golem/front.png differ diff --git a/graphics/pokemon/golem/normal.pal b/graphics/pokemon/golem/normal.pal index c86f4f465..a1af492ea 100644 --- a/graphics/pokemon/golem/normal.pal +++ b/graphics/pokemon/golem/normal.pal @@ -2,9 +2,9 @@ JASC-PAL 0100 16 152 208 160 -72 64 56 +64 64 56 128 136 128 -112 104 96 +104 104 80 160 168 160 16 16 16 112 112 112 @@ -14,6 +14,6 @@ JASC-PAL 192 168 168 152 128 128 216 192 184 -136 64 56 -208 88 80 -184 112 144 +176 0 0 +248 80 80 +168 32 0 diff --git a/graphics/pokemon/golett/anim_front.png b/graphics/pokemon/golett/anim_front.png index c76316ec8..3f096e4a4 100644 Binary files a/graphics/pokemon/golett/anim_front.png and b/graphics/pokemon/golett/anim_front.png differ diff --git a/graphics/pokemon/golett/front.png b/graphics/pokemon/golett/front.png index 30bf6d41c..f58715bb9 100644 Binary files a/graphics/pokemon/golett/front.png and b/graphics/pokemon/golett/front.png differ diff --git a/graphics/pokemon/golett/normal.pal b/graphics/pokemon/golett/normal.pal index 494d34de4..3e3aa05db 100644 --- a/graphics/pokemon/golett/normal.pal +++ b/graphics/pokemon/golett/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -33 89 82 -16 65 81 -106 186 186 -65 109 103 -87 150 147 -45 128 153 +152 208 160 +16 104 96 +0 72 80 +128 200 200 +40 136 136 +88 168 160 +40 128 136 24 24 32 -47 98 109 -255 220 150 -89 61 39 -173 131 90 -130 93 63 -221 194 110 -183 156 82 +16 104 120 +248 232 160 +104 64 0 +192 152 80 +152 112 40 +216 200 144 +216 216 120 0 0 0 diff --git a/graphics/pokemon/golurk/anim_front.png b/graphics/pokemon/golurk/anim_front.png index 1fb78e0ae..fe862d33f 100644 Binary files a/graphics/pokemon/golurk/anim_front.png and b/graphics/pokemon/golurk/anim_front.png differ diff --git a/graphics/pokemon/golurk/front.png b/graphics/pokemon/golurk/front.png index 8edfc59ba..225a6a142 100644 Binary files a/graphics/pokemon/golurk/front.png and b/graphics/pokemon/golurk/front.png differ diff --git a/graphics/pokemon/golurk/normal.pal b/graphics/pokemon/golurk/normal.pal index 94e239cf5..d54b5c862 100644 --- a/graphics/pokemon/golurk/normal.pal +++ b/graphics/pokemon/golurk/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -32 88 104 -32 56 72 -40 120 144 +153 210 164 +24 88 120 +16 80 96 +40 120 136 16 16 16 -56 96 104 -120 176 184 -80 136 128 -248 216 152 +40 120 136 +128 192 200 +88 160 160 +248 232 160 184 168 112 -224 192 120 -96 64 40 -192 152 104 -152 104 64 +216 200 144 +104 64 0 +192 152 80 +152 112 40 0 0 0 0 0 0 diff --git a/graphics/pokemon/gorebyss/anim_front.png b/graphics/pokemon/gorebyss/anim_front.png index a99317bde..b5a4ffcfe 100644 Binary files a/graphics/pokemon/gorebyss/anim_front.png and b/graphics/pokemon/gorebyss/anim_front.png differ diff --git a/graphics/pokemon/gorebyss/front.png b/graphics/pokemon/gorebyss/front.png index 94abd8742..09a8a3587 100644 Binary files a/graphics/pokemon/gorebyss/front.png and b/graphics/pokemon/gorebyss/front.png differ diff --git a/graphics/pokemon/gorebyss/normal.pal b/graphics/pokemon/gorebyss/normal.pal index 50066960a..fd79ddb97 100644 --- a/graphics/pokemon/gorebyss/normal.pal +++ b/graphics/pokemon/gorebyss/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 80 112 +144 72 88 248 248 248 224 216 208 -248 184 208 -240 152 184 -16 16 16 -216 112 160 -104 64 112 -216 176 224 -176 128 184 -144 96 152 -248 216 224 +240 168 200 +240 136 192 +0 0 0 +208 96 160 +96 56 104 +216 152 248 +176 112 224 +152 88 184 +248 200 216 200 184 168 -120 104 96 -176 128 184 +200 112 248 +168 104 208 diff --git a/graphics/pokemon/gothita/anim_front.png b/graphics/pokemon/gothita/anim_front.png index 46d451da6..32e68ddf4 100644 Binary files a/graphics/pokemon/gothita/anim_front.png and b/graphics/pokemon/gothita/anim_front.png differ diff --git a/graphics/pokemon/gothita/front.png b/graphics/pokemon/gothita/front.png index e545a3989..e7052bf8d 100644 Binary files a/graphics/pokemon/gothita/front.png and b/graphics/pokemon/gothita/front.png differ diff --git a/graphics/pokemon/gothita/normal.pal b/graphics/pokemon/gothita/normal.pal index 9406c182e..b795c61f8 100644 --- a/graphics/pokemon/gothita/normal.pal +++ b/graphics/pokemon/gothita/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 40 40 -80 72 64 +48 48 48 +64 64 64 24 24 24 -112 104 96 -184 176 168 +112 112 112 +176 176 176 248 248 248 -200 144 208 -144 96 136 -72 48 72 -24 80 112 -80 176 216 -120 48 48 -216 88 88 +200 136 184 +144 104 128 +88 48 72 +8 72 136 +56 160 248 +120 72 64 +248 104 72 0 0 0 0 0 0 diff --git a/graphics/pokemon/gothitelle/anim_front.png b/graphics/pokemon/gothitelle/anim_front.png index 4974cf0c3..e4ae46937 100644 Binary files a/graphics/pokemon/gothitelle/anim_front.png and b/graphics/pokemon/gothitelle/anim_front.png differ diff --git a/graphics/pokemon/gothitelle/front.png b/graphics/pokemon/gothitelle/front.png index 728da9edf..7178f82fb 100644 Binary files a/graphics/pokemon/gothitelle/front.png and b/graphics/pokemon/gothitelle/front.png differ diff --git a/graphics/pokemon/gothitelle/normal.pal b/graphics/pokemon/gothitelle/normal.pal index acce41e39..ed07a68ce 100644 --- a/graphics/pokemon/gothitelle/normal.pal +++ b/graphics/pokemon/gothitelle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 24 24 -64 56 64 +48 48 48 +80 80 80 16 16 16 -120 104 96 -40 32 40 -168 160 152 +120 120 120 +56 56 56 +176 176 176 248 248 248 -184 120 168 -144 88 128 -208 160 200 -0 112 152 -8 184 240 -152 48 48 -232 88 88 +184 128 160 +144 88 120 +224 168 216 +8 112 200 +56 160 248 +152 80 64 +248 104 72 0 0 0 diff --git a/graphics/pokemon/gothorita/anim_front.png b/graphics/pokemon/gothorita/anim_front.png index 0cd24f1bd..c58ba1a19 100644 Binary files a/graphics/pokemon/gothorita/anim_front.png and b/graphics/pokemon/gothorita/anim_front.png differ diff --git a/graphics/pokemon/gothorita/front.png b/graphics/pokemon/gothorita/front.png index b6fa0cb50..7f6f07418 100644 Binary files a/graphics/pokemon/gothorita/front.png and b/graphics/pokemon/gothorita/front.png differ diff --git a/graphics/pokemon/gothorita/normal.pal b/graphics/pokemon/gothorita/normal.pal index db3a7cbe8..975e044cd 100644 --- a/graphics/pokemon/gothorita/normal.pal +++ b/graphics/pokemon/gothorita/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 24 24 24 -112 104 104 -184 168 168 +112 112 112 +176 176 176 248 248 248 -40 32 32 -48 48 56 -152 104 136 -192 144 208 -8 112 160 -8 192 240 -120 48 48 -184 72 72 +40 40 40 +64 64 64 +144 104 128 +200 136 184 +8 72 136 +56 160 248 +120 72 64 +248 104 72 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/granbull/anim_front.png b/graphics/pokemon/granbull/anim_front.png index 8b67749d9..492e0031a 100644 Binary files a/graphics/pokemon/granbull/anim_front.png and b/graphics/pokemon/granbull/anim_front.png differ diff --git a/graphics/pokemon/granbull/front.png b/graphics/pokemon/granbull/front.png index 3c3a0d72e..9ad102c74 100644 Binary files a/graphics/pokemon/granbull/front.png and b/graphics/pokemon/granbull/front.png differ diff --git a/graphics/pokemon/granbull/normal.pal b/graphics/pokemon/granbull/normal.pal index 194de62fd..e8999b66a 100644 --- a/graphics/pokemon/granbull/normal.pal +++ b/graphics/pokemon/granbull/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 56 72 -240 176 208 -144 96 120 -184 128 160 +96 56 88 +208 168 208 +136 88 128 +168 128 168 16 16 16 208 208 216 248 248 248 -120 112 112 -56 56 56 -128 72 80 -224 112 112 -216 152 200 +120 128 128 +64 72 80 +168 16 0 +248 88 64 +192 136 200 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/graveler/anim_front.png b/graphics/pokemon/graveler/anim_front.png index 52bd60e1b..06680ed00 100644 Binary files a/graphics/pokemon/graveler/anim_front.png and b/graphics/pokemon/graveler/anim_front.png differ diff --git a/graphics/pokemon/graveler/front.png b/graphics/pokemon/graveler/front.png index 61807e94f..359e642c4 100644 Binary files a/graphics/pokemon/graveler/front.png and b/graphics/pokemon/graveler/front.png differ diff --git a/graphics/pokemon/graveler/normal.pal b/graphics/pokemon/graveler/normal.pal index a78a6b5b1..1c31789ba 100644 --- a/graphics/pokemon/graveler/normal.pal +++ b/graphics/pokemon/graveler/normal.pal @@ -2,14 +2,14 @@ JASC-PAL 0100 16 152 208 160 -48 56 56 +72 63 48 216 208 184 176 176 152 136 136 112 -96 96 104 -16 16 16 +104 104 80 +15 15 15 248 248 248 -184 104 128 +224 104 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/grimer/anim_front.png b/graphics/pokemon/grimer/anim_front.png index 646e1f80a..33cf98a68 100644 Binary files a/graphics/pokemon/grimer/anim_front.png and b/graphics/pokemon/grimer/anim_front.png differ diff --git a/graphics/pokemon/grimer/front.png b/graphics/pokemon/grimer/front.png index 350c05fbe..d4e6f6b7a 100644 Binary files a/graphics/pokemon/grimer/front.png and b/graphics/pokemon/grimer/front.png differ diff --git a/graphics/pokemon/grimer/normal.pal b/graphics/pokemon/grimer/normal.pal index 9b8dd0a98..9e51961b9 100644 --- a/graphics/pokemon/grimer/normal.pal +++ b/graphics/pokemon/grimer/normal.pal @@ -4,11 +4,11 @@ JASC-PAL 152 208 160 136 112 152 200 168 224 -80 56 96 +96 56 120 232 208 240 168 128 192 16 16 16 -104 80 120 +120 72 128 248 248 248 120 128 160 56 56 56 diff --git a/graphics/pokemon/grotle/anim_front.png b/graphics/pokemon/grotle/anim_front.png index f66f753c3..6a740b732 100644 Binary files a/graphics/pokemon/grotle/anim_front.png and b/graphics/pokemon/grotle/anim_front.png differ diff --git a/graphics/pokemon/grotle/front.png b/graphics/pokemon/grotle/front.png index cabbca1bb..f52ebe6d6 100644 Binary files a/graphics/pokemon/grotle/front.png and b/graphics/pokemon/grotle/front.png differ diff --git a/graphics/pokemon/grotle/normal.pal b/graphics/pokemon/grotle/normal.pal index 454c89615..2b6352a0e 100644 --- a/graphics/pokemon/grotle/normal.pal +++ b/graphics/pokemon/grotle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 128 64 +56 136 64 56 88 40 -88 168 112 -16 16 16 -88 72 48 -168 120 72 -128 96 56 -208 176 56 -224 192 104 -96 128 72 -152 184 120 -120 168 96 +96 176 104 +16 16 24 +96 72 56 +176 128 80 +136 104 64 +216 176 64 +232 208 64 +104 136 72 +168 192 96 +144 168 88 248 248 248 208 208 208 144 144 144 diff --git a/graphics/pokemon/groudon/anim_front.png b/graphics/pokemon/groudon/anim_front.png index eb917bd75..c38e0b206 100644 Binary files a/graphics/pokemon/groudon/anim_front.png and b/graphics/pokemon/groudon/anim_front.png differ diff --git a/graphics/pokemon/groudon/front.png b/graphics/pokemon/groudon/front.png index 983835520..56e10fbcc 100644 Binary files a/graphics/pokemon/groudon/front.png and b/graphics/pokemon/groudon/front.png differ diff --git a/graphics/pokemon/groudon/normal.pal b/graphics/pokemon/groudon/normal.pal index 4a3338b1f..5291f38d9 100644 --- a/graphics/pokemon/groudon/normal.pal +++ b/graphics/pokemon/groudon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -104 16 24 -248 152 136 -208 64 56 -248 104 80 -144 32 24 -176 48 32 -248 216 88 -112 88 80 +0 0 0 +120 32 40 +248 184 184 +248 32 40 +248 112 104 +152 40 40 +184 48 48 +248 200 48 +112 96 96 248 248 248 -136 104 48 -184 176 208 -56 48 40 -144 128 120 -168 152 144 +152 104 48 +184 184 208 +56 56 56 +144 128 136 +168 152 160 diff --git a/graphics/pokemon/grovyle/anim_front.png b/graphics/pokemon/grovyle/anim_front.png index ebb3dc0f3..c488a0aff 100644 Binary files a/graphics/pokemon/grovyle/anim_front.png and b/graphics/pokemon/grovyle/anim_front.png differ diff --git a/graphics/pokemon/grovyle/front.png b/graphics/pokemon/grovyle/front.png index eecc7c939..810306218 100644 Binary files a/graphics/pokemon/grovyle/front.png and b/graphics/pokemon/grovyle/front.png differ diff --git a/graphics/pokemon/grovyle/normal.pal b/graphics/pokemon/grovyle/normal.pal index b39fcc3a2..754b62747 100644 --- a/graphics/pokemon/grovyle/normal.pal +++ b/graphics/pokemon/grovyle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 200 128 216 -40 64 40 -80 152 88 -64 112 64 +48 80 48 +80 152 72 +64 112 72 16 16 16 56 96 48 -88 168 96 -128 208 136 -64 136 64 -192 144 40 -248 224 136 -128 32 32 -208 80 80 +96 168 72 +136 208 120 +80 144 56 +200 144 8 +240 232 104 +120 48 56 +200 56 64 88 112 56 -240 120 120 +240 80 96 0 0 0 diff --git a/graphics/pokemon/growlithe/anim_front.png b/graphics/pokemon/growlithe/anim_front.png index d77fc1b15..eddcd6853 100644 Binary files a/graphics/pokemon/growlithe/anim_front.png and b/graphics/pokemon/growlithe/anim_front.png differ diff --git a/graphics/pokemon/growlithe/front.png b/graphics/pokemon/growlithe/front.png index 84d6e929f..743dfb2f9 100644 Binary files a/graphics/pokemon/growlithe/front.png and b/graphics/pokemon/growlithe/front.png differ diff --git a/graphics/pokemon/growlithe/normal.pal b/graphics/pokemon/growlithe/normal.pal index a19d76585..cd520d3be 100644 --- a/graphics/pokemon/growlithe/normal.pal +++ b/graphics/pokemon/growlithe/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 80 56 -240 208 168 +112 96 32 +248 240 160 184 152 120 16 16 16 -208 176 136 -184 112 64 -112 64 32 -232 160 112 -224 136 72 +216 200 128 +192 76 8 +120 64 0 +248 152 48 +248 120 24 136 112 88 48 56 64 88 88 120 248 248 240 216 216 208 -183 123 135 +168 48 16 diff --git a/graphics/pokemon/grumpig/anim_front.png b/graphics/pokemon/grumpig/anim_front.png index 8aaa19b7c..4bc3a84cf 100644 Binary files a/graphics/pokemon/grumpig/anim_front.png and b/graphics/pokemon/grumpig/anim_front.png differ diff --git a/graphics/pokemon/grumpig/front.png b/graphics/pokemon/grumpig/front.png index 9df84fba8..c5b65ca3b 100644 Binary files a/graphics/pokemon/grumpig/front.png and b/graphics/pokemon/grumpig/front.png differ diff --git a/graphics/pokemon/grumpig/normal.pal b/graphics/pokemon/grumpig/normal.pal index c1f82cf81..d4366275d 100644 --- a/graphics/pokemon/grumpig/normal.pal +++ b/graphics/pokemon/grumpig/normal.pal @@ -7,13 +7,13 @@ JASC-PAL 96 96 96 16 16 16 120 120 128 -184 128 184 -152 96 104 -192 160 208 -216 184 224 +184 96 168 +144 56 72 +208 128 200 +224 160 216 112 88 120 -200 120 136 +200 80 104 248 248 248 -232 152 168 +224 112 136 216 192 232 -248 184 192 +248 152 168 diff --git a/graphics/pokemon/gulpin/anim_front.png b/graphics/pokemon/gulpin/anim_front.png index c4974b675..a85959ee7 100644 Binary files a/graphics/pokemon/gulpin/anim_front.png and b/graphics/pokemon/gulpin/anim_front.png differ diff --git a/graphics/pokemon/gulpin/front.png b/graphics/pokemon/gulpin/front.png index f13058f54..d1efac94d 100644 Binary files a/graphics/pokemon/gulpin/front.png and b/graphics/pokemon/gulpin/front.png differ diff --git a/graphics/pokemon/gulpin/normal.pal b/graphics/pokemon/gulpin/normal.pal index 8ffe5b374..377c234f0 100644 --- a/graphics/pokemon/gulpin/normal.pal +++ b/graphics/pokemon/gulpin/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 0 176 232 -160 136 64 -248 224 168 -16 16 16 -240 208 88 -216 176 48 -56 88 56 -88 152 88 -112 176 112 -144 208 144 -168 232 168 -56 56 48 +168 144 72 +240 232 152 +0 0 0 +240 216 64 +200 168 16 +72 104 56 +112 160 96 +136 184 112 +160 216 144 +200 232 176 +64 64 64 104 104 104 0 0 0 0 0 0 diff --git a/graphics/pokemon/gurdurr/anim_front.png b/graphics/pokemon/gurdurr/anim_front.png index 868a94171..1e455d093 100644 Binary files a/graphics/pokemon/gurdurr/anim_front.png and b/graphics/pokemon/gurdurr/anim_front.png differ diff --git a/graphics/pokemon/gurdurr/front.png b/graphics/pokemon/gurdurr/front.png index 73f778d6b..710ec3b85 100644 Binary files a/graphics/pokemon/gurdurr/front.png and b/graphics/pokemon/gurdurr/front.png differ diff --git a/graphics/pokemon/gurdurr/normal.pal b/graphics/pokemon/gurdurr/normal.pal index 1a67fe5be..835ac8aef 100644 --- a/graphics/pokemon/gurdurr/normal.pal +++ b/graphics/pokemon/gurdurr/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 +152 208 160 16 16 16 -122 36 49 -196 94 101 -173 69 79 -63 24 42 -89 79 66 -158 138 115 -196 183 157 -109 49 84 -165 82 131 -211 110 177 -255 255 255 -115 41 65 -173 55 73 +128 40 56 +216 80 88 +184 56 72 +96 24 48 +88 56 64 +152 136 128 +192 184 168 +112 48 80 +152 72 128 +208 104 176 +248 248 248 +112 40 64 +168 40 64 0 0 0 diff --git a/graphics/pokemon/gyarados/anim_front.png b/graphics/pokemon/gyarados/anim_front.png index 0db69d82a..5d00da42b 100644 Binary files a/graphics/pokemon/gyarados/anim_front.png and b/graphics/pokemon/gyarados/anim_front.png differ diff --git a/graphics/pokemon/gyarados/front.png b/graphics/pokemon/gyarados/front.png index 45009b5c9..f437da767 100644 Binary files a/graphics/pokemon/gyarados/front.png and b/graphics/pokemon/gyarados/front.png differ diff --git a/graphics/pokemon/gyarados/normal.pal b/graphics/pokemon/gyarados/normal.pal index 991d74930..09c401078 100644 --- a/graphics/pokemon/gyarados/normal.pal +++ b/graphics/pokemon/gyarados/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 24 24 24 96 96 128 -40 96 112 +24 96 144 168 184 224 -24 64 80 -40 176 224 -32 128 160 +24 64 112 +0 168 208 +16 128 152 240 240 240 -152 224 248 -248 216 160 -184 160 120 +120 216 232 +240 224 168 +200 168 120 88 72 48 -104 48 48 -160 96 112 -224 144 176 +104 24 32 +184 48 96 +232 96 64 diff --git a/graphics/pokemon/happiny/anim_front.png b/graphics/pokemon/happiny/anim_front.png index 91b987949..7ae898ab1 100644 Binary files a/graphics/pokemon/happiny/anim_front.png and b/graphics/pokemon/happiny/anim_front.png differ diff --git a/graphics/pokemon/happiny/front.png b/graphics/pokemon/happiny/front.png index 0d957955c..547c652ed 100644 Binary files a/graphics/pokemon/happiny/front.png and b/graphics/pokemon/happiny/front.png differ diff --git a/graphics/pokemon/happiny/normal.pal b/graphics/pokemon/happiny/normal.pal index 896e3ecd9..e7bbb9af5 100644 --- a/graphics/pokemon/happiny/normal.pal +++ b/graphics/pokemon/happiny/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -144 112 112 -192 136 144 -248 184 192 +160 88 120 +192 136 160 +248 192 208 16 16 16 -104 72 80 -232 128 152 -160 96 104 +112 64 88 +216 104 152 +160 80 120 248 248 248 -200 184 184 -224 192 192 +200 184 192 +192 192 192 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/hariyama/anim_front.png b/graphics/pokemon/hariyama/anim_front.png index abec77e9e..7b55b728e 100644 Binary files a/graphics/pokemon/hariyama/anim_front.png and b/graphics/pokemon/hariyama/anim_front.png differ diff --git a/graphics/pokemon/hariyama/front.png b/graphics/pokemon/hariyama/front.png index 619abaeb3..4a21a2a0b 100644 Binary files a/graphics/pokemon/hariyama/front.png and b/graphics/pokemon/hariyama/front.png differ diff --git a/graphics/pokemon/hariyama/normal.pal b/graphics/pokemon/hariyama/normal.pal index cb5bef2fc..6ed665912 100644 --- a/graphics/pokemon/hariyama/normal.pal +++ b/graphics/pokemon/hariyama/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -232 152 120 -120 72 56 -216 128 88 -168 112 88 -192 168 144 -240 224 200 -224 200 176 -56 64 112 -96 104 152 -120 104 80 -248 248 248 -152 112 56 -248 216 112 -216 160 96 +0 0 0 +238 156 98 +131 74 49 +213 131 90 +180 106 82 +213 180 131 +246 230 197 +230 213 164 +57 65 106 +139 106 82 +98 98 148 +255 255 255 +172 123 74 +255 213 123 +213 164 98 diff --git a/graphics/pokemon/haunter/anim_front.png b/graphics/pokemon/haunter/anim_front.png index 62b5431d5..03156dfa4 100644 Binary files a/graphics/pokemon/haunter/anim_front.png and b/graphics/pokemon/haunter/anim_front.png differ diff --git a/graphics/pokemon/haunter/front.png b/graphics/pokemon/haunter/front.png index abf047ebe..f9434ad09 100644 Binary files a/graphics/pokemon/haunter/front.png and b/graphics/pokemon/haunter/front.png differ diff --git a/graphics/pokemon/haunter/normal.pal b/graphics/pokemon/haunter/normal.pal index 38e187f58..79ac42146 100644 --- a/graphics/pokemon/haunter/normal.pal +++ b/graphics/pokemon/haunter/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -88 64 104 -144 128 176 -56 40 56 +128 88 136 +192 152 200 +80 64 96 16 16 16 -104 88 136 +168 128 192 248 248 248 112 112 112 -168 72 120 -224 112 168 +176 24 96 +216 88 160 208 208 208 -104 48 80 +104 0 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/haxorus/anim_front.png b/graphics/pokemon/haxorus/anim_front.png index 0ab43ae82..d189fdc67 100644 Binary files a/graphics/pokemon/haxorus/anim_front.png and b/graphics/pokemon/haxorus/anim_front.png differ diff --git a/graphics/pokemon/haxorus/front.png b/graphics/pokemon/haxorus/front.png index 3187fbb4c..e5c216c13 100644 Binary files a/graphics/pokemon/haxorus/front.png and b/graphics/pokemon/haxorus/front.png differ diff --git a/graphics/pokemon/haxorus/normal.pal b/graphics/pokemon/haxorus/normal.pal index c4730d845..0e10e61a6 100644 --- a/graphics/pokemon/haxorus/normal.pal +++ b/graphics/pokemon/haxorus/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -80 16 16 +80 0 0 16 16 16 -144 32 32 -56 48 56 -176 72 48 -56 56 24 -184 168 88 -80 72 80 -152 144 40 -112 104 40 -32 32 40 +136 0 0 +56 56 72 +192 0 0 +64 64 0 +184 192 80 +80 80 96 +160 168 24 +96 104 16 +40 40 56 248 248 248 0 0 0 0 0 0 diff --git a/graphics/pokemon/heatmor/anim_front.png b/graphics/pokemon/heatmor/anim_front.png index 0789d8333..b9c5088ab 100644 Binary files a/graphics/pokemon/heatmor/anim_front.png and b/graphics/pokemon/heatmor/anim_front.png differ diff --git a/graphics/pokemon/heatmor/front.png b/graphics/pokemon/heatmor/front.png index 708dc0d57..0b912da48 100644 Binary files a/graphics/pokemon/heatmor/front.png and b/graphics/pokemon/heatmor/front.png differ diff --git a/graphics/pokemon/heatmor/normal.pal b/graphics/pokemon/heatmor/normal.pal index 70d0fd758..cf4f3678a 100644 --- a/graphics/pokemon/heatmor/normal.pal +++ b/graphics/pokemon/heatmor/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 88 72 -64 64 56 -128 56 48 -160 136 104 -184 80 72 -200 144 48 -232 168 64 +120 96 80 +80 48 32 +136 48 48 +160 136 112 +192 72 64 +224 136 64 +248 192 64 248 248 248 -16 16 16 -96 40 32 -160 112 40 -0 0 0 +0 0 0 +96 24 16 +160 136 72 +96 24 16 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/heatran/anim_front.png b/graphics/pokemon/heatran/anim_front.png index 086fc0460..afc5dbe41 100644 Binary files a/graphics/pokemon/heatran/anim_front.png and b/graphics/pokemon/heatran/anim_front.png differ diff --git a/graphics/pokemon/heatran/front.png b/graphics/pokemon/heatran/front.png index 5bff3348a..e446b445d 100644 Binary files a/graphics/pokemon/heatran/front.png and b/graphics/pokemon/heatran/front.png differ diff --git a/graphics/pokemon/heatran/normal.pal b/graphics/pokemon/heatran/normal.pal index f9a324244..fd73b92b3 100644 --- a/graphics/pokemon/heatran/normal.pal +++ b/graphics/pokemon/heatran/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 56 32 16 -96 48 24 -136 72 40 +128 64 88 +168 88 64 24 24 24 104 112 120 -224 224 200 -192 192 176 -192 104 32 -248 136 40 -152 136 136 +224 224 232 +192 192 192 +200 128 40 +248 160 16 +144 144 144 248 248 248 -80 72 72 -176 80 32 -240 104 32 +80 80 80 +176 64 40 +248 80 56 0 0 0 diff --git a/graphics/pokemon/heracross/anim_front.png b/graphics/pokemon/heracross/anim_front.png index 5e90a642c..426443655 100644 Binary files a/graphics/pokemon/heracross/anim_front.png and b/graphics/pokemon/heracross/anim_front.png differ diff --git a/graphics/pokemon/heracross/front.png b/graphics/pokemon/heracross/front.png index 2ba9232e2..db9b244da 100644 Binary files a/graphics/pokemon/heracross/front.png and b/graphics/pokemon/heracross/front.png differ diff --git a/graphics/pokemon/heracross/normal.pal b/graphics/pokemon/heracross/normal.pal index 51a68f1e0..7f4cde957 100644 --- a/graphics/pokemon/heracross/normal.pal +++ b/graphics/pokemon/heracross/normal.pal @@ -3,13 +3,13 @@ JASC-PAL 16 152 208 160 16 16 16 -136 184 216 -32 56 80 -80 144 176 -40 96 144 -104 80 48 -240 208 152 -224 168 88 +144 184 248 +48 56 96 +104 144 192 +64 96 144 +104 88 32 +248 216 88 +184 152 48 248 248 248 96 96 96 152 152 152 diff --git a/graphics/pokemon/herdier/anim_front.png b/graphics/pokemon/herdier/anim_front.png index a99c03559..e0d73d729 100644 Binary files a/graphics/pokemon/herdier/anim_front.png and b/graphics/pokemon/herdier/anim_front.png differ diff --git a/graphics/pokemon/herdier/front.png b/graphics/pokemon/herdier/front.png index a705795c6..b28db7c31 100644 Binary files a/graphics/pokemon/herdier/front.png and b/graphics/pokemon/herdier/front.png differ diff --git a/graphics/pokemon/herdier/normal.pal b/graphics/pokemon/herdier/normal.pal index c4216fed5..37d84df47 100644 --- a/graphics/pokemon/herdier/normal.pal +++ b/graphics/pokemon/herdier/normal.pal @@ -4,7 +4,7 @@ JASC-PAL 152 208 160 136 80 56 216 136 96 -80 48 40 +72 48 16 16 16 16 248 216 160 24 24 32 @@ -14,6 +14,6 @@ JASC-PAL 160 160 160 248 248 248 192 192 192 +56 56 56 40 48 72 -0 0 0 -0 0 0 +56 72 112 diff --git a/graphics/pokemon/hippopotas/anim_front.png b/graphics/pokemon/hippopotas/anim_front.png index 8de30eae6..74eba5613 100644 Binary files a/graphics/pokemon/hippopotas/anim_front.png and b/graphics/pokemon/hippopotas/anim_front.png differ diff --git a/graphics/pokemon/hippopotas/anim_frontf.png b/graphics/pokemon/hippopotas/anim_frontf.png deleted file mode 100644 index 8a0b675bb..000000000 Binary files a/graphics/pokemon/hippopotas/anim_frontf.png and /dev/null differ diff --git a/graphics/pokemon/hippopotas/back.png b/graphics/pokemon/hippopotas/back.png index 0657cc93c..b34d3d720 100644 Binary files a/graphics/pokemon/hippopotas/back.png and b/graphics/pokemon/hippopotas/back.png differ diff --git a/graphics/pokemon/hippopotas/backf.png b/graphics/pokemon/hippopotas/backf.png deleted file mode 100644 index 1a7413613..000000000 Binary files a/graphics/pokemon/hippopotas/backf.png and /dev/null differ diff --git a/graphics/pokemon/hippopotas/front.png b/graphics/pokemon/hippopotas/front.png index 42a2b0fd4..ea6fc8584 100644 Binary files a/graphics/pokemon/hippopotas/front.png and b/graphics/pokemon/hippopotas/front.png differ diff --git a/graphics/pokemon/hippopotas/iconf.png b/graphics/pokemon/hippopotas/iconf.png new file mode 100644 index 000000000..cfb2b90fd Binary files /dev/null and b/graphics/pokemon/hippopotas/iconf.png differ diff --git a/graphics/pokemon/hippowdon/backf.png b/graphics/pokemon/hippowdon/backf.png deleted file mode 100644 index 1cfc725e9..000000000 Binary files a/graphics/pokemon/hippowdon/backf.png and /dev/null differ diff --git a/graphics/pokemon/hippowdon/iconf.png b/graphics/pokemon/hippowdon/iconf.png new file mode 100644 index 000000000..80460903a Binary files /dev/null and b/graphics/pokemon/hippowdon/iconf.png differ diff --git a/graphics/pokemon/hitmonchan/anim_front.png b/graphics/pokemon/hitmonchan/anim_front.png index 674667d8d..7930fe60a 100644 Binary files a/graphics/pokemon/hitmonchan/anim_front.png and b/graphics/pokemon/hitmonchan/anim_front.png differ diff --git a/graphics/pokemon/hitmonchan/front.png b/graphics/pokemon/hitmonchan/front.png index 2c2d04ad6..0721d04c0 100644 Binary files a/graphics/pokemon/hitmonchan/front.png and b/graphics/pokemon/hitmonchan/front.png differ diff --git a/graphics/pokemon/hitmonchan/normal.pal b/graphics/pokemon/hitmonchan/normal.pal index 14af602a8..52b91591d 100644 --- a/graphics/pokemon/hitmonchan/normal.pal +++ b/graphics/pokemon/hitmonchan/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 96 72 72 -200 168 144 +200 176 120 16 16 16 160 136 112 -224 192 168 +232 208 152 248 240 248 -72 72 112 -64 120 160 -176 72 64 -232 152 144 -224 120 112 -120 24 24 +96 72 112 +64 128 248 +184 48 72 +248 144 88 +224 96 72 +136 32 0 144 136 176 176 168 208 -137 79 86 +232 128 120 diff --git a/graphics/pokemon/hitmonlee/anim_front.png b/graphics/pokemon/hitmonlee/anim_front.png index 97dc31acc..7bcda55b2 100644 Binary files a/graphics/pokemon/hitmonlee/anim_front.png and b/graphics/pokemon/hitmonlee/anim_front.png differ diff --git a/graphics/pokemon/hitmonlee/front.png b/graphics/pokemon/hitmonlee/front.png index 07f4e155f..42d195080 100644 Binary files a/graphics/pokemon/hitmonlee/front.png and b/graphics/pokemon/hitmonlee/front.png differ diff --git a/graphics/pokemon/hitmonlee/normal.pal b/graphics/pokemon/hitmonlee/normal.pal index 1345645b7..ea2f5b7c4 100644 --- a/graphics/pokemon/hitmonlee/normal.pal +++ b/graphics/pokemon/hitmonlee/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 80 72 -152 112 104 -192 152 144 -88 48 48 -224 184 176 -88 80 80 +128 88 56 +160 120 112 +200 160 128 +96 56 24 +232 192 160 +112 96 96 16 16 16 248 248 248 208 200 200 88 72 48 -176 168 128 -224 208 160 -216 200 112 +184 176 104 +232 224 176 +184 176 104 240 224 168 0 0 0 diff --git a/graphics/pokemon/hitmontop/anim_front.png b/graphics/pokemon/hitmontop/anim_front.png index af13cbe26..65ef049e1 100644 Binary files a/graphics/pokemon/hitmontop/anim_front.png and b/graphics/pokemon/hitmontop/anim_front.png differ diff --git a/graphics/pokemon/hitmontop/front.png b/graphics/pokemon/hitmontop/front.png index eb63c61b3..28118af28 100644 Binary files a/graphics/pokemon/hitmontop/front.png and b/graphics/pokemon/hitmontop/front.png differ diff --git a/graphics/pokemon/hitmontop/normal.pal b/graphics/pokemon/hitmontop/normal.pal index b19e89198..c8cb22d51 100644 --- a/graphics/pokemon/hitmontop/normal.pal +++ b/graphics/pokemon/hitmontop/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 144 128 -104 104 88 -248 248 248 -192 192 208 -56 104 152 -64 136 200 -120 176 224 -24 72 120 -112 72 48 -16 16 16 -216 152 120 -168 120 96 -224 176 144 144 144 152 +96 96 104 +248 248 248 +200 200 200 +72 112 192 +96 152 216 +136 184 232 +80 88 144 +128 88 40 +16 16 16 +216 184 128 +176 136 88 +248 216 152 +0 0 0 0 0 0 diff --git a/graphics/pokemon/ho_oh/anim_front.png b/graphics/pokemon/ho_oh/anim_front.png index 5682e9514..8bc726f79 100644 Binary files a/graphics/pokemon/ho_oh/anim_front.png and b/graphics/pokemon/ho_oh/anim_front.png differ diff --git a/graphics/pokemon/ho_oh/front.png b/graphics/pokemon/ho_oh/front.png index fae8fd146..4c32adca9 100644 Binary files a/graphics/pokemon/ho_oh/front.png and b/graphics/pokemon/ho_oh/front.png differ diff --git a/graphics/pokemon/ho_oh/normal.pal b/graphics/pokemon/ho_oh/normal.pal index af86f06a6..d4c1f1dfa 100644 --- a/graphics/pokemon/ho_oh/normal.pal +++ b/graphics/pokemon/ho_oh/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -96 112 40 -152 200 96 -176 32 24 -120 24 16 -208 232 184 -248 112 96 +64 104 56 +120 200 72 +176 40 32 +136 32 32 +168 240 168 +248 104 88 16 16 16 -248 64 32 -184 120 32 -240 240 128 -248 152 32 -112 72 32 -192 208 192 +248 48 8 +168 96 32 +248 248 128 +248 176 16 +112 64 32 +208 208 208 248 248 248 -72 80 120 +112 112 128 diff --git a/graphics/pokemon/honchkrow/anim_front.png b/graphics/pokemon/honchkrow/anim_front.png index d9047ae41..b7cff5cf2 100644 Binary files a/graphics/pokemon/honchkrow/anim_front.png and b/graphics/pokemon/honchkrow/anim_front.png differ diff --git a/graphics/pokemon/honchkrow/front.png b/graphics/pokemon/honchkrow/front.png index f86b5a6c5..9681f682f 100644 Binary files a/graphics/pokemon/honchkrow/front.png and b/graphics/pokemon/honchkrow/front.png differ diff --git a/graphics/pokemon/honchkrow/normal.pal b/graphics/pokemon/honchkrow/normal.pal index 03cfdeb00..a4971698b 100644 --- a/graphics/pokemon/honchkrow/normal.pal +++ b/graphics/pokemon/honchkrow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 104 136 -32 64 88 -24 40 48 +64 96 152 +48 64 96 +40 40 64 16 16 16 -72 16 16 -144 32 40 -160 136 64 -184 168 168 +72 32 32 +136 48 56 +168 144 56 +160 160 176 248 248 248 -232 200 80 -208 48 64 -80 80 40 -240 232 224 -96 96 96 -56 56 56 +240 216 56 +216 80 88 +88 88 56 +232 232 240 +80 80 80 +48 48 56 diff --git a/graphics/pokemon/hoothoot/anim_front.png b/graphics/pokemon/hoothoot/anim_front.png index 7f4aab679..585fc6518 100644 Binary files a/graphics/pokemon/hoothoot/anim_front.png and b/graphics/pokemon/hoothoot/anim_front.png differ diff --git a/graphics/pokemon/hoothoot/back.png b/graphics/pokemon/hoothoot/back.png index 9f3a48701..c51927615 100644 Binary files a/graphics/pokemon/hoothoot/back.png and b/graphics/pokemon/hoothoot/back.png differ diff --git a/graphics/pokemon/hoothoot/front.png b/graphics/pokemon/hoothoot/front.png index 5269906bb..0cc035380 100644 Binary files a/graphics/pokemon/hoothoot/front.png and b/graphics/pokemon/hoothoot/front.png differ diff --git a/graphics/pokemon/hoothoot/normal.pal b/graphics/pokemon/hoothoot/normal.pal index 758787e5f..213e6acaa 100644 --- a/graphics/pokemon/hoothoot/normal.pal +++ b/graphics/pokemon/hoothoot/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -56 56 56 -152 112 88 -120 88 72 -72 40 32 -176 136 96 -208 176 128 -240 96 72 -72 56 72 -232 176 192 -152 120 128 -208 176 144 -248 208 176 +64 64 64 +152 104 48 +120 88 80 +80 48 0 +184 136 64 +200 160 120 +104 48 24 +184 88 40 +240 96 48 +232 168 144 +216 184 152 +248 224 192 248 248 248 -136 136 136 +120 120 120 diff --git a/graphics/pokemon/hoothoot/shiny.pal b/graphics/pokemon/hoothoot/shiny.pal index 85bf196e6..44b4e4912 100644 --- a/graphics/pokemon/hoothoot/shiny.pal +++ b/graphics/pokemon/hoothoot/shiny.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 16 16 16 64 64 64 -200 168 64 +216 184 72 192 136 72 120 72 16 232 208 64 -248 240 144 -240 96 48 +248 232 120 104 48 24 +184 88 40 +240 96 48 232 168 144 -216 112 72 -216 224 136 +232 248 128 240 248 192 248 248 248 120 120 120 diff --git a/graphics/pokemon/hoppip/anim_front.png b/graphics/pokemon/hoppip/anim_front.png index 63f77907d..bea636b46 100644 Binary files a/graphics/pokemon/hoppip/anim_front.png and b/graphics/pokemon/hoppip/anim_front.png differ diff --git a/graphics/pokemon/hoppip/front.png b/graphics/pokemon/hoppip/front.png index 32329fcca..42f0e5c8e 100644 Binary files a/graphics/pokemon/hoppip/front.png and b/graphics/pokemon/hoppip/front.png differ diff --git a/graphics/pokemon/hoppip/normal.pal b/graphics/pokemon/hoppip/normal.pal index 7806f8311..76c92f1f5 100644 --- a/graphics/pokemon/hoppip/normal.pal +++ b/graphics/pokemon/hoppip/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 0 176 232 -96 144 56 -120 200 64 -168 232 112 -64 88 32 -16 16 16 -176 88 112 -248 152 176 -112 40 64 -240 112 152 -240 224 112 -248 208 40 +82 131 57 +98 189 90 +156 222 90 +65 90 16 +0 0 0 +180 98 115 +246 156 180 +139 8 57 +255 123 148 +255 255 0 +255 197 0 40 40 40 0 0 0 0 0 0 diff --git a/graphics/pokemon/horsea/anim_front.png b/graphics/pokemon/horsea/anim_front.png index bf91109b1..887708af4 100644 Binary files a/graphics/pokemon/horsea/anim_front.png and b/graphics/pokemon/horsea/anim_front.png differ diff --git a/graphics/pokemon/horsea/front.png b/graphics/pokemon/horsea/front.png index 45cb87cde..42d59bfe3 100644 Binary files a/graphics/pokemon/horsea/front.png and b/graphics/pokemon/horsea/front.png differ diff --git a/graphics/pokemon/horsea/normal.pal b/graphics/pokemon/horsea/normal.pal index e25c6bb05..ba233c7c1 100644 --- a/graphics/pokemon/horsea/normal.pal +++ b/graphics/pokemon/horsea/normal.pal @@ -9,11 +9,11 @@ JASC-PAL 16 16 16 248 248 248 208 208 208 -216 88 72 +248 112 112 144 128 96 248 240 192 208 192 136 -176 56 56 +192 40 40 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/houndoom/anim_front.png b/graphics/pokemon/houndoom/anim_front.png index 8b96b911a..b2cfcd702 100644 Binary files a/graphics/pokemon/houndoom/anim_front.png and b/graphics/pokemon/houndoom/anim_front.png differ diff --git a/graphics/pokemon/houndoom/front.png b/graphics/pokemon/houndoom/front.png index a8abb7999..8ebef8181 100644 Binary files a/graphics/pokemon/houndoom/front.png and b/graphics/pokemon/houndoom/front.png differ diff --git a/graphics/pokemon/houndoom/normal.pal b/graphics/pokemon/houndoom/normal.pal index 8212f9464..55f44c4fd 100644 --- a/graphics/pokemon/houndoom/normal.pal +++ b/graphics/pokemon/houndoom/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 96 88 -224 200 184 -168 152 144 +112 104 112 +208 208 208 +160 160 160 248 248 248 -8 8 8 -32 24 32 -80 72 64 -48 40 40 -176 80 48 -224 136 96 -168 72 80 -96 40 16 -72 16 24 -80 72 64 +0 0 0 +24 32 40 +72 72 80 +48 48 56 +160 88 72 +240 152 128 +152 40 56 +96 40 16 +96 16 16 +72 72 80 0 0 0 diff --git a/graphics/pokemon/houndour/anim_front.png b/graphics/pokemon/houndour/anim_front.png index e737a34c1..2cf035d03 100644 Binary files a/graphics/pokemon/houndour/anim_front.png and b/graphics/pokemon/houndour/anim_front.png differ diff --git a/graphics/pokemon/houndour/back.png b/graphics/pokemon/houndour/back.png index 36af7e431..daf5f91b4 100644 Binary files a/graphics/pokemon/houndour/back.png and b/graphics/pokemon/houndour/back.png differ diff --git a/graphics/pokemon/houndour/front.png b/graphics/pokemon/houndour/front.png index 7a83778a4..39d1ce974 100644 Binary files a/graphics/pokemon/houndour/front.png and b/graphics/pokemon/houndour/front.png differ diff --git a/graphics/pokemon/houndour/normal.pal b/graphics/pokemon/houndour/normal.pal index 228decda8..6d940707f 100644 --- a/graphics/pokemon/houndour/normal.pal +++ b/graphics/pokemon/houndour/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 32 40 -72 72 64 -24 16 16 -152 144 152 +40 40 48 +72 72 80 +16 24 32 +160 152 168 248 248 248 8 8 8 -136 56 16 +112 64 40 184 184 200 -240 160 128 -208 104 64 -122 63 71 -0 0 0 -0 0 0 +240 160 120 +168 112 80 +40 40 40 +176 120 88 +168 16 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/houndour/shiny.pal b/graphics/pokemon/houndour/shiny.pal index 1ee0abc0f..38ada23be 100644 --- a/graphics/pokemon/houndour/shiny.pal +++ b/graphics/pokemon/houndour/shiny.pal @@ -13,7 +13,7 @@ JASC-PAL 248 224 112 176 136 56 178 75 44 -0 0 0 +168 16 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/huntail/anim_front.png b/graphics/pokemon/huntail/anim_front.png index 6d231eac0..e3aa0efab 100644 Binary files a/graphics/pokemon/huntail/anim_front.png and b/graphics/pokemon/huntail/anim_front.png differ diff --git a/graphics/pokemon/huntail/front.png b/graphics/pokemon/huntail/front.png index e10f98f1d..9a5c28850 100644 Binary files a/graphics/pokemon/huntail/front.png and b/graphics/pokemon/huntail/front.png differ diff --git a/graphics/pokemon/huntail/normal.pal b/graphics/pokemon/huntail/normal.pal index 0651b0740..9987a3b31 100644 --- a/graphics/pokemon/huntail/normal.pal +++ b/graphics/pokemon/huntail/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 88 112 -136 200 240 +40 96 120 +136 200 232 16 16 16 -80 152 192 -128 80 56 -200 128 80 -248 184 128 +72 152 184 +160 88 32 +208 128 0 +232 168 96 192 200 224 248 248 248 -184 224 248 +176 232 240 144 136 136 112 72 88 -184 120 136 -216 160 168 +192 112 144 +240 144 176 160 128 144 diff --git a/graphics/pokemon/hydreigon/anim_front.png b/graphics/pokemon/hydreigon/anim_front.png index 4fa0d9681..b4e3432f0 100644 Binary files a/graphics/pokemon/hydreigon/anim_front.png and b/graphics/pokemon/hydreigon/anim_front.png differ diff --git a/graphics/pokemon/hydreigon/front.png b/graphics/pokemon/hydreigon/front.png index 67a7fa51e..68aa66cd8 100644 Binary files a/graphics/pokemon/hydreigon/front.png and b/graphics/pokemon/hydreigon/front.png differ diff --git a/graphics/pokemon/hydreigon/normal.pal b/graphics/pokemon/hydreigon/normal.pal index f40c3ff93..f07d5f03c 100644 --- a/graphics/pokemon/hydreigon/normal.pal +++ b/graphics/pokemon/hydreigon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 40 40 +40 32 40 64 56 64 16 16 16 -88 80 80 -120 48 88 -168 88 128 -56 24 40 -40 56 80 -96 144 200 -80 104 136 -72 56 88 -144 88 96 +80 80 80 +136 40 96 +184 80 120 +96 32 64 +24 48 104 +88 128 200 +56 88 152 +96 56 104 +144 88 120 224 216 216 -48 40 40 +40 32 40 0 0 0 diff --git a/graphics/pokemon/hypno/anim_front.png b/graphics/pokemon/hypno/anim_front.png index 64ba1fb56..d96bd7613 100644 Binary files a/graphics/pokemon/hypno/anim_front.png and b/graphics/pokemon/hypno/anim_front.png differ diff --git a/graphics/pokemon/hypno/front.png b/graphics/pokemon/hypno/front.png index 72c602e06..391eaba23 100644 Binary files a/graphics/pokemon/hypno/front.png and b/graphics/pokemon/hypno/front.png differ diff --git a/graphics/pokemon/hypno/normal.pal b/graphics/pokemon/hypno/normal.pal index 1adb09313..be159251d 100644 --- a/graphics/pokemon/hypno/normal.pal +++ b/graphics/pokemon/hypno/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 96 80 +136 96 48 104 80 0 -248 216 56 -16 16 16 -168 136 32 +240 216 0 +0 0 0 +176 144 32 88 64 40 -248 224 128 -208 176 56 +248 232 112 +216 184 64 128 144 160 -64 72 88 +80 88 104 248 248 248 -168 176 200 -208 208 232 -0 0 0 +152 168 184 +200 216 232 +160 128 88 0 0 0 diff --git a/graphics/pokemon/igglybuff/anim_front.png b/graphics/pokemon/igglybuff/anim_front.png index 8e4ec6526..e96608aa1 100644 Binary files a/graphics/pokemon/igglybuff/anim_front.png and b/graphics/pokemon/igglybuff/anim_front.png differ diff --git a/graphics/pokemon/igglybuff/front.png b/graphics/pokemon/igglybuff/front.png index 36b1c62f6..2d0dad2a8 100644 Binary files a/graphics/pokemon/igglybuff/front.png and b/graphics/pokemon/igglybuff/front.png differ diff --git a/graphics/pokemon/igglybuff/normal.pal b/graphics/pokemon/igglybuff/normal.pal index 50244b91b..4bf00fcd7 100644 --- a/graphics/pokemon/igglybuff/normal.pal +++ b/graphics/pokemon/igglybuff/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -136 72 88 -248 240 232 -248 208 208 -176 96 120 +136 64 64 +248 200 208 +248 168 184 +200 104 96 16 16 16 -192 152 168 -224 72 88 -144 64 64 +240 120 144 +224 40 16 +136 0 0 248 248 248 -224 144 168 -168 80 112 +184 0 0 +128 0 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/illumise/anim_front.png b/graphics/pokemon/illumise/anim_front.png index 48878163a..8759e9171 100644 Binary files a/graphics/pokemon/illumise/anim_front.png and b/graphics/pokemon/illumise/anim_front.png differ diff --git a/graphics/pokemon/illumise/front.png b/graphics/pokemon/illumise/front.png index ce620bfd1..f91f5c935 100644 Binary files a/graphics/pokemon/illumise/front.png and b/graphics/pokemon/illumise/front.png differ diff --git a/graphics/pokemon/illumise/normal.pal b/graphics/pokemon/illumise/normal.pal index 7f7ab4792..b1f415775 100644 --- a/graphics/pokemon/illumise/normal.pal +++ b/graphics/pokemon/illumise/normal.pal @@ -1,19 +1,259 @@ JASC-PAL 0100 -16 +256 152 208 160 152 128 80 -208 176 104 -240 216 144 +224 176 72 +248 224 112 16 16 16 -160 112 176 -96 72 120 +152 80 184 +104 88 144 248 248 248 -200 152 208 -80 112 120 -112 184 208 -168 216 240 +200 136 216 +88 104 136 +136 168 200 +176 208 240 168 192 232 -0 136 176 +0 88 208 56 56 56 120 120 120 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/infernape/anim_front.png b/graphics/pokemon/infernape/anim_front.png index 521883ce5..b808e3ab3 100644 Binary files a/graphics/pokemon/infernape/anim_front.png and b/graphics/pokemon/infernape/anim_front.png differ diff --git a/graphics/pokemon/infernape/front.png b/graphics/pokemon/infernape/front.png index 7177880c9..6bb4d332c 100644 Binary files a/graphics/pokemon/infernape/front.png and b/graphics/pokemon/infernape/front.png differ diff --git a/graphics/pokemon/infernape/normal.pal b/graphics/pokemon/infernape/normal.pal index e2f6bad8d..9dad1bf3f 100644 --- a/graphics/pokemon/infernape/normal.pal +++ b/graphics/pokemon/infernape/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 56 40 -40 64 96 +104 56 16 +24 64 120 16 16 16 -128 96 24 -192 160 56 -224 72 56 -248 128 48 -64 112 152 -248 224 120 -168 96 64 -216 128 88 -184 184 176 -120 112 112 +128 88 8 +192 152 32 +224 56 64 +240 136 72 +56 112 160 +248 216 80 +160 96 64 +224 136 88 +184 192 216 +112 112 128 248 248 248 128 40 48 diff --git a/graphics/pokemon/ivysaur/anim_front.png b/graphics/pokemon/ivysaur/anim_front.png index 0b31c81a3..35c0596b2 100644 Binary files a/graphics/pokemon/ivysaur/anim_front.png and b/graphics/pokemon/ivysaur/anim_front.png differ diff --git a/graphics/pokemon/ivysaur/back.png b/graphics/pokemon/ivysaur/back.png index 5e74b5e01..4ec8a61a1 100644 Binary files a/graphics/pokemon/ivysaur/back.png and b/graphics/pokemon/ivysaur/back.png differ diff --git a/graphics/pokemon/ivysaur/front.png b/graphics/pokemon/ivysaur/front.png index 6bd7e0519..4259abad0 100644 Binary files a/graphics/pokemon/ivysaur/front.png and b/graphics/pokemon/ivysaur/front.png differ diff --git a/graphics/pokemon/ivysaur/normal.pal b/graphics/pokemon/ivysaur/normal.pal index 7b785bc77..8ce5c7c84 100644 --- a/graphics/pokemon/ivysaur/normal.pal +++ b/graphics/pokemon/ivysaur/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -109 57 76 -204 85 103 -255 170 182 -255 122 133 +152 208 160 +120 48 40 +216 64 88 +248 176 168 +248 120 120 16 16 16 -22 63 75 -121 200 145 -71 120 95 -87 164 101 -174 228 230 -111 193 196 -66 143 166 -255 255 255 -163 125 146 -160 104 67 +16 64 72 +120 216 112 +48 128 80 +96 176 88 +128 232 216 +88 208 184 +32 144 128 +248 248 248 +160 48 16 +224 80 56 diff --git a/graphics/pokemon/ivysaur/shiny.pal b/graphics/pokemon/ivysaur/shiny.pal index 09594ff8a..27e7a2bed 100644 --- a/graphics/pokemon/ivysaur/shiny.pal +++ b/graphics/pokemon/ivysaur/shiny.pal @@ -15,5 +15,5 @@ JASC-PAL 164 213 74 123 164 49 255 255 255 -186 144 72 -197 115 57 +160 48 16 +224 80 56 diff --git a/graphics/pokemon/jellicent/anim_front.png b/graphics/pokemon/jellicent/anim_front.png index 68d6543db..4e08f51dd 100644 Binary files a/graphics/pokemon/jellicent/anim_front.png and b/graphics/pokemon/jellicent/anim_front.png differ diff --git a/graphics/pokemon/jellicent/anim_frontf.png b/graphics/pokemon/jellicent/anim_frontf.png index 110df92f5..d94a329aa 100644 Binary files a/graphics/pokemon/jellicent/anim_frontf.png and b/graphics/pokemon/jellicent/anim_frontf.png differ diff --git a/graphics/pokemon/jellicent/front.png b/graphics/pokemon/jellicent/front.png index 7e02040b7..584c7f09b 100644 Binary files a/graphics/pokemon/jellicent/front.png and b/graphics/pokemon/jellicent/front.png differ diff --git a/graphics/pokemon/jellicent/frontf.png b/graphics/pokemon/jellicent/frontf.png new file mode 100644 index 000000000..7c40aad47 Binary files /dev/null and b/graphics/pokemon/jellicent/frontf.png differ diff --git a/graphics/pokemon/jellicent/normal.pal b/graphics/pokemon/jellicent/normal.pal index d3264487d..e7b7da677 100644 --- a/graphics/pokemon/jellicent/normal.pal +++ b/graphics/pokemon/jellicent/normal.pal @@ -7,8 +7,8 @@ JASC-PAL 16 16 16 200 232 248 56 104 176 -56 152 216 -96 200 240 +56 128 200 +56 192 240 168 224 248 208 240 248 232 64 56 diff --git a/graphics/pokemon/jellicent/normalf.pal b/graphics/pokemon/jellicent/normalf.pal index 8acd5fa05..06e1a2895 100644 --- a/graphics/pokemon/jellicent/normalf.pal +++ b/graphics/pokemon/jellicent/normalf.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 153 210 164 -105 135 191 -237 103 83 +40 80 160 +224 72 40 255 222 247 -204 140 195 -122 83 97 +216 128 176 +120 56 80 16 16 16 -177 173 206 -255 178 212 -247 220 242 +200 160 192 +248 160 208 +248 224 248 255 255 255 0 0 0 0 0 0 diff --git a/graphics/pokemon/jigglypuff/anim_front.png b/graphics/pokemon/jigglypuff/anim_front.png index a45e4d02f..a10a835b4 100644 Binary files a/graphics/pokemon/jigglypuff/anim_front.png and b/graphics/pokemon/jigglypuff/anim_front.png differ diff --git a/graphics/pokemon/jigglypuff/front.png b/graphics/pokemon/jigglypuff/front.png index 7ebec3b9f..78c30c532 100644 Binary files a/graphics/pokemon/jigglypuff/front.png and b/graphics/pokemon/jigglypuff/front.png differ diff --git a/graphics/pokemon/jigglypuff/normal.pal b/graphics/pokemon/jigglypuff/normal.pal index 2986235fd..4bc2c0fb5 100644 --- a/graphics/pokemon/jigglypuff/normal.pal +++ b/graphics/pokemon/jigglypuff/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -122 69 82 -249 194 208 -211 143 156 +152 208 160 +136 64 64 +248 168 184 +240 120 144 16 16 16 -58 68 89 -255 255 255 -3 153 173 -0 109 134 -125 203 216 -212 213 216 -147 88 121 -188 120 163 +112 64 24 +248 248 248 +24 112 192 +16 72 136 +16 176 232 +200 184 248 +168 16 0 +232 64 48 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/jirachi/anim_front.png b/graphics/pokemon/jirachi/anim_front.png index 1a3676c69..bd070398d 100644 Binary files a/graphics/pokemon/jirachi/anim_front.png and b/graphics/pokemon/jirachi/anim_front.png differ diff --git a/graphics/pokemon/jirachi/front.png b/graphics/pokemon/jirachi/front.png index df7a02d42..0d94f9c43 100644 Binary files a/graphics/pokemon/jirachi/front.png and b/graphics/pokemon/jirachi/front.png differ diff --git a/graphics/pokemon/jirachi/normal.pal b/graphics/pokemon/jirachi/normal.pal index 198bafa24..cb3591f00 100644 --- a/graphics/pokemon/jirachi/normal.pal +++ b/graphics/pokemon/jirachi/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 136 56 -16 16 16 -248 232 184 -248 232 120 -216 192 96 -80 176 184 -56 112 120 -136 208 200 -192 208 232 -240 240 248 +168 128 48 +0 0 0 +248 248 144 +248 224 88 +224 184 80 +80 168 200 +48 120 136 +96 208 216 +192 200 216 +224 232 240 248 248 248 -88 96 112 -144 152 168 +104 112 112 +152 160 168 0 0 0 0 0 0 diff --git a/graphics/pokemon/jolteon/anim_front.png b/graphics/pokemon/jolteon/anim_front.png index 5c1090a18..b43c1de38 100644 Binary files a/graphics/pokemon/jolteon/anim_front.png and b/graphics/pokemon/jolteon/anim_front.png differ diff --git a/graphics/pokemon/jolteon/front.png b/graphics/pokemon/jolteon/front.png index 18a3cc813..83fae9488 100644 Binary files a/graphics/pokemon/jolteon/front.png and b/graphics/pokemon/jolteon/front.png differ diff --git a/graphics/pokemon/jolteon/normal.pal b/graphics/pokemon/jolteon/normal.pal index 7cf44ca0c..da74dabb8 100644 --- a/graphics/pokemon/jolteon/normal.pal +++ b/graphics/pokemon/jolteon/normal.pal @@ -3,13 +3,13 @@ JASC-PAL 16 152 208 160 16 16 16 -88 72 40 -216 168 64 -168 136 56 +128 104 40 +200 168 72 +128 104 40 152 120 64 -248 224 136 -248 208 88 -56 16 96 +248 248 136 +248 216 80 +72 8 128 248 248 248 72 72 80 192 200 208 diff --git a/graphics/pokemon/joltik/anim_front.png b/graphics/pokemon/joltik/anim_front.png index 1681d6457..f591acb21 100644 Binary files a/graphics/pokemon/joltik/anim_front.png and b/graphics/pokemon/joltik/anim_front.png differ diff --git a/graphics/pokemon/joltik/front.png b/graphics/pokemon/joltik/front.png index 877833842..845a9a104 100644 Binary files a/graphics/pokemon/joltik/front.png and b/graphics/pokemon/joltik/front.png differ diff --git a/graphics/pokemon/joltik/normal.pal b/graphics/pokemon/joltik/normal.pal index 9c746ebb4..1001c4e66 100644 --- a/graphics/pokemon/joltik/normal.pal +++ b/graphics/pokemon/joltik/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -104 88 48 -240 208 88 +112 80 8 +240 216 64 16 16 16 -176 144 64 -16 24 88 +200 168 8 +8 48 96 128 136 80 216 216 232 -56 96 176 -48 72 136 -136 120 64 +96 104 224 +48 88 192 +160 128 8 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/jumpluff/anim_front.png b/graphics/pokemon/jumpluff/anim_front.png index fd3a5c5c4..f78886dc5 100644 Binary files a/graphics/pokemon/jumpluff/anim_front.png and b/graphics/pokemon/jumpluff/anim_front.png differ diff --git a/graphics/pokemon/jumpluff/front.png b/graphics/pokemon/jumpluff/front.png index 537797f73..3a0922741 100644 Binary files a/graphics/pokemon/jumpluff/front.png and b/graphics/pokemon/jumpluff/front.png differ diff --git a/graphics/pokemon/jumpluff/normal.pal b/graphics/pokemon/jumpluff/normal.pal index d73f61924..4ba1e9cc6 100644 --- a/graphics/pokemon/jumpluff/normal.pal +++ b/graphics/pokemon/jumpluff/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 120 40 -208 168 88 -248 232 184 -232 208 152 -248 240 224 -72 120 32 +176 136 48 +208 184 88 +248 240 176 +232 224 152 +248 248 216 +40 128 72 16 16 16 -128 200 64 -72 96 168 -96 128 208 -32 48 104 -136 160 224 -224 88 112 -208 56 88 -128 72 88 +128 200 120 +56 112 192 +112 152 248 +24 72 112 +136 176 248 +232 64 80 +192 48 64 +168 0 0 diff --git a/graphics/pokemon/jynx/anim_front.png b/graphics/pokemon/jynx/anim_front.png index 4b8819bda..c5f4b8aba 100644 Binary files a/graphics/pokemon/jynx/anim_front.png and b/graphics/pokemon/jynx/anim_front.png differ diff --git a/graphics/pokemon/jynx/front.png b/graphics/pokemon/jynx/front.png index 967094bb8..df2603da7 100644 Binary files a/graphics/pokemon/jynx/front.png and b/graphics/pokemon/jynx/front.png differ diff --git a/graphics/pokemon/jynx/normal.pal b/graphics/pokemon/jynx/normal.pal index 26614b682..0990038df 100644 --- a/graphics/pokemon/jynx/normal.pal +++ b/graphics/pokemon/jynx/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 120 88 -232 216 144 -200 176 120 -248 240 224 -16 16 16 -80 56 96 -160 128 200 -184 192 208 +144 120 64 +240 224 152 +208 184 104 +248 248 216 +0 0 0 +96 64 128 +176 104 216 +184 184 200 248 248 248 -232 80 80 -248 136 112 -128 96 152 -168 64 64 -112 56 48 +240 48 88 +248 112 112 +144 72 184 +184 48 96 +128 40 72 96 96 120 diff --git a/graphics/pokemon/kabuto/anim_front.png b/graphics/pokemon/kabuto/anim_front.png index f38ca8c30..d738475e9 100644 Binary files a/graphics/pokemon/kabuto/anim_front.png and b/graphics/pokemon/kabuto/anim_front.png differ diff --git a/graphics/pokemon/kabuto/front.png b/graphics/pokemon/kabuto/front.png index 796fecab2..47d4d3df8 100644 Binary files a/graphics/pokemon/kabuto/front.png and b/graphics/pokemon/kabuto/front.png differ diff --git a/graphics/pokemon/kabuto/normal.pal b/graphics/pokemon/kabuto/normal.pal index e4b54c677..827f32924 100644 --- a/graphics/pokemon/kabuto/normal.pal +++ b/graphics/pokemon/kabuto/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 80 56 -208 168 128 -184 128 72 -8 16 16 -72 48 24 -160 112 64 -136 136 136 -248 152 160 -248 80 104 -136 96 72 -200 152 72 -248 192 88 -8 48 96 +120 80 40 +208 160 80 +192 128 40 +0 0 0 +72 40 0 +160 104 40 +192 192 200 +248 136 168 +248 72 128 +136 112 0 +184 160 0 +232 192 0 +16 56 104 88 64 0 -248 208 160 +248 232 88 diff --git a/graphics/pokemon/kabutops/anim_front.png b/graphics/pokemon/kabutops/anim_front.png index e02ba3313..5c7a73a85 100644 Binary files a/graphics/pokemon/kabutops/anim_front.png and b/graphics/pokemon/kabutops/anim_front.png differ diff --git a/graphics/pokemon/kabutops/front.png b/graphics/pokemon/kabutops/front.png index 5c4da1600..d89cb33ca 100644 Binary files a/graphics/pokemon/kabutops/front.png and b/graphics/pokemon/kabutops/front.png differ diff --git a/graphics/pokemon/kabutops/normal.pal b/graphics/pokemon/kabutops/normal.pal index d1c6ccac8..cdc54fd4c 100644 --- a/graphics/pokemon/kabutops/normal.pal +++ b/graphics/pokemon/kabutops/normal.pal @@ -3,15 +3,15 @@ JASC-PAL 16 152 208 160 144 144 144 -80 72 96 -216 208 208 +80 80 80 +224 224 208 16 16 16 -176 160 160 -192 152 104 -64 32 24 -176 120 72 -112 72 56 -152 104 64 +176 176 176 +200 160 112 +80 48 24 +184 136 64 +120 80 40 +152 112 48 248 248 248 224 224 208 0 0 0 diff --git a/graphics/pokemon/kadabra/anim_front.png b/graphics/pokemon/kadabra/anim_front.png index ad2375c59..91b225ed6 100644 Binary files a/graphics/pokemon/kadabra/anim_front.png and b/graphics/pokemon/kadabra/anim_front.png differ diff --git a/graphics/pokemon/kadabra/front.png b/graphics/pokemon/kadabra/front.png index 7d9405a15..a3e193116 100644 Binary files a/graphics/pokemon/kadabra/front.png and b/graphics/pokemon/kadabra/front.png differ diff --git a/graphics/pokemon/kadabra/normal.pal b/graphics/pokemon/kadabra/normal.pal index 33f5713b4..8082ea708 100644 --- a/graphics/pokemon/kadabra/normal.pal +++ b/graphics/pokemon/kadabra/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 96 24 -88 56 8 -240 208 80 -192 160 56 +136 112 16 +96 72 8 +248 232 40 +208 184 8 16 16 16 -192 104 80 -64 48 40 -160 128 112 -232 232 216 +224 56 40 +72 48 64 +152 120 120 +216 216 216 248 248 248 88 88 88 -104 80 72 -192 192 176 -248 232 168 -176 160 152 +104 72 64 +176 176 176 +248 248 184 +200 168 168 diff --git a/graphics/pokemon/kakuna/anim_front.png b/graphics/pokemon/kakuna/anim_front.png index 5b0537013..586e41597 100644 Binary files a/graphics/pokemon/kakuna/anim_front.png and b/graphics/pokemon/kakuna/anim_front.png differ diff --git a/graphics/pokemon/kakuna/front.png b/graphics/pokemon/kakuna/front.png index eeddca62b..679c4b3e0 100644 Binary files a/graphics/pokemon/kakuna/front.png and b/graphics/pokemon/kakuna/front.png differ diff --git a/graphics/pokemon/kakuna/normal.pal b/graphics/pokemon/kakuna/normal.pal index 36d4ef2e2..0e0f89567 100644 --- a/graphics/pokemon/kakuna/normal.pal +++ b/graphics/pokemon/kakuna/normal.pal @@ -2,12 +2,12 @@ JASC-PAL 0100 16 152 208 160 -208 168 72 -168 136 56 -240 216 96 -248 240 184 -128 104 40 -80 64 24 +200 152 16 +152 120 0 +240 200 48 +248 240 200 +120 88 0 +72 56 0 56 56 56 104 104 104 16 16 16 diff --git a/graphics/pokemon/kangaskhan/anim_front.png b/graphics/pokemon/kangaskhan/anim_front.png index 933606449..fe0ca6cb1 100644 Binary files a/graphics/pokemon/kangaskhan/anim_front.png and b/graphics/pokemon/kangaskhan/anim_front.png differ diff --git a/graphics/pokemon/kangaskhan/front.png b/graphics/pokemon/kangaskhan/front.png index a21da5940..03e477946 100644 Binary files a/graphics/pokemon/kangaskhan/front.png and b/graphics/pokemon/kangaskhan/front.png differ diff --git a/graphics/pokemon/kangaskhan/normal.pal b/graphics/pokemon/kangaskhan/normal.pal index 53a18732f..b59f028cf 100644 --- a/graphics/pokemon/kangaskhan/normal.pal +++ b/graphics/pokemon/kangaskhan/normal.pal @@ -12,7 +12,7 @@ JASC-PAL 200 200 200 192 144 128 136 104 96 -200 56 72 +168 16 0 216 184 168 184 184 248 128 128 168 diff --git a/graphics/pokemon/karrablast/anim_front.png b/graphics/pokemon/karrablast/anim_front.png index 5bd755b9a..218596a3c 100644 Binary files a/graphics/pokemon/karrablast/anim_front.png and b/graphics/pokemon/karrablast/anim_front.png differ diff --git a/graphics/pokemon/karrablast/front.png b/graphics/pokemon/karrablast/front.png index 4809f5367..4d2edf923 100644 Binary files a/graphics/pokemon/karrablast/front.png and b/graphics/pokemon/karrablast/front.png differ diff --git a/graphics/pokemon/karrablast/normal.pal b/graphics/pokemon/karrablast/normal.pal index 90da9068f..8b929294d 100644 --- a/graphics/pokemon/karrablast/normal.pal +++ b/graphics/pokemon/karrablast/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 96 144 -16 48 88 -40 128 200 -80 152 232 +56 80 128 +32 56 88 +48 104 248 +80 136 248 16 16 16 112 208 248 40 40 56 80 80 88 -80 144 168 -192 144 56 -248 208 96 -208 112 8 +64 144 168 +176 152 24 +248 216 24 +192 80 0 248 248 248 -104 80 40 +112 96 32 0 0 0 diff --git a/graphics/pokemon/kecleon/anim_front.png b/graphics/pokemon/kecleon/anim_front.png index 55b6430fa..43f947530 100644 Binary files a/graphics/pokemon/kecleon/anim_front.png and b/graphics/pokemon/kecleon/anim_front.png differ diff --git a/graphics/pokemon/kecleon/front.png b/graphics/pokemon/kecleon/front.png index a2d3857b3..2674a0d16 100644 Binary files a/graphics/pokemon/kecleon/front.png and b/graphics/pokemon/kecleon/front.png differ diff --git a/graphics/pokemon/kecleon/normal.pal b/graphics/pokemon/kecleon/normal.pal index 0f2042b43..881dfde03 100644 --- a/graphics/pokemon/kecleon/normal.pal +++ b/graphics/pokemon/kecleon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -144 120 80 -72 88 48 -16 16 16 -248 232 176 -192 160 88 -160 192 80 -128 152 56 -240 200 104 -208 224 96 -176 208 136 -208 232 168 -248 248 248 -192 64 104 -224 120 136 +136 120 88 +64 96 64 +0 0 0 +240 232 120 +184 160 80 +120 184 80 +96 144 80 +216 192 88 192 216 120 +160 216 112 +184 232 152 +248 248 248 +160 64 128 +208 96 168 +120 184 80 diff --git a/graphics/pokemon/keldeo/anim_front.png b/graphics/pokemon/keldeo/anim_front.png index 2e0c040d5..02b1af6ca 100644 Binary files a/graphics/pokemon/keldeo/anim_front.png and b/graphics/pokemon/keldeo/anim_front.png differ diff --git a/graphics/pokemon/keldeo/front.png b/graphics/pokemon/keldeo/front.png index c7a14c9d0..ffc17bf57 100644 Binary files a/graphics/pokemon/keldeo/front.png and b/graphics/pokemon/keldeo/front.png differ diff --git a/graphics/pokemon/keldeo/normal.pal b/graphics/pokemon/keldeo/normal.pal index 04f8532d2..bfdaee6f3 100644 --- a/graphics/pokemon/keldeo/normal.pal +++ b/graphics/pokemon/keldeo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 160 176 -96 32 16 +120 48 40 32 32 32 -144 48 32 -232 80 40 -112 104 72 -32 48 88 -248 240 160 -64 104 176 -192 176 104 -48 72 128 -80 144 168 -112 200 248 +168 48 32 +216 64 32 +104 104 80 +24 40 88 +248 240 184 +72 104 200 +176 168 128 +48 72 136 +32 120 160 +96 184 248 80 80 80 248 248 248 -184 224 248 +168 216 248 diff --git a/graphics/pokemon/keldeo/resolute/front.png b/graphics/pokemon/keldeo/resolute/front.png index 3567dd571..8e83b810a 100644 Binary files a/graphics/pokemon/keldeo/resolute/front.png and b/graphics/pokemon/keldeo/resolute/front.png differ diff --git a/graphics/pokemon/keldeo/resolute/normal.pal b/graphics/pokemon/keldeo/resolute/normal.pal index 8755c6d07..ebd6220fc 100644 --- a/graphics/pokemon/keldeo/resolute/normal.pal +++ b/graphics/pokemon/keldeo/resolute/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -255 163 177 +248 160 176 16 16 16 -74 82 82 -112 204 249 -255 159 63 -53 75 132 -147 53 36 -65 99 186 -237 75 35 -109 198 115 -32 49 91 -81 142 163 -255 245 160 -196 178 107 -255 255 255 -112 109 76 +72 80 80 +96 184 248 +248 144 32 +48 72 136 +128 56 40 +72 104 200 +216 72 48 +56 176 56 +24 48 96 +32 128 136 +248 240 168 +176 168 112 +248 248 248 +96 88 40 diff --git a/graphics/pokemon/kingdra/anim_front.png b/graphics/pokemon/kingdra/anim_front.png index 26de28c0f..a44cd577d 100644 Binary files a/graphics/pokemon/kingdra/anim_front.png and b/graphics/pokemon/kingdra/anim_front.png differ diff --git a/graphics/pokemon/kingdra/front.png b/graphics/pokemon/kingdra/front.png index ad460d1d5..bdce13253 100644 Binary files a/graphics/pokemon/kingdra/front.png and b/graphics/pokemon/kingdra/front.png differ diff --git a/graphics/pokemon/kingdra/normal.pal b/graphics/pokemon/kingdra/normal.pal index fc22768bc..363bc2365 100644 --- a/graphics/pokemon/kingdra/normal.pal +++ b/graphics/pokemon/kingdra/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 136 168 +64 136 192 16 16 16 144 216 240 -40 80 96 +64 88 136 88 176 216 184 240 248 248 248 248 -176 32 64 -128 128 112 -200 200 184 -248 192 104 -192 144 72 -120 80 24 +176 16 48 +128 128 128 +200 200 200 +248 224 184 +216 168 120 +128 104 96 0 0 0 0 0 0 diff --git a/graphics/pokemon/kingler/anim_front.png b/graphics/pokemon/kingler/anim_front.png index 68b62ea35..faf8692ed 100644 Binary files a/graphics/pokemon/kingler/anim_front.png and b/graphics/pokemon/kingler/anim_front.png differ diff --git a/graphics/pokemon/kingler/front.png b/graphics/pokemon/kingler/front.png index 33b8facfa..7d63b980c 100644 Binary files a/graphics/pokemon/kingler/front.png and b/graphics/pokemon/kingler/front.png differ diff --git a/graphics/pokemon/kingler/normal.pal b/graphics/pokemon/kingler/normal.pal index 5e87e4876..f04446375 100644 --- a/graphics/pokemon/kingler/normal.pal +++ b/graphics/pokemon/kingler/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -112 56 40 -240 136 72 -168 88 64 +128 40 8 +248 136 80 +176 88 72 16 16 16 -248 176 144 -48 40 40 -200 160 176 -88 72 72 -88 80 72 -248 216 208 -144 120 120 +240 192 136 +72 48 32 +216 168 152 +112 80 16 +88 64 48 +248 240 216 +160 104 64 248 248 248 184 184 224 0 0 0 diff --git a/graphics/pokemon/kirlia/anim_front.png b/graphics/pokemon/kirlia/anim_front.png index 5fce4981f..17813ae7f 100644 Binary files a/graphics/pokemon/kirlia/anim_front.png and b/graphics/pokemon/kirlia/anim_front.png differ diff --git a/graphics/pokemon/kirlia/front.png b/graphics/pokemon/kirlia/front.png index bdd17fa07..c1858f769 100644 Binary files a/graphics/pokemon/kirlia/front.png and b/graphics/pokemon/kirlia/front.png differ diff --git a/graphics/pokemon/kirlia/normal.pal b/graphics/pokemon/kirlia/normal.pal index 2e32eebee..fe98a72d6 100644 --- a/graphics/pokemon/kirlia/normal.pal +++ b/graphics/pokemon/kirlia/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 192 160 232 -120 48 56 -64 112 56 -232 152 152 -200 80 96 +128 40 72 +48 120 64 +248 120 144 +208 72 112 16 16 16 -176 224 168 -104 168 96 -128 200 120 +176 240 144 +112 184 112 +136 224 136 248 248 248 -128 112 168 -200 184 224 +112 128 168 +200 200 224 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/klang/anim_front.png b/graphics/pokemon/klang/anim_front.png index 09aca36c7..8bd05ce48 100644 Binary files a/graphics/pokemon/klang/anim_front.png and b/graphics/pokemon/klang/anim_front.png differ diff --git a/graphics/pokemon/klang/front.png b/graphics/pokemon/klang/front.png index c464483b5..6cfd82984 100644 Binary files a/graphics/pokemon/klang/front.png and b/graphics/pokemon/klang/front.png differ diff --git a/graphics/pokemon/klang/normal.pal b/graphics/pokemon/klang/normal.pal index 198a04193..7f77a59c2 100644 --- a/graphics/pokemon/klang/normal.pal +++ b/graphics/pokemon/klang/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 64 80 -40 48 48 +72 72 72 +40 40 40 16 16 16 -96 104 112 -192 192 216 -144 152 168 +104 104 112 +208 216 232 +160 160 168 248 248 248 -32 80 72 -24 168 160 -112 120 136 +48 96 96 +40 168 184 +112 112 136 16 56 64 -24 120 104 +40 136 144 144 144 176 0 0 0 0 0 0 diff --git a/graphics/pokemon/klink/anim_front.png b/graphics/pokemon/klink/anim_front.png index fb7fc123f..76c5db96b 100644 Binary files a/graphics/pokemon/klink/anim_front.png and b/graphics/pokemon/klink/anim_front.png differ diff --git a/graphics/pokemon/klink/front.png b/graphics/pokemon/klink/front.png index 9bcdde9fa..3af6a70b0 100644 Binary files a/graphics/pokemon/klink/front.png and b/graphics/pokemon/klink/front.png differ diff --git a/graphics/pokemon/klink/normal.pal b/graphics/pokemon/klink/normal.pal index baafa6967..8116f0a42 100644 --- a/graphics/pokemon/klink/normal.pal +++ b/graphics/pokemon/klink/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -64 64 80 +72 72 72 16 16 16 -96 104 112 -192 192 216 -40 48 48 -144 144 168 +104 104 112 +208 216 232 +40 40 40 +144 144 144 248 248 248 -24 120 104 -24 168 160 -152 152 176 +48 96 96 +40 168 184 +144 144 176 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/klinklang/anim_front.png b/graphics/pokemon/klinklang/anim_front.png index 20d59dbe5..1f0a60ec3 100644 Binary files a/graphics/pokemon/klinklang/anim_front.png and b/graphics/pokemon/klinklang/anim_front.png differ diff --git a/graphics/pokemon/klinklang/front.png b/graphics/pokemon/klinklang/front.png index 6ef6ee846..f49e126ee 100644 Binary files a/graphics/pokemon/klinklang/front.png and b/graphics/pokemon/klinklang/front.png differ diff --git a/graphics/pokemon/klinklang/normal.pal b/graphics/pokemon/klinklang/normal.pal index 1da9eae77..1a053507d 100644 --- a/graphics/pokemon/klinklang/normal.pal +++ b/graphics/pokemon/klinklang/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 64 80 -40 48 48 +72 72 72 +40 40 40 16 16 16 -96 104 112 -192 192 216 -144 152 168 +104 104 112 +208 216 232 +160 160 168 248 248 248 -32 80 72 -24 168 160 -112 120 136 +48 96 96 +40 168 184 +112 112 136 16 56 64 -24 120 104 +40 136 144 144 144 176 -136 80 64 -240 112 96 +144 72 72 +216 80 80 diff --git a/graphics/pokemon/koffing/anim_front.png b/graphics/pokemon/koffing/anim_front.png index 7021de3e6..3a5446cf1 100644 Binary files a/graphics/pokemon/koffing/anim_front.png and b/graphics/pokemon/koffing/anim_front.png differ diff --git a/graphics/pokemon/koffing/front.png b/graphics/pokemon/koffing/front.png index f147b1a2a..095559560 100644 Binary files a/graphics/pokemon/koffing/front.png and b/graphics/pokemon/koffing/front.png differ diff --git a/graphics/pokemon/koffing/normal.pal b/graphics/pokemon/koffing/normal.pal index ea5f80596..b1ecd15d4 100644 --- a/graphics/pokemon/koffing/normal.pal +++ b/graphics/pokemon/koffing/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 192 184 128 224 216 152 152 144 88 -96 88 136 -176 176 224 -144 144 208 -48 48 88 +112 88 152 +200 184 232 +168 144 200 +72 40 88 16 16 16 248 248 248 216 216 216 -144 88 104 -208 112 144 -192 176 168 -240 224 200 +176 88 120 +232 112 136 +200 200 168 +240 232 200 0 0 0 diff --git a/graphics/pokemon/krabby/anim_front.png b/graphics/pokemon/krabby/anim_front.png index 023b9cc6e..670f8b537 100644 Binary files a/graphics/pokemon/krabby/anim_front.png and b/graphics/pokemon/krabby/anim_front.png differ diff --git a/graphics/pokemon/krabby/front.png b/graphics/pokemon/krabby/front.png index 9a90c7cdf..7e919a9be 100644 Binary files a/graphics/pokemon/krabby/front.png and b/graphics/pokemon/krabby/front.png differ diff --git a/graphics/pokemon/krabby/normal.pal b/graphics/pokemon/krabby/normal.pal index dd22042ad..e95b7c742 100644 --- a/graphics/pokemon/krabby/normal.pal +++ b/graphics/pokemon/krabby/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -176 96 56 -240 136 72 +176 88 72 +248 136 80 248 176 144 -112 56 40 +128 40 8 16 16 16 -80 64 56 -200 160 176 -96 80 80 -160 128 128 -240 216 200 +88 64 48 +216 168 152 +128 96 32 +168 128 72 +248 240 216 248 248 248 216 216 216 0 0 0 diff --git a/graphics/pokemon/kricketot/anim_front.png b/graphics/pokemon/kricketot/anim_front.png index d8ea9fd56..7bf0fd397 100644 Binary files a/graphics/pokemon/kricketot/anim_front.png and b/graphics/pokemon/kricketot/anim_front.png differ diff --git a/graphics/pokemon/kricketot/front.png b/graphics/pokemon/kricketot/front.png index 5c7b05726..e158a0a79 100644 Binary files a/graphics/pokemon/kricketot/front.png and b/graphics/pokemon/kricketot/front.png differ diff --git a/graphics/pokemon/kricketot/normal.pal b/graphics/pokemon/kricketot/normal.pal index 1d3a0c765..290a5c95c 100644 --- a/graphics/pokemon/kricketot/normal.pal +++ b/graphics/pokemon/kricketot/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 64 72 -104 104 112 -136 144 152 +80 72 64 +120 112 96 +152 152 144 16 16 16 -120 120 56 -248 232 176 +136 104 8 +248 232 168 88 32 0 -176 64 40 -224 112 88 -216 184 120 -152 80 40 -128 48 24 +176 72 56 +224 104 96 +224 192 104 +144 80 24 +104 64 32 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/kricketune/anim_front.png b/graphics/pokemon/kricketune/anim_front.png index 1025b4cae..47cefb0a6 100644 Binary files a/graphics/pokemon/kricketune/anim_front.png and b/graphics/pokemon/kricketune/anim_front.png differ diff --git a/graphics/pokemon/kricketune/anim_frontf.png b/graphics/pokemon/kricketune/anim_frontf.png index b05954ee6..530ec9f76 100644 Binary files a/graphics/pokemon/kricketune/anim_frontf.png and b/graphics/pokemon/kricketune/anim_frontf.png differ diff --git a/graphics/pokemon/kricketune/front.png b/graphics/pokemon/kricketune/front.png index 7863c919d..65de302a5 100644 Binary files a/graphics/pokemon/kricketune/front.png and b/graphics/pokemon/kricketune/front.png differ diff --git a/graphics/pokemon/kricketune/normal.pal b/graphics/pokemon/kricketune/normal.pal index 59b3500de..8e79a2a57 100644 --- a/graphics/pokemon/kricketune/normal.pal +++ b/graphics/pokemon/kricketune/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 32 16 -232 88 64 -160 56 40 +98 49 0 +222 90 82 +156 65 49 16 16 16 -40 40 48 -56 64 64 -248 248 248 -88 88 104 -152 56 24 -240 208 136 -104 40 16 -184 152 96 -120 96 40 +49 41 57 +82 74 65 +255 255 255 +123 115 98 +148 82 24 +255 213 131 +90 57 32 +189 156 98 +139 106 8 0 0 0 0 0 0 diff --git a/graphics/pokemon/krokorok/anim_front.png b/graphics/pokemon/krokorok/anim_front.png index 1872a7068..43af22d23 100644 Binary files a/graphics/pokemon/krokorok/anim_front.png and b/graphics/pokemon/krokorok/anim_front.png differ diff --git a/graphics/pokemon/krokorok/front.png b/graphics/pokemon/krokorok/front.png index 4a54195b0..ab3c240f1 100644 Binary files a/graphics/pokemon/krokorok/front.png and b/graphics/pokemon/krokorok/front.png differ diff --git a/graphics/pokemon/krokorok/normal.pal b/graphics/pokemon/krokorok/normal.pal index 280c267cc..f330a4382 100644 --- a/graphics/pokemon/krokorok/normal.pal +++ b/graphics/pokemon/krokorok/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 104 72 -72 56 32 -192 152 104 -216 184 144 -48 48 56 -176 176 184 +139 115 49 +82 57 16 +197 156 90 +222 189 131 +41 41 49 +180 180 189 24 24 32 16 16 16 -88 88 104 -248 248 248 -152 80 96 -224 120 136 -192 192 192 +90 90 106 +255 255 255 +205 115 123 +238 148 164 +197 197 197 48 48 56 0 0 0 diff --git a/graphics/pokemon/krookodile/anim_front.png b/graphics/pokemon/krookodile/anim_front.png index 6412d21ff..530488b9b 100644 Binary files a/graphics/pokemon/krookodile/anim_front.png and b/graphics/pokemon/krookodile/anim_front.png differ diff --git a/graphics/pokemon/krookodile/front.png b/graphics/pokemon/krookodile/front.png index 084b2c5ce..3654e8360 100644 Binary files a/graphics/pokemon/krookodile/front.png and b/graphics/pokemon/krookodile/front.png differ diff --git a/graphics/pokemon/krookodile/normal.pal b/graphics/pokemon/krookodile/normal.pal index e0e18285b..2c4607a2d 100644 --- a/graphics/pokemon/krookodile/normal.pal +++ b/graphics/pokemon/krookodile/normal.pal @@ -6,8 +6,8 @@ JASC-PAL 80 40 32 136 48 64 24 24 32 -224 120 112 -192 80 80 +232 120 112 +200 80 80 16 16 16 80 80 96 248 248 248 @@ -15,5 +15,5 @@ JASC-PAL 80 80 88 200 112 128 136 144 136 -184 192 200 +192 200 200 0 0 0 diff --git a/graphics/pokemon/kyogre/anim_front.png b/graphics/pokemon/kyogre/anim_front.png index 8a5e88a6b..4cb8355bb 100644 Binary files a/graphics/pokemon/kyogre/anim_front.png and b/graphics/pokemon/kyogre/anim_front.png differ diff --git a/graphics/pokemon/kyogre/front.png b/graphics/pokemon/kyogre/front.png index 3dd7cd90b..59ceadbf7 100644 Binary files a/graphics/pokemon/kyogre/front.png and b/graphics/pokemon/kyogre/front.png differ diff --git a/graphics/pokemon/kyogre/normal.pal b/graphics/pokemon/kyogre/normal.pal index cf30ae76c..989581da2 100644 --- a/graphics/pokemon/kyogre/normal.pal +++ b/graphics/pokemon/kyogre/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 96 112 +88 80 104 16 16 16 216 216 216 -128 144 168 -24 40 64 -24 88 160 -48 120 176 -224 32 56 -16 56 112 -160 24 72 +128 144 160 +48 56 112 +56 96 176 +72 128 208 +240 16 16 +40 80 144 +160 48 96 112 40 56 -112 160 216 -168 200 240 -200 216 232 -248 200 80 +88 160 248 +128 200 248 +184 200 208 +248 200 48 diff --git a/graphics/pokemon/kyurem/anim_front.png b/graphics/pokemon/kyurem/anim_front.png index 6cdcb4b74..19f0080b9 100644 Binary files a/graphics/pokemon/kyurem/anim_front.png and b/graphics/pokemon/kyurem/anim_front.png differ diff --git a/graphics/pokemon/kyurem/black/anim_front.png b/graphics/pokemon/kyurem/black/anim_front.png index 71013f7a3..97c8fa214 100644 Binary files a/graphics/pokemon/kyurem/black/anim_front.png and b/graphics/pokemon/kyurem/black/anim_front.png differ diff --git a/graphics/pokemon/kyurem/black/front.png b/graphics/pokemon/kyurem/black/front.png index ccba4d35a..45b31238f 100644 Binary files a/graphics/pokemon/kyurem/black/front.png and b/graphics/pokemon/kyurem/black/front.png differ diff --git a/graphics/pokemon/kyurem/black/normal.pal b/graphics/pokemon/kyurem/black/normal.pal index bdb3fe453..9dcc1bb5a 100644 --- a/graphics/pokemon/kyurem/black/normal.pal +++ b/graphics/pokemon/kyurem/black/normal.pal @@ -3,9 +3,9 @@ JASC-PAL 16 153 210 164 36 39 43 -173 228 247 +184 224 248 16 16 16 -123 157 160 +128 152 184 156 166 173 57 62 66 60 84 96 @@ -13,7 +13,7 @@ JASC-PAL 23 29 33 0 197 255 0 106 189 -255 212 25 -132 99 0 +248 224 0 +136 112 40 71 78 89 230 230 222 diff --git a/graphics/pokemon/kyurem/front.png b/graphics/pokemon/kyurem/front.png index bf93cdbc6..c558f9172 100644 Binary files a/graphics/pokemon/kyurem/front.png and b/graphics/pokemon/kyurem/front.png differ diff --git a/graphics/pokemon/kyurem/normal.pal b/graphics/pokemon/kyurem/normal.pal index 2aa2a657a..f64ed2443 100644 --- a/graphics/pokemon/kyurem/normal.pal +++ b/graphics/pokemon/kyurem/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 128 128 -72 80 104 -144 176 184 -200 232 240 -120 112 120 -240 232 136 -168 224 232 -64 72 88 +104 128 144 +16 56 80 +160 176 200 +216 240 248 +112 112 120 +248 224 0 +184 224 248 +64 64 80 16 16 16 144 152 168 -152 136 80 -200 184 80 +136 112 40 +200 176 0 248 248 248 200 200 200 -0 0 0 +112 112 120 diff --git a/graphics/pokemon/kyurem/white/anim_front.png b/graphics/pokemon/kyurem/white/anim_front.png index b55d6c89a..0f2185688 100644 Binary files a/graphics/pokemon/kyurem/white/anim_front.png and b/graphics/pokemon/kyurem/white/anim_front.png differ diff --git a/graphics/pokemon/kyurem/white/front.png b/graphics/pokemon/kyurem/white/front.png index 7e7314e76..7b587c7d2 100644 Binary files a/graphics/pokemon/kyurem/white/front.png and b/graphics/pokemon/kyurem/white/front.png differ diff --git a/graphics/pokemon/kyurem/white/normal.pal b/graphics/pokemon/kyurem/white/normal.pal index cc136a09e..560f65177 100644 --- a/graphics/pokemon/kyurem/white/normal.pal +++ b/graphics/pokemon/kyurem/white/normal.pal @@ -2,9 +2,9 @@ JASC-PAL 0100 16 153 210 164 -173 228 247 -123 157 160 -255 255 255 +184 224 248 +128 152 184 +248 248 248 16 16 16 156 166 173 71 78 89 @@ -12,8 +12,8 @@ JASC-PAL 60 84 96 230 74 66 148 41 33 -198 181 169 -122 109 101 +184 184 208 +128 128 128 255 173 99 -255 212 25 +248 224 0 255 222 58 diff --git a/graphics/pokemon/lairon/anim_front.png b/graphics/pokemon/lairon/anim_front.png index 3e3a0850a..79c345af4 100644 Binary files a/graphics/pokemon/lairon/anim_front.png and b/graphics/pokemon/lairon/anim_front.png differ diff --git a/graphics/pokemon/lairon/front.png b/graphics/pokemon/lairon/front.png index 0242ce501..de830e306 100644 Binary files a/graphics/pokemon/lairon/front.png and b/graphics/pokemon/lairon/front.png differ diff --git a/graphics/pokemon/lairon/normal.pal b/graphics/pokemon/lairon/normal.pal index 680a9a6ba..8923b7cee 100644 --- a/graphics/pokemon/lairon/normal.pal +++ b/graphics/pokemon/lairon/normal.pal @@ -3,9 +3,9 @@ JASC-PAL 16 152 208 160 104 104 120 -120 120 144 +120 128 144 248 248 248 -192 192 216 +192 208 216 16 16 16 64 72 80 152 152 176 @@ -13,7 +13,7 @@ JASC-PAL 104 104 104 168 168 168 136 136 136 -80 184 224 -152 88 120 -208 152 176 +104 184 248 +168 56 72 +224 104 104 104 104 104 diff --git a/graphics/pokemon/lampent/anim_front.png b/graphics/pokemon/lampent/anim_front.png index 5f4a228ad..766dc2d32 100644 Binary files a/graphics/pokemon/lampent/anim_front.png and b/graphics/pokemon/lampent/anim_front.png differ diff --git a/graphics/pokemon/lampent/front.png b/graphics/pokemon/lampent/front.png index c6c1fdd93..2d249ae93 100644 Binary files a/graphics/pokemon/lampent/front.png and b/graphics/pokemon/lampent/front.png differ diff --git a/graphics/pokemon/lampent/normal.pal b/graphics/pokemon/lampent/normal.pal index ef554b7fe..d7bae894c 100644 --- a/graphics/pokemon/lampent/normal.pal +++ b/graphics/pokemon/lampent/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -40 40 40 -48 56 64 -168 192 216 -112 112 200 -112 120 136 -136 120 160 -160 168 216 -136 120 48 -240 208 56 -192 224 248 +0 0 0 +48 48 48 +72 72 72 +192 200 208 +128 104 224 +128 128 128 +144 136 168 +192 184 240 +120 104 8 +248 224 32 +216 224 232 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/landorus/anim_front.png b/graphics/pokemon/landorus/anim_front.png index db5da4a39..762c5cd2e 100644 Binary files a/graphics/pokemon/landorus/anim_front.png and b/graphics/pokemon/landorus/anim_front.png differ diff --git a/graphics/pokemon/landorus/back.png b/graphics/pokemon/landorus/back.png index 35216e5fe..f70121ac4 100644 Binary files a/graphics/pokemon/landorus/back.png and b/graphics/pokemon/landorus/back.png differ diff --git a/graphics/pokemon/landorus/front.png b/graphics/pokemon/landorus/front.png index 074644e0d..e16bea46b 100644 Binary files a/graphics/pokemon/landorus/front.png and b/graphics/pokemon/landorus/front.png differ diff --git a/graphics/pokemon/landorus/normal.pal b/graphics/pokemon/landorus/normal.pal index 228b5ffa5..bbacdca83 100644 --- a/graphics/pokemon/landorus/normal.pal +++ b/graphics/pokemon/landorus/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -112 96 88 -16 16 16 -248 248 248 -176 160 160 -80 40 48 -176 80 88 -152 88 56 -240 128 72 -56 48 40 -248 192 136 -56 48 48 -88 64 56 -120 96 80 -112 56 80 +153 204 153 +128 96 72 +17 17 17 +255 255 255 +176 176 184 +85 34 51 +184 72 80 +160 88 56 +240 120 64 +51 51 34 +248 200 96 +51 51 51 +96 64 48 +119 51 85 +128 128 128 0 0 0 diff --git a/graphics/pokemon/landorus/shiny.pal b/graphics/pokemon/landorus/shiny.pal index a1c09aa11..25f3ac5c9 100644 --- a/graphics/pokemon/landorus/shiny.pal +++ b/graphics/pokemon/landorus/shiny.pal @@ -15,5 +15,5 @@ JASC-PAL 56 32 16 72 48 32 120 72 40 -168 80 32 +128 128 128 0 0 0 diff --git a/graphics/pokemon/landorus/therian/anim_front.png b/graphics/pokemon/landorus/therian/anim_front.png index cbe0fa001..2ea9efd8b 100644 Binary files a/graphics/pokemon/landorus/therian/anim_front.png and b/graphics/pokemon/landorus/therian/anim_front.png differ diff --git a/graphics/pokemon/landorus/therian/front.png b/graphics/pokemon/landorus/therian/front.png index 81f5550c2..47f617e4f 100644 Binary files a/graphics/pokemon/landorus/therian/front.png and b/graphics/pokemon/landorus/therian/front.png differ diff --git a/graphics/pokemon/landorus/therian/normal.pal b/graphics/pokemon/landorus/therian/normal.pal index 92f0fccd2..e2e389aba 100644 --- a/graphics/pokemon/landorus/therian/normal.pal +++ b/graphics/pokemon/landorus/therian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 72 56 +96 64 48 16 16 16 -208 88 96 -136 112 88 -56 40 32 -120 112 104 +184 72 80 +128 96 72 +72 40 24 +112 112 112 248 248 248 -192 176 168 -104 40 48 -88 48 32 -248 136 56 -168 88 40 -136 56 64 -240 192 112 +176 176 184 +112 48 56 +96 48 16 +240 120 64 +160 88 56 +144 48 64 +248 200 96 0 0 0 diff --git a/graphics/pokemon/lanturn/anim_front.png b/graphics/pokemon/lanturn/anim_front.png index 339e7f476..69166b66b 100644 Binary files a/graphics/pokemon/lanturn/anim_front.png and b/graphics/pokemon/lanturn/anim_front.png differ diff --git a/graphics/pokemon/lanturn/front.png b/graphics/pokemon/lanturn/front.png index 714ac438c..d17887059 100644 Binary files a/graphics/pokemon/lanturn/front.png and b/graphics/pokemon/lanturn/front.png differ diff --git a/graphics/pokemon/lanturn/normal.pal b/graphics/pokemon/lanturn/normal.pal index be80edb4c..792d90f29 100644 --- a/graphics/pokemon/lanturn/normal.pal +++ b/graphics/pokemon/lanturn/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 136 120 88 -248 224 120 -224 192 96 -88 112 168 -144 176 240 -192 160 80 +248 216 96 +224 184 48 +88 112 192 +144 160 224 +176 136 32 48 56 96 -112 136 216 +120 152 216 16 16 16 248 248 248 80 64 40 -184 200 240 -120 80 88 -224 112 112 -224 64 40 +184 192 232 +160 48 72 +232 96 88 +168 0 0 diff --git a/graphics/pokemon/lapras/anim_front.png b/graphics/pokemon/lapras/anim_front.png index f96adda66..394a3029d 100644 Binary files a/graphics/pokemon/lapras/anim_front.png and b/graphics/pokemon/lapras/anim_front.png differ diff --git a/graphics/pokemon/lapras/front.png b/graphics/pokemon/lapras/front.png index 81cb4f41a..f831c07ba 100644 Binary files a/graphics/pokemon/lapras/front.png and b/graphics/pokemon/lapras/front.png differ diff --git a/graphics/pokemon/lapras/normal.pal b/graphics/pokemon/lapras/normal.pal index ed20b3cfe..cc9c65f46 100644 --- a/graphics/pokemon/lapras/normal.pal +++ b/graphics/pokemon/lapras/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 64 96 +24 64 80 8 8 8 -56 168 216 -40 128 160 -104 192 232 +64 160 224 +56 120 160 +112 192 240 232 232 240 104 80 64 144 136 160 -216 184 144 +216 192 128 136 160 144 80 80 104 168 176 200 -248 224 176 -173 117 147 +240 216 168 +232 128 120 0 0 0 diff --git a/graphics/pokemon/larvesta/anim_front.png b/graphics/pokemon/larvesta/anim_front.png index a727183a9..9c3ddea2a 100644 Binary files a/graphics/pokemon/larvesta/anim_front.png and b/graphics/pokemon/larvesta/anim_front.png differ diff --git a/graphics/pokemon/larvesta/front.png b/graphics/pokemon/larvesta/front.png index 98f44e035..b2e83baac 100644 Binary files a/graphics/pokemon/larvesta/front.png and b/graphics/pokemon/larvesta/front.png differ diff --git a/graphics/pokemon/larvesta/normal.pal b/graphics/pokemon/larvesta/normal.pal index 4d561ca5f..9cebf0069 100644 --- a/graphics/pokemon/larvesta/normal.pal +++ b/graphics/pokemon/larvesta/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 56 40 -176 80 80 -232 104 72 +104 32 0 +168 40 8 +208 56 24 16 16 24 -112 112 136 +128 128 136 248 248 248 -152 160 176 -80 72 80 -200 208 224 -24 192 240 -0 152 192 -160 120 72 -72 56 40 -128 88 48 -56 48 48 +176 176 176 +80 80 88 +216 216 224 +0 208 248 +0 136 216 +176 120 56 +88 64 16 +136 96 40 +48 48 56 diff --git a/graphics/pokemon/larvitar/anim_front.png b/graphics/pokemon/larvitar/anim_front.png index aa5bc0cf7..5a52aa731 100644 Binary files a/graphics/pokemon/larvitar/anim_front.png and b/graphics/pokemon/larvitar/anim_front.png differ diff --git a/graphics/pokemon/larvitar/front.png b/graphics/pokemon/larvitar/front.png index 1cdc121f5..1974d2843 100644 Binary files a/graphics/pokemon/larvitar/front.png and b/graphics/pokemon/larvitar/front.png differ diff --git a/graphics/pokemon/larvitar/normal.pal b/graphics/pokemon/larvitar/normal.pal index f4c8732de..abd92bbc4 100644 --- a/graphics/pokemon/larvitar/normal.pal +++ b/graphics/pokemon/larvitar/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -64 80 40 -168 208 136 -128 144 96 +72 88 56 +168 200 152 +120 152 96 16 16 16 248 248 248 -184 56 48 -216 104 104 -80 16 16 -128 40 40 +216 40 40 +232 120 136 +104 0 16 +168 24 24 192 192 192 -130 67 88 -188 103 103 +168 16 0 +232 32 24 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/latias/anim_front.png b/graphics/pokemon/latias/anim_front.png index 8f9576707..658003aea 100644 Binary files a/graphics/pokemon/latias/anim_front.png and b/graphics/pokemon/latias/anim_front.png differ diff --git a/graphics/pokemon/latias/front.png b/graphics/pokemon/latias/front.png index 9f01891c3..cb84e81c0 100644 Binary files a/graphics/pokemon/latias/front.png and b/graphics/pokemon/latias/front.png differ diff --git a/graphics/pokemon/latias/normal.pal b/graphics/pokemon/latias/normal.pal index 684fb2555..daefa4d8a 100644 --- a/graphics/pokemon/latias/normal.pal +++ b/graphics/pokemon/latias/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 120 152 +120 120 160 232 232 248 16 16 16 -192 208 232 +200 200 232 152 168 200 -120 48 64 -232 120 112 -168 72 80 +136 40 72 +248 96 96 +184 64 64 216 144 160 -192 88 88 -200 152 72 +200 72 80 +200 160 72 248 248 248 -240 200 144 -144 200 224 -64 144 176 +248 200 88 +112 168 248 +64 120 200 diff --git a/graphics/pokemon/latios/anim_front.png b/graphics/pokemon/latios/anim_front.png index dcfd19658..5e952f156 100644 Binary files a/graphics/pokemon/latios/anim_front.png and b/graphics/pokemon/latios/anim_front.png differ diff --git a/graphics/pokemon/latios/front.png b/graphics/pokemon/latios/front.png index 9455b9aba..283e968b7 100644 Binary files a/graphics/pokemon/latios/front.png and b/graphics/pokemon/latios/front.png differ diff --git a/graphics/pokemon/latios/normal.pal b/graphics/pokemon/latios/normal.pal index 1486bd38d..6dee309f1 100644 --- a/graphics/pokemon/latios/normal.pal +++ b/graphics/pokemon/latios/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 152 128 144 104 80 104 -224 208 208 -176 168 168 +224 216 208 +176 176 168 232 224 224 -32 104 160 +72 96 176 16 16 16 32 64 96 -112 176 224 +80 168 248 160 216 240 -64 136 192 -200 48 88 +80 112 216 +200 56 88 248 248 248 -248 112 120 +248 88 80 0 0 0 diff --git a/graphics/pokemon/leafeon/anim_front.png b/graphics/pokemon/leafeon/anim_front.png index d6b2958d4..b3e39fc61 100644 Binary files a/graphics/pokemon/leafeon/anim_front.png and b/graphics/pokemon/leafeon/anim_front.png differ diff --git a/graphics/pokemon/leafeon/front.png b/graphics/pokemon/leafeon/front.png index 9d6026250..7ea19f1b5 100644 Binary files a/graphics/pokemon/leafeon/front.png and b/graphics/pokemon/leafeon/front.png differ diff --git a/graphics/pokemon/leafeon/normal.pal b/graphics/pokemon/leafeon/normal.pal index d5c2bf08c..8ebfc35cf 100644 --- a/graphics/pokemon/leafeon/normal.pal +++ b/graphics/pokemon/leafeon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -56 112 80 -128 200 152 -80 160 112 +48 96 88 +104 184 136 +48 152 112 16 16 16 -104 64 24 -176 104 32 +88 64 32 +144 96 48 56 40 24 -88 88 64 -128 160 112 -248 224 160 -208 176 120 -128 104 72 -176 152 104 +96 80 64 +136 168 120 +232 208 152 +208 176 112 +128 104 64 +184 144 96 232 248 248 -0 0 0 +64 56 64 diff --git a/graphics/pokemon/leavanny/anim_front.png b/graphics/pokemon/leavanny/anim_front.png index f39280c35..103cdd860 100644 Binary files a/graphics/pokemon/leavanny/anim_front.png and b/graphics/pokemon/leavanny/anim_front.png differ diff --git a/graphics/pokemon/leavanny/front.png b/graphics/pokemon/leavanny/front.png index 109dbfd7f..fe45f277d 100644 Binary files a/graphics/pokemon/leavanny/front.png and b/graphics/pokemon/leavanny/front.png differ diff --git a/graphics/pokemon/leavanny/normal.pal b/graphics/pokemon/leavanny/normal.pal index 2c0b25863..51a8d96f7 100644 --- a/graphics/pokemon/leavanny/normal.pal +++ b/graphics/pokemon/leavanny/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -128 112 24 -248 224 96 -72 96 48 -136 192 64 -104 144 56 -248 232 160 -128 56 48 -248 248 248 -248 80 72 -192 168 72 -8 56 8 -48 104 48 -64 136 56 +0 0 0 +136 120 16 +248 240 32 +64 96 48 +120 200 8 +88 152 48 +248 248 152 +128 48 64 +248 248 248 +248 48 72 +184 168 16 +16 64 56 +24 112 72 +40 152 80 0 0 0 diff --git a/graphics/pokemon/ledian/anim_front.png b/graphics/pokemon/ledian/anim_front.png index a6121329b..57d90f93b 100644 Binary files a/graphics/pokemon/ledian/anim_front.png and b/graphics/pokemon/ledian/anim_front.png differ diff --git a/graphics/pokemon/ledian/front.png b/graphics/pokemon/ledian/front.png index 0c67c611f..a51f2884e 100644 Binary files a/graphics/pokemon/ledian/front.png and b/graphics/pokemon/ledian/front.png differ diff --git a/graphics/pokemon/ledian/normal.pal b/graphics/pokemon/ledian/normal.pal index 782d0bea6..370e37e2c 100644 --- a/graphics/pokemon/ledian/normal.pal +++ b/graphics/pokemon/ledian/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -64 64 64 -168 32 56 -248 112 136 -104 8 24 -232 56 88 -16 48 88 +80 80 80 +192 56 88 +248 128 128 +112 32 16 +248 72 64 +0 64 112 248 248 248 -32 104 160 -176 184 176 -136 128 88 -192 168 104 -248 224 136 -224 232 224 -64 64 64 +0 128 184 +176 176 176 +160 120 0 +200 176 56 +240 224 112 +208 208 208 +80 80 80 diff --git a/graphics/pokemon/ledyba/anim_front.png b/graphics/pokemon/ledyba/anim_front.png index 8e279aac9..38bdd1df2 100644 Binary files a/graphics/pokemon/ledyba/anim_front.png and b/graphics/pokemon/ledyba/anim_front.png differ diff --git a/graphics/pokemon/ledyba/front.png b/graphics/pokemon/ledyba/front.png index 0f9954371..10e52bbc7 100644 Binary files a/graphics/pokemon/ledyba/front.png and b/graphics/pokemon/ledyba/front.png differ diff --git a/graphics/pokemon/ledyba/normal.pal b/graphics/pokemon/ledyba/normal.pal index 0d2673a79..eb13383da 100644 --- a/graphics/pokemon/ledyba/normal.pal +++ b/graphics/pokemon/ledyba/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -88 88 88 -96 40 24 -176 80 48 -248 112 56 -240 168 112 +88 80 80 +104 40 24 +176 64 48 +240 88 24 +248 152 32 208 200 200 248 248 248 168 160 160 -208 184 120 -248 224 144 -248 240 176 -128 112 72 -96 128 192 -80 80 112 +208 176 120 +248 224 152 +248 248 184 +160 120 0 +104 96 176 +72 48 112 diff --git a/graphics/pokemon/lickilicky/anim_front.png b/graphics/pokemon/lickilicky/anim_front.png index 4583e6786..38f23ec49 100644 Binary files a/graphics/pokemon/lickilicky/anim_front.png and b/graphics/pokemon/lickilicky/anim_front.png differ diff --git a/graphics/pokemon/lickilicky/front.png b/graphics/pokemon/lickilicky/front.png index e13d04878..e9905f1a6 100644 Binary files a/graphics/pokemon/lickilicky/front.png and b/graphics/pokemon/lickilicky/front.png differ diff --git a/graphics/pokemon/lickilicky/normal.pal b/graphics/pokemon/lickilicky/normal.pal index f2b0888bc..b97fcd3ec 100644 --- a/graphics/pokemon/lickilicky/normal.pal +++ b/graphics/pokemon/lickilicky/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 72 96 -176 96 112 +144 64 96 +184 80 112 248 160 176 -224 120 144 +224 112 144 16 16 16 -88 48 56 +96 40 56 248 248 248 -128 64 64 -232 128 128 -176 96 96 -240 176 160 -200 184 176 -152 128 120 -240 208 96 -192 160 56 +144 56 64 +240 120 88 +192 88 88 +248 176 136 +208 200 216 +136 136 168 +248 224 120 +200 168 72 diff --git a/graphics/pokemon/lickitung/anim_front.png b/graphics/pokemon/lickitung/anim_front.png index f9fc845b5..1a6c1aa9c 100644 Binary files a/graphics/pokemon/lickitung/anim_front.png and b/graphics/pokemon/lickitung/anim_front.png differ diff --git a/graphics/pokemon/lickitung/front.png b/graphics/pokemon/lickitung/front.png index 6fe4a06ad..6a7177e79 100644 Binary files a/graphics/pokemon/lickitung/front.png and b/graphics/pokemon/lickitung/front.png differ diff --git a/graphics/pokemon/lickitung/normal.pal b/graphics/pokemon/lickitung/normal.pal index 71caa52c5..520baee77 100644 --- a/graphics/pokemon/lickitung/normal.pal +++ b/graphics/pokemon/lickitung/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 88 104 -88 56 72 -208 128 136 -248 160 176 +176 64 80 +120 24 16 +232 112 136 +248 152 168 248 248 248 -248 184 200 +248 200 208 200 192 200 -216 192 144 +224 208 112 16 16 16 -152 88 104 -192 136 152 -240 184 200 -248 232 168 -112 104 80 +152 72 96 +208 136 168 +248 184 216 +248 248 176 +128 120 32 0 0 0 diff --git a/graphics/pokemon/liepard/anim_front.png b/graphics/pokemon/liepard/anim_front.png index e89dd63dc..ce2932e71 100644 Binary files a/graphics/pokemon/liepard/anim_front.png and b/graphics/pokemon/liepard/anim_front.png differ diff --git a/graphics/pokemon/liepard/front.png b/graphics/pokemon/liepard/front.png index 3d3962ead..2a9d2abca 100644 Binary files a/graphics/pokemon/liepard/front.png and b/graphics/pokemon/liepard/front.png differ diff --git a/graphics/pokemon/liepard/normal.pal b/graphics/pokemon/liepard/normal.pal index ef4c0822a..4e448f1b4 100644 --- a/graphics/pokemon/liepard/normal.pal +++ b/graphics/pokemon/liepard/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 64 104 +88 64 112 48 32 56 -112 80 144 +128 96 144 16 16 16 -152 64 80 -224 96 128 -200 152 64 +184 56 128 +224 120 152 +200 160 24 136 120 8 -248 200 88 +240 208 64 248 248 248 -40 112 48 +8 120 64 200 200 200 -80 64 24 -72 176 88 +88 80 16 +0 192 88 0 0 0 diff --git a/graphics/pokemon/lileep/anim_front.png b/graphics/pokemon/lileep/anim_front.png index 8845eb190..87ba440c2 100644 Binary files a/graphics/pokemon/lileep/anim_front.png and b/graphics/pokemon/lileep/anim_front.png differ diff --git a/graphics/pokemon/lileep/front.png b/graphics/pokemon/lileep/front.png index d934bde9c..21f36a6ea 100644 Binary files a/graphics/pokemon/lileep/front.png and b/graphics/pokemon/lileep/front.png differ diff --git a/graphics/pokemon/lileep/normal.pal b/graphics/pokemon/lileep/normal.pal index 0d0f54a6c..0de38554e 100644 --- a/graphics/pokemon/lileep/normal.pal +++ b/graphics/pokemon/lileep/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 56 72 -240 176 184 -200 136 136 -176 96 112 -72 48 112 -112 96 160 -8 8 8 -64 64 72 -88 72 48 -240 216 128 -184 152 96 -152 128 200 -184 168 216 -120 56 72 +128 56 88 +232 168 176 +200 112 144 +184 80 128 +96 56 128 +112 96 176 0 0 0 +56 56 64 +104 80 32 +232 208 96 +208 160 48 +152 128 200 +176 168 224 +112 112 112 +128 56 88 diff --git a/graphics/pokemon/lilligant/anim_front.png b/graphics/pokemon/lilligant/anim_front.png index 064196051..0c8a907e7 100644 Binary files a/graphics/pokemon/lilligant/anim_front.png and b/graphics/pokemon/lilligant/anim_front.png differ diff --git a/graphics/pokemon/lilligant/front.png b/graphics/pokemon/lilligant/front.png index bceb122ba..170a97c17 100644 Binary files a/graphics/pokemon/lilligant/front.png and b/graphics/pokemon/lilligant/front.png differ diff --git a/graphics/pokemon/lilligant/normal.pal b/graphics/pokemon/lilligant/normal.pal index 07030e321..0f90d8380 100644 --- a/graphics/pokemon/lilligant/normal.pal +++ b/graphics/pokemon/lilligant/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -96 64 16 -224 120 64 -160 88 56 -168 144 64 -232 208 72 -32 64 32 -48 120 48 +112 64 32 +248 104 56 +184 96 56 +184 160 80 +248 216 64 +48 88 48 +72 128 72 248 176 152 248 248 248 -64 176 64 -56 80 32 -176 224 120 -128 160 96 -184 168 168 +56 168 56 +80 96 40 +192 232 120 +152 176 96 +200 192 184 diff --git a/graphics/pokemon/lillipup/anim_front.png b/graphics/pokemon/lillipup/anim_front.png index 5c3be492e..0a68cc533 100644 Binary files a/graphics/pokemon/lillipup/anim_front.png and b/graphics/pokemon/lillipup/anim_front.png differ diff --git a/graphics/pokemon/lillipup/front.png b/graphics/pokemon/lillipup/front.png index 5e7b88b3e..50bf52ed1 100644 Binary files a/graphics/pokemon/lillipup/front.png and b/graphics/pokemon/lillipup/front.png differ diff --git a/graphics/pokemon/lillipup/normal.pal b/graphics/pokemon/lillipup/normal.pal index cc49552dd..37d2ca02b 100644 --- a/graphics/pokemon/lillipup/normal.pal +++ b/graphics/pokemon/lillipup/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 96 72 -216 136 96 -80 48 48 -16 16 16 -248 208 136 -96 80 56 -176 144 96 +144 88 64 +216 144 88 +72 48 16 +0 0 0 +232 200 144 +96 72 24 +176 136 72 200 200 200 -56 56 56 -88 88 80 +56 64 72 +80 88 112 248 248 248 -24 24 24 -232 96 88 -56 72 120 -40 48 72 +40 40 40 +216 88 88 +144 88 64 +0 0 0 diff --git a/graphics/pokemon/linoone/anim_front.png b/graphics/pokemon/linoone/anim_front.png index e5d8553a0..f2882dd04 100644 Binary files a/graphics/pokemon/linoone/anim_front.png and b/graphics/pokemon/linoone/anim_front.png differ diff --git a/graphics/pokemon/linoone/front.png b/graphics/pokemon/linoone/front.png index abbcda76a..955510bdd 100644 Binary files a/graphics/pokemon/linoone/front.png and b/graphics/pokemon/linoone/front.png differ diff --git a/graphics/pokemon/linoone/normal.pal b/graphics/pokemon/linoone/normal.pal index b9225a728..4f2dce5d1 100644 --- a/graphics/pokemon/linoone/normal.pal +++ b/graphics/pokemon/linoone/normal.pal @@ -3,11 +3,11 @@ JASC-PAL 16 152 208 160 88 80 72 -136 104 80 -160 128 112 +128 104 88 +160 136 120 184 160 144 216 200 184 -96 72 56 +88 72 56 24 24 24 144 128 120 48 120 152 diff --git a/graphics/pokemon/litwick/anim_front.png b/graphics/pokemon/litwick/anim_front.png index 9fdac284a..10189cd52 100644 Binary files a/graphics/pokemon/litwick/anim_front.png and b/graphics/pokemon/litwick/anim_front.png differ diff --git a/graphics/pokemon/litwick/front.png b/graphics/pokemon/litwick/front.png index 184132b93..e0b19ccb6 100644 Binary files a/graphics/pokemon/litwick/front.png and b/graphics/pokemon/litwick/front.png differ diff --git a/graphics/pokemon/litwick/normal.pal b/graphics/pokemon/litwick/normal.pal index 79059ac37..0169128b2 100644 --- a/graphics/pokemon/litwick/normal.pal +++ b/graphics/pokemon/litwick/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 56 112 -104 104 184 +56 40 112 +112 80 224 152 136 224 -168 192 224 -16 16 16 -88 104 128 +192 184 240 +0 0 0 +112 112 112 248 248 248 -168 184 224 -224 232 248 -136 128 56 -248 208 56 -168 184 224 +200 192 200 +224 224 248 +120 104 8 +248 224 32 +0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/lombre/anim_front.png b/graphics/pokemon/lombre/anim_front.png index de10b0b67..cb0fef9c4 100644 Binary files a/graphics/pokemon/lombre/anim_front.png and b/graphics/pokemon/lombre/anim_front.png differ diff --git a/graphics/pokemon/lombre/front.png b/graphics/pokemon/lombre/front.png index ee45798f2..022c1c008 100644 Binary files a/graphics/pokemon/lombre/front.png and b/graphics/pokemon/lombre/front.png differ diff --git a/graphics/pokemon/lombre/normal.pal b/graphics/pokemon/lombre/normal.pal index 8b0be5823..c8271ae00 100644 --- a/graphics/pokemon/lombre/normal.pal +++ b/graphics/pokemon/lombre/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 192 8 -48 80 32 -16 16 16 -80 152 40 -120 176 56 -168 208 112 -248 248 248 -128 136 152 -72 136 112 -128 184 160 -152 48 56 -216 96 96 -240 128 136 -176 224 200 +65 82 32 +0 0 0 +106 139 57 +139 172 57 +172 213 98 +255 255 255 +131 139 156 +74 148 98 +123 189 156 +148 49 65 +205 65 98 +255 115 148 +172 222 180 0 0 0 0 0 0 diff --git a/graphics/pokemon/lopunny/anim_front.png b/graphics/pokemon/lopunny/anim_front.png index 96be9f7c1..5bef71243 100644 Binary files a/graphics/pokemon/lopunny/anim_front.png and b/graphics/pokemon/lopunny/anim_front.png differ diff --git a/graphics/pokemon/lopunny/front.png b/graphics/pokemon/lopunny/front.png index d039dceaf..44e188d0f 100644 Binary files a/graphics/pokemon/lopunny/front.png and b/graphics/pokemon/lopunny/front.png differ diff --git a/graphics/pokemon/lopunny/normal.pal b/graphics/pokemon/lopunny/normal.pal index 490c6c38d..712971742 100644 --- a/graphics/pokemon/lopunny/normal.pal +++ b/graphics/pokemon/lopunny/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 120 112 80 248 224 160 16 16 16 -80 56 48 -176 120 88 -136 88 56 +80 56 56 +176 120 72 +136 88 64 120 56 64 192 168 112 -176 96 104 +192 88 120 96 72 64 248 248 248 -224 120 136 +208 120 152 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/lotad/anim_front.png b/graphics/pokemon/lotad/anim_front.png index 1bec5a74a..cadc74768 100644 Binary files a/graphics/pokemon/lotad/anim_front.png and b/graphics/pokemon/lotad/anim_front.png differ diff --git a/graphics/pokemon/lotad/front.png b/graphics/pokemon/lotad/front.png index 2cec3a677..efc92a04b 100644 Binary files a/graphics/pokemon/lotad/front.png and b/graphics/pokemon/lotad/front.png differ diff --git a/graphics/pokemon/lotad/normal.pal b/graphics/pokemon/lotad/normal.pal index ef3049e58..8387dd97a 100644 --- a/graphics/pokemon/lotad/normal.pal +++ b/graphics/pokemon/lotad/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 208 216 216 -32 80 48 -16 16 16 -96 184 128 -64 112 80 -64 152 96 -56 96 120 -48 144 176 -136 208 136 -200 176 104 +48 80 24 +0 0 0 +96 176 104 +48 120 64 +56 144 56 +56 80 104 +48 128 160 +128 200 120 +216 176 56 144 120 64 -120 184 216 +96 152 216 248 248 248 144 176 216 -248 224 128 +248 216 120 0 0 0 diff --git a/graphics/pokemon/loudred/anim_front.png b/graphics/pokemon/loudred/anim_front.png index ca1ecbb14..71912b382 100644 Binary files a/graphics/pokemon/loudred/anim_front.png and b/graphics/pokemon/loudred/anim_front.png differ diff --git a/graphics/pokemon/loudred/front.png b/graphics/pokemon/loudred/front.png index 84e93592d..29c1e1baf 100644 Binary files a/graphics/pokemon/loudred/front.png and b/graphics/pokemon/loudred/front.png differ diff --git a/graphics/pokemon/loudred/normal.pal b/graphics/pokemon/loudred/normal.pal index 44ef7c24a..d45bbf076 100644 --- a/graphics/pokemon/loudred/normal.pal +++ b/graphics/pokemon/loudred/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 96 152 -168 168 216 -48 56 88 -128 128 192 -16 16 16 -152 64 112 -184 104 144 -224 152 184 +112 96 144 +176 168 224 +64 64 104 +128 128 184 +0 0 0 +136 48 88 +192 72 128 +208 112 176 248 248 248 200 200 200 -136 112 56 -208 176 96 -248 224 136 -96 40 72 +152 120 48 +208 168 48 +248 216 112 +96 40 64 112 112 112 diff --git a/graphics/pokemon/lucario/anim_front.png b/graphics/pokemon/lucario/anim_front.png index 821008a00..3425fd37b 100644 Binary files a/graphics/pokemon/lucario/anim_front.png and b/graphics/pokemon/lucario/anim_front.png differ diff --git a/graphics/pokemon/lucario/front.png b/graphics/pokemon/lucario/front.png index 464c51971..c4b7a41c2 100644 Binary files a/graphics/pokemon/lucario/front.png and b/graphics/pokemon/lucario/front.png differ diff --git a/graphics/pokemon/lucario/normal.pal b/graphics/pokemon/lucario/normal.pal index b86db220c..87be39f7a 100644 --- a/graphics/pokemon/lucario/normal.pal +++ b/graphics/pokemon/lucario/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 64 80 -88 160 192 +16 72 120 +72 152 232 16 16 16 -64 112 136 +40 112 152 56 48 48 -80 80 80 -128 128 120 -200 200 200 -232 64 64 +88 88 88 +128 128 128 +208 208 208 +216 64 64 248 248 248 -160 144 96 +224 224 152 72 64 32 -248 216 144 -178 107 124 +176 176 96 +160 48 48 0 0 0 diff --git a/graphics/pokemon/ludicolo/anim_front.png b/graphics/pokemon/ludicolo/anim_front.png index 9da05f6e9..2796df8df 100644 Binary files a/graphics/pokemon/ludicolo/anim_front.png and b/graphics/pokemon/ludicolo/anim_front.png differ diff --git a/graphics/pokemon/ludicolo/front.png b/graphics/pokemon/ludicolo/front.png index 8adc45edb..98ac42818 100644 Binary files a/graphics/pokemon/ludicolo/front.png and b/graphics/pokemon/ludicolo/front.png differ diff --git a/graphics/pokemon/ludicolo/normal.pal b/graphics/pokemon/ludicolo/normal.pal index d272de6a2..4fa18931a 100644 --- a/graphics/pokemon/ludicolo/normal.pal +++ b/graphics/pokemon/ludicolo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 192 192 240 -16 16 16 -120 96 80 -248 224 160 -184 160 120 -224 200 128 -128 144 72 -80 96 48 -160 136 112 -200 232 168 -144 192 96 -176 224 120 +0 0 0 +120 104 88 +248 240 144 +200 192 128 +232 224 152 +112 144 88 +72 104 72 +168 136 104 +200 248 136 +152 192 96 +168 224 112 248 248 248 240 168 120 -136 72 88 -208 136 160 +160 72 72 +224 120 160 diff --git a/graphics/pokemon/lugia/anim_front.png b/graphics/pokemon/lugia/anim_front.png index f3432c3fc..fbe467fb6 100644 Binary files a/graphics/pokemon/lugia/anim_front.png and b/graphics/pokemon/lugia/anim_front.png differ diff --git a/graphics/pokemon/lugia/front.png b/graphics/pokemon/lugia/front.png index 5ce94a1d0..124a6f626 100644 Binary files a/graphics/pokemon/lugia/front.png and b/graphics/pokemon/lugia/front.png differ diff --git a/graphics/pokemon/lugia/normal.pal b/graphics/pokemon/lugia/normal.pal index 7611934fb..ff5f67433 100644 --- a/graphics/pokemon/lugia/normal.pal +++ b/graphics/pokemon/lugia/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 160 192 -80 88 112 +152 168 224 +96 112 120 248 248 248 16 16 16 -216 216 248 -40 48 112 -64 88 168 +208 224 240 +40 48 136 +80 88 168 176 192 240 -96 120 192 -176 200 248 -136 152 232 -200 112 112 -104 72 112 -80 112 192 -32 80 128 +128 128 192 +168 184 232 +112 136 232 +232 144 144 +176 64 80 +80 120 184 +0 64 128 diff --git a/graphics/pokemon/lumineon/anim_front.png b/graphics/pokemon/lumineon/anim_front.png index b177ef90e..29ef5dd7b 100644 Binary files a/graphics/pokemon/lumineon/anim_front.png and b/graphics/pokemon/lumineon/anim_front.png differ diff --git a/graphics/pokemon/lumineon/front.png b/graphics/pokemon/lumineon/front.png index 9ba9095e3..3aae9837f 100644 Binary files a/graphics/pokemon/lumineon/front.png and b/graphics/pokemon/lumineon/front.png differ diff --git a/graphics/pokemon/lumineon/normal.pal b/graphics/pokemon/lumineon/normal.pal index cc07c568e..d7dbfc5ca 100644 --- a/graphics/pokemon/lumineon/normal.pal +++ b/graphics/pokemon/lumineon/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -80 120 120 +80 104 136 16 16 16 -216 240 224 -144 224 216 -104 160 160 -48 72 80 -32 48 48 -136 56 96 -208 88 144 +192 224 240 +144 208 224 +112 144 168 +48 64 88 +40 40 56 +112 64 120 +192 72 144 232 248 248 -32 48 48 +40 40 56 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/lunatone/anim_front.png b/graphics/pokemon/lunatone/anim_front.png index fd0a0896d..20b840401 100644 Binary files a/graphics/pokemon/lunatone/anim_front.png and b/graphics/pokemon/lunatone/anim_front.png differ diff --git a/graphics/pokemon/lunatone/front.png b/graphics/pokemon/lunatone/front.png index 0d15a6f5b..279f1578d 100644 Binary files a/graphics/pokemon/lunatone/front.png and b/graphics/pokemon/lunatone/front.png differ diff --git a/graphics/pokemon/lunatone/normal.pal b/graphics/pokemon/lunatone/normal.pal index 669f1764f..e3819cbc3 100644 --- a/graphics/pokemon/lunatone/normal.pal +++ b/graphics/pokemon/lunatone/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -176 160 112 -144 128 88 -232 216 168 -112 104 56 -208 192 128 -72 64 64 +176 160 80 +144 128 56 +232 216 136 +128 104 64 +200 184 104 +56 64 56 16 16 16 -160 56 64 -224 128 136 -200 88 96 +128 16 40 +208 88 112 +176 32 56 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/luvdisc/anim_front.png b/graphics/pokemon/luvdisc/anim_front.png index 0d94cb274..631ab8f09 100644 Binary files a/graphics/pokemon/luvdisc/anim_front.png and b/graphics/pokemon/luvdisc/anim_front.png differ diff --git a/graphics/pokemon/luvdisc/front.png b/graphics/pokemon/luvdisc/front.png index fe0d78bde..24ac5a6f9 100644 Binary files a/graphics/pokemon/luvdisc/front.png and b/graphics/pokemon/luvdisc/front.png differ diff --git a/graphics/pokemon/luvdisc/normal.pal b/graphics/pokemon/luvdisc/normal.pal index 63040db66..cb3de3258 100644 --- a/graphics/pokemon/luvdisc/normal.pal +++ b/graphics/pokemon/luvdisc/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 80 88 -112 48 48 -248 184 184 -16 16 16 -248 152 160 -232 120 136 -192 136 136 -24 64 112 +160 104 80 +112 56 48 +248 192 208 +0 0 0 +240 144 176 +224 112 152 +192 112 136 +48 72 168 248 248 248 -40 96 160 -232 192 192 -232 152 152 +40 88 240 +224 168 216 +240 128 192 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/luxio/anim_front.png b/graphics/pokemon/luxio/anim_front.png index 52d080c68..8b9ffd233 100644 Binary files a/graphics/pokemon/luxio/anim_front.png and b/graphics/pokemon/luxio/anim_front.png differ diff --git a/graphics/pokemon/luxio/front.png b/graphics/pokemon/luxio/front.png index 262b34256..f8a883afc 100644 Binary files a/graphics/pokemon/luxio/front.png and b/graphics/pokemon/luxio/front.png differ diff --git a/graphics/pokemon/luxio/normal.pal b/graphics/pokemon/luxio/normal.pal index f9d318695..54698e4f4 100644 --- a/graphics/pokemon/luxio/normal.pal +++ b/graphics/pokemon/luxio/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 88 32 -248 184 48 -184 136 32 +112 96 80 +248 224 88 +176 152 88 16 16 16 -40 40 40 -72 64 72 -96 96 104 -48 80 104 -120 184 208 -80 128 144 +48 48 64 +72 72 96 +96 96 120 +72 72 112 +120 168 240 +96 120 176 248 248 248 -184 56 48 -216 96 88 -165 104 134 +144 56 80 +224 72 80 +168 56 80 0 0 0 diff --git a/graphics/pokemon/luxray/anim_front.png b/graphics/pokemon/luxray/anim_front.png index ba7dd2239..93a073ce4 100644 Binary files a/graphics/pokemon/luxray/anim_front.png and b/graphics/pokemon/luxray/anim_front.png differ diff --git a/graphics/pokemon/luxray/front.png b/graphics/pokemon/luxray/front.png index 7e097b93b..12381ea36 100644 Binary files a/graphics/pokemon/luxray/front.png and b/graphics/pokemon/luxray/front.png differ diff --git a/graphics/pokemon/luxray/normal.pal b/graphics/pokemon/luxray/normal.pal index c45620af9..302dceb37 100644 --- a/graphics/pokemon/luxray/normal.pal +++ b/graphics/pokemon/luxray/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 88 32 -248 192 40 +112 96 80 +248 224 88 16 16 16 -48 40 40 -96 96 104 -184 136 24 -72 64 72 -88 136 152 -104 184 208 -216 64 56 -152 48 40 -48 88 96 -117 80 103 -248 248 248 +48 48 64 +96 96 120 +176 152 88 +72 72 96 +96 120 176 +120 168 240 +224 72 80 +144 56 80 +72 72 112 +168 56 80 +0 0 0 0 0 0 diff --git a/graphics/pokemon/machamp/anim_front.png b/graphics/pokemon/machamp/anim_front.png index f14f25261..3bc4a8594 100644 Binary files a/graphics/pokemon/machamp/anim_front.png and b/graphics/pokemon/machamp/anim_front.png differ diff --git a/graphics/pokemon/machamp/front.png b/graphics/pokemon/machamp/front.png index b93e9b299..d0aced4d2 100644 Binary files a/graphics/pokemon/machamp/front.png and b/graphics/pokemon/machamp/front.png differ diff --git a/graphics/pokemon/machamp/normal.pal b/graphics/pokemon/machamp/normal.pal index 819376de5..024d63ca6 100644 --- a/graphics/pokemon/machamp/normal.pal +++ b/graphics/pokemon/machamp/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 72 96 -112 128 152 -152 176 208 -8 8 8 -104 96 80 -224 200 192 -160 144 128 -168 64 48 +80 80 104 +120 136 160 +144 176 192 +0 0 0 +112 96 72 +232 208 184 +176 160 128 +184 0 0 248 248 248 -120 104 56 -240 224 152 -88 72 32 -200 184 128 -200 136 160 -160 72 112 +128 112 40 +240 232 152 +80 64 0 +200 192 96 +224 80 56 +168 48 16 diff --git a/graphics/pokemon/machoke/anim_front.png b/graphics/pokemon/machoke/anim_front.png index 19b90e39d..c8c9f731e 100644 Binary files a/graphics/pokemon/machoke/anim_front.png and b/graphics/pokemon/machoke/anim_front.png differ diff --git a/graphics/pokemon/machoke/front.png b/graphics/pokemon/machoke/front.png index d07d6b2e9..0b84d0621 100644 Binary files a/graphics/pokemon/machoke/front.png and b/graphics/pokemon/machoke/front.png differ diff --git a/graphics/pokemon/machoke/normal.pal b/graphics/pokemon/machoke/normal.pal index 969e84c08..ab90d151b 100644 --- a/graphics/pokemon/machoke/normal.pal +++ b/graphics/pokemon/machoke/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -96 88 72 +112 96 72 16 16 16 -216 184 168 -160 144 128 -112 120 152 -152 160 200 -56 64 104 -176 184 224 -192 56 80 +232 208 184 +176 160 128 +120 136 160 +144 176 192 +72 72 96 +168 200 216 +192 16 16 248 248 248 -216 120 136 +224 80 56 240 224 120 72 72 96 200 176 96 diff --git a/graphics/pokemon/machop/anim_front.png b/graphics/pokemon/machop/anim_front.png index 04f4710f1..2c1f083ae 100644 Binary files a/graphics/pokemon/machop/anim_front.png and b/graphics/pokemon/machop/anim_front.png differ diff --git a/graphics/pokemon/machop/front.png b/graphics/pokemon/machop/front.png index 5622c5cda..b94735495 100644 Binary files a/graphics/pokemon/machop/front.png and b/graphics/pokemon/machop/front.png differ diff --git a/graphics/pokemon/machop/normal.pal b/graphics/pokemon/machop/normal.pal index 7b6e3f252..2f6bba75b 100644 --- a/graphics/pokemon/machop/normal.pal +++ b/graphics/pokemon/machop/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 96 80 -224 200 192 -160 144 128 -200 176 160 +104 80 32 +240 232 136 +168 152 88 +200 184 96 16 16 16 -144 192 208 +144 192 192 80 120 120 -192 216 224 -40 64 72 +168 216 200 +40 72 80 248 248 248 -248 128 136 -152 56 56 -112 152 168 -200 112 144 -216 152 192 +232 72 72 +176 0 0 +112 160 160 +240 80 80 +248 128 144 diff --git a/graphics/pokemon/magby/anim_front.png b/graphics/pokemon/magby/anim_front.png index 46f2849b7..19c543b8b 100644 Binary files a/graphics/pokemon/magby/anim_front.png and b/graphics/pokemon/magby/anim_front.png differ diff --git a/graphics/pokemon/magby/front.png b/graphics/pokemon/magby/front.png index edfea5d28..389af0d03 100644 Binary files a/graphics/pokemon/magby/front.png and b/graphics/pokemon/magby/front.png differ diff --git a/graphics/pokemon/magby/normal.pal b/graphics/pokemon/magby/normal.pal index dc9714179..2fe14eed8 100644 --- a/graphics/pokemon/magby/normal.pal +++ b/graphics/pokemon/magby/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -192 80 80 -128 56 64 -232 120 120 +216 56 56 +144 48 32 +240 104 104 16 16 16 192 192 192 248 248 248 -112 104 96 +112 112 120 248 248 176 -184 168 80 -240 224 120 -120 104 40 +224 184 48 +248 232 72 +152 112 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/magcargo/anim_front.png b/graphics/pokemon/magcargo/anim_front.png index ea7eb07a5..5d7450fab 100644 Binary files a/graphics/pokemon/magcargo/anim_front.png and b/graphics/pokemon/magcargo/anim_front.png differ diff --git a/graphics/pokemon/magcargo/front.png b/graphics/pokemon/magcargo/front.png index ba4a5b0f1..dda50c3f8 100644 Binary files a/graphics/pokemon/magcargo/front.png and b/graphics/pokemon/magcargo/front.png differ diff --git a/graphics/pokemon/magcargo/normal.pal b/graphics/pokemon/magcargo/normal.pal index 077ffed5b..a5b183240 100644 --- a/graphics/pokemon/magcargo/normal.pal +++ b/graphics/pokemon/magcargo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 56 56 -232 72 72 -200 184 88 -248 232 152 -112 24 16 -88 96 136 -48 56 80 +184 48 40 +232 64 64 +232 184 8 +248 232 120 +144 32 0 +96 104 144 +56 64 88 16 16 16 -112 136 176 -144 112 40 -168 184 216 -168 104 56 -248 144 120 -240 104 24 -144 56 32 +120 136 176 +200 104 40 +168 176 200 +160 104 88 +248 128 112 +248 128 112 +144 32 0 diff --git a/graphics/pokemon/magikarp/anim_front.png b/graphics/pokemon/magikarp/anim_front.png index e137bed53..42dc57805 100644 Binary files a/graphics/pokemon/magikarp/anim_front.png and b/graphics/pokemon/magikarp/anim_front.png differ diff --git a/graphics/pokemon/magikarp/front.png b/graphics/pokemon/magikarp/front.png index ecbf65c5b..aea8a95eb 100644 Binary files a/graphics/pokemon/magikarp/front.png and b/graphics/pokemon/magikarp/front.png differ diff --git a/graphics/pokemon/magikarp/normal.pal b/graphics/pokemon/magikarp/normal.pal index 67f48c918..453ba5b1f 100644 --- a/graphics/pokemon/magikarp/normal.pal +++ b/graphics/pokemon/magikarp/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 88 56 -248 184 96 -184 64 48 -232 96 72 +120 96 80 +248 216 40 +184 32 80 +240 96 24 248 248 248 -96 80 80 -160 144 144 -128 24 8 -248 144 120 -16 16 16 -208 200 200 -192 128 128 -248 176 176 -136 80 88 -208 144 72 +80 80 96 +136 136 160 +128 0 64 +248 152 96 +0 0 0 +200 200 208 +224 136 160 +248 184 192 +184 56 56 +192 168 112 diff --git a/graphics/pokemon/magmar/anim_front.png b/graphics/pokemon/magmar/anim_front.png index f50d29b1f..4ea85a978 100644 Binary files a/graphics/pokemon/magmar/anim_front.png and b/graphics/pokemon/magmar/anim_front.png differ diff --git a/graphics/pokemon/magmar/front.png b/graphics/pokemon/magmar/front.png index 4b9790260..ec95e3e8f 100644 Binary files a/graphics/pokemon/magmar/front.png and b/graphics/pokemon/magmar/front.png differ diff --git a/graphics/pokemon/magmar/normal.pal b/graphics/pokemon/magmar/normal.pal index af613221e..c81dbd0e3 100644 --- a/graphics/pokemon/magmar/normal.pal +++ b/graphics/pokemon/magmar/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -152 128 72 +192 120 16 120 80 48 -248 208 104 -200 160 80 -248 232 160 -232 88 40 +248 232 72 +224 184 48 +248 240 200 +248 72 48 16 16 16 -80 40 24 -168 72 40 -248 160 64 +104 32 32 +200 16 64 +248 136 96 64 72 88 248 248 248 248 192 152 diff --git a/graphics/pokemon/magmortar/anim_front.png b/graphics/pokemon/magmortar/anim_front.png index d49fea810..3f0531e11 100644 Binary files a/graphics/pokemon/magmortar/anim_front.png and b/graphics/pokemon/magmortar/anim_front.png differ diff --git a/graphics/pokemon/magmortar/front.png b/graphics/pokemon/magmortar/front.png index c367b03c6..38f46e85e 100644 Binary files a/graphics/pokemon/magmortar/front.png and b/graphics/pokemon/magmortar/front.png differ diff --git a/graphics/pokemon/magmortar/normal.pal b/graphics/pokemon/magmortar/normal.pal index ad6821883..3008ddcb6 100644 --- a/graphics/pokemon/magmortar/normal.pal +++ b/graphics/pokemon/magmortar/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 96 40 -248 192 80 -208 152 48 -192 64 40 -152 64 40 -232 112 80 -88 32 16 -216 80 48 +128 96 32 +248 192 56 +200 160 56 +208 48 48 +168 56 80 +240 96 48 +104 48 40 +224 64 48 16 16 16 -248 144 136 -72 64 64 -200 96 88 -216 200 192 -248 248 248 +248 144 160 +72 72 64 +192 88 104 200 208 224 +248 248 248 +0 0 0 diff --git a/graphics/pokemon/magnemite/anim_front.png b/graphics/pokemon/magnemite/anim_front.png index ff31f3a2e..96ddc9bc2 100644 Binary files a/graphics/pokemon/magnemite/anim_front.png and b/graphics/pokemon/magnemite/anim_front.png differ diff --git a/graphics/pokemon/magnemite/front.png b/graphics/pokemon/magnemite/front.png index 2a262e550..9a9148728 100644 Binary files a/graphics/pokemon/magnemite/front.png and b/graphics/pokemon/magnemite/front.png differ diff --git a/graphics/pokemon/magnemite/normal.pal b/graphics/pokemon/magnemite/normal.pal index b0e534a53..f67d59686 100644 --- a/graphics/pokemon/magnemite/normal.pal +++ b/graphics/pokemon/magnemite/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 136 136 136 -255 255 255 +232 248 248 208 208 208 80 72 72 16 16 16 56 48 48 -232 96 80 -136 40 32 +248 64 64 +192 32 32 128 168 184 192 224 232 64 96 112 -96 184 208 -32 112 152 +80 200 240 +40 128 168 168 168 168 -220 244 244 +232 248 248 diff --git a/graphics/pokemon/magneton/anim_front.png b/graphics/pokemon/magneton/anim_front.png index fcae6a5b0..9d36e2396 100644 Binary files a/graphics/pokemon/magneton/anim_front.png and b/graphics/pokemon/magneton/anim_front.png differ diff --git a/graphics/pokemon/magneton/front.png b/graphics/pokemon/magneton/front.png index 26a1f7f98..e0a94e0fb 100644 Binary files a/graphics/pokemon/magneton/front.png and b/graphics/pokemon/magneton/front.png differ diff --git a/graphics/pokemon/magneton/normal.pal b/graphics/pokemon/magneton/normal.pal index 81567fb71..8938cb90a 100644 --- a/graphics/pokemon/magneton/normal.pal +++ b/graphics/pokemon/magneton/normal.pal @@ -4,13 +4,13 @@ JASC-PAL 152 208 160 80 72 72 56 48 48 -232 96 80 +248 64 64 16 16 16 -136 40 32 +192 32 32 136 136 136 -96 184 208 +80 200 240 232 248 248 -32 112 152 +40 128 168 208 208 208 64 96 112 184 208 224 diff --git a/graphics/pokemon/magnezone/anim_front.png b/graphics/pokemon/magnezone/anim_front.png index 5025b27a9..c9230b368 100644 Binary files a/graphics/pokemon/magnezone/anim_front.png and b/graphics/pokemon/magnezone/anim_front.png differ diff --git a/graphics/pokemon/magnezone/front.png b/graphics/pokemon/magnezone/front.png index a39214b39..1a2b3ff38 100644 Binary files a/graphics/pokemon/magnezone/front.png and b/graphics/pokemon/magnezone/front.png differ diff --git a/graphics/pokemon/magnezone/normal.pal b/graphics/pokemon/magnezone/normal.pal index 7c2a64fd5..f90827017 100644 --- a/graphics/pokemon/magnezone/normal.pal +++ b/graphics/pokemon/magnezone/normal.pal @@ -14,6 +14,6 @@ JASC-PAL 128 160 176 208 232 232 72 104 136 -248 120 112 -208 64 64 -72 184 224 +248 64 64 +192 32 32 +80 200 240 diff --git a/graphics/pokemon/makuhita/anim_front.png b/graphics/pokemon/makuhita/anim_front.png index 67ab86958..aca8179e6 100644 Binary files a/graphics/pokemon/makuhita/anim_front.png and b/graphics/pokemon/makuhita/anim_front.png differ diff --git a/graphics/pokemon/makuhita/front.png b/graphics/pokemon/makuhita/front.png index bba80cbf8..438ac8283 100644 Binary files a/graphics/pokemon/makuhita/front.png and b/graphics/pokemon/makuhita/front.png differ diff --git a/graphics/pokemon/makuhita/normal.pal b/graphics/pokemon/makuhita/normal.pal index 3247e3e1a..a12e77f50 100644 --- a/graphics/pokemon/makuhita/normal.pal +++ b/graphics/pokemon/makuhita/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 96 48 -248 216 120 +120 88 56 +248 216 104 16 16 16 -208 176 104 -248 232 168 +216 176 96 +248 232 136 232 192 112 -152 128 72 -224 136 136 -192 104 104 +160 128 64 +216 104 136 +192 72 120 152 80 64 -112 120 128 -72 72 88 -40 48 56 +120 120 120 +80 80 80 +56 64 64 0 0 0 0 0 0 diff --git a/graphics/pokemon/mamoswine/anim_front.png b/graphics/pokemon/mamoswine/anim_front.png index efbfbfd7a..dd42d13b6 100644 Binary files a/graphics/pokemon/mamoswine/anim_front.png and b/graphics/pokemon/mamoswine/anim_front.png differ diff --git a/graphics/pokemon/mamoswine/front.png b/graphics/pokemon/mamoswine/front.png index 95cf6118e..2b7945603 100644 Binary files a/graphics/pokemon/mamoswine/front.png and b/graphics/pokemon/mamoswine/front.png differ diff --git a/graphics/pokemon/mamoswine/normal.pal b/graphics/pokemon/mamoswine/normal.pal index b6f1be665..edd63691f 100644 --- a/graphics/pokemon/mamoswine/normal.pal +++ b/graphics/pokemon/mamoswine/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 72 48 -168 120 72 -64 48 24 -240 232 232 -48 40 40 -48 112 120 -152 136 136 -208 192 184 -80 176 184 +112 72 64 +152 104 72 +64 48 48 +248 248 248 +56 48 48 +64 88 136 +136 136 144 +184 184 192 +80 144 192 8 16 8 96 80 80 -240 208 160 -224 160 168 -160 112 112 -200 160 120 +224 216 168 +224 144 184 +160 96 120 +176 160 128 diff --git a/graphics/pokemon/manaphy/anim_front.png b/graphics/pokemon/manaphy/anim_front.png index 91d1cf799..b9934eee7 100644 Binary files a/graphics/pokemon/manaphy/anim_front.png and b/graphics/pokemon/manaphy/anim_front.png differ diff --git a/graphics/pokemon/manaphy/front.png b/graphics/pokemon/manaphy/front.png index 141d5ac17..ed6a5e4b2 100644 Binary files a/graphics/pokemon/manaphy/front.png and b/graphics/pokemon/manaphy/front.png differ diff --git a/graphics/pokemon/manaphy/normal.pal b/graphics/pokemon/manaphy/normal.pal index d10258796..ff28c82cc 100644 --- a/graphics/pokemon/manaphy/normal.pal +++ b/graphics/pokemon/manaphy/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 160 184 -96 200 224 -56 120 136 +24 152 208 +104 192 240 +48 120 168 16 16 16 -176 224 232 -32 88 112 -248 248 232 -248 216 144 -216 176 72 +152 224 248 +40 72 128 +200 232 248 +248 216 80 +224 168 80 248 248 248 -160 32 32 -232 128 136 -208 64 64 -160 32 32 +168 56 40 +216 128 152 +224 64 16 +0 0 0 0 0 0 diff --git a/graphics/pokemon/mandibuzz/anim_front.png b/graphics/pokemon/mandibuzz/anim_front.png index 738ed4116..701457ff3 100644 Binary files a/graphics/pokemon/mandibuzz/anim_front.png and b/graphics/pokemon/mandibuzz/anim_front.png differ diff --git a/graphics/pokemon/mandibuzz/front.png b/graphics/pokemon/mandibuzz/front.png index 257bcfc57..acd99e1e3 100644 Binary files a/graphics/pokemon/mandibuzz/front.png and b/graphics/pokemon/mandibuzz/front.png differ diff --git a/graphics/pokemon/mandibuzz/normal.pal b/graphics/pokemon/mandibuzz/normal.pal index dc3d6922c..4afa2c7f4 100644 --- a/graphics/pokemon/mandibuzz/normal.pal +++ b/graphics/pokemon/mandibuzz/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -96 80 72 +96 72 64 88 80 56 -232 208 168 -168 152 120 -104 56 64 -208 120 136 -152 88 88 +232 232 192 +176 160 128 +128 48 64 +224 128 144 +176 80 96 248 248 248 -216 88 80 -144 128 120 -64 48 48 -144 112 88 -192 160 128 -96 80 72 +208 56 32 +120 120 112 +72 48 48 +144 120 96 +192 168 128 +80 80 80 diff --git a/graphics/pokemon/manectric/anim_front.png b/graphics/pokemon/manectric/anim_front.png index 7938ff8d6..ce1293dad 100644 Binary files a/graphics/pokemon/manectric/anim_front.png and b/graphics/pokemon/manectric/anim_front.png differ diff --git a/graphics/pokemon/manectric/front.png b/graphics/pokemon/manectric/front.png index e90b2e206..c82e63447 100644 Binary files a/graphics/pokemon/manectric/front.png and b/graphics/pokemon/manectric/front.png differ diff --git a/graphics/pokemon/manectric/normal.pal b/graphics/pokemon/manectric/normal.pal index d17ab5520..85745430c 100644 --- a/graphics/pokemon/manectric/normal.pal +++ b/graphics/pokemon/manectric/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -104 96 64 -232 216 128 -176 160 104 -136 128 80 -56 80 88 -120 176 208 -56 128 160 -104 152 176 -176 64 64 +112 96 80 +248 232 96 +192 168 88 +160 120 88 +72 80 88 +112 176 208 +88 128 168 +96 152 192 +200 32 32 248 248 248 -224 120 112 -152 200 232 +248 112 112 +144 200 216 184 184 224 0 0 0 diff --git a/graphics/pokemon/mankey/anim_front.png b/graphics/pokemon/mankey/anim_front.png index cf48e19ad..5ad7a32bf 100644 Binary files a/graphics/pokemon/mankey/anim_front.png and b/graphics/pokemon/mankey/anim_front.png differ diff --git a/graphics/pokemon/mankey/front.png b/graphics/pokemon/mankey/front.png index 3cfb62fb3..fbbe3e1fc 100644 Binary files a/graphics/pokemon/mankey/front.png and b/graphics/pokemon/mankey/front.png differ diff --git a/graphics/pokemon/mankey/normal.pal b/graphics/pokemon/mankey/normal.pal index a4b348bb5..fff90ad75 100644 --- a/graphics/pokemon/mankey/normal.pal +++ b/graphics/pokemon/mankey/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -104 72 48 -200 152 128 +112 64 0 +216 160 112 16 16 16 -168 120 104 -248 216 192 -208 176 152 +192 112 72 +240 216 176 +208 168 152 248 248 248 248 120 104 -192 120 144 +224 120 120 200 88 64 -240 168 192 +248 168 168 240 216 224 248 192 168 248 232 224 diff --git a/graphics/pokemon/mantine/anim_front.png b/graphics/pokemon/mantine/anim_front.png index 44c24dafe..603f1e029 100644 Binary files a/graphics/pokemon/mantine/anim_front.png and b/graphics/pokemon/mantine/anim_front.png differ diff --git a/graphics/pokemon/mantine/front.png b/graphics/pokemon/mantine/front.png index bd793e2bd..ed3bd56b1 100644 Binary files a/graphics/pokemon/mantine/front.png and b/graphics/pokemon/mantine/front.png differ diff --git a/graphics/pokemon/mantine/normal.pal b/graphics/pokemon/mantine/normal.pal index 6d8c28ad5..c4b95fecf 100644 --- a/graphics/pokemon/mantine/normal.pal +++ b/graphics/pokemon/mantine/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -40 48 88 -56 88 128 -48 64 88 -232 200 232 -176 144 168 -104 136 168 -104 80 96 -200 160 192 +48 56 88 +72 96 128 +64 64 96 +208 200 200 +168 152 168 +104 144 152 +80 88 104 +192 176 184 248 248 248 104 88 136 -96 104 136 -184 192 208 136 144 176 +168 176 200 +0 0 0 0 0 0 diff --git a/graphics/pokemon/mantyke/anim_front.png b/graphics/pokemon/mantyke/anim_front.png index 37bfbc816..9a3162211 100644 Binary files a/graphics/pokemon/mantyke/anim_front.png and b/graphics/pokemon/mantyke/anim_front.png differ diff --git a/graphics/pokemon/mantyke/front.png b/graphics/pokemon/mantyke/front.png index bd781d22b..b06a66d0a 100644 Binary files a/graphics/pokemon/mantyke/front.png and b/graphics/pokemon/mantyke/front.png differ diff --git a/graphics/pokemon/mantyke/normal.pal b/graphics/pokemon/mantyke/normal.pal index eb3114cf4..6b91b55cc 100644 --- a/graphics/pokemon/mantyke/normal.pal +++ b/graphics/pokemon/mantyke/normal.pal @@ -13,7 +13,7 @@ JASC-PAL 72 96 112 128 176 192 96 144 160 -120 72 80 -208 136 144 +168 56 80 +224 104 120 8 48 80 208 216 224 diff --git a/graphics/pokemon/maractus/anim_front.png b/graphics/pokemon/maractus/anim_front.png index a6feea12c..da44901b8 100644 Binary files a/graphics/pokemon/maractus/anim_front.png and b/graphics/pokemon/maractus/anim_front.png differ diff --git a/graphics/pokemon/maractus/front.png b/graphics/pokemon/maractus/front.png index 4eb69ffbe..3ba7400be 100644 Binary files a/graphics/pokemon/maractus/front.png and b/graphics/pokemon/maractus/front.png differ diff --git a/graphics/pokemon/maractus/normal.pal b/graphics/pokemon/maractus/normal.pal index b72b1e672..7beb50c61 100644 --- a/graphics/pokemon/maractus/normal.pal +++ b/graphics/pokemon/maractus/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 120 224 248 -152 56 104 -224 112 176 -32 64 32 -112 104 32 -248 208 48 -128 208 104 -88 144 72 +176 48 112 +224 104 160 +32 72 32 +128 112 16 +248 208 0 +88 208 104 +64 152 72 16 16 16 -40 120 120 -40 88 80 -16 48 40 -168 136 40 -208 80 160 +16 136 112 +24 96 80 +8 56 48 +176 152 16 +200 72 136 0 0 0 0 0 0 diff --git a/graphics/pokemon/mareep/anim_front.png b/graphics/pokemon/mareep/anim_front.png index d6800dcc6..5c67de509 100644 Binary files a/graphics/pokemon/mareep/anim_front.png and b/graphics/pokemon/mareep/anim_front.png differ diff --git a/graphics/pokemon/mareep/front.png b/graphics/pokemon/mareep/front.png index 5cc3b2266..703f09066 100644 Binary files a/graphics/pokemon/mareep/front.png and b/graphics/pokemon/mareep/front.png differ diff --git a/graphics/pokemon/mareep/normal.pal b/graphics/pokemon/mareep/normal.pal index dabbcd7b0..eaefbe935 100644 --- a/graphics/pokemon/mareep/normal.pal +++ b/graphics/pokemon/mareep/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 112 48 -192 168 120 +224 168 0 +200 176 136 248 248 248 -248 136 48 -128 104 64 +248 216 0 +128 112 80 16 16 16 -248 232 176 -224 200 144 +248 224 184 +224 200 160 56 64 64 -200 152 40 -248 208 80 +224 168 16 +248 216 8 136 144 144 -24 72 120 -56 112 160 -88 152 208 +0 72 144 +80 128 184 +112 160 240 diff --git a/graphics/pokemon/marill/anim_front.png b/graphics/pokemon/marill/anim_front.png index d76e7ef7f..e9815f489 100644 Binary files a/graphics/pokemon/marill/anim_front.png and b/graphics/pokemon/marill/anim_front.png differ diff --git a/graphics/pokemon/marill/front.png b/graphics/pokemon/marill/front.png index 9e4a7d852..d56a82fc4 100644 Binary files a/graphics/pokemon/marill/front.png and b/graphics/pokemon/marill/front.png differ diff --git a/graphics/pokemon/marill/normal.pal b/graphics/pokemon/marill/normal.pal index e2e596fbb..cf71923a6 100644 --- a/graphics/pokemon/marill/normal.pal +++ b/graphics/pokemon/marill/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 136 184 -48 176 232 -128 216 248 -16 72 88 -32 160 184 -120 40 24 -168 56 32 -224 72 48 +40 152 240 +112 200 248 +168 232 248 +48 80 184 +72 168 240 +144 24 0 +216 72 0 +240 128 0 16 16 16 248 248 248 -192 224 232 +224 224 232 56 64 64 -176 184 192 +200 200 216 0 0 0 0 0 0 diff --git a/graphics/pokemon/marowak/anim_front.png b/graphics/pokemon/marowak/anim_front.png index b8e5db85f..83117e3b2 100644 Binary files a/graphics/pokemon/marowak/anim_front.png and b/graphics/pokemon/marowak/anim_front.png differ diff --git a/graphics/pokemon/marowak/front.png b/graphics/pokemon/marowak/front.png index 2bbd3fd91..74a26b00f 100644 Binary files a/graphics/pokemon/marowak/front.png and b/graphics/pokemon/marowak/front.png differ diff --git a/graphics/pokemon/marowak/normal.pal b/graphics/pokemon/marowak/normal.pal index 5244888c4..119c76e9b 100644 --- a/graphics/pokemon/marowak/normal.pal +++ b/graphics/pokemon/marowak/normal.pal @@ -8,9 +8,9 @@ JASC-PAL 192 192 200 80 80 96 224 224 232 -88 64 32 -192 144 88 -144 112 72 +88 64 16 +192 152 72 +144 104 80 224 176 120 176 144 136 120 88 80 diff --git a/graphics/pokemon/marshtomp/anim_front.png b/graphics/pokemon/marshtomp/anim_front.png index e22036ac3..384e5aa3e 100644 Binary files a/graphics/pokemon/marshtomp/anim_front.png and b/graphics/pokemon/marshtomp/anim_front.png differ diff --git a/graphics/pokemon/marshtomp/front.png b/graphics/pokemon/marshtomp/front.png index 34e433976..ead3658ed 100644 Binary files a/graphics/pokemon/marshtomp/front.png and b/graphics/pokemon/marshtomp/front.png differ diff --git a/graphics/pokemon/marshtomp/normal.pal b/graphics/pokemon/marshtomp/normal.pal index bc1510d06..fe172506c 100644 --- a/graphics/pokemon/marshtomp/normal.pal +++ b/graphics/pokemon/marshtomp/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -168 224 24 -64 88 112 +248 192 248 +80 80 104 16 16 16 -96 128 152 -64 144 152 -88 168 176 -128 192 200 -176 216 224 -32 88 88 -224 112 56 -192 232 232 -232 144 112 -144 80 40 -144 192 192 -158 104 125 -221 153 181 +128 128 152 +32 144 144 +72 168 168 +144 216 216 +176 240 240 +8 88 88 +232 104 8 +176 208 240 +240 136 48 +144 64 16 +168 176 208 +136 48 80 +192 96 120 diff --git a/graphics/pokemon/masquerain/anim_front.png b/graphics/pokemon/masquerain/anim_front.png index 3099b7361..7508ae76d 100644 Binary files a/graphics/pokemon/masquerain/anim_front.png and b/graphics/pokemon/masquerain/anim_front.png differ diff --git a/graphics/pokemon/masquerain/front.png b/graphics/pokemon/masquerain/front.png index f670562c3..853e08a17 100644 Binary files a/graphics/pokemon/masquerain/front.png and b/graphics/pokemon/masquerain/front.png differ diff --git a/graphics/pokemon/masquerain/normal.pal b/graphics/pokemon/masquerain/normal.pal index 220d0eac4..bd8d9c4c7 100644 --- a/graphics/pokemon/masquerain/normal.pal +++ b/graphics/pokemon/masquerain/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 80 48 -208 112 72 -16 16 16 -248 144 104 -208 224 248 -248 248 240 -56 96 128 -176 88 112 -232 240 248 -136 48 72 -136 168 200 -176 208 224 -208 112 72 -248 144 104 +152 72 32 +224 104 40 0 0 0 +248 144 96 +216 216 224 +248 248 240 +32 88 112 +176 72 128 +232 240 248 +136 32 72 +136 160 200 +192 200 224 +16 16 16 +224 104 40 +248 144 96 diff --git a/graphics/pokemon/mawile/anim_front.png b/graphics/pokemon/mawile/anim_front.png index 0f19d84fb..b19c8fceb 100644 Binary files a/graphics/pokemon/mawile/anim_front.png and b/graphics/pokemon/mawile/anim_front.png differ diff --git a/graphics/pokemon/mawile/front.png b/graphics/pokemon/mawile/front.png index 23d1d990b..9f8bddbfd 100644 Binary files a/graphics/pokemon/mawile/front.png and b/graphics/pokemon/mawile/front.png differ diff --git a/graphics/pokemon/mawile/normal.pal b/graphics/pokemon/mawile/normal.pal index 4c8430642..40493d6be 100644 --- a/graphics/pokemon/mawile/normal.pal +++ b/graphics/pokemon/mawile/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -112 112 112 +112 112 120 80 72 72 168 160 160 88 88 88 248 224 160 -240 216 144 -208 168 104 -136 104 56 +240 208 136 +216 160 72 +120 88 40 200 200 200 160 40 64 -144 80 104 +152 72 104 248 104 112 248 248 248 0 0 0 diff --git a/graphics/pokemon/medicham/anim_front.png b/graphics/pokemon/medicham/anim_front.png index 61baf93a4..ca6c35970 100644 Binary files a/graphics/pokemon/medicham/anim_front.png and b/graphics/pokemon/medicham/anim_front.png differ diff --git a/graphics/pokemon/medicham/front.png b/graphics/pokemon/medicham/front.png index 39ea40adf..63734b124 100644 Binary files a/graphics/pokemon/medicham/front.png and b/graphics/pokemon/medicham/front.png differ diff --git a/graphics/pokemon/medicham/normal.pal b/graphics/pokemon/medicham/normal.pal index f6cbfc550..64be81c67 100644 --- a/graphics/pokemon/medicham/normal.pal +++ b/graphics/pokemon/medicham/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 40 64 +131 65 74 16 16 16 -200 88 112 -224 104 128 -232 136 160 -80 72 72 -224 232 232 -136 128 136 -176 160 160 -208 200 200 -248 224 176 -248 200 104 -184 64 104 -248 248 248 -168 128 72 +205 90 115 +230 115 139 +238 156 164 +82 65 74 +222 222 222 +139 131 139 +172 164 172 +197 197 197 +246 222 131 +238 189 90 +180 74 90 +255 255 255 +164 115 41 diff --git a/graphics/pokemon/meditite/anim_front.png b/graphics/pokemon/meditite/anim_front.png index 07af59579..2059f18cb 100644 Binary files a/graphics/pokemon/meditite/anim_front.png and b/graphics/pokemon/meditite/anim_front.png differ diff --git a/graphics/pokemon/meditite/front.png b/graphics/pokemon/meditite/front.png index 1704dbf66..c1c0dcd06 100644 Binary files a/graphics/pokemon/meditite/front.png and b/graphics/pokemon/meditite/front.png differ diff --git a/graphics/pokemon/meditite/normal.pal b/graphics/pokemon/meditite/normal.pal index e06e2ec86..d31714ed4 100644 --- a/graphics/pokemon/meditite/normal.pal +++ b/graphics/pokemon/meditite/normal.pal @@ -13,7 +13,7 @@ JASC-PAL 120 208 240 32 136 176 88 176 216 -216 96 104 -152 64 104 -208 144 176 +208 80 80 +128 64 72 +208 80 112 0 0 0 diff --git a/graphics/pokemon/meganium/anim_front.png b/graphics/pokemon/meganium/anim_front.png index fe346e4e4..6352e96e2 100644 Binary files a/graphics/pokemon/meganium/anim_front.png and b/graphics/pokemon/meganium/anim_front.png differ diff --git a/graphics/pokemon/meganium/front.png b/graphics/pokemon/meganium/front.png index f251fa5f0..2a813e118 100644 Binary files a/graphics/pokemon/meganium/front.png and b/graphics/pokemon/meganium/front.png differ diff --git a/graphics/pokemon/meganium/normal.pal b/graphics/pokemon/meganium/normal.pal index 74ae02e57..d594136b8 100644 --- a/graphics/pokemon/meganium/normal.pal +++ b/graphics/pokemon/meganium/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -248 216 88 -80 64 32 -192 160 72 -144 168 88 -80 96 32 -208 240 144 -168 216 112 +248 192 248 +248 216 32 +96 72 0 +224 168 0 +152 168 80 +80 104 24 +208 232 136 +184 208 104 16 16 16 248 248 248 -168 56 72 -96 32 56 -248 160 168 -224 88 112 +248 56 88 +120 16 56 +240 160 152 +200 32 56 200 200 200 104 104 104 diff --git a/graphics/pokemon/meloetta/anim_front.png b/graphics/pokemon/meloetta/anim_front.png index cb47885f2..59587eedb 100644 Binary files a/graphics/pokemon/meloetta/anim_front.png and b/graphics/pokemon/meloetta/anim_front.png differ diff --git a/graphics/pokemon/meloetta/front.png b/graphics/pokemon/meloetta/front.png index 8aa81c4eb..fad54a0b0 100644 Binary files a/graphics/pokemon/meloetta/front.png and b/graphics/pokemon/meloetta/front.png differ diff --git a/graphics/pokemon/meloetta/normal.pal b/graphics/pokemon/meloetta/normal.pal index 64a721011..8904e42dc 100644 --- a/graphics/pokemon/meloetta/normal.pal +++ b/graphics/pokemon/meloetta/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 48 64 -144 120 128 +64 56 48 +128 128 128 16 16 16 -96 80 96 -104 120 72 -168 184 128 -232 224 184 -40 112 120 -232 240 248 -160 168 192 -88 168 176 -112 128 160 -248 248 248 -232 136 144 -160 96 112 +96 96 96 +72 112 48 +120 176 88 +200 240 152 +64 136 120 +248 248 240 +192 192 192 +48 192 160 +144 144 144 +216 120 136 +176 80 96 +88 80 80 diff --git a/graphics/pokemon/meloetta/pirouette/front.png b/graphics/pokemon/meloetta/pirouette/front.png index aeeed60d3..a3b532860 100644 Binary files a/graphics/pokemon/meloetta/pirouette/front.png and b/graphics/pokemon/meloetta/pirouette/front.png differ diff --git a/graphics/pokemon/meloetta/pirouette/normal.pal b/graphics/pokemon/meloetta/pirouette/normal.pal index c04de22eb..79b38fcd5 100644 --- a/graphics/pokemon/meloetta/pirouette/normal.pal +++ b/graphics/pokemon/meloetta/pirouette/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 64 72 +64 64 64 16 16 16 -144 120 120 -104 88 104 -168 80 64 -120 48 40 -232 120 80 +128 128 128 +96 96 96 +168 80 56 +112 64 56 +232 112 80 64 48 48 248 248 240 -168 176 208 -168 64 88 -240 152 136 -224 80 104 +192 192 192 +192 48 88 +248 128 168 +240 80 120 88 80 80 -112 96 104 +144 120 88 diff --git a/graphics/pokemon/meowth/anim_front.png b/graphics/pokemon/meowth/anim_front.png index 7452c00f7..1c699350c 100644 Binary files a/graphics/pokemon/meowth/anim_front.png and b/graphics/pokemon/meowth/anim_front.png differ diff --git a/graphics/pokemon/meowth/front.png b/graphics/pokemon/meowth/front.png index 5f64308be..3f9bc67ad 100644 Binary files a/graphics/pokemon/meowth/front.png and b/graphics/pokemon/meowth/front.png differ diff --git a/graphics/pokemon/meowth/normal.pal b/graphics/pokemon/meowth/normal.pal index aee303ee1..8368723fb 100644 --- a/graphics/pokemon/meowth/normal.pal +++ b/graphics/pokemon/meowth/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 104 56 -240 232 176 +152 104 0 +248 224 128 16 16 16 -112 72 40 +144 88 0 248 248 248 -248 216 144 -192 160 72 -184 128 64 -200 176 128 -224 224 224 +248 208 0 +200 160 0 +192 120 8 +216 184 56 +216 216 216 192 120 144 -216 160 104 +232 152 48 248 248 200 112 72 40 0 0 0 diff --git a/graphics/pokemon/mesprit/anim_front.png b/graphics/pokemon/mesprit/anim_front.png index 90fc9da6d..bd48e34c8 100644 Binary files a/graphics/pokemon/mesprit/anim_front.png and b/graphics/pokemon/mesprit/anim_front.png differ diff --git a/graphics/pokemon/mesprit/front.png b/graphics/pokemon/mesprit/front.png index 00f88ef29..0ca08f734 100644 Binary files a/graphics/pokemon/mesprit/front.png and b/graphics/pokemon/mesprit/front.png differ diff --git a/graphics/pokemon/mesprit/normal.pal b/graphics/pokemon/mesprit/normal.pal index 5e261f0e6..b6d67710a 100644 --- a/graphics/pokemon/mesprit/normal.pal +++ b/graphics/pokemon/mesprit/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -104 56 80 -224 120 160 -248 160 184 -168 96 136 -224 104 96 +128 64 104 +232 112 168 +248 144 200 +176 80 128 +232 64 64 88 56 64 -88 120 144 +120 112 144 248 248 248 -168 208 240 -128 160 184 -176 48 48 -248 208 48 -176 144 24 -48 64 72 +176 200 240 +144 152 192 +168 64 64 +248 176 32 +168 136 64 +64 64 64 diff --git a/graphics/pokemon/metagross/anim_front.png b/graphics/pokemon/metagross/anim_front.png index 7f5e2f0f9..c04a8b3e7 100644 Binary files a/graphics/pokemon/metagross/anim_front.png and b/graphics/pokemon/metagross/anim_front.png differ diff --git a/graphics/pokemon/metagross/front.png b/graphics/pokemon/metagross/front.png index 6d8b543db..43a762538 100644 Binary files a/graphics/pokemon/metagross/front.png and b/graphics/pokemon/metagross/front.png differ diff --git a/graphics/pokemon/metagross/normal.pal b/graphics/pokemon/metagross/normal.pal index cf0c73a96..4ac88a6bd 100644 --- a/graphics/pokemon/metagross/normal.pal +++ b/graphics/pokemon/metagross/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -40 64 88 +48 56 112 16 16 16 -152 200 216 -120 168 192 -80 136 160 -48 96 128 -192 192 192 -160 160 160 -104 96 104 -208 208 216 +128 208 240 +88 160 248 +72 128 216 +56 96 176 +208 208 208 +168 168 168 +112 104 112 +224 224 224 200 216 240 248 72 80 160 24 40 diff --git a/graphics/pokemon/metang/anim_front.png b/graphics/pokemon/metang/anim_front.png index 91f908d52..c70198db7 100644 Binary files a/graphics/pokemon/metang/anim_front.png and b/graphics/pokemon/metang/anim_front.png differ diff --git a/graphics/pokemon/metang/front.png b/graphics/pokemon/metang/front.png index ded638dec..da3998543 100644 Binary files a/graphics/pokemon/metang/front.png and b/graphics/pokemon/metang/front.png differ diff --git a/graphics/pokemon/metang/normal.pal b/graphics/pokemon/metang/normal.pal index 398ac026c..b4949b927 100644 --- a/graphics/pokemon/metang/normal.pal +++ b/graphics/pokemon/metang/normal.pal @@ -6,14 +6,14 @@ JASC-PAL 192 192 200 16 16 16 248 248 248 -32 72 88 +48 56 112 144 152 160 -64 128 152 -136 184 208 -96 152 176 -48 104 128 -192 72 88 -112 48 64 -232 128 136 +72 128 216 +136 208 248 +96 160 248 +56 96 176 +216 72 80 +136 72 72 +248 104 104 200 200 200 0 0 0 diff --git a/graphics/pokemon/metapod/anim_front.png b/graphics/pokemon/metapod/anim_front.png index bb5ffc2b6..ae952f0b0 100644 Binary files a/graphics/pokemon/metapod/anim_front.png and b/graphics/pokemon/metapod/anim_front.png differ diff --git a/graphics/pokemon/metapod/front.png b/graphics/pokemon/metapod/front.png index 049384e47..cde83b1f0 100644 Binary files a/graphics/pokemon/metapod/front.png and b/graphics/pokemon/metapod/front.png differ diff --git a/graphics/pokemon/metapod/normal.pal b/graphics/pokemon/metapod/normal.pal index 017e3f94b..8bdd97c5e 100644 --- a/graphics/pokemon/metapod/normal.pal +++ b/graphics/pokemon/metapod/normal.pal @@ -2,13 +2,13 @@ JASC-PAL 0100 16 152 208 160 -88 112 48 -200 224 168 -56 80 24 -152 208 80 -112 144 72 -16 16 16 -120 160 56 +72 104 80 +176 224 80 +56 80 56 +128 192 72 +104 136 88 +0 0 0 +104 160 72 248 248 248 0 0 0 0 0 0 diff --git a/graphics/pokemon/mew/anim_front.png b/graphics/pokemon/mew/anim_front.png index cb160cc42..a993b8110 100644 Binary files a/graphics/pokemon/mew/anim_front.png and b/graphics/pokemon/mew/anim_front.png differ diff --git a/graphics/pokemon/mew/front.png b/graphics/pokemon/mew/front.png index cae789231..ad13c8ece 100644 Binary files a/graphics/pokemon/mew/front.png and b/graphics/pokemon/mew/front.png differ diff --git a/graphics/pokemon/mew/normal.pal b/graphics/pokemon/mew/normal.pal index 11c00326b..1b2aafb65 100644 --- a/graphics/pokemon/mew/normal.pal +++ b/graphics/pokemon/mew/normal.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 152 208 160 -160 104 120 -248 200 208 -208 144 152 -80 40 48 -240 168 184 +176 96 144 +248 208 232 +232 128 176 +88 40 80 +248 176 208 0 0 0 248 240 248 -104 144 184 -56 104 160 +128 168 240 +40 96 224 48 64 96 240 176 128 0 0 0 diff --git a/graphics/pokemon/mewtwo/anim_front.png b/graphics/pokemon/mewtwo/anim_front.png index 63a2ccf07..c787ffa80 100644 Binary files a/graphics/pokemon/mewtwo/anim_front.png and b/graphics/pokemon/mewtwo/anim_front.png differ diff --git a/graphics/pokemon/mewtwo/front.png b/graphics/pokemon/mewtwo/front.png index 4f03a6ba8..9d31937c2 100644 Binary files a/graphics/pokemon/mewtwo/front.png and b/graphics/pokemon/mewtwo/front.png differ diff --git a/graphics/pokemon/mewtwo/normal.pal b/graphics/pokemon/mewtwo/normal.pal index 9e499ccb2..66aa6cac4 100644 --- a/graphics/pokemon/mewtwo/normal.pal +++ b/graphics/pokemon/mewtwo/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -144 120 160 -224 208 232 -64 48 80 -184 168 192 -8 8 8 -232 224 232 -120 80 112 -160 104 152 +128 120 152 +224 224 240 +56 56 80 +184 176 200 +0 0 0 +240 240 248 +120 56 128 +168 80 192 240 240 240 -184 120 184 -80 40 80 +176 104 200 +56 32 80 216 216 216 248 248 248 0 0 0 diff --git a/graphics/pokemon/mienfoo/anim_front.png b/graphics/pokemon/mienfoo/anim_front.png index 504a6a53a..9e772faa4 100644 Binary files a/graphics/pokemon/mienfoo/anim_front.png and b/graphics/pokemon/mienfoo/anim_front.png differ diff --git a/graphics/pokemon/mienfoo/front.png b/graphics/pokemon/mienfoo/front.png index 9df2fe780..51cc46ada 100644 Binary files a/graphics/pokemon/mienfoo/front.png and b/graphics/pokemon/mienfoo/front.png differ diff --git a/graphics/pokemon/mienfoo/normal.pal b/graphics/pokemon/mienfoo/normal.pal index 9a72c936f..2f60aa6c6 100644 --- a/graphics/pokemon/mienfoo/normal.pal +++ b/graphics/pokemon/mienfoo/normal.pal @@ -3,14 +3,14 @@ JASC-PAL 16 152 208 160 144 120 80 -248 232 160 -208 192 120 +240 240 136 +200 184 120 96 72 40 -176 160 88 +176 160 80 128 128 144 160 64 88 16 16 16 -224 96 120 +216 96 120 248 248 248 104 32 56 104 48 72 diff --git a/graphics/pokemon/mienshao/anim_front.png b/graphics/pokemon/mienshao/anim_front.png index 181f6570b..598dad2d0 100644 Binary files a/graphics/pokemon/mienshao/anim_front.png and b/graphics/pokemon/mienshao/anim_front.png differ diff --git a/graphics/pokemon/mienshao/front.png b/graphics/pokemon/mienshao/front.png index f7b7fa0b5..6c1ca33a3 100644 Binary files a/graphics/pokemon/mienshao/front.png and b/graphics/pokemon/mienshao/front.png differ diff --git a/graphics/pokemon/mienshao/normal.pal b/graphics/pokemon/mienshao/normal.pal index e7dc996eb..68a6f4c09 100644 --- a/graphics/pokemon/mienshao/normal.pal +++ b/graphics/pokemon/mienshao/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 104 88 -216 152 88 -16 16 16 -112 96 88 -168 144 136 -224 208 200 -72 64 104 -128 104 144 -168 136 208 -136 0 40 -56 24 24 -248 208 160 -248 248 248 -48 48 64 +88 64 48 +200 136 80 +0 0 0 +112 80 96 +184 160 160 +232 216 216 +80 64 96 +128 96 168 +168 136 192 +160 32 32 +72 32 32 +248 168 96 +248 248 248 +64 64 64 0 0 0 diff --git a/graphics/pokemon/mightyena/anim_front.png b/graphics/pokemon/mightyena/anim_front.png index c24c2e6e4..90f55dfdf 100644 Binary files a/graphics/pokemon/mightyena/anim_front.png and b/graphics/pokemon/mightyena/anim_front.png differ diff --git a/graphics/pokemon/mightyena/front.png b/graphics/pokemon/mightyena/front.png index 930edfb6c..e7ddfbcf7 100644 Binary files a/graphics/pokemon/mightyena/front.png and b/graphics/pokemon/mightyena/front.png differ diff --git a/graphics/pokemon/mightyena/normal.pal b/graphics/pokemon/mightyena/normal.pal index 1b7279b44..d531b1dde 100644 --- a/graphics/pokemon/mightyena/normal.pal +++ b/graphics/pokemon/mightyena/normal.pal @@ -4,13 +4,13 @@ JASC-PAL 152 208 160 8 8 8 80 80 80 -144 144 144 -192 192 208 +144 144 152 +184 184 192 56 64 64 32 32 32 208 96 104 -240 232 120 -160 152 56 +240 240 88 +184 136 64 152 56 64 200 112 152 248 248 248 diff --git a/graphics/pokemon/milotic/anim_front.png b/graphics/pokemon/milotic/anim_front.png index 67f9c89d9..ac2450522 100644 Binary files a/graphics/pokemon/milotic/anim_front.png and b/graphics/pokemon/milotic/anim_front.png differ diff --git a/graphics/pokemon/milotic/back.png b/graphics/pokemon/milotic/back.png index 7a701f79d..74525da17 100644 Binary files a/graphics/pokemon/milotic/back.png and b/graphics/pokemon/milotic/back.png differ diff --git a/graphics/pokemon/milotic/front.png b/graphics/pokemon/milotic/front.png index 9ece7373e..08f338984 100644 Binary files a/graphics/pokemon/milotic/front.png and b/graphics/pokemon/milotic/front.png differ diff --git a/graphics/pokemon/milotic/normal.pal b/graphics/pokemon/milotic/normal.pal index 46e53fc41..0fd44096c 100644 --- a/graphics/pokemon/milotic/normal.pal +++ b/graphics/pokemon/milotic/normal.pal @@ -3,13 +3,13 @@ JASC-PAL 16 152 208 160 232 112 120 -56 48 56 +48 48 48 176 56 72 120 104 64 248 224 168 216 192 136 -24 120 160 -88 176 208 +8 120 160 +56 168 216 104 32 40 248 240 224 240 96 112 diff --git a/graphics/pokemon/miltank/anim_front.png b/graphics/pokemon/miltank/anim_front.png index e32aa2e0e..97eb281ed 100644 Binary files a/graphics/pokemon/miltank/anim_front.png and b/graphics/pokemon/miltank/anim_front.png differ diff --git a/graphics/pokemon/miltank/front.png b/graphics/pokemon/miltank/front.png index 7a58f3c09..4ac2687e1 100644 Binary files a/graphics/pokemon/miltank/front.png and b/graphics/pokemon/miltank/front.png differ diff --git a/graphics/pokemon/miltank/normal.pal b/graphics/pokemon/miltank/normal.pal index 53d81ff57..3d87da5b9 100644 --- a/graphics/pokemon/miltank/normal.pal +++ b/graphics/pokemon/miltank/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 +200 200 248 72 88 96 16 16 16 248 248 248 -160 168 144 +112 120 128 40 48 56 152 88 96 -240 152 168 -176 168 120 -184 120 128 +248 176 192 +200 176 96 +224 128 152 104 56 64 -32 104 176 -248 192 192 -240 224 152 +32 88 192 +248 192 208 +232 240 168 88 88 56 -200 184 128 +216 200 120 diff --git a/graphics/pokemon/mime_jr/anim_front.png b/graphics/pokemon/mime_jr/anim_front.png index cbc2640af..bd97d354d 100644 Binary files a/graphics/pokemon/mime_jr/anim_front.png and b/graphics/pokemon/mime_jr/anim_front.png differ diff --git a/graphics/pokemon/mime_jr/front.png b/graphics/pokemon/mime_jr/front.png index 792bb0c50..c3519f6c9 100644 Binary files a/graphics/pokemon/mime_jr/front.png and b/graphics/pokemon/mime_jr/front.png differ diff --git a/graphics/pokemon/mime_jr/normal.pal b/graphics/pokemon/mime_jr/normal.pal index ee536e561..bd513b08b 100644 --- a/graphics/pokemon/mime_jr/normal.pal +++ b/graphics/pokemon/mime_jr/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 96 96 +104 96 104 248 248 248 -216 208 200 -176 160 152 +216 208 216 +184 168 184 +0 0 0 +16 48 72 +16 72 112 +64 112 160 +104 56 48 +248 200 200 +216 160 160 +192 96 96 +192 32 72 +232 88 56 0 0 0 -32 40 56 -64 80 96 -104 128 160 -96 64 72 -240 208 224 -208 160 176 -168 120 128 -168 64 48 -224 112 88 -144 80 88 diff --git a/graphics/pokemon/minccino/anim_front.png b/graphics/pokemon/minccino/anim_front.png index 3d99edfab..f2942a2cb 100644 Binary files a/graphics/pokemon/minccino/anim_front.png and b/graphics/pokemon/minccino/anim_front.png differ diff --git a/graphics/pokemon/minccino/front.png b/graphics/pokemon/minccino/front.png index ee86c993c..a9b05cdc0 100644 Binary files a/graphics/pokemon/minccino/front.png and b/graphics/pokemon/minccino/front.png differ diff --git a/graphics/pokemon/minccino/normal.pal b/graphics/pokemon/minccino/normal.pal index f21720de7..3de570e3d 100644 --- a/graphics/pokemon/minccino/normal.pal +++ b/graphics/pokemon/minccino/normal.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 153 210 164 -71 59 54 -155 138 140 -254 255 255 -229 225 220 -204 191 185 +80 72 64 +136 128 120 +248 240 248 +216 200 192 +184 176 160 16 16 16 -135 63 68 -175 86 93 -237 106 117 +184 40 40 +208 80 80 +232 128 128 175 86 93 237 106 117 0 0 0 diff --git a/graphics/pokemon/minun/anim_front.png b/graphics/pokemon/minun/anim_front.png index 071d727ef..f309898b2 100644 Binary files a/graphics/pokemon/minun/anim_front.png and b/graphics/pokemon/minun/anim_front.png differ diff --git a/graphics/pokemon/minun/front.png b/graphics/pokemon/minun/front.png index d45777b28..fa72433dc 100644 Binary files a/graphics/pokemon/minun/front.png and b/graphics/pokemon/minun/front.png differ diff --git a/graphics/pokemon/minun/normal.pal b/graphics/pokemon/minun/normal.pal index 3a5593d7a..548dccf17 100644 --- a/graphics/pokemon/minun/normal.pal +++ b/graphics/pokemon/minun/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 112 152 -136 200 232 +64 80 216 +112 152 240 16 16 16 -56 152 208 -248 240 184 +88 128 232 +248 232 176 120 112 80 -176 152 104 +176 152 96 248 248 248 -208 192 128 -24 56 96 -160 78 110 -219 149 179 +224 192 112 +0 0 0 +168 56 80 +224 104 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/misdreavus/anim_front.png b/graphics/pokemon/misdreavus/anim_front.png index 5227084c8..e59ff75f0 100644 Binary files a/graphics/pokemon/misdreavus/anim_front.png and b/graphics/pokemon/misdreavus/anim_front.png differ diff --git a/graphics/pokemon/misdreavus/front.png b/graphics/pokemon/misdreavus/front.png index ec3d2cbf0..b46d709a9 100644 Binary files a/graphics/pokemon/misdreavus/front.png and b/graphics/pokemon/misdreavus/front.png differ diff --git a/graphics/pokemon/misdreavus/normal.pal b/graphics/pokemon/misdreavus/normal.pal index 65fa9a322..01e0dd52a 100644 --- a/graphics/pokemon/misdreavus/normal.pal +++ b/graphics/pokemon/misdreavus/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 72 104 +152 56 72 16 16 16 -216 112 128 -64 32 48 -72 136 152 -32 40 80 -32 80 104 -48 104 128 -192 144 88 -144 56 64 -248 200 112 -248 72 96 +216 96 160 +96 24 64 +72 128 160 +24 40 64 +48 72 96 +56 96 128 +184 144 48 +160 40 88 +232 224 96 +216 64 128 248 248 248 112 16 48 0 0 0 diff --git a/graphics/pokemon/mismagius/anim_front.png b/graphics/pokemon/mismagius/anim_front.png index 41643309d..4d86748a1 100644 Binary files a/graphics/pokemon/mismagius/anim_front.png and b/graphics/pokemon/mismagius/anim_front.png differ diff --git a/graphics/pokemon/mismagius/front.png b/graphics/pokemon/mismagius/front.png index cd6a67d65..5d68e8b70 100644 Binary files a/graphics/pokemon/mismagius/front.png and b/graphics/pokemon/mismagius/front.png differ diff --git a/graphics/pokemon/mismagius/normal.pal b/graphics/pokemon/mismagius/normal.pal index 9f98866ae..f013bf063 100644 --- a/graphics/pokemon/mismagius/normal.pal +++ b/graphics/pokemon/mismagius/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 40 96 -144 72 128 -208 120 184 -32 24 56 +88 64 96 +128 80 128 +176 96 176 +48 32 56 16 16 16 -120 88 152 -80 56 104 -160 136 48 +104 72 144 +72 56 88 +200 152 0 248 248 248 -152 72 72 -240 216 80 -224 104 96 -32 32 56 -224 104 96 +144 56 88 +240 216 56 +232 56 16 +0 0 0 +0 0 0 0 0 0 diff --git a/graphics/pokemon/moltres/anim_front.png b/graphics/pokemon/moltres/anim_front.png index 3ba2a59da..04e279d07 100644 Binary files a/graphics/pokemon/moltres/anim_front.png and b/graphics/pokemon/moltres/anim_front.png differ diff --git a/graphics/pokemon/moltres/front.png b/graphics/pokemon/moltres/front.png index 27e286589..ac717bb48 100644 Binary files a/graphics/pokemon/moltres/front.png and b/graphics/pokemon/moltres/front.png differ diff --git a/graphics/pokemon/moltres/normal.pal b/graphics/pokemon/moltres/normal.pal index 2114a47a7..6698521da 100644 --- a/graphics/pokemon/moltres/normal.pal +++ b/graphics/pokemon/moltres/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 48 24 -216 104 64 -88 64 32 -248 184 88 +208 8 8 +232 96 56 +112 64 16 +248 192 72 16 8 8 -192 144 72 -240 160 112 -248 200 112 -248 208 152 +216 144 16 +248 160 72 +248 208 96 +248 232 96 56 56 112 248 248 248 80 56 56 -144 104 104 -208 160 128 +136 96 72 +176 136 96 96 96 96 diff --git a/graphics/pokemon/monferno/anim_front.png b/graphics/pokemon/monferno/anim_front.png index 2c35e3b4a..7d4167c6b 100644 Binary files a/graphics/pokemon/monferno/anim_front.png and b/graphics/pokemon/monferno/anim_front.png differ diff --git a/graphics/pokemon/monferno/front.png b/graphics/pokemon/monferno/front.png index cff833cd4..08ac29b53 100644 Binary files a/graphics/pokemon/monferno/front.png and b/graphics/pokemon/monferno/front.png differ diff --git a/graphics/pokemon/monferno/normal.pal b/graphics/pokemon/monferno/normal.pal index 3d841fd2f..d6dae19c0 100644 --- a/graphics/pokemon/monferno/normal.pal +++ b/graphics/pokemon/monferno/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -184 56 48 -72 48 8 -120 88 64 -224 184 152 -144 96 32 -184 144 120 -200 120 48 -224 152 80 -24 80 112 -40 136 176 -200 192 184 +216 56 8 +88 48 16 +136 112 64 +232 200 168 +152 96 64 +192 152 120 +208 136 32 +232 160 64 +16 72 152 +8 120 192 +216 224 224 16 16 16 248 248 248 -240 192 48 +248 200 64 96 96 112 diff --git a/graphics/pokemon/mothim/anim_front.png b/graphics/pokemon/mothim/anim_front.png index b634f24fd..591ffd651 100644 Binary files a/graphics/pokemon/mothim/anim_front.png and b/graphics/pokemon/mothim/anim_front.png differ diff --git a/graphics/pokemon/mothim/front.png b/graphics/pokemon/mothim/front.png index 4aa22d601..b18fffe17 100644 Binary files a/graphics/pokemon/mothim/front.png and b/graphics/pokemon/mothim/front.png differ diff --git a/graphics/pokemon/mothim/shiny.pal b/graphics/pokemon/mothim/shiny.pal index 31bd384bd..7c5d2000a 100644 --- a/graphics/pokemon/mothim/shiny.pal +++ b/graphics/pokemon/mothim/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 80 104 -80 160 208 -232 232 136 -200 192 64 -136 128 32 +115 65 32 +230 106 41 +246 213 123 +189 156 98 +106 90 74 16 16 16 -40 120 152 -192 200 208 -80 88 104 -128 136 152 -40 48 40 -88 112 88 -56 72 48 +164 74 0 +205 205 205 +98 98 98 +148 148 148 +57 41 41 +106 90 90 +74 57 57 0 0 0 0 0 0 diff --git a/graphics/pokemon/mr_mime/anim_front.png b/graphics/pokemon/mr_mime/anim_front.png index 52a3423c8..afdc8878e 100644 Binary files a/graphics/pokemon/mr_mime/anim_front.png and b/graphics/pokemon/mr_mime/anim_front.png differ diff --git a/graphics/pokemon/mr_mime/front.png b/graphics/pokemon/mr_mime/front.png index 7ee2f715e..13f5a8ff7 100644 Binary files a/graphics/pokemon/mr_mime/front.png and b/graphics/pokemon/mr_mime/front.png differ diff --git a/graphics/pokemon/mr_mime/normal.pal b/graphics/pokemon/mr_mime/normal.pal index 5e5302ea4..32ba22300 100644 --- a/graphics/pokemon/mr_mime/normal.pal +++ b/graphics/pokemon/mr_mime/normal.pal @@ -3,8 +3,8 @@ JASC-PAL 16 152 208 160 16 40 56 -32 72 112 -80 136 168 +16 72 112 +96 136 184 16 16 16 104 64 72 248 224 224 @@ -12,8 +12,8 @@ JASC-PAL 216 168 176 248 248 248 184 192 200 -240 96 136 -112 56 64 -168 88 104 -248 136 168 -158 98 128 +248 88 104 +112 48 56 +184 72 112 +248 168 176 +208 48 32 diff --git a/graphics/pokemon/mudkip/anim_front.png b/graphics/pokemon/mudkip/anim_front.png index cb9228cc6..dbc9857e0 100644 Binary files a/graphics/pokemon/mudkip/anim_front.png and b/graphics/pokemon/mudkip/anim_front.png differ diff --git a/graphics/pokemon/mudkip/front.png b/graphics/pokemon/mudkip/front.png index 7cd675391..7c83c421f 100644 Binary files a/graphics/pokemon/mudkip/front.png and b/graphics/pokemon/mudkip/front.png differ diff --git a/graphics/pokemon/mudkip/normal.pal b/graphics/pokemon/mudkip/normal.pal index 546160fc1..54e0e6ad6 100644 --- a/graphics/pokemon/mudkip/normal.pal +++ b/graphics/pokemon/mudkip/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 88 128 -56 160 208 -104 192 240 -40 120 160 +64 160 216 +120 200 232 +48 104 144 16 16 16 160 176 224 192 208 232 104 128 160 168 224 248 -144 88 24 -208 120 48 -240 152 72 +168 88 32 +232 128 48 +248 168 64 248 248 248 88 72 64 0 0 0 diff --git a/graphics/pokemon/muk/anim_front.png b/graphics/pokemon/muk/anim_front.png index 55923479f..d2da551df 100644 Binary files a/graphics/pokemon/muk/anim_front.png and b/graphics/pokemon/muk/anim_front.png differ diff --git a/graphics/pokemon/muk/front.png b/graphics/pokemon/muk/front.png index b93a15676..3684a6eda 100644 Binary files a/graphics/pokemon/muk/front.png and b/graphics/pokemon/muk/front.png differ diff --git a/graphics/pokemon/muk/normal.pal b/graphics/pokemon/muk/normal.pal index c65ff71c8..43d09a88d 100644 --- a/graphics/pokemon/muk/normal.pal +++ b/graphics/pokemon/muk/normal.pal @@ -2,11 +2,11 @@ JASC-PAL 0100 16 152 208 160 -104 80 112 -200 176 216 -184 152 200 -144 120 168 -72 56 72 +120 72 128 +224 184 232 +192 160 200 +160 120 168 +88 48 112 16 16 16 248 248 248 152 184 208 diff --git a/graphics/pokemon/munchlax/anim_front.png b/graphics/pokemon/munchlax/anim_front.png index 9fd77f96d..1174fb383 100644 Binary files a/graphics/pokemon/munchlax/anim_front.png and b/graphics/pokemon/munchlax/anim_front.png differ diff --git a/graphics/pokemon/munchlax/front.png b/graphics/pokemon/munchlax/front.png index e1115ff57..243df8dd0 100644 Binary files a/graphics/pokemon/munchlax/front.png and b/graphics/pokemon/munchlax/front.png differ diff --git a/graphics/pokemon/munchlax/normal.pal b/graphics/pokemon/munchlax/normal.pal index bb75ff127..be89d69f2 100644 --- a/graphics/pokemon/munchlax/normal.pal +++ b/graphics/pokemon/munchlax/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 88 104 +32 88 112 32 56 64 -72 120 152 +48 120 152 16 16 16 -120 152 168 +48 144 176 200 200 200 248 248 248 -248 216 168 -192 160 128 +240 224 184 +216 168 136 88 64 56 112 112 120 128 96 72 160 128 112 -117 76 87 -209 150 171 +168 56 80 +224 104 120 diff --git a/graphics/pokemon/munna/anim_front.png b/graphics/pokemon/munna/anim_front.png index 5dd7796f8..c7d84bd9b 100644 Binary files a/graphics/pokemon/munna/anim_front.png and b/graphics/pokemon/munna/anim_front.png differ diff --git a/graphics/pokemon/munna/front.png b/graphics/pokemon/munna/front.png index 15708a058..3abe09025 100644 Binary files a/graphics/pokemon/munna/front.png and b/graphics/pokemon/munna/front.png differ diff --git a/graphics/pokemon/munna/normal.pal b/graphics/pokemon/munna/normal.pal index 84bdc2b71..f6a7e60ba 100644 --- a/graphics/pokemon/munna/normal.pal +++ b/graphics/pokemon/munna/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 224 224 -192 136 144 -248 192 208 -120 72 88 -136 88 136 -248 224 216 -168 120 184 +200 136 184 +248 192 200 +128 64 96 +128 88 144 +248 208 216 +168 120 200 16 16 16 -248 120 160 -224 112 144 -144 56 64 +240 136 208 +216 120 184 +168 40 64 248 248 248 -240 64 88 -224 160 176 -88 64 96 +216 40 64 +224 168 192 +96 72 104 0 0 0 diff --git a/graphics/pokemon/murkrow/anim_front.png b/graphics/pokemon/murkrow/anim_front.png index 7a5cb8d71..5866a2d55 100644 Binary files a/graphics/pokemon/murkrow/anim_front.png and b/graphics/pokemon/murkrow/anim_front.png differ diff --git a/graphics/pokemon/murkrow/front.png b/graphics/pokemon/murkrow/front.png index b3885b604..de8f7cd5d 100644 Binary files a/graphics/pokemon/murkrow/front.png and b/graphics/pokemon/murkrow/front.png differ diff --git a/graphics/pokemon/murkrow/normal.pal b/graphics/pokemon/murkrow/normal.pal index 809e1d57d..4d1ccb7b6 100644 --- a/graphics/pokemon/murkrow/normal.pal +++ b/graphics/pokemon/murkrow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 40 56 -48 96 136 +40 40 64 +64 96 152 16 16 16 -32 64 88 -152 56 56 -176 144 96 -232 104 72 -72 128 176 -88 64 40 -240 200 128 +48 64 96 +112 40 56 +176 152 32 +208 64 80 +112 136 184 +88 72 32 +232 208 128 248 248 248 -216 176 112 +208 184 80 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/musharna/anim_front.png b/graphics/pokemon/musharna/anim_front.png index 7b00fd511..f75dd3b0c 100644 Binary files a/graphics/pokemon/musharna/anim_front.png and b/graphics/pokemon/musharna/anim_front.png differ diff --git a/graphics/pokemon/musharna/front.png b/graphics/pokemon/musharna/front.png index 6512dddae..75addd095 100644 Binary files a/graphics/pokemon/musharna/front.png and b/graphics/pokemon/musharna/front.png differ diff --git a/graphics/pokemon/musharna/normal.pal b/graphics/pokemon/musharna/normal.pal index eb9ef3496..a59c683c5 100644 --- a/graphics/pokemon/musharna/normal.pal +++ b/graphics/pokemon/musharna/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 80 112 -240 128 152 -56 56 88 -144 128 200 -144 96 96 +168 80 112 +216 120 184 +72 72 96 +144 120 216 +152 88 96 16 16 16 -248 200 192 -112 96 152 -200 152 152 +248 192 200 +104 96 160 +200 152 144 80 80 80 -184 104 120 -96 48 72 +184 112 168 +104 48 72 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/natu/anim_front.png b/graphics/pokemon/natu/anim_front.png index 45e680c82..4ba2a6eee 100644 Binary files a/graphics/pokemon/natu/anim_front.png and b/graphics/pokemon/natu/anim_front.png differ diff --git a/graphics/pokemon/natu/front.png b/graphics/pokemon/natu/front.png index e770f4379..c77e0f9bd 100644 Binary files a/graphics/pokemon/natu/front.png and b/graphics/pokemon/natu/front.png differ diff --git a/graphics/pokemon/natu/normal.pal b/graphics/pokemon/natu/normal.pal index fa49b7d6f..0d9796fa5 100644 --- a/graphics/pokemon/natu/normal.pal +++ b/graphics/pokemon/natu/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 0 176 232 -128 24 40 -232 88 104 -200 56 72 -104 160 48 -72 104 40 -120 200 56 -168 216 128 +128 40 0 +248 88 88 +216 40 88 +72 144 64 +40 104 40 +112 184 64 +144 216 64 16 16 16 128 96 32 -240 208 96 -200 160 48 +248 224 40 +216 168 40 248 248 248 80 80 80 200 200 200 diff --git a/graphics/pokemon/nidoking/anim_front.png b/graphics/pokemon/nidoking/anim_front.png index dc8328aa0..1645f15e0 100644 Binary files a/graphics/pokemon/nidoking/anim_front.png and b/graphics/pokemon/nidoking/anim_front.png differ diff --git a/graphics/pokemon/nidoking/front.png b/graphics/pokemon/nidoking/front.png index 4112f41a5..cc9ad6d08 100644 Binary files a/graphics/pokemon/nidoking/front.png and b/graphics/pokemon/nidoking/front.png differ diff --git a/graphics/pokemon/nidoking/normal.pal b/graphics/pokemon/nidoking/normal.pal index 0f0185141..bbed53d87 100644 --- a/graphics/pokemon/nidoking/normal.pal +++ b/graphics/pokemon/nidoking/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 48 88 -208 144 208 +104 48 120 +216 144 240 16 16 16 -192 120 184 -144 88 136 -72 112 112 -40 80 88 -80 152 160 +208 112 232 +160 80 144 +40 120 144 +24 68 96 +64 144 192 248 248 248 -176 176 192 -128 64 88 +192 192 160 +168 16 0 112 112 88 -224 112 152 -240 240 240 -208 200 208 +232 64 48 +240 240 248 +232 232 216 diff --git a/graphics/pokemon/nidoqueen/anim_front.png b/graphics/pokemon/nidoqueen/anim_front.png index 5e55246fa..58950bb34 100644 Binary files a/graphics/pokemon/nidoqueen/anim_front.png and b/graphics/pokemon/nidoqueen/anim_front.png differ diff --git a/graphics/pokemon/nidoqueen/front.png b/graphics/pokemon/nidoqueen/front.png index 3c593c585..b66809612 100644 Binary files a/graphics/pokemon/nidoqueen/front.png and b/graphics/pokemon/nidoqueen/front.png differ diff --git a/graphics/pokemon/nidoqueen/normal.pal b/graphics/pokemon/nidoqueen/normal.pal index 7be03f2aa..b1c43f5f8 100644 --- a/graphics/pokemon/nidoqueen/normal.pal +++ b/graphics/pokemon/nidoqueen/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 112 144 -120 168 192 -48 64 80 +72 128 184 +120 184 248 +40 80 128 16 16 16 160 128 104 -96 88 48 -96 72 56 -160 200 232 +128 96 96 +96 72 72 +152 216 248 208 208 208 248 248 248 -184 176 128 -224 208 152 -248 232 192 -130 91 99 -216 153 175 +200 184 144 +232 232 168 +248 248 208 +112 40 40 +232 128 120 diff --git a/graphics/pokemon/nidoran_f/anim_front.png b/graphics/pokemon/nidoran_f/anim_front.png index 1cf3106f6..15d742ab9 100644 Binary files a/graphics/pokemon/nidoran_f/anim_front.png and b/graphics/pokemon/nidoran_f/anim_front.png differ diff --git a/graphics/pokemon/nidoran_f/front.png b/graphics/pokemon/nidoran_f/front.png index 6b6f116aa..1e84b1d99 100644 Binary files a/graphics/pokemon/nidoran_f/front.png and b/graphics/pokemon/nidoran_f/front.png differ diff --git a/graphics/pokemon/nidoran_f/normal.pal b/graphics/pokemon/nidoran_f/normal.pal index 439c5290a..16d475109 100644 --- a/graphics/pokemon/nidoran_f/normal.pal +++ b/graphics/pokemon/nidoran_f/normal.pal @@ -10,9 +10,9 @@ JASC-PAL 32 152 160 16 16 16 248 248 248 -176 48 40 +184 48 72 232 232 248 -248 112 80 +248 80 64 216 216 216 0 0 0 0 0 0 diff --git a/graphics/pokemon/nidoran_m/anim_front.png b/graphics/pokemon/nidoran_m/anim_front.png index e36c4ddd1..dc2eff8a0 100644 Binary files a/graphics/pokemon/nidoran_m/anim_front.png and b/graphics/pokemon/nidoran_m/anim_front.png differ diff --git a/graphics/pokemon/nidoran_m/front.png b/graphics/pokemon/nidoran_m/front.png index 13f935c68..c94dfdc0e 100644 Binary files a/graphics/pokemon/nidoran_m/front.png and b/graphics/pokemon/nidoran_m/front.png differ diff --git a/graphics/pokemon/nidoran_m/normal.pal b/graphics/pokemon/nidoran_m/normal.pal index 8534782ca..fb292bfd0 100644 --- a/graphics/pokemon/nidoran_m/normal.pal +++ b/graphics/pokemon/nidoran_m/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 96 160 -200 136 208 -104 56 104 +184 96 192 +224 152 208 +96 64 104 16 16 16 -224 168 232 -24 96 88 -16 136 128 +232 184 232 +0 96 64 +0 160 112 200 200 200 -240 120 96 +248 104 80 248 248 248 -216 40 56 -0 0 0 +216 64 40 +176 24 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/nidorina/anim_front.png b/graphics/pokemon/nidorina/anim_front.png index 4d282ca45..9d4f3853b 100644 Binary files a/graphics/pokemon/nidorina/anim_front.png and b/graphics/pokemon/nidorina/anim_front.png differ diff --git a/graphics/pokemon/nidorina/front.png b/graphics/pokemon/nidorina/front.png index da526a47f..c5e3e7b85 100644 Binary files a/graphics/pokemon/nidorina/front.png and b/graphics/pokemon/nidorina/front.png differ diff --git a/graphics/pokemon/nidorina/normal.pal b/graphics/pokemon/nidorina/normal.pal index 6341a73ff..1ad762c66 100644 --- a/graphics/pokemon/nidorina/normal.pal +++ b/graphics/pokemon/nidorina/normal.pal @@ -7,13 +7,13 @@ JASC-PAL 44 76 114 16 16 16 141 190 201 -32 60 102 -51 115 178 -85 150 193 +24 56 112 +16 96 176 +72 128 240 255 255 255 214 214 214 -201 47 30 -255 145 117 +192 32 16 +248 144 112 232 72 56 131 131 131 0 0 0 diff --git a/graphics/pokemon/nidorino/anim_front.png b/graphics/pokemon/nidorino/anim_front.png index 4ab2ddbaa..30369bf7e 100644 Binary files a/graphics/pokemon/nidorino/anim_front.png and b/graphics/pokemon/nidorino/anim_front.png differ diff --git a/graphics/pokemon/nidorino/front.png b/graphics/pokemon/nidorino/front.png index 4c5421919..67cfc4922 100644 Binary files a/graphics/pokemon/nidorino/front.png and b/graphics/pokemon/nidorino/front.png differ diff --git a/graphics/pokemon/nidorino/normal.pal b/graphics/pokemon/nidorino/normal.pal index be5b92892..1c2aee97c 100644 --- a/graphics/pokemon/nidorino/normal.pal +++ b/graphics/pokemon/nidorino/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 88 56 96 -184 136 192 +200 128 216 16 16 16 -208 176 216 +224 168 232 144 96 152 -72 120 120 -80 160 160 +0 144 96 +72 200 160 248 248 248 128 128 128 192 192 192 -88 56 88 -145 82 101 -204 138 162 +144 88 176 +168 40 40 +232 128 120 0 0 0 0 0 0 diff --git a/graphics/pokemon/nincada/anim_front.png b/graphics/pokemon/nincada/anim_front.png index 7852df8d3..261fbc098 100644 Binary files a/graphics/pokemon/nincada/anim_front.png and b/graphics/pokemon/nincada/anim_front.png differ diff --git a/graphics/pokemon/nincada/front.png b/graphics/pokemon/nincada/front.png index b7239dcee..1c408a81d 100644 Binary files a/graphics/pokemon/nincada/front.png and b/graphics/pokemon/nincada/front.png differ diff --git a/graphics/pokemon/nincada/normal.pal b/graphics/pokemon/nincada/normal.pal index cfd79f8ec..e6dd6a53d 100644 --- a/graphics/pokemon/nincada/normal.pal +++ b/graphics/pokemon/nincada/normal.pal @@ -2,11 +2,11 @@ JASC-PAL 0100 16 0 176 232 -112 144 72 +64 120 80 24 24 24 -216 232 168 +176 216 112 104 104 96 -168 200 112 +112 168 88 240 248 248 120 128 144 184 192 208 diff --git a/graphics/pokemon/ninetales/anim_front.png b/graphics/pokemon/ninetales/anim_front.png index a3bcf64b4..643f1ef8c 100644 Binary files a/graphics/pokemon/ninetales/anim_front.png and b/graphics/pokemon/ninetales/anim_front.png differ diff --git a/graphics/pokemon/ninetales/front.png b/graphics/pokemon/ninetales/front.png index bdae540fc..7b33c6f41 100644 Binary files a/graphics/pokemon/ninetales/front.png and b/graphics/pokemon/ninetales/front.png differ diff --git a/graphics/pokemon/ninetales/normal.pal b/graphics/pokemon/ninetales/normal.pal index 64191711a..e0dfb21c5 100644 --- a/graphics/pokemon/ninetales/normal.pal +++ b/graphics/pokemon/ninetales/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -176 160 104 -112 96 56 -248 232 144 +200 152 72 +128 96 24 +240 224 120 16 16 16 -216 192 112 +224 192 80 176 72 48 248 248 248 -224 112 88 -232 184 88 -224 152 48 -175 105 127 +248 104 40 +248 160 56 +232 128 40 +168 16 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/ninjask/anim_front.png b/graphics/pokemon/ninjask/anim_front.png index 04bc142f4..bca98030c 100644 Binary files a/graphics/pokemon/ninjask/anim_front.png and b/graphics/pokemon/ninjask/anim_front.png differ diff --git a/graphics/pokemon/ninjask/front.png b/graphics/pokemon/ninjask/front.png index 7f6018900..f7c0d20dc 100644 Binary files a/graphics/pokemon/ninjask/front.png and b/graphics/pokemon/ninjask/front.png differ diff --git a/graphics/pokemon/ninjask/normal.pal b/graphics/pokemon/ninjask/normal.pal index 94fb08586..d8dda49bf 100644 --- a/graphics/pokemon/ninjask/normal.pal +++ b/graphics/pokemon/ninjask/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 144 144 152 96 96 96 248 248 248 -16 16 16 -128 48 48 -200 48 64 -216 72 88 -184 176 208 +0 0 0 +152 32 64 +192 48 80 +216 48 88 +168 176 176 128 56 56 -136 96 56 -216 208 232 -248 216 104 -208 168 96 +128 96 64 +216 216 208 +248 208 96 +224 168 72 56 56 56 -120 112 128 +120 120 120 diff --git a/graphics/pokemon/noctowl/anim_front.png b/graphics/pokemon/noctowl/anim_front.png index 5e052f2a9..e6ff6d210 100644 Binary files a/graphics/pokemon/noctowl/anim_front.png and b/graphics/pokemon/noctowl/anim_front.png differ diff --git a/graphics/pokemon/noctowl/back.png b/graphics/pokemon/noctowl/back.png index 1453fabec..3900e31bb 100644 Binary files a/graphics/pokemon/noctowl/back.png and b/graphics/pokemon/noctowl/back.png differ diff --git a/graphics/pokemon/noctowl/front.png b/graphics/pokemon/noctowl/front.png index 68af918f7..6665234c0 100644 Binary files a/graphics/pokemon/noctowl/front.png and b/graphics/pokemon/noctowl/front.png differ diff --git a/graphics/pokemon/noctowl/normal.pal b/graphics/pokemon/noctowl/normal.pal index 88ca3a743..cf763b733 100644 --- a/graphics/pokemon/noctowl/normal.pal +++ b/graphics/pokemon/noctowl/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 104 80 -80 48 40 -240 216 152 -112 72 64 -200 176 120 -48 32 24 -184 128 104 +176 120 80 +96 64 48 +240 224 168 +120 88 72 +216 184 144 +64 40 32 +200 144 112 16 16 16 -152 128 112 +96 96 96 248 248 248 -168 40 48 +192 48 24 +152 0 0 192 192 192 -128 80 56 -224 168 144 +144 88 56 160 128 104 diff --git a/graphics/pokemon/noctowl/shiny.pal b/graphics/pokemon/noctowl/shiny.pal index 0bb0f2890..033b7f62f 100644 --- a/graphics/pokemon/noctowl/shiny.pal +++ b/graphics/pokemon/noctowl/shiny.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 160 168 48 -128 80 16 -240 240 176 -176 104 32 +136 80 16 +240 248 144 +184 104 16 224 224 112 -64 48 8 +80 56 0 200 208 72 16 16 16 -128 128 128 +96 96 96 248 248 248 -144 16 16 +192 48 24 +152 0 0 192 192 192 112 120 0 -224 224 112 208 152 48 diff --git a/graphics/pokemon/nosepass/anim_front.png b/graphics/pokemon/nosepass/anim_front.png index 046b3d532..accd29014 100644 Binary files a/graphics/pokemon/nosepass/anim_front.png and b/graphics/pokemon/nosepass/anim_front.png differ diff --git a/graphics/pokemon/nosepass/front.png b/graphics/pokemon/nosepass/front.png index 9d876776c..695577233 100644 Binary files a/graphics/pokemon/nosepass/front.png and b/graphics/pokemon/nosepass/front.png differ diff --git a/graphics/pokemon/nosepass/normal.pal b/graphics/pokemon/nosepass/normal.pal index 4e626c98f..1cb62baaa 100644 --- a/graphics/pokemon/nosepass/normal.pal +++ b/graphics/pokemon/nosepass/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -64 80 152 -40 48 88 -136 160 216 -88 112 184 -168 192 232 -16 16 16 -160 40 48 -208 72 80 -240 160 160 -240 104 112 -88 24 32 +65 82 156 +49 49 74 +139 164 230 +98 123 189 +172 189 246 +0 0 0 +156 49 74 +222 82 82 +255 148 148 +255 106 123 +90 24 32 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/numel/anim_front.png b/graphics/pokemon/numel/anim_front.png index 3fd2c74f3..b94c34a1a 100644 Binary files a/graphics/pokemon/numel/anim_front.png and b/graphics/pokemon/numel/anim_front.png differ diff --git a/graphics/pokemon/numel/front.png b/graphics/pokemon/numel/front.png index 610bf14a9..2df10f3c7 100644 Binary files a/graphics/pokemon/numel/front.png and b/graphics/pokemon/numel/front.png differ diff --git a/graphics/pokemon/numel/normal.pal b/graphics/pokemon/numel/normal.pal index 4cf321fb0..63829ec54 100644 --- a/graphics/pokemon/numel/normal.pal +++ b/graphics/pokemon/numel/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 0 176 232 24 24 24 112 96 80 -248 216 120 -216 168 96 +240 216 80 +216 176 72 144 120 80 -64 104 64 -144 216 176 -112 184 120 -240 232 200 -208 192 144 +72 104 80 +144 224 152 +112 192 96 +240 240 160 +208 208 144 248 248 248 208 200 216 -96 152 96 +88 144 88 0 0 0 0 0 0 diff --git a/graphics/pokemon/nuzleaf/anim_front.png b/graphics/pokemon/nuzleaf/anim_front.png index ebdd431db..796a50b31 100644 Binary files a/graphics/pokemon/nuzleaf/anim_front.png and b/graphics/pokemon/nuzleaf/anim_front.png differ diff --git a/graphics/pokemon/nuzleaf/front.png b/graphics/pokemon/nuzleaf/front.png index 1cbe64867..173398f52 100644 Binary files a/graphics/pokemon/nuzleaf/front.png and b/graphics/pokemon/nuzleaf/front.png differ diff --git a/graphics/pokemon/nuzleaf/normal.pal b/graphics/pokemon/nuzleaf/normal.pal index b6fdb2223..debc6d0b4 100644 --- a/graphics/pokemon/nuzleaf/normal.pal +++ b/graphics/pokemon/nuzleaf/normal.pal @@ -2,10 +2,10 @@ JASC-PAL 0100 16 0 176 232 -40 112 80 -120 200 160 -88 168 120 -56 136 96 +56 112 56 +136 208 120 +96 176 96 +88 152 72 16 16 16 128 120 104 160 104 80 @@ -16,4 +16,4 @@ JASC-PAL 184 168 152 200 200 232 248 248 248 -176 112 128 +184 88 104 diff --git a/graphics/pokemon/octillery/anim_front.png b/graphics/pokemon/octillery/anim_front.png index de9ffd250..f7e1aec68 100644 Binary files a/graphics/pokemon/octillery/anim_front.png and b/graphics/pokemon/octillery/anim_front.png differ diff --git a/graphics/pokemon/octillery/front.png b/graphics/pokemon/octillery/front.png index eb8a71c03..2fc250c8d 100644 Binary files a/graphics/pokemon/octillery/front.png and b/graphics/pokemon/octillery/front.png differ diff --git a/graphics/pokemon/octillery/normal.pal b/graphics/pokemon/octillery/normal.pal index 7ba40e531..804bec180 100644 --- a/graphics/pokemon/octillery/normal.pal +++ b/graphics/pokemon/octillery/normal.pal @@ -6,7 +6,7 @@ JASC-PAL 96 32 24 208 168 56 248 216 96 -160 48 40 +192 48 40 240 64 56 16 16 16 240 120 104 diff --git a/graphics/pokemon/oddish/anim_front.png b/graphics/pokemon/oddish/anim_front.png index cf28c6f33..cd1f5e16c 100644 Binary files a/graphics/pokemon/oddish/anim_front.png and b/graphics/pokemon/oddish/anim_front.png differ diff --git a/graphics/pokemon/oddish/front.png b/graphics/pokemon/oddish/front.png index a78bfd33e..345e4c509 100644 Binary files a/graphics/pokemon/oddish/front.png and b/graphics/pokemon/oddish/front.png differ diff --git a/graphics/pokemon/oddish/normal.pal b/graphics/pokemon/oddish/normal.pal index 29fd79b9e..0a9d87c1a 100644 --- a/graphics/pokemon/oddish/normal.pal +++ b/graphics/pokemon/oddish/normal.pal @@ -1,17 +1,17 @@ JASC-PAL 0100 16 -153 210 164 -59 145 36 -59 96 40 -68 181 48 -134 198 109 +248 192 192 +48 136 16 +32 88 8 +56 184 32 +136 200 88 16 16 16 -63 109 140 -105 150 173 -126 178 204 -234 72 60 -41 65 89 +56 96 136 +112 144 168 +136 168 192 +232 56 48 +40 56 72 178 92 121 214 149 172 0 0 0 diff --git a/graphics/pokemon/omanyte/anim_front.png b/graphics/pokemon/omanyte/anim_front.png index 95912686b..d6d8d6705 100644 Binary files a/graphics/pokemon/omanyte/anim_front.png and b/graphics/pokemon/omanyte/anim_front.png differ diff --git a/graphics/pokemon/omanyte/front.png b/graphics/pokemon/omanyte/front.png index 0bec6af81..eb805c417 100644 Binary files a/graphics/pokemon/omanyte/front.png and b/graphics/pokemon/omanyte/front.png differ diff --git a/graphics/pokemon/omanyte/normal.pal b/graphics/pokemon/omanyte/normal.pal index 622829ed8..24f024ad2 100644 --- a/graphics/pokemon/omanyte/normal.pal +++ b/graphics/pokemon/omanyte/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 88 56 -152 144 104 -232 224 160 -192 184 136 -248 240 200 -16 16 8 -64 136 152 -40 88 96 -136 208 224 -80 176 192 +96 80 48 +152 128 104 +224 216 128 +192 168 112 +248 232 192 +0 0 0 +64 104 168 +56 64 128 +96 184 240 +56 152 200 248 248 248 -184 184 184 -88 88 88 +192 192 192 +104 104 104 152 224 240 0 0 0 diff --git a/graphics/pokemon/omastar/anim_front.png b/graphics/pokemon/omastar/anim_front.png index 7d57973e9..42d693d72 100644 Binary files a/graphics/pokemon/omastar/anim_front.png and b/graphics/pokemon/omastar/anim_front.png differ diff --git a/graphics/pokemon/omastar/front.png b/graphics/pokemon/omastar/front.png index bac3d51bf..87796c37d 100644 Binary files a/graphics/pokemon/omastar/front.png and b/graphics/pokemon/omastar/front.png differ diff --git a/graphics/pokemon/omastar/normal.pal b/graphics/pokemon/omastar/normal.pal index fdc66b01f..1ca4d0965 100644 --- a/graphics/pokemon/omastar/normal.pal +++ b/graphics/pokemon/omastar/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 80 72 -232 216 168 -16 16 8 -184 168 120 -144 128 96 -248 240 216 -48 104 128 -48 72 88 -120 200 224 -72 152 168 -248 232 152 -184 168 104 -248 248 248 -88 0 48 +96 80 64 +224 216 128 +0 0 0 +192 168 112 +152 128 104 +248 232 192 +64 104 168 +56 64 128 +96 184 240 +56 152 200 +248 240 152 +248 248 248 +64 64 64 +168 0 0 0 0 0 diff --git a/graphics/pokemon/onix/anim_front.png b/graphics/pokemon/onix/anim_front.png index d9f79fab8..65409126f 100644 Binary files a/graphics/pokemon/onix/anim_front.png and b/graphics/pokemon/onix/anim_front.png differ diff --git a/graphics/pokemon/onix/front.png b/graphics/pokemon/onix/front.png index 806b0c5ac..e28cd8a82 100644 Binary files a/graphics/pokemon/onix/front.png and b/graphics/pokemon/onix/front.png differ diff --git a/graphics/pokemon/onix/normal.pal b/graphics/pokemon/onix/normal.pal index 5bd1b7e4d..871cca5d8 100644 --- a/graphics/pokemon/onix/normal.pal +++ b/graphics/pokemon/onix/normal.pal @@ -2,12 +2,12 @@ JASC-PAL 0100 16 152 208 160 -56 56 72 -104 104 120 -192 192 200 -144 136 152 +72 64 72 +112 104 128 +200 200 208 +152 144 152 16 16 16 -168 176 192 +176 176 184 248 248 248 248 248 248 0 0 0 diff --git a/graphics/pokemon/oshawott/anim_front.png b/graphics/pokemon/oshawott/anim_front.png index 4b8fbcf86..d1fbab7f9 100644 Binary files a/graphics/pokemon/oshawott/anim_front.png and b/graphics/pokemon/oshawott/anim_front.png differ diff --git a/graphics/pokemon/oshawott/front.png b/graphics/pokemon/oshawott/front.png index a244e07d8..4a0a0004a 100644 Binary files a/graphics/pokemon/oshawott/front.png and b/graphics/pokemon/oshawott/front.png differ diff --git a/graphics/pokemon/oshawott/normal.pal b/graphics/pokemon/oshawott/normal.pal index 1c743f619..2839bcc48 100644 --- a/graphics/pokemon/oshawott/normal.pal +++ b/graphics/pokemon/oshawott/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 72 88 -112 144 176 -248 248 248 -64 96 144 -112 128 168 -40 64 80 -16 16 16 -136 96 48 -192 144 88 -184 200 232 -40 104 112 -112 200 192 -56 152 160 -120 104 64 +74 74 74 +139 139 156 +255 255 255 +49 65 106 +74 106 172 +41 65 82 +0 0 0 +139 90 49 +197 148 41 +197 197 205 +32 90 98 +41 189 197 +32 148 156 +139 90 49 248 224 144 diff --git a/graphics/pokemon/pachirisu/anim_front.png b/graphics/pokemon/pachirisu/anim_front.png index 45d9f3843..8af3f81c8 100644 Binary files a/graphics/pokemon/pachirisu/anim_front.png and b/graphics/pokemon/pachirisu/anim_front.png differ diff --git a/graphics/pokemon/pachirisu/front.png b/graphics/pokemon/pachirisu/front.png index 0096f3f58..7d60cf8df 100644 Binary files a/graphics/pokemon/pachirisu/front.png and b/graphics/pokemon/pachirisu/front.png differ diff --git a/graphics/pokemon/pachirisu/normal.pal b/graphics/pokemon/pachirisu/normal.pal index 680ae079f..c8c18447f 100644 --- a/graphics/pokemon/pachirisu/normal.pal +++ b/graphics/pokemon/pachirisu/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 96 112 -128 208 216 -80 160 176 -112 120 136 -232 240 248 +72 64 88 +120 176 224 +96 120 152 +120 120 128 +240 240 240 16 16 16 -184 200 208 -72 88 96 +200 192 192 +88 80 72 248 208 96 -128 88 120 -176 160 80 -216 152 168 +128 80 56 +192 160 96 +232 128 88 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/palkia/anim_front.png b/graphics/pokemon/palkia/anim_front.png index 3b408c2a6..73c70a694 100644 Binary files a/graphics/pokemon/palkia/anim_front.png and b/graphics/pokemon/palkia/anim_front.png differ diff --git a/graphics/pokemon/palkia/front.png b/graphics/pokemon/palkia/front.png index 16ae684d5..4e2d3f513 100644 Binary files a/graphics/pokemon/palkia/front.png and b/graphics/pokemon/palkia/front.png differ diff --git a/graphics/pokemon/palkia/normal.pal b/graphics/pokemon/palkia/normal.pal index 724a400a5..6dea576dc 100644 --- a/graphics/pokemon/palkia/normal.pal +++ b/graphics/pokemon/palkia/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 104 120 -136 120 128 -232 224 224 -184 160 168 +112 112 120 +160 152 176 +240 232 248 +208 184 216 216 224 248 176 184 216 144 144 160 -176 96 176 -120 64 128 -40 48 72 +192 104 216 +136 80 144 +56 56 56 240 232 248 248 248 248 -200 112 136 +248 80 64 16 16 16 248 176 168 diff --git a/graphics/pokemon/palpitoad/anim_front.png b/graphics/pokemon/palpitoad/anim_front.png index 8a7f2e8ad..27fba830e 100644 Binary files a/graphics/pokemon/palpitoad/anim_front.png and b/graphics/pokemon/palpitoad/anim_front.png differ diff --git a/graphics/pokemon/palpitoad/front.png b/graphics/pokemon/palpitoad/front.png index 84d79d36d..05b2a8b24 100644 Binary files a/graphics/pokemon/palpitoad/front.png and b/graphics/pokemon/palpitoad/front.png differ diff --git a/graphics/pokemon/palpitoad/normal.pal b/graphics/pokemon/palpitoad/normal.pal index 3cea44ce6..60ac03fa7 100644 --- a/graphics/pokemon/palpitoad/normal.pal +++ b/graphics/pokemon/palpitoad/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 112 104 -16 16 16 -152 224 208 -88 168 168 -64 56 64 -40 32 40 -104 88 88 -40 128 192 -16 64 96 -48 96 136 -192 176 192 +24 96 112 +0 0 0 +128 224 208 +80 160 176 +64 64 64 +40 40 40 +96 96 96 +8 144 208 +16 64 120 +40 104 168 +192 192 192 248 248 248 -128 96 64 -176 144 104 -248 216 152 +144 88 72 +192 152 128 +248 216 184 diff --git a/graphics/pokemon/panpour/anim_front.png b/graphics/pokemon/panpour/anim_front.png index 82852a4c8..84233aa35 100644 Binary files a/graphics/pokemon/panpour/anim_front.png and b/graphics/pokemon/panpour/anim_front.png differ diff --git a/graphics/pokemon/panpour/front.png b/graphics/pokemon/panpour/front.png index aa54ff9ff..bc17b1fbc 100644 Binary files a/graphics/pokemon/panpour/front.png and b/graphics/pokemon/panpour/front.png differ diff --git a/graphics/pokemon/panpour/normal.pal b/graphics/pokemon/panpour/normal.pal index 7800417a2..ffee37021 100644 --- a/graphics/pokemon/panpour/normal.pal +++ b/graphics/pokemon/panpour/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 72 96 -16 16 16 -32 112 120 -48 136 152 -56 192 224 -112 208 216 +0 56 112 +0 0 0 +32 112 152 +24 136 168 +40 176 216 +152 224 232 248 248 248 -184 152 88 +200 160 88 80 80 80 -248 208 120 -120 96 48 -160 120 64 +248 200 120 +112 80 32 +160 120 56 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/pansage/anim_front.png b/graphics/pokemon/pansage/anim_front.png index a0ce10916..9eb2397d1 100644 Binary files a/graphics/pokemon/pansage/anim_front.png and b/graphics/pokemon/pansage/anim_front.png differ diff --git a/graphics/pokemon/pansage/front.png b/graphics/pokemon/pansage/front.png index 59962b064..63e3125ca 100644 Binary files a/graphics/pokemon/pansage/front.png and b/graphics/pokemon/pansage/front.png differ diff --git a/graphics/pokemon/pansage/normal.pal b/graphics/pokemon/pansage/normal.pal index 1bfb0afca..130477fb3 100644 --- a/graphics/pokemon/pansage/normal.pal +++ b/graphics/pokemon/pansage/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -32 80 56 -16 16 16 -48 112 72 -64 160 104 -248 208 112 -192 160 88 -112 208 152 +24 72 40 +0 0 0 +8 112 48 +24 160 80 +248 200 120 +200 160 88 +128 200 152 248 248 248 192 192 192 80 80 80 128 128 128 -128 104 56 -120 72 96 -192 112 128 +112 80 32 +176 96 120 +240 152 168 160 120 56 diff --git a/graphics/pokemon/pansear/anim_front.png b/graphics/pokemon/pansear/anim_front.png index dea9e1dff..0510243a9 100644 Binary files a/graphics/pokemon/pansear/anim_front.png and b/graphics/pokemon/pansear/anim_front.png differ diff --git a/graphics/pokemon/pansear/front.png b/graphics/pokemon/pansear/front.png index d3138f97d..c7dc3a5b8 100644 Binary files a/graphics/pokemon/pansear/front.png and b/graphics/pokemon/pansear/front.png differ diff --git a/graphics/pokemon/pansear/normal.pal b/graphics/pokemon/pansear/normal.pal index 85a73a6dd..90eee6914 100644 --- a/graphics/pokemon/pansear/normal.pal +++ b/graphics/pokemon/pansear/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 48 56 -216 88 80 -16 16 16 -168 64 64 -240 152 40 +120 48 48 +224 80 64 +0 0 0 +184 64 56 +240 144 64 248 248 248 80 80 80 192 192 192 -248 216 136 -176 144 88 +248 200 120 +200 160 88 128 128 128 -104 80 48 +112 80 32 160 120 56 0 0 0 0 0 0 diff --git a/graphics/pokemon/paras/anim_front.png b/graphics/pokemon/paras/anim_front.png index 4d8251989..54a56c933 100644 Binary files a/graphics/pokemon/paras/anim_front.png and b/graphics/pokemon/paras/anim_front.png differ diff --git a/graphics/pokemon/paras/front.png b/graphics/pokemon/paras/front.png index 1724f0b6e..9f89688fd 100644 Binary files a/graphics/pokemon/paras/front.png and b/graphics/pokemon/paras/front.png differ diff --git a/graphics/pokemon/paras/normal.pal b/graphics/pokemon/paras/normal.pal index 0757a91a0..fcf39cf9f 100644 --- a/graphics/pokemon/paras/normal.pal +++ b/graphics/pokemon/paras/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 80 112 +192 64 64 96 56 64 -224 112 152 -224 168 88 -248 200 152 +248 104 104 +200 176 32 +248 216 80 16 16 16 -104 56 32 -48 24 8 -232 136 64 +112 72 24 +65 40 16 +232 128 40 168 144 72 -176 96 64 -240 160 112 +176 96 32 +248 168 96 88 88 88 -248 240 248 +248 248 248 200 200 200 diff --git a/graphics/pokemon/parasect/anim_front.png b/graphics/pokemon/parasect/anim_front.png index 98051569e..f424edf0c 100644 Binary files a/graphics/pokemon/parasect/anim_front.png and b/graphics/pokemon/parasect/anim_front.png differ diff --git a/graphics/pokemon/parasect/front.png b/graphics/pokemon/parasect/front.png index 8f9a86b11..5a841ffbc 100644 Binary files a/graphics/pokemon/parasect/front.png and b/graphics/pokemon/parasect/front.png differ diff --git a/graphics/pokemon/parasect/normal.pal b/graphics/pokemon/parasect/normal.pal index 5d22262ca..0d82fc25c 100644 --- a/graphics/pokemon/parasect/normal.pal +++ b/graphics/pokemon/parasect/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 32 72 -232 144 176 -208 112 152 -248 192 48 +120 8 8 +248 104 104 +240 48 48 +248 208 80 16 16 16 240 152 152 -232 160 40 -168 72 120 -96 56 24 -160 96 56 +208 200 48 +192 48 64 +96 16 0 +176 64 56 248 240 248 -232 136 64 -224 224 240 -168 176 192 +216 104 48 +208 208 208 +152 136 160 0 0 0 diff --git a/graphics/pokemon/patrat/anim_front.png b/graphics/pokemon/patrat/anim_front.png index dd72e2e5b..68bf54bc4 100644 Binary files a/graphics/pokemon/patrat/anim_front.png and b/graphics/pokemon/patrat/anim_front.png differ diff --git a/graphics/pokemon/patrat/front.png b/graphics/pokemon/patrat/front.png index e4bb97d89..3bc72d582 100644 Binary files a/graphics/pokemon/patrat/front.png and b/graphics/pokemon/patrat/front.png differ diff --git a/graphics/pokemon/patrat/normal.pal b/graphics/pokemon/patrat/normal.pal index d7c871fae..4eed15495 100644 --- a/graphics/pokemon/patrat/normal.pal +++ b/graphics/pokemon/patrat/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 88 56 -80 56 32 -168 120 72 -200 152 112 +120 80 72 +80 64 48 +152 104 48 +184 128 64 16 16 16 64 56 48 -232 72 64 +240 72 72 160 48 48 -248 184 40 -144 128 120 +248 152 40 +152 128 112 248 248 248 176 152 128 -216 192 160 -200 184 176 +208 184 144 +184 184 184 144 112 72 diff --git a/graphics/pokemon/pawniard/anim_front.png b/graphics/pokemon/pawniard/anim_front.png index 53ea2cf82..7fc6d3b72 100644 Binary files a/graphics/pokemon/pawniard/anim_front.png and b/graphics/pokemon/pawniard/anim_front.png differ diff --git a/graphics/pokemon/pawniard/front.png b/graphics/pokemon/pawniard/front.png index b6ddd9840..4d5434548 100644 Binary files a/graphics/pokemon/pawniard/front.png and b/graphics/pokemon/pawniard/front.png differ diff --git a/graphics/pokemon/pawniard/normal.pal b/graphics/pokemon/pawniard/normal.pal index b02c73517..b0af3a933 100644 --- a/graphics/pokemon/pawniard/normal.pal +++ b/graphics/pokemon/pawniard/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 8 24 -16 16 16 -168 80 80 +96 0 0 +0 0 0 +184 64 64 248 248 248 -104 32 40 +136 32 24 80 80 88 176 192 200 -32 32 40 -96 104 112 -248 160 72 -56 56 72 -168 104 56 +40 40 48 +96 96 96 +224 136 64 +64 64 80 +136 88 56 40 40 40 0 0 0 0 0 0 diff --git a/graphics/pokemon/pelipper/anim_front.png b/graphics/pokemon/pelipper/anim_front.png index 212ee7e96..d99325b03 100644 Binary files a/graphics/pokemon/pelipper/anim_front.png and b/graphics/pokemon/pelipper/anim_front.png differ diff --git a/graphics/pokemon/pelipper/front.png b/graphics/pokemon/pelipper/front.png index c4b09f097..145bb8e25 100644 Binary files a/graphics/pokemon/pelipper/front.png and b/graphics/pokemon/pelipper/front.png differ diff --git a/graphics/pokemon/pelipper/normal.pal b/graphics/pokemon/pelipper/normal.pal index f5dc1e8af..4aff65045 100644 --- a/graphics/pokemon/pelipper/normal.pal +++ b/graphics/pokemon/pelipper/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 96 120 +48 96 136 16 16 16 -80 152 192 -184 216 240 -96 192 224 -192 216 232 -96 104 128 +88 160 200 +160 224 248 +120 200 232 +200 208 232 +112 112 128 248 248 248 -120 96 48 -248 224 144 -176 144 88 -224 184 112 -248 232 216 -176 120 136 -160 184 216 +136 64 48 +248 216 72 +192 120 48 +240 176 48 +248 248 168 +200 64 80 +152 176 192 diff --git a/graphics/pokemon/persian/anim_front.png b/graphics/pokemon/persian/anim_front.png index 84e680836..ed960deab 100644 Binary files a/graphics/pokemon/persian/anim_front.png and b/graphics/pokemon/persian/anim_front.png differ diff --git a/graphics/pokemon/persian/front.png b/graphics/pokemon/persian/front.png index 41fd21211..650de8dd7 100644 Binary files a/graphics/pokemon/persian/front.png and b/graphics/pokemon/persian/front.png differ diff --git a/graphics/pokemon/persian/normal.pal b/graphics/pokemon/persian/normal.pal index 143470ddc..073415db2 100644 --- a/graphics/pokemon/persian/normal.pal +++ b/graphics/pokemon/persian/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -96 80 48 -152 120 96 -200 176 136 -208 168 128 -152 128 88 -240 216 160 -224 88 72 +128 80 0 +144 120 32 +216 176 104 +184 160 72 +176 128 40 +248 224 128 +240 80 64 248 248 248 -248 152 136 -168 48 32 +248 184 152 +160 16 0 216 216 216 -248 248 200 -137 93 113 -211 152 169 +248 248 168 +136 0 0 +232 64 48 diff --git a/graphics/pokemon/petilil/anim_front.png b/graphics/pokemon/petilil/anim_front.png index 4c0888055..f39753266 100644 Binary files a/graphics/pokemon/petilil/anim_front.png and b/graphics/pokemon/petilil/anim_front.png differ diff --git a/graphics/pokemon/petilil/front.png b/graphics/pokemon/petilil/front.png index 96c0708ad..735abb0fc 100644 Binary files a/graphics/pokemon/petilil/front.png and b/graphics/pokemon/petilil/front.png differ diff --git a/graphics/pokemon/petilil/normal.pal b/graphics/pokemon/petilil/normal.pal index 017ab544a..075f7727e 100644 --- a/graphics/pokemon/petilil/normal.pal +++ b/graphics/pokemon/petilil/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 88 48 -72 184 96 -56 128 64 +48 88 48 +56 168 56 +56 128 72 16 16 16 -160 168 88 -104 112 56 -200 224 128 -184 176 176 +152 184 72 +96 120 48 +192 232 120 +200 200 184 248 248 248 -160 96 80 -112 24 32 -176 192 112 +184 136 144 +120 48 56 +176 208 96 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/phanpy/anim_front.png b/graphics/pokemon/phanpy/anim_front.png index 7f8ab87fc..480c6bf5d 100644 Binary files a/graphics/pokemon/phanpy/anim_front.png and b/graphics/pokemon/phanpy/anim_front.png differ diff --git a/graphics/pokemon/phanpy/front.png b/graphics/pokemon/phanpy/front.png index aedd94523..22ef30963 100644 Binary files a/graphics/pokemon/phanpy/front.png and b/graphics/pokemon/phanpy/front.png differ diff --git a/graphics/pokemon/phanpy/normal.pal b/graphics/pokemon/phanpy/normal.pal index cc8705954..34fc47eff 100644 --- a/graphics/pokemon/phanpy/normal.pal +++ b/graphics/pokemon/phanpy/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 160 176 -80 144 144 -48 112 112 -144 224 224 -112 208 208 +64 152 144 +72 120 128 +160 224 224 +136 216 208 16 16 16 -112 40 16 -184 72 40 -232 112 88 +128 0 0 +184 56 48 +240 104 80 248 248 248 -96 184 184 +104 184 184 136 136 136 208 208 208 -127 82 90 -191 105 105 +168 16 0 +232 64 48 0 0 0 diff --git a/graphics/pokemon/phione/anim_front.png b/graphics/pokemon/phione/anim_front.png index e86b7ce3d..a2b680ab0 100644 Binary files a/graphics/pokemon/phione/anim_front.png and b/graphics/pokemon/phione/anim_front.png differ diff --git a/graphics/pokemon/phione/front.png b/graphics/pokemon/phione/front.png index 6241787c0..10f7d01b5 100644 Binary files a/graphics/pokemon/phione/front.png and b/graphics/pokemon/phione/front.png differ diff --git a/graphics/pokemon/phione/normal.pal b/graphics/pokemon/phione/normal.pal index df7697ede..54af1570d 100644 --- a/graphics/pokemon/phione/normal.pal +++ b/graphics/pokemon/phione/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 120 136 -40 80 112 -104 192 200 +48 120 168 +56 80 152 +104 192 240 16 16 16 -80 152 168 -168 224 216 -224 232 224 -32 112 160 +24 152 208 +152 224 248 +200 232 248 +24 104 216 248 248 248 72 80 104 -144 136 128 -160 32 32 -232 136 136 -208 64 64 +144 136 152 +168 56 40 +216 128 152 +224 64 16 0 0 0 diff --git a/graphics/pokemon/pichu/anim_front.png b/graphics/pokemon/pichu/anim_front.png index decfbed2e..4421c167d 100644 Binary files a/graphics/pokemon/pichu/anim_front.png and b/graphics/pokemon/pichu/anim_front.png differ diff --git a/graphics/pokemon/pichu/front.png b/graphics/pokemon/pichu/front.png index 8e743945b..f8974c37b 100644 Binary files a/graphics/pokemon/pichu/front.png and b/graphics/pokemon/pichu/front.png differ diff --git a/graphics/pokemon/pichu/normal.pal b/graphics/pokemon/pichu/normal.pal index e837eb8c3..dd2dc02dc 100644 --- a/graphics/pokemon/pichu/normal.pal +++ b/graphics/pokemon/pichu/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -0 56 96 -144 120 64 -192 176 88 -248 232 112 -120 72 32 -248 232 168 -96 80 40 -144 136 120 -232 224 200 -224 136 136 -136 72 72 -200 96 96 +32 32 49 +82 65 65 +164 123 8 +197 172 16 +246 230 82 +131 90 41 +246 238 148 +98 74 16 +148 139 123 +238 230 205 +230 123 148 +139 32 32 +189 41 41 0 0 0 0 0 0 diff --git a/graphics/pokemon/pichu/spiky_eared/anim_front.png b/graphics/pokemon/pichu/spiky_eared/anim_front.png new file mode 100644 index 000000000..2721dc8bf Binary files /dev/null and b/graphics/pokemon/pichu/spiky_eared/anim_front.png differ diff --git a/graphics/pokemon/pichu/spiky_eared/back.png b/graphics/pokemon/pichu/spiky_eared/back.png index 4198a751e..7ab9bb92f 100644 Binary files a/graphics/pokemon/pichu/spiky_eared/back.png and b/graphics/pokemon/pichu/spiky_eared/back.png differ diff --git a/graphics/pokemon/pichu/spiky_eared/front.png b/graphics/pokemon/pichu/spiky_eared/front.png index 3eeb371a0..c16e4c56f 100644 Binary files a/graphics/pokemon/pichu/spiky_eared/front.png and b/graphics/pokemon/pichu/spiky_eared/front.png differ diff --git a/graphics/pokemon/pichu/spiky_eared/normal.pal b/graphics/pokemon/pichu/spiky_eared/normal.pal index e837eb8c3..e6f3db55b 100644 --- a/graphics/pokemon/pichu/spiky_eared/normal.pal +++ b/graphics/pokemon/pichu/spiky_eared/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -0 56 96 -144 120 64 -192 176 88 -248 232 112 -120 72 32 -248 232 168 -96 80 40 -144 136 120 -232 224 200 -224 136 136 -136 72 72 -200 96 96 +32 32 49 +65 65 82 +164 123 8 +246 230 82 +197 172 16 0 0 0 +98 74 16 +131 90 41 +246 238 148 +148 139 123 +238 230 205 +230 123 148 +139 32 32 +189 41 41 0 0 0 diff --git a/graphics/pokemon/pichu/spiky_eared/shiny.pal b/graphics/pokemon/pichu/spiky_eared/shiny.pal index 65504fdf9..071dc35d8 100644 --- a/graphics/pokemon/pichu/spiky_eared/shiny.pal +++ b/graphics/pokemon/pichu/spiky_eared/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -88 64 64 -184 120 0 -216 152 56 -248 216 24 -112 72 40 -248 232 104 -88 40 16 -144 136 120 -232 224 200 -248 48 64 -136 32 32 -184 40 40 +32 32 49 +82 65 65 +189 123 0 +255 213 0 +222 156 57 0 0 0 +90 32 0 +139 74 0 +255 238 106 +148 139 123 +238 230 205 +255 49 65 +139 32 32 +189 41 41 0 0 0 diff --git a/graphics/pokemon/pidgeot/anim_front.png b/graphics/pokemon/pidgeot/anim_front.png index 634a9f25a..2843c169a 100644 Binary files a/graphics/pokemon/pidgeot/anim_front.png and b/graphics/pokemon/pidgeot/anim_front.png differ diff --git a/graphics/pokemon/pidgeot/back.png b/graphics/pokemon/pidgeot/back.png index 73a389c6d..fabbbefe2 100644 Binary files a/graphics/pokemon/pidgeot/back.png and b/graphics/pokemon/pidgeot/back.png differ diff --git a/graphics/pokemon/pidgeot/normal.pal b/graphics/pokemon/pidgeot/normal.pal index 6af4e4fd0..7231eedde 100644 --- a/graphics/pokemon/pidgeot/normal.pal +++ b/graphics/pokemon/pidgeot/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 56 32 +88 64 40 16 16 16 -184 136 56 -120 88 40 -200 184 136 -240 224 152 -248 232 168 -248 192 88 -240 80 40 -112 48 32 -184 56 24 +192 144 80 +152 96 56 +200 192 120 +248 240 176 +248 240 120 +248 152 112 +248 96 64 +120 32 32 +192 56 24 192 176 192 248 248 248 -240 168 184 -192 120 136 +248 176 192 +192 136 128 diff --git a/graphics/pokemon/pidgeot/shiny.pal b/graphics/pokemon/pidgeot/shiny.pal index 38af03ee5..5b47a0d5d 100644 --- a/graphics/pokemon/pidgeot/shiny.pal +++ b/graphics/pokemon/pidgeot/shiny.pal @@ -9,7 +9,7 @@ JASC-PAL 232 200 96 248 248 144 248 248 144 -232 200 96 +248 248 96 248 216 48 192 96 0 240 168 32 diff --git a/graphics/pokemon/pidgeotto/anim_front.png b/graphics/pokemon/pidgeotto/anim_front.png index 4769ba49e..9d28c7568 100644 Binary files a/graphics/pokemon/pidgeotto/anim_front.png and b/graphics/pokemon/pidgeotto/anim_front.png differ diff --git a/graphics/pokemon/pidgeotto/back.png b/graphics/pokemon/pidgeotto/back.png index fa56e6eb6..8f5f1635a 100644 Binary files a/graphics/pokemon/pidgeotto/back.png and b/graphics/pokemon/pidgeotto/back.png differ diff --git a/graphics/pokemon/pidgeotto/front.png b/graphics/pokemon/pidgeotto/front.png index 992de7b99..bc3d85388 100644 Binary files a/graphics/pokemon/pidgeotto/front.png and b/graphics/pokemon/pidgeotto/front.png differ diff --git a/graphics/pokemon/pidgeotto/normal.pal b/graphics/pokemon/pidgeotto/normal.pal index 276a73847..a0ecd9339 100644 --- a/graphics/pokemon/pidgeotto/normal.pal +++ b/graphics/pokemon/pidgeotto/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 40 48 -184 56 72 -232 112 80 +136 40 24 +184 56 32 +232 96 64 16 16 16 -232 160 136 -168 112 48 +144 64 72 +176 104 56 248 248 248 -88 56 32 +104 56 40 120 120 128 -232 192 216 -192 128 152 -192 168 112 -208 192 144 +224 160 160 +192 112 120 +184 160 104 +216 208 144 240 232 176 -208 152 88 +208 144 36 diff --git a/graphics/pokemon/pidgeotto/shiny.pal b/graphics/pokemon/pidgeotto/shiny.pal index ed42ee40b..8281977d4 100644 --- a/graphics/pokemon/pidgeotto/shiny.pal +++ b/graphics/pokemon/pidgeotto/shiny.pal @@ -6,7 +6,7 @@ JASC-PAL 232 152 16 248 216 48 16 16 16 -248 248 120 +112 104 16 112 128 48 248 248 248 48 56 16 diff --git a/graphics/pokemon/pidgey/anim_front.png b/graphics/pokemon/pidgey/anim_front.png index f3c7166b8..351dd0a09 100644 Binary files a/graphics/pokemon/pidgey/anim_front.png and b/graphics/pokemon/pidgey/anim_front.png differ diff --git a/graphics/pokemon/pidgey/back.png b/graphics/pokemon/pidgey/back.png index 8147c1d48..8d18f2a39 100644 Binary files a/graphics/pokemon/pidgey/back.png and b/graphics/pokemon/pidgey/back.png differ diff --git a/graphics/pokemon/pidgey/front.png b/graphics/pokemon/pidgey/front.png index 7392b5480..985ca1286 100644 Binary files a/graphics/pokemon/pidgey/front.png and b/graphics/pokemon/pidgey/front.png differ diff --git a/graphics/pokemon/pidgey/normal.pal b/graphics/pokemon/pidgey/normal.pal index ca4a0c381..4488d161d 100644 --- a/graphics/pokemon/pidgey/normal.pal +++ b/graphics/pokemon/pidgey/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 64 32 -192 136 64 -144 96 40 +128 72 48 +216 152 40 +184 112 64 120 104 48 -216 200 136 +200 184 96 16 16 16 240 232 152 128 128 128 128 56 64 184 184 184 -224 176 184 +224 160 160 248 248 248 -192 120 136 -192 168 104 +192 112 120 +176 152 88 64 32 16 diff --git a/graphics/pokemon/pidove/anim_front.png b/graphics/pokemon/pidove/anim_front.png index 134efb10b..bf1c539f8 100644 Binary files a/graphics/pokemon/pidove/anim_front.png and b/graphics/pokemon/pidove/anim_front.png differ diff --git a/graphics/pokemon/pidove/front.png b/graphics/pokemon/pidove/front.png index 94399e9fa..590619087 100644 Binary files a/graphics/pokemon/pidove/front.png and b/graphics/pokemon/pidove/front.png differ diff --git a/graphics/pokemon/pidove/normal.pal b/graphics/pokemon/pidove/normal.pal index 369d91c42..0c6a21249 100644 --- a/graphics/pokemon/pidove/normal.pal +++ b/graphics/pokemon/pidove/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 128 128 128 -80 72 72 -16 16 16 -200 192 184 +72 72 72 +0 0 0 +192 192 200 160 160 160 -192 96 96 -208 144 40 -224 176 104 -152 104 24 -232 160 144 -112 56 80 +184 96 96 +208 144 24 +248 184 40 +160 104 16 +248 152 152 +104 48 56 248 248 248 -48 40 40 -24 24 32 -224 224 216 +40 40 40 +32 32 40 +216 216 216 diff --git a/graphics/pokemon/pignite/anim_front.png b/graphics/pokemon/pignite/anim_front.png index 74ef4a0d9..78f10f157 100644 Binary files a/graphics/pokemon/pignite/anim_front.png and b/graphics/pokemon/pignite/anim_front.png differ diff --git a/graphics/pokemon/pignite/front.png b/graphics/pokemon/pignite/front.png index b0a7ea374..39c020d57 100644 Binary files a/graphics/pokemon/pignite/front.png and b/graphics/pokemon/pignite/front.png differ diff --git a/graphics/pokemon/pignite/normal.pal b/graphics/pokemon/pignite/normal.pal index d4a19b093..7b1d26924 100644 --- a/graphics/pokemon/pignite/normal.pal +++ b/graphics/pokemon/pignite/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -72 48 48 +80 48 40 248 248 248 -208 184 184 -176 88 48 -232 112 56 -112 56 32 -240 192 48 +192 168 160 +184 88 48 +232 112 40 +120 56 40 +232 192 56 176 136 40 -96 88 32 -200 56 56 -48 32 32 -72 72 80 -48 40 56 -208 184 184 +112 96 16 +200 64 56 +56 32 32 +72 72 72 +56 56 56 +0 0 0 diff --git a/graphics/pokemon/pikachu/anim_front.png b/graphics/pokemon/pikachu/anim_front.png index 8fa27c7a7..494c29e17 100644 Binary files a/graphics/pokemon/pikachu/anim_front.png and b/graphics/pokemon/pikachu/anim_front.png differ diff --git a/graphics/pokemon/pikachu/front.png b/graphics/pokemon/pikachu/front.png index 304cb5b0e..9b1b6b0a0 100644 Binary files a/graphics/pokemon/pikachu/front.png and b/graphics/pokemon/pikachu/front.png differ diff --git a/graphics/pokemon/pikachu/normal.pal b/graphics/pokemon/pikachu/normal.pal index 6f0793caa..3d734a17d 100644 --- a/graphics/pokemon/pikachu/normal.pal +++ b/graphics/pokemon/pikachu/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -48 32 32 +40 40 40 88 56 32 -88 72 72 -200 168 88 -120 88 48 -248 216 120 -160 128 72 -248 232 176 +80 80 80 +248 192 32 +152 80 0 +248 232 80 +224 144 0 +248 248 168 248 248 248 -232 112 80 -208 80 56 -152 88 96 -208 112 144 +232 88 64 +200 32 24 +168 48 16 +224 80 56 0 0 0 diff --git a/graphics/pokemon/piloswine/anim_front.png b/graphics/pokemon/piloswine/anim_front.png index 1e30fabae..b02c23d17 100644 Binary files a/graphics/pokemon/piloswine/anim_front.png and b/graphics/pokemon/piloswine/anim_front.png differ diff --git a/graphics/pokemon/piloswine/front.png b/graphics/pokemon/piloswine/front.png index bd10b2655..1969f28ae 100644 Binary files a/graphics/pokemon/piloswine/front.png and b/graphics/pokemon/piloswine/front.png differ diff --git a/graphics/pokemon/piloswine/normal.pal b/graphics/pokemon/piloswine/normal.pal index 4d412a38a..2e1071439 100644 --- a/graphics/pokemon/piloswine/normal.pal +++ b/graphics/pokemon/piloswine/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 88 64 -56 40 24 -200 152 128 -176 120 96 -168 112 80 +120 96 80 +64 56 48 +192 152 112 +168 128 88 +144 112 88 16 16 16 112 48 64 -232 136 136 -216 208 200 -176 168 160 -176 88 96 +240 144 152 +200 208 208 +184 176 176 +176 96 112 72 72 64 248 248 248 -96 64 56 +96 72 64 0 0 0 diff --git a/graphics/pokemon/pineco/anim_front.png b/graphics/pokemon/pineco/anim_front.png index e72439b44..e2704f189 100644 Binary files a/graphics/pokemon/pineco/anim_front.png and b/graphics/pokemon/pineco/anim_front.png differ diff --git a/graphics/pokemon/pineco/front.png b/graphics/pokemon/pineco/front.png index c30fe4516..eec63a8ec 100644 Binary files a/graphics/pokemon/pineco/front.png and b/graphics/pokemon/pineco/front.png differ diff --git a/graphics/pokemon/pineco/normal.pal b/graphics/pokemon/pineco/normal.pal index 66db8e213..dae14d2d0 100644 --- a/graphics/pokemon/pineco/normal.pal +++ b/graphics/pokemon/pineco/normal.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 248 160 176 -40 64 88 -64 112 104 -112 168 160 -80 144 136 +32 72 96 +56 128 160 +112 184 160 +80 168 176 248 248 248 16 16 16 152 160 160 -192 64 56 -184 216 200 +248 72 56 +152 224 192 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/pinsir/anim_front.png b/graphics/pokemon/pinsir/anim_front.png index d2d701911..00a5050da 100644 Binary files a/graphics/pokemon/pinsir/anim_front.png and b/graphics/pokemon/pinsir/anim_front.png differ diff --git a/graphics/pokemon/pinsir/front.png b/graphics/pokemon/pinsir/front.png index 5b5bd29ef..b0543cab8 100644 Binary files a/graphics/pokemon/pinsir/front.png and b/graphics/pokemon/pinsir/front.png differ diff --git a/graphics/pokemon/pinsir/normal.pal b/graphics/pokemon/pinsir/normal.pal index 1a1d2e6c4..118638fc1 100644 --- a/graphics/pokemon/pinsir/normal.pal +++ b/graphics/pokemon/pinsir/normal.pal @@ -8,12 +8,12 @@ JASC-PAL 176 160 144 184 176 184 248 248 248 -16 16 16 -112 88 80 -168 144 136 -224 192 192 -64 48 40 -144 112 112 +0 0 0 +120 96 88 +168 152 136 +200 184 176 +80 56 48 +152 136 112 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/piplup/anim_front.png b/graphics/pokemon/piplup/anim_front.png index f029f576a..1ed77ba1d 100644 Binary files a/graphics/pokemon/piplup/anim_front.png and b/graphics/pokemon/piplup/anim_front.png differ diff --git a/graphics/pokemon/piplup/front.png b/graphics/pokemon/piplup/front.png index ada0b7ac5..c2ce15cdc 100644 Binary files a/graphics/pokemon/piplup/front.png and b/graphics/pokemon/piplup/front.png differ diff --git a/graphics/pokemon/piplup/normal.pal b/graphics/pokemon/piplup/normal.pal index cae959ee2..3f2fc38e2 100644 --- a/graphics/pokemon/piplup/normal.pal +++ b/graphics/pokemon/piplup/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 96 144 -32 64 104 -80 152 208 -48 120 184 -144 208 216 +32 96 152 +16 72 112 +104 160 224 +48 136 208 +152 208 240 208 208 216 248 248 248 128 136 152 -112 160 184 +96 160 192 16 16 16 -168 144 40 -248 224 144 -232 192 24 -96 80 24 +168 128 56 +248 224 192 +240 200 64 +96 72 16 56 96 112 diff --git a/graphics/pokemon/plusle/anim_front.png b/graphics/pokemon/plusle/anim_front.png index 5d93d6f47..35b92aca3 100644 Binary files a/graphics/pokemon/plusle/anim_front.png and b/graphics/pokemon/plusle/anim_front.png differ diff --git a/graphics/pokemon/plusle/front.png b/graphics/pokemon/plusle/front.png index e38768d4e..87b761219 100644 Binary files a/graphics/pokemon/plusle/front.png and b/graphics/pokemon/plusle/front.png differ diff --git a/graphics/pokemon/plusle/normal.pal b/graphics/pokemon/plusle/normal.pal index f178cf4c8..95aa41e20 100644 --- a/graphics/pokemon/plusle/normal.pal +++ b/graphics/pokemon/plusle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -168 48 64 -232 72 80 -240 136 136 +176 48 48 +216 72 64 +232 128 128 16 16 16 -248 240 184 -120 104 80 -208 192 128 -176 152 112 +248 232 176 +120 96 80 +224 192 112 +176 152 96 248 248 248 -88 16 72 -160 72 104 -216 144 176 +168 64 40 +168 56 80 +224 104 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/politoed/anim_front.png b/graphics/pokemon/politoed/anim_front.png index c2c5bbe1f..15378c27c 100644 Binary files a/graphics/pokemon/politoed/anim_front.png and b/graphics/pokemon/politoed/anim_front.png differ diff --git a/graphics/pokemon/politoed/front.png b/graphics/pokemon/politoed/front.png index a780e1c66..74d705c10 100644 Binary files a/graphics/pokemon/politoed/front.png and b/graphics/pokemon/politoed/front.png differ diff --git a/graphics/pokemon/politoed/normal.pal b/graphics/pokemon/politoed/normal.pal index 16a5e2efb..8b75ced72 100644 --- a/graphics/pokemon/politoed/normal.pal +++ b/graphics/pokemon/politoed/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 112 136 -128 168 192 +56 88 128 +80 128 192 16 16 16 -104 136 56 -64 96 16 -184 224 144 -128 200 64 +104 160 16 +48 112 0 +184 232 112 +136 200 24 248 248 248 200 200 200 -120 56 64 -128 112 48 -248 232 112 -232 112 128 -208 192 88 -248 144 160 +176 24 48 +136 88 0 +248 224 104 +224 104 48 +208 176 96 +248 144 192 diff --git a/graphics/pokemon/poliwag/anim_front.png b/graphics/pokemon/poliwag/anim_front.png index a9ce5d5fe..ab30eaa66 100644 Binary files a/graphics/pokemon/poliwag/anim_front.png and b/graphics/pokemon/poliwag/anim_front.png differ diff --git a/graphics/pokemon/poliwag/front.png b/graphics/pokemon/poliwag/front.png index d848b6841..6ca996b39 100644 Binary files a/graphics/pokemon/poliwag/front.png and b/graphics/pokemon/poliwag/front.png differ diff --git a/graphics/pokemon/poliwag/normal.pal b/graphics/pokemon/poliwag/normal.pal index f3362e8eb..ce4fa2191 100644 --- a/graphics/pokemon/poliwag/normal.pal +++ b/graphics/pokemon/poliwag/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 56 104 -144 176 224 -96 144 192 -56 96 144 +24 56 112 +136 160 224 +80 128 192 +56 88 128 248 248 248 16 16 16 -88 104 112 -152 184 208 +96 96 112 +192 192 208 248 208 240 -232 160 200 -200 112 160 -208 224 240 -64 120 176 +248 176 224 +216 120 184 +232 232 248 +56 112 168 0 0 0 0 0 0 diff --git a/graphics/pokemon/poliwhirl/anim_front.png b/graphics/pokemon/poliwhirl/anim_front.png index 9f84a7a50..1f3d22d94 100644 Binary files a/graphics/pokemon/poliwhirl/anim_front.png and b/graphics/pokemon/poliwhirl/anim_front.png differ diff --git a/graphics/pokemon/poliwhirl/front.png b/graphics/pokemon/poliwhirl/front.png index ec5080c2c..f61d52be2 100644 Binary files a/graphics/pokemon/poliwhirl/front.png and b/graphics/pokemon/poliwhirl/front.png differ diff --git a/graphics/pokemon/poliwhirl/normal.pal b/graphics/pokemon/poliwhirl/normal.pal index deb63b851..94840ecf3 100644 --- a/graphics/pokemon/poliwhirl/normal.pal +++ b/graphics/pokemon/poliwhirl/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 64 96 -56 88 136 -88 136 192 +24 56 112 +56 88 128 +80 128 192 248 248 248 -64 120 168 +56 112 168 80 80 80 -168 176 200 -16 16 16 -128 168 216 +184 184 192 +15 15 15 +136 160 224 120 120 120 136 152 160 -232 240 240 -192 208 224 +240 240 248 +208 208 216 0 0 0 0 0 0 diff --git a/graphics/pokemon/poliwrath/anim_front.png b/graphics/pokemon/poliwrath/anim_front.png index 38c2f2621..2e320c589 100644 Binary files a/graphics/pokemon/poliwrath/anim_front.png and b/graphics/pokemon/poliwrath/anim_front.png differ diff --git a/graphics/pokemon/poliwrath/front.png b/graphics/pokemon/poliwrath/front.png index f0c129412..98b4814b6 100644 Binary files a/graphics/pokemon/poliwrath/front.png and b/graphics/pokemon/poliwrath/front.png differ diff --git a/graphics/pokemon/poliwrath/normal.pal b/graphics/pokemon/poliwrath/normal.pal index c7fe30cbd..f3ae4d584 100644 --- a/graphics/pokemon/poliwrath/normal.pal +++ b/graphics/pokemon/poliwrath/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -56 96 136 -128 168 216 -32 56 104 -80 136 192 +56 88 128 +136 160 224 +24 56 112 +80 128 192 16 16 16 248 248 248 -200 208 232 -168 176 200 +200 200 216 +176 176 192 72 80 80 120 120 128 -232 240 248 +232 232 248 144 160 168 0 0 0 0 0 0 diff --git a/graphics/pokemon/ponyta/anim_front.png b/graphics/pokemon/ponyta/anim_front.png index 9acfb59e2..d46f4d163 100644 Binary files a/graphics/pokemon/ponyta/anim_front.png and b/graphics/pokemon/ponyta/anim_front.png differ diff --git a/graphics/pokemon/ponyta/front.png b/graphics/pokemon/ponyta/front.png index 164234252..5e60ecaec 100644 Binary files a/graphics/pokemon/ponyta/front.png and b/graphics/pokemon/ponyta/front.png differ diff --git a/graphics/pokemon/ponyta/normal.pal b/graphics/pokemon/ponyta/normal.pal index 83729cebe..d2af3d8c9 100644 --- a/graphics/pokemon/ponyta/normal.pal +++ b/graphics/pokemon/ponyta/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -232 80 40 -240 176 24 -248 216 80 -176 56 56 -136 112 80 -96 80 48 -248 240 200 +230 90 41 +255 156 24 +255 222 82 +238 49 49 +139 82 49 +115 49 49 +255 238 205 16 16 16 160 72 72 -224 208 144 -184 168 112 -248 248 248 -32 64 112 -88 120 168 -152 176 224 +230 205 139 +197 156 106 +255 255 255 +65 74 131 +115 123 164 +197 197 213 diff --git a/graphics/pokemon/poochyena/anim_front.png b/graphics/pokemon/poochyena/anim_front.png index 236e6cd26..46b6da0d1 100644 Binary files a/graphics/pokemon/poochyena/anim_front.png and b/graphics/pokemon/poochyena/anim_front.png differ diff --git a/graphics/pokemon/poochyena/front.png b/graphics/pokemon/poochyena/front.png index 4050b67a4..03cc345b0 100644 Binary files a/graphics/pokemon/poochyena/front.png and b/graphics/pokemon/poochyena/front.png differ diff --git a/graphics/pokemon/poochyena/normal.pal b/graphics/pokemon/poochyena/normal.pal index 46106af3a..39e07462a 100644 --- a/graphics/pokemon/poochyena/normal.pal +++ b/graphics/pokemon/poochyena/normal.pal @@ -7,8 +7,8 @@ JASC-PAL 184 192 192 144 152 160 48 56 56 -184 152 48 -248 208 104 +176 176 32 +240 240 88 104 24 40 248 248 248 184 40 64 diff --git a/graphics/pokemon/porygon/anim_front.png b/graphics/pokemon/porygon/anim_front.png index d3e88d2b3..bd6c33103 100644 Binary files a/graphics/pokemon/porygon/anim_front.png and b/graphics/pokemon/porygon/anim_front.png differ diff --git a/graphics/pokemon/porygon/front.png b/graphics/pokemon/porygon/front.png index ee054bf4f..52d47ce11 100644 Binary files a/graphics/pokemon/porygon/front.png and b/graphics/pokemon/porygon/front.png differ diff --git a/graphics/pokemon/porygon/normal.pal b/graphics/pokemon/porygon/normal.pal index 5dc5232da..6993dda1e 100644 --- a/graphics/pokemon/porygon/normal.pal +++ b/graphics/pokemon/porygon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 64 72 -16 16 8 -232 88 104 -248 208 216 -248 168 184 +184 48 80 +0 0 0 +248 96 96 +240 208 192 +232 168 152 248 248 248 192 192 192 -32 80 88 -56 128 136 -160 224 232 -56 176 184 -104 32 40 +8 88 112 +0 120 144 +136 208 232 +8 168 208 +120 40 64 120 120 128 88 184 224 0 0 0 diff --git a/graphics/pokemon/porygon2/anim_front.png b/graphics/pokemon/porygon2/anim_front.png index e85aa8307..566ebfecb 100644 Binary files a/graphics/pokemon/porygon2/anim_front.png and b/graphics/pokemon/porygon2/anim_front.png differ diff --git a/graphics/pokemon/porygon2/front.png b/graphics/pokemon/porygon2/front.png index cbf576553..84f153fc7 100644 Binary files a/graphics/pokemon/porygon2/front.png and b/graphics/pokemon/porygon2/front.png differ diff --git a/graphics/pokemon/porygon2/normal.pal b/graphics/pokemon/porygon2/normal.pal index ff5557ac9..3b164bd13 100644 --- a/graphics/pokemon/porygon2/normal.pal +++ b/graphics/pokemon/porygon2/normal.pal @@ -3,14 +3,14 @@ JASC-PAL 16 152 208 160 160 56 88 -232 88 120 +232 88 96 88 48 56 -56 112 160 -240 152 168 +48 112 152 +248 144 176 248 248 248 -144 208 240 -72 160 200 -40 72 112 +136 216 248 +72 152 216 +40 56 96 16 16 16 192 208 232 104 104 120 diff --git a/graphics/pokemon/porygon_z/anim_front.png b/graphics/pokemon/porygon_z/anim_front.png index 7d6b66fc3..6ec9f0d12 100644 Binary files a/graphics/pokemon/porygon_z/anim_front.png and b/graphics/pokemon/porygon_z/anim_front.png differ diff --git a/graphics/pokemon/porygon_z/front.png b/graphics/pokemon/porygon_z/front.png index 71280133f..1f39bffa5 100644 Binary files a/graphics/pokemon/porygon_z/front.png and b/graphics/pokemon/porygon_z/front.png differ diff --git a/graphics/pokemon/porygon_z/normal.pal b/graphics/pokemon/porygon_z/normal.pal index a4c031833..1f4f3129c 100644 --- a/graphics/pokemon/porygon_z/normal.pal +++ b/graphics/pokemon/porygon_z/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 32 48 -160 48 72 -224 112 120 +88 56 72 +144 64 104 +232 88 96 16 16 16 -208 80 96 -240 160 152 +184 72 104 +248 144 176 248 248 248 -32 80 104 -48 120 152 -248 208 112 -160 208 208 -104 176 192 -104 88 72 -184 144 64 +48 56 96 +48 112 152 +248 208 96 +136 208 248 +72 152 208 +96 96 64 +176 144 72 0 0 0 diff --git a/graphics/pokemon/primeape/anim_front.png b/graphics/pokemon/primeape/anim_front.png index a06385df1..e07e1e7d7 100644 Binary files a/graphics/pokemon/primeape/anim_front.png and b/graphics/pokemon/primeape/anim_front.png differ diff --git a/graphics/pokemon/primeape/front.png b/graphics/pokemon/primeape/front.png index 77f95f5ee..c764645ef 100644 Binary files a/graphics/pokemon/primeape/front.png and b/graphics/pokemon/primeape/front.png differ diff --git a/graphics/pokemon/primeape/normal.pal b/graphics/pokemon/primeape/normal.pal index 8690860e9..9e19a46d7 100644 --- a/graphics/pokemon/primeape/normal.pal +++ b/graphics/pokemon/primeape/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 48 48 -144 96 96 -192 144 104 -16 16 16 -96 64 48 -240 208 192 +88 48 0 +152 104 104 +200 136 88 +0 0 0 +96 72 32 +248 224 176 64 64 64 -208 176 152 -112 112 112 -248 240 224 -200 136 152 +224 184 152 +120 120 120 +248 248 208 +248 144 88 248 248 248 -176 112 136 -240 168 200 +224 120 120 +248 168 168 224 176 136 diff --git a/graphics/pokemon/prinplup/anim_front.png b/graphics/pokemon/prinplup/anim_front.png index fd19649e1..b4180798f 100644 Binary files a/graphics/pokemon/prinplup/anim_front.png and b/graphics/pokemon/prinplup/anim_front.png differ diff --git a/graphics/pokemon/prinplup/front.png b/graphics/pokemon/prinplup/front.png index 9dd05921a..a4b84554d 100644 Binary files a/graphics/pokemon/prinplup/front.png and b/graphics/pokemon/prinplup/front.png differ diff --git a/graphics/pokemon/prinplup/normal.pal b/graphics/pokemon/prinplup/normal.pal index 8148637dd..ce088843c 100644 --- a/graphics/pokemon/prinplup/normal.pal +++ b/graphics/pokemon/prinplup/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 136 40 -128 104 32 -248 216 128 -232 184 80 +184 136 104 +120 80 64 +248 224 128 +232 200 96 16 16 16 -32 56 104 -48 88 144 -112 160 168 -144 200 208 +32 64 104 +32 88 144 +96 152 240 +152 200 248 216 232 248 248 248 248 56 120 176 -224 216 208 -120 176 184 -72 104 120 +184 200 216 +128 176 248 +0 0 0 diff --git a/graphics/pokemon/probopass/anim_front.png b/graphics/pokemon/probopass/anim_front.png index b6e8b7b80..bcca97230 100644 Binary files a/graphics/pokemon/probopass/anim_front.png and b/graphics/pokemon/probopass/anim_front.png differ diff --git a/graphics/pokemon/probopass/front.png b/graphics/pokemon/probopass/front.png index 78303af59..21916b376 100644 Binary files a/graphics/pokemon/probopass/front.png and b/graphics/pokemon/probopass/front.png differ diff --git a/graphics/pokemon/probopass/normal.pal b/graphics/pokemon/probopass/normal.pal index fa756aabe..6a4d6d266 100644 --- a/graphics/pokemon/probopass/normal.pal +++ b/graphics/pokemon/probopass/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 48 48 +102 48 40 16 16 16 -224 136 136 -200 88 88 -144 64 64 -56 48 48 +232 120 136 +224 88 96 +184 48 80 +40 56 72 192 200 216 248 248 248 -48 72 104 -72 104 136 -144 192 224 -88 136 176 -120 160 184 -80 72 72 +24 72 128 +56 96 168 +128 176 248 +88 120 208 +112 152 232 +56 72 88 0 0 0 diff --git a/graphics/pokemon/psyduck/anim_front.png b/graphics/pokemon/psyduck/anim_front.png index 7512a86cc..4129b5ea9 100644 Binary files a/graphics/pokemon/psyduck/anim_front.png and b/graphics/pokemon/psyduck/anim_front.png differ diff --git a/graphics/pokemon/psyduck/front.png b/graphics/pokemon/psyduck/front.png index f9f2961ae..138c13a95 100644 Binary files a/graphics/pokemon/psyduck/front.png and b/graphics/pokemon/psyduck/front.png differ diff --git a/graphics/pokemon/psyduck/normal.pal b/graphics/pokemon/psyduck/normal.pal index 2add90478..78d95442f 100644 --- a/graphics/pokemon/psyduck/normal.pal +++ b/graphics/pokemon/psyduck/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 120 120 120 16 16 16 -136 96 48 -224 168 96 -248 208 128 -248 224 168 -192 176 144 +144 88 16 +224 160 80 +248 208 72 +248 224 160 +216 176 80 248 248 248 -128 104 72 -248 232 208 -232 208 176 -0 0 0 +128 88 0 +248 232 184 +240 216 136 +248 232 184 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/pupitar/anim_front.png b/graphics/pokemon/pupitar/anim_front.png index cb7cffbfa..c6e09e2d9 100644 Binary files a/graphics/pokemon/pupitar/anim_front.png and b/graphics/pokemon/pupitar/anim_front.png differ diff --git a/graphics/pokemon/pupitar/front.png b/graphics/pokemon/pupitar/front.png index 9cd2257d1..cc7fda715 100644 Binary files a/graphics/pokemon/pupitar/front.png and b/graphics/pokemon/pupitar/front.png differ diff --git a/graphics/pokemon/pupitar/normal.pal b/graphics/pokemon/pupitar/normal.pal index 256d175bf..08f030422 100644 --- a/graphics/pokemon/pupitar/normal.pal +++ b/graphics/pokemon/pupitar/normal.pal @@ -2,14 +2,14 @@ JASC-PAL 0100 16 248 160 176 -56 72 112 +64 88 120 16 16 16 -160 176 216 -192 200 224 -120 136 176 -176 168 168 +168 184 216 +208 216 232 +120 144 184 +168 168 168 248 248 248 -176 32 64 +176 64 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/purrloin/anim_front.png b/graphics/pokemon/purrloin/anim_front.png index 466461933..466fc9105 100644 Binary files a/graphics/pokemon/purrloin/anim_front.png and b/graphics/pokemon/purrloin/anim_front.png differ diff --git a/graphics/pokemon/purrloin/front.png b/graphics/pokemon/purrloin/front.png index 4b01c3f96..0d329d15c 100644 Binary files a/graphics/pokemon/purrloin/front.png and b/graphics/pokemon/purrloin/front.png differ diff --git a/graphics/pokemon/purrloin/normal.pal b/graphics/pokemon/purrloin/normal.pal index b897e66e2..312600cf0 100644 --- a/graphics/pokemon/purrloin/normal.pal +++ b/graphics/pokemon/purrloin/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 32 56 -112 80 136 +56 24 64 +120 80 120 16 16 16 -96 48 64 -208 88 152 +96 56 64 +216 112 152 240 232 192 -208 200 144 +216 200 136 248 248 248 -56 160 72 -112 208 112 -80 56 88 -160 144 112 -112 88 80 +8 184 96 +144 248 184 +96 56 104 +176 160 120 +120 104 72 0 0 0 0 0 0 diff --git a/graphics/pokemon/purugly/anim_front.png b/graphics/pokemon/purugly/anim_front.png index 12959a417..674df91b8 100644 Binary files a/graphics/pokemon/purugly/anim_front.png and b/graphics/pokemon/purugly/anim_front.png differ diff --git a/graphics/pokemon/purugly/front.png b/graphics/pokemon/purugly/front.png index c611eca72..4d8a5da49 100644 Binary files a/graphics/pokemon/purugly/front.png and b/graphics/pokemon/purugly/front.png differ diff --git a/graphics/pokemon/purugly/normal.pal b/graphics/pokemon/purugly/normal.pal index e7c17667a..4c9f993bd 100644 --- a/graphics/pokemon/purugly/normal.pal +++ b/graphics/pokemon/purugly/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -144 104 168 -96 72 112 -136 152 176 -72 80 96 -184 96 120 -104 112 136 -240 128 160 -168 184 192 -248 240 240 -48 48 80 -176 152 88 -240 200 120 -208 192 192 -176 152 144 +120 88 160 +80 56 104 +128 144 176 +80 88 96 +208 80 136 +104 112 128 +248 120 152 +160 168 192 +232 248 248 +64 64 80 +168 160 112 +248 224 96 +200 200 216 +152 152 184 diff --git a/graphics/pokemon/pyroar/normalf.pal b/graphics/pokemon/pyroar/normalf.pal deleted file mode 100644 index 63998f295..000000000 --- a/graphics/pokemon/pyroar/normalf.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -176 128 32 -120 0 0 -248 208 88 -224 80 64 -176 40 24 -32 24 24 -0 0 0 -88 72 64 -56 40 48 -176 128 80 -96 72 40 -232 176 112 -248 248 248 -0 168 192 -248 216 168 diff --git a/graphics/pokemon/pyroar/shinyf.pal b/graphics/pokemon/pyroar/shinyf.pal deleted file mode 100644 index d39b2ea82..000000000 --- a/graphics/pokemon/pyroar/shinyf.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -184 96 32 -112 0 0 -248 168 88 -224 64 48 -176 40 0 -56 40 32 -0 0 0 -120 104 80 -72 56 48 -168 136 96 -96 72 56 -224 192 144 -248 248 248 -192 64 40 -248 216 168 diff --git a/graphics/pokemon/quagsire/anim_front.png b/graphics/pokemon/quagsire/anim_front.png index c9d23bfb1..a940e3378 100644 Binary files a/graphics/pokemon/quagsire/anim_front.png and b/graphics/pokemon/quagsire/anim_front.png differ diff --git a/graphics/pokemon/quagsire/back.png b/graphics/pokemon/quagsire/back.png index 249cd0b46..b961bbb22 100644 Binary files a/graphics/pokemon/quagsire/back.png and b/graphics/pokemon/quagsire/back.png differ diff --git a/graphics/pokemon/quagsire/front.png b/graphics/pokemon/quagsire/front.png index ac3c92a83..41b4ad26b 100644 Binary files a/graphics/pokemon/quagsire/front.png and b/graphics/pokemon/quagsire/front.png differ diff --git a/graphics/pokemon/quagsire/normal.pal b/graphics/pokemon/quagsire/normal.pal index 4935b2f88..fe56a925d 100644 --- a/graphics/pokemon/quagsire/normal.pal +++ b/graphics/pokemon/quagsire/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 96 112 -104 152 176 -128 208 232 -168 224 240 +64 80 128 +96 152 184 +128 208 240 +168 224 248 240 240 240 16 16 16 -16 40 48 -48 120 136 -40 72 80 -104 88 160 +24 64 56 +48 144 160 +24 88 104 +104 88 136 96 120 160 -135 80 78 -221 128 128 +168 16 0 +232 64 48 0 0 0 0 0 0 diff --git a/graphics/pokemon/quilava/anim_front.png b/graphics/pokemon/quilava/anim_front.png index c986379fc..1c2709eb4 100644 Binary files a/graphics/pokemon/quilava/anim_front.png and b/graphics/pokemon/quilava/anim_front.png differ diff --git a/graphics/pokemon/quilava/front.png b/graphics/pokemon/quilava/front.png index ec04cca18..061f31998 100644 Binary files a/graphics/pokemon/quilava/front.png and b/graphics/pokemon/quilava/front.png differ diff --git a/graphics/pokemon/quilava/normal.pal b/graphics/pokemon/quilava/normal.pal index 7296a78f7..c6f175d1e 100644 --- a/graphics/pokemon/quilava/normal.pal +++ b/graphics/pokemon/quilava/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -168 40 32 -240 104 24 -240 208 32 -248 144 16 -48 104 112 -40 72 80 -96 144 128 +216 0 0 +248 88 0 +248 208 0 +248 152 0 +40 104 104 +40 64 96 +56 136 144 16 16 16 -136 16 32 +168 0 0 248 248 248 -176 144 96 -248 216 160 -216 176 120 -112 88 48 +176 152 80 +248 232 160 +224 200 104 +136 96 32 16 48 56 diff --git a/graphics/pokemon/qwilfish/anim_front.png b/graphics/pokemon/qwilfish/anim_front.png index 6849e809e..3d12f6a11 100644 Binary files a/graphics/pokemon/qwilfish/anim_front.png and b/graphics/pokemon/qwilfish/anim_front.png differ diff --git a/graphics/pokemon/qwilfish/front.png b/graphics/pokemon/qwilfish/front.png index 11cf43c4a..6fd19c134 100644 Binary files a/graphics/pokemon/qwilfish/front.png and b/graphics/pokemon/qwilfish/front.png differ diff --git a/graphics/pokemon/qwilfish/normal.pal b/graphics/pokemon/qwilfish/normal.pal index 09aba772e..ce431cfb9 100644 --- a/graphics/pokemon/qwilfish/normal.pal +++ b/graphics/pokemon/qwilfish/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 56 56 -104 168 168 +24 72 80 +112 168 176 16 16 16 -56 128 128 -48 88 88 +64 128 144 +56 96 96 192 200 200 248 248 248 -120 48 56 -248 168 176 -184 104 120 -216 232 152 -192 200 128 +144 0 0 +248 160 144 +208 80 96 +216 216 144 +192 192 120 160 168 104 -80 80 40 +104 80 48 0 0 0 diff --git a/graphics/pokemon/raichu/anim_front.png b/graphics/pokemon/raichu/anim_front.png index 256e22ecc..57ee98c40 100644 Binary files a/graphics/pokemon/raichu/anim_front.png and b/graphics/pokemon/raichu/anim_front.png differ diff --git a/graphics/pokemon/raichu/front.png b/graphics/pokemon/raichu/front.png index 8f0753c3e..e1050a3d4 100644 Binary files a/graphics/pokemon/raichu/front.png and b/graphics/pokemon/raichu/front.png differ diff --git a/graphics/pokemon/raichu/normal.pal b/graphics/pokemon/raichu/normal.pal index c197eb959..2b912d23c 100644 --- a/graphics/pokemon/raichu/normal.pal +++ b/graphics/pokemon/raichu/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 32 16 -136 80 32 +88 40 40 +136 96 16 16 16 16 -96 56 32 -208 168 80 +112 64 48 +248 184 0 96 64 32 -248 216 104 -248 168 56 -192 136 48 +248 216 88 +240 168 40 +224 120 48 248 232 208 -144 104 32 -160 88 104 +192 88 48 +168 24 8 224 184 128 96 96 104 56 56 64 diff --git a/graphics/pokemon/raikou/anim_front.png b/graphics/pokemon/raikou/anim_front.png index 301932fa3..070a85266 100644 Binary files a/graphics/pokemon/raikou/anim_front.png and b/graphics/pokemon/raikou/anim_front.png differ diff --git a/graphics/pokemon/raikou/front.png b/graphics/pokemon/raikou/front.png index 20db4c97b..b729a2c37 100644 Binary files a/graphics/pokemon/raikou/front.png and b/graphics/pokemon/raikou/front.png differ diff --git a/graphics/pokemon/raikou/normal.pal b/graphics/pokemon/raikou/normal.pal index ab4065e9b..94fb14e43 100644 --- a/graphics/pokemon/raikou/normal.pal +++ b/graphics/pokemon/raikou/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 96 120 -112 104 104 -192 136 160 -96 48 72 +128 104 160 +104 104 104 +184 136 192 +80 40 104 248 248 248 -168 152 152 +160 160 160 16 16 16 -200 192 216 -136 208 224 -192 64 64 -240 192 56 -184 152 40 -120 96 24 -248 216 120 +208 208 208 +152 208 248 +192 0 0 +248 200 64 +208 152 40 +136 96 16 +248 232 144 88 88 96 diff --git a/graphics/pokemon/ralts/anim_front.png b/graphics/pokemon/ralts/anim_front.png index 241a51338..0e5f893b5 100644 Binary files a/graphics/pokemon/ralts/anim_front.png and b/graphics/pokemon/ralts/anim_front.png differ diff --git a/graphics/pokemon/ralts/front.png b/graphics/pokemon/ralts/front.png index b3e0d845e..6831c3897 100644 Binary files a/graphics/pokemon/ralts/front.png and b/graphics/pokemon/ralts/front.png differ diff --git a/graphics/pokemon/ralts/normal.pal b/graphics/pokemon/ralts/normal.pal index 0074af161..c859137ae 100644 --- a/graphics/pokemon/ralts/normal.pal +++ b/graphics/pokemon/ralts/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -112 48 56 -248 144 152 -176 96 104 +128 40 72 +248 120 144 +208 72 112 16 16 16 -104 168 88 -56 112 56 -160 224 152 -112 200 112 -184 192 232 -120 128 176 +112 184 112 +48 120 64 +176 240 144 +136 224 136 +200 200 224 +152 144 192 240 240 248 120 136 176 -0 0 0 -0 0 0 -0 0 0 +128 40 72 +248 120 144 +208 72 112 diff --git a/graphics/pokemon/rampardos/anim_front.png b/graphics/pokemon/rampardos/anim_front.png index d00352823..3c912158e 100644 Binary files a/graphics/pokemon/rampardos/anim_front.png and b/graphics/pokemon/rampardos/anim_front.png differ diff --git a/graphics/pokemon/rampardos/front.png b/graphics/pokemon/rampardos/front.png index e81e6f927..09fa06dfb 100644 Binary files a/graphics/pokemon/rampardos/front.png and b/graphics/pokemon/rampardos/front.png differ diff --git a/graphics/pokemon/rampardos/normal.pal b/graphics/pokemon/rampardos/normal.pal index b2a2910d7..285789631 100644 --- a/graphics/pokemon/rampardos/normal.pal +++ b/graphics/pokemon/rampardos/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 144 144 +120 128 128 248 248 248 16 16 16 -208 208 192 -56 128 192 +184 208 216 +56 128 208 32 64 96 -56 56 64 -48 96 144 -128 176 200 -120 120 128 -88 80 88 -160 152 152 -232 112 96 -184 56 48 -152 80 80 +64 64 64 +32 88 160 +112 168 232 +128 128 120 +96 96 88 +152 152 144 +240 80 96 +176 40 48 +168 32 32 diff --git a/graphics/pokemon/rapidash/anim_front.png b/graphics/pokemon/rapidash/anim_front.png index ab45abb0f..c4ee2d83f 100644 Binary files a/graphics/pokemon/rapidash/anim_front.png and b/graphics/pokemon/rapidash/anim_front.png differ diff --git a/graphics/pokemon/rapidash/front.png b/graphics/pokemon/rapidash/front.png index 6d66933be..d0fb296f5 100644 Binary files a/graphics/pokemon/rapidash/front.png and b/graphics/pokemon/rapidash/front.png differ diff --git a/graphics/pokemon/rapidash/normal.pal b/graphics/pokemon/rapidash/normal.pal index bdcccb3c0..a55c358ab 100644 --- a/graphics/pokemon/rapidash/normal.pal +++ b/graphics/pokemon/rapidash/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -240 176 24 -224 96 64 -208 40 32 -248 216 80 -96 80 48 -248 240 200 +255 156 24 +230 98 41 +222 16 16 +255 222 82 +139 82 49 +255 230 197 16 16 16 -176 160 120 -224 200 144 +197 148 106 +238 197 139 168 72 64 -152 176 224 -248 248 248 +197 197 197 +255 255 255 248 160 152 -88 120 168 -32 64 112 +115 123 131 +65 74 82 diff --git a/graphics/pokemon/raticate/anim_front.png b/graphics/pokemon/raticate/anim_front.png index 52b2096ed..d612bbad9 100644 Binary files a/graphics/pokemon/raticate/anim_front.png and b/graphics/pokemon/raticate/anim_front.png differ diff --git a/graphics/pokemon/raticate/back.png b/graphics/pokemon/raticate/back.png index e6c252a2e..dadf090ba 100644 Binary files a/graphics/pokemon/raticate/back.png and b/graphics/pokemon/raticate/back.png differ diff --git a/graphics/pokemon/raticate/front.png b/graphics/pokemon/raticate/front.png index b86a81e21..8e9f34722 100644 Binary files a/graphics/pokemon/raticate/front.png and b/graphics/pokemon/raticate/front.png differ diff --git a/graphics/pokemon/raticate/normal.pal b/graphics/pokemon/raticate/normal.pal index 572654b6f..88e7b2244 100644 --- a/graphics/pokemon/raticate/normal.pal +++ b/graphics/pokemon/raticate/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 88 56 -176 136 88 -224 176 128 +144 76 8 +192 128 80 +248 200 152 16 16 16 104 56 0 -192 128 48 -152 96 40 -216 160 88 +208 160 64 +176 120 64 +224 184 80 184 192 200 248 248 248 128 88 40 -248 216 168 -208 168 120 +240 224 144 +208 192 104 112 112 112 -176 136 88 +160 128 48 diff --git a/graphics/pokemon/rattata/anim_front.png b/graphics/pokemon/rattata/anim_front.png index 312339af2..08f52ed89 100644 Binary files a/graphics/pokemon/rattata/anim_front.png and b/graphics/pokemon/rattata/anim_front.png differ diff --git a/graphics/pokemon/rattata/front.png b/graphics/pokemon/rattata/front.png index d83960d42..957a686e1 100644 Binary files a/graphics/pokemon/rattata/front.png and b/graphics/pokemon/rattata/front.png differ diff --git a/graphics/pokemon/rattata/normal.pal b/graphics/pokemon/rattata/normal.pal index 0a157b921..87fc380cb 100644 --- a/graphics/pokemon/rattata/normal.pal +++ b/graphics/pokemon/rattata/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 80 136 -168 112 184 -184 144 208 -72 48 80 +139 74 139 +180 115 189 +213 148 213 +74 41 65 16 16 16 -208 184 152 -240 216 176 -200 200 200 -152 120 96 -216 88 80 +205 172 98 +238 222 180 +205 205 205 +164 115 8 +230 90 115 248 248 248 -184 48 64 -104 88 64 +164 24 57 +98 74 8 88 88 88 120 80 136 diff --git a/graphics/pokemon/rayquaza/anim_front.png b/graphics/pokemon/rayquaza/anim_front.png index 421846fee..c1c78f9a1 100644 Binary files a/graphics/pokemon/rayquaza/anim_front.png and b/graphics/pokemon/rayquaza/anim_front.png differ diff --git a/graphics/pokemon/rayquaza/front.png b/graphics/pokemon/rayquaza/front.png index 2c6b78b54..57123a773 100644 Binary files a/graphics/pokemon/rayquaza/front.png and b/graphics/pokemon/rayquaza/front.png differ diff --git a/graphics/pokemon/rayquaza/normal.pal b/graphics/pokemon/rayquaza/normal.pal index 8e3925548..550aeed43 100644 --- a/graphics/pokemon/rayquaza/normal.pal +++ b/graphics/pokemon/rayquaza/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -40 128 80 -16 64 40 -152 208 176 -16 16 16 -104 176 136 -112 40 48 -216 96 104 -248 248 120 -200 160 72 -152 112 120 +72 128 112 +40 80 64 +144 216 176 +0 0 0 +88 184 136 +112 40 56 +224 80 112 +248 240 0 +200 184 0 +152 40 80 248 248 248 -200 144 160 -192 208 232 +184 96 136 +216 208 232 0 0 0 0 0 0 diff --git a/graphics/pokemon/regice/anim_front.png b/graphics/pokemon/regice/anim_front.png index 2b75a7a83..7e28e59c4 100644 Binary files a/graphics/pokemon/regice/anim_front.png and b/graphics/pokemon/regice/anim_front.png differ diff --git a/graphics/pokemon/regice/front.png b/graphics/pokemon/regice/front.png index c569fed4a..e369c6344 100644 Binary files a/graphics/pokemon/regice/front.png and b/graphics/pokemon/regice/front.png differ diff --git a/graphics/pokemon/regice/normal.pal b/graphics/pokemon/regice/normal.pal index 25e85b77d..886f453c7 100644 --- a/graphics/pokemon/regice/normal.pal +++ b/graphics/pokemon/regice/normal.pal @@ -4,15 +4,15 @@ JASC-PAL 152 208 160 104 176 208 56 104 136 -64 136 160 -24 24 24 -192 232 248 -32 72 88 -144 208 232 -232 240 240 -248 240 200 -240 216 120 -208 176 64 +88 128 168 +0 0 0 +184 232 248 +40 56 120 +152 200 248 +248 248 248 +248 248 168 +248 224 0 +200 176 32 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/regigigas/anim_front.png b/graphics/pokemon/regigigas/anim_front.png index e040ff3f3..125b269d1 100644 Binary files a/graphics/pokemon/regigigas/anim_front.png and b/graphics/pokemon/regigigas/anim_front.png differ diff --git a/graphics/pokemon/regigigas/front.png b/graphics/pokemon/regigigas/front.png index d064a5e88..7cb87a1cc 100644 Binary files a/graphics/pokemon/regigigas/front.png and b/graphics/pokemon/regigigas/front.png differ diff --git a/graphics/pokemon/regigigas/normal.pal b/graphics/pokemon/regigigas/normal.pal index 7137dc686..4db68a825 100644 --- a/graphics/pokemon/regigigas/normal.pal +++ b/graphics/pokemon/regigigas/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 88 40 -56 128 80 -184 152 64 -240 208 112 +120 96 32 +32 128 104 +200 152 80 +248 216 88 24 24 32 -64 168 112 +72 160 96 32 80 48 -240 240 248 -64 56 56 +248 248 248 +56 72 88 104 120 136 -208 200 208 -168 160 176 +216 200 216 +168 168 200 232 64 40 -32 176 168 -128 120 120 +88 200 248 +104 120 136 diff --git a/graphics/pokemon/regirock/anim_front.png b/graphics/pokemon/regirock/anim_front.png index 341f6ccf9..88bfa4ff0 100644 Binary files a/graphics/pokemon/regirock/anim_front.png and b/graphics/pokemon/regirock/anim_front.png differ diff --git a/graphics/pokemon/regirock/front.png b/graphics/pokemon/regirock/front.png index 95c25b5fa..4ba1f41d8 100644 Binary files a/graphics/pokemon/regirock/front.png and b/graphics/pokemon/regirock/front.png differ diff --git a/graphics/pokemon/regirock/normal.pal b/graphics/pokemon/regirock/normal.pal index 1ffdbb844..a921fc190 100644 --- a/graphics/pokemon/regirock/normal.pal +++ b/graphics/pokemon/regirock/normal.pal @@ -3,16 +3,16 @@ JASC-PAL 16 152 208 160 24 24 24 -120 56 40 -192 120 88 +136 56 32 +216 120 80 232 152 136 -152 88 56 -72 40 40 -224 208 200 -136 104 112 -176 160 152 -168 136 136 -248 160 104 +184 72 48 +56 48 56 +216 200 200 +144 112 128 +168 152 160 +160 144 144 +240 176 144 192 176 168 0 0 0 0 0 0 diff --git a/graphics/pokemon/registeel/anim_front.png b/graphics/pokemon/registeel/anim_front.png index 28169d5ac..acf975f9f 100644 Binary files a/graphics/pokemon/registeel/anim_front.png and b/graphics/pokemon/registeel/anim_front.png differ diff --git a/graphics/pokemon/registeel/front.png b/graphics/pokemon/registeel/front.png index 29bbb7388..844ab20c0 100644 Binary files a/graphics/pokemon/registeel/front.png and b/graphics/pokemon/registeel/front.png differ diff --git a/graphics/pokemon/registeel/normal.pal b/graphics/pokemon/registeel/normal.pal index 80390a06b..e69a7bf26 100644 --- a/graphics/pokemon/registeel/normal.pal +++ b/graphics/pokemon/registeel/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 112 136 -64 56 72 +128 128 120 +72 72 72 24 24 24 -176 160 176 -224 216 224 -136 128 128 +176 168 168 +216 216 216 +128 136 128 248 248 248 -168 160 160 -208 192 208 -248 152 152 -224 72 80 -80 72 80 +184 184 184 +208 200 208 +248 152 160 +248 64 64 +72 88 88 56 64 80 0 0 0 0 0 0 diff --git a/graphics/pokemon/relicanth/anim_front.png b/graphics/pokemon/relicanth/anim_front.png index a56d7aeea..575db345c 100644 Binary files a/graphics/pokemon/relicanth/anim_front.png and b/graphics/pokemon/relicanth/anim_front.png differ diff --git a/graphics/pokemon/relicanth/front.png b/graphics/pokemon/relicanth/front.png index 55f47eba2..552b2421d 100644 Binary files a/graphics/pokemon/relicanth/front.png and b/graphics/pokemon/relicanth/front.png differ diff --git a/graphics/pokemon/relicanth/normal.pal b/graphics/pokemon/relicanth/normal.pal index 269e3f960..a8d6118ee 100644 --- a/graphics/pokemon/relicanth/normal.pal +++ b/graphics/pokemon/relicanth/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 72 56 -216 184 160 -184 160 136 +104 80 64 +232 200 160 +200 176 144 80 64 56 -16 16 16 +0 0 0 80 64 64 -176 160 136 -144 112 80 -144 120 120 -48 32 40 -160 136 112 -240 208 176 -112 96 96 -216 80 96 -158 101 133 +176 152 152 +136 112 72 +152 128 120 +56 40 40 +176 144 104 +248 232 200 +120 104 96 +232 72 112 +168 32 0 diff --git a/graphics/pokemon/remoraid/anim_front.png b/graphics/pokemon/remoraid/anim_front.png index 440f044bf..daf58f3c3 100644 Binary files a/graphics/pokemon/remoraid/anim_front.png and b/graphics/pokemon/remoraid/anim_front.png differ diff --git a/graphics/pokemon/remoraid/front.png b/graphics/pokemon/remoraid/front.png index f42ae8f12..8cf4b8664 100644 Binary files a/graphics/pokemon/remoraid/front.png and b/graphics/pokemon/remoraid/front.png differ diff --git a/graphics/pokemon/remoraid/normal.pal b/graphics/pokemon/remoraid/normal.pal index aa4a9d29f..45c205c22 100644 --- a/graphics/pokemon/remoraid/normal.pal +++ b/graphics/pokemon/remoraid/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 160 176 -72 136 128 -56 96 88 -136 192 168 -216 248 232 -224 232 208 -128 136 152 -168 224 192 +96 136 160 +40 88 128 +128 192 176 +208 240 240 +232 232 248 +128 128 152 +176 216 208 16 16 16 248 248 248 -128 168 144 -184 184 160 +136 168 184 +184 184 200 72 80 96 -104 56 80 +136 16 8 0 0 0 0 0 0 diff --git a/graphics/pokemon/reshiram/anim_front.png b/graphics/pokemon/reshiram/anim_front.png index b9f8df136..f0bbac206 100644 Binary files a/graphics/pokemon/reshiram/anim_front.png and b/graphics/pokemon/reshiram/anim_front.png differ diff --git a/graphics/pokemon/reshiram/front.png b/graphics/pokemon/reshiram/front.png index 4d5be4a8b..22d7be6e5 100644 Binary files a/graphics/pokemon/reshiram/front.png and b/graphics/pokemon/reshiram/front.png differ diff --git a/graphics/pokemon/reshiram/normal.pal b/graphics/pokemon/reshiram/normal.pal index d8fbc1b91..81a266c50 100644 --- a/graphics/pokemon/reshiram/normal.pal +++ b/graphics/pokemon/reshiram/normal.pal @@ -1,17 +1,17 @@ JASC-PAL 0100 16 -152 208 160 +24 24 24 64 72 96 -112 128 168 +112 120 152 0 0 0 -168 192 216 +184 184 216 248 248 248 -208 232 232 -56 176 240 -88 80 96 -168 152 192 -120 104 144 +224 224 232 +56 176 248 +72 72 104 +192 192 216 +120 120 152 208 40 8 248 88 48 248 160 48 diff --git a/graphics/pokemon/reuniclus/anim_front.png b/graphics/pokemon/reuniclus/anim_front.png index d83e33564..9f9f38975 100644 Binary files a/graphics/pokemon/reuniclus/anim_front.png and b/graphics/pokemon/reuniclus/anim_front.png differ diff --git a/graphics/pokemon/reuniclus/front.png b/graphics/pokemon/reuniclus/front.png index b1b8f974a..d189c0bf4 100644 Binary files a/graphics/pokemon/reuniclus/front.png and b/graphics/pokemon/reuniclus/front.png differ diff --git a/graphics/pokemon/reuniclus/normal.pal b/graphics/pokemon/reuniclus/normal.pal index 94fac9f68..17ed37ea8 100644 --- a/graphics/pokemon/reuniclus/normal.pal +++ b/graphics/pokemon/reuniclus/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -56 136 104 -48 104 80 -112 184 136 -96 128 64 -152 176 128 -208 232 184 +64 136 88 +48 96 64 +88 176 120 +72 136 96 +152 184 136 +208 232 192 16 16 16 248 248 248 -224 120 120 -168 96 88 -224 192 136 -168 152 104 -136 88 88 -216 120 120 -184 232 184 +216 96 96 +160 80 80 +216 184 120 +192 160 96 +112 56 56 +192 80 80 +160 224 168 diff --git a/graphics/pokemon/rhydon/anim_front.png b/graphics/pokemon/rhydon/anim_front.png index bb1bca933..d93763b8d 100644 Binary files a/graphics/pokemon/rhydon/anim_front.png and b/graphics/pokemon/rhydon/anim_front.png differ diff --git a/graphics/pokemon/rhydon/front.png b/graphics/pokemon/rhydon/front.png index 6b21040f2..fbae08b97 100644 Binary files a/graphics/pokemon/rhydon/front.png and b/graphics/pokemon/rhydon/front.png differ diff --git a/graphics/pokemon/rhydon/normal.pal b/graphics/pokemon/rhydon/normal.pal index 5424356f2..235d7f7dc 100644 --- a/graphics/pokemon/rhydon/normal.pal +++ b/graphics/pokemon/rhydon/normal.pal @@ -9,11 +9,11 @@ JASC-PAL 184 200 216 248 248 248 224 224 216 -104 80 56 -232 200 176 -184 160 128 +112 88 48 +224 208 168 +176 160 112 128 48 40 184 88 80 -160 112 128 -216 152 168 +160 48 16 +224 80 56 96 64 104 diff --git a/graphics/pokemon/rhyhorn/anim_front.png b/graphics/pokemon/rhyhorn/anim_front.png index 2f047251c..67f81580e 100644 Binary files a/graphics/pokemon/rhyhorn/anim_front.png and b/graphics/pokemon/rhyhorn/anim_front.png differ diff --git a/graphics/pokemon/rhyhorn/normal.pal b/graphics/pokemon/rhyhorn/normal.pal index 98b99f009..afba6e501 100644 --- a/graphics/pokemon/rhyhorn/normal.pal +++ b/graphics/pokemon/rhyhorn/normal.pal @@ -9,8 +9,8 @@ JASC-PAL 248 248 248 152 176 192 16 16 16 -160 72 64 -88 24 24 +168 56 40 +88 8 0 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/rhyperior/anim_front.png b/graphics/pokemon/rhyperior/anim_front.png index 1e495e593..3d07661e3 100644 Binary files a/graphics/pokemon/rhyperior/anim_front.png and b/graphics/pokemon/rhyperior/anim_front.png differ diff --git a/graphics/pokemon/rhyperior/front.png b/graphics/pokemon/rhyperior/front.png index bebbcbebc..7c20072cf 100644 Binary files a/graphics/pokemon/rhyperior/front.png and b/graphics/pokemon/rhyperior/front.png differ diff --git a/graphics/pokemon/rhyperior/normal.pal b/graphics/pokemon/rhyperior/normal.pal index 180856bd1..7a73748ca 100644 --- a/graphics/pokemon/rhyperior/normal.pal +++ b/graphics/pokemon/rhyperior/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 128 120 -176 152 160 -80 56 56 -248 248 232 -216 192 208 -112 80 88 +128 104 120 +144 136 168 +56 56 72 +248 248 248 +200 200 224 +88 72 96 16 16 16 -88 40 16 -184 80 32 -224 120 64 +80 48 0 +192 64 0 +240 80 0 160 40 32 -144 64 24 +144 56 0 48 40 48 -160 112 128 +144 56 0 72 48 56 diff --git a/graphics/pokemon/riolu/anim_front.png b/graphics/pokemon/riolu/anim_front.png index a9a658a6e..091e0dd92 100644 Binary files a/graphics/pokemon/riolu/anim_front.png and b/graphics/pokemon/riolu/anim_front.png differ diff --git a/graphics/pokemon/riolu/front.png b/graphics/pokemon/riolu/front.png index 4b3fd126a..fbba5f54b 100644 Binary files a/graphics/pokemon/riolu/front.png and b/graphics/pokemon/riolu/front.png differ diff --git a/graphics/pokemon/riolu/normal.pal b/graphics/pokemon/riolu/normal.pal index ce1aff2b5..e19d06c53 100644 --- a/graphics/pokemon/riolu/normal.pal +++ b/graphics/pokemon/riolu/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -40 64 88 -56 112 136 -88 160 184 +16 72 120 +40 112 152 +72 152 232 56 56 56 88 88 88 -160 64 24 -232 88 16 +160 48 48 +216 64 64 248 248 248 -128 120 80 -240 208 136 +136 128 56 +216 192 112 128 128 128 176 176 176 -112 72 80 -232 127 127 +224 104 120 +168 56 80 diff --git a/graphics/pokemon/roggenrola/anim_front.png b/graphics/pokemon/roggenrola/anim_front.png index 4269969b1..6094a9110 100644 Binary files a/graphics/pokemon/roggenrola/anim_front.png and b/graphics/pokemon/roggenrola/anim_front.png differ diff --git a/graphics/pokemon/roggenrola/front.png b/graphics/pokemon/roggenrola/front.png index 29b11c739..b63929ad2 100644 Binary files a/graphics/pokemon/roggenrola/front.png and b/graphics/pokemon/roggenrola/front.png differ diff --git a/graphics/pokemon/roggenrola/normal.pal b/graphics/pokemon/roggenrola/normal.pal index 0b7d48cfb..5918cc98e 100644 --- a/graphics/pokemon/roggenrola/normal.pal +++ b/graphics/pokemon/roggenrola/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -64 48 32 -16 16 16 -160 120 80 -112 72 48 -24 40 64 -72 96 128 -40 64 96 -104 72 32 -184 136 56 -248 200 104 +56 32 24 +0 0 0 +120 88 72 +88 64 48 +24 32 56 +64 80 136 +40 56 104 +88 64 32 +152 112 16 +248 184 72 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/roselia/anim_front.png b/graphics/pokemon/roselia/anim_front.png index f88bab17d..270ab0bf0 100644 Binary files a/graphics/pokemon/roselia/anim_front.png and b/graphics/pokemon/roselia/anim_front.png differ diff --git a/graphics/pokemon/roselia/front.png b/graphics/pokemon/roselia/front.png index 71d9f59ef..ea92a4474 100644 Binary files a/graphics/pokemon/roselia/front.png and b/graphics/pokemon/roselia/front.png differ diff --git a/graphics/pokemon/roselia/normal.pal b/graphics/pokemon/roselia/normal.pal index 8aecad98e..e81a669a7 100644 --- a/graphics/pokemon/roselia/normal.pal +++ b/graphics/pokemon/roselia/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -216 216 216 -64 152 72 -144 216 152 -40 80 40 -104 192 104 +128 128 248 +88 144 80 +160 216 112 +56 80 40 +112 192 88 16 16 16 216 240 176 160 192 144 -152 72 80 -248 168 168 -216 120 128 -200 160 88 -16 96 136 -120 200 240 -248 224 120 -48 152 208 +160 48 72 +248 160 184 +240 88 128 +200 160 32 +40 88 144 +96 184 248 +240 224 72 +80 144 208 diff --git a/graphics/pokemon/roserade/anim_front.png b/graphics/pokemon/roserade/anim_front.png index d83256932..b34276d0e 100644 Binary files a/graphics/pokemon/roserade/anim_front.png and b/graphics/pokemon/roserade/anim_front.png differ diff --git a/graphics/pokemon/roserade/front.png b/graphics/pokemon/roserade/front.png index 016046f4e..34c283b96 100644 Binary files a/graphics/pokemon/roserade/front.png and b/graphics/pokemon/roserade/front.png differ diff --git a/graphics/pokemon/roserade/normal.pal b/graphics/pokemon/roserade/normal.pal index 64b594ca5..329cc52ac 100644 --- a/graphics/pokemon/roserade/normal.pal +++ b/graphics/pokemon/roserade/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 120 208 240 -104 160 136 -240 240 248 -184 200 224 -40 72 48 -64 120 80 +112 152 136 +248 248 248 +208 200 216 +40 80 80 +40 120 80 0 0 0 -88 160 104 -224 200 104 -168 64 88 -112 48 64 -240 96 120 -152 216 168 -56 80 120 -104 136 208 -64 96 176 +56 152 96 +240 208 72 +184 64 104 +120 56 88 +248 96 128 +160 224 168 +64 72 128 +80 112 232 +72 88 184 diff --git a/graphics/pokemon/rotom/anim_front.png b/graphics/pokemon/rotom/anim_front.png index 4f680637e..1579cd386 100644 Binary files a/graphics/pokemon/rotom/anim_front.png and b/graphics/pokemon/rotom/anim_front.png differ diff --git a/graphics/pokemon/rotom/fan/anim_front.png b/graphics/pokemon/rotom/fan/anim_front.png index b73f33893..aea9383a6 100644 Binary files a/graphics/pokemon/rotom/fan/anim_front.png and b/graphics/pokemon/rotom/fan/anim_front.png differ diff --git a/graphics/pokemon/rotom/fan/front.png b/graphics/pokemon/rotom/fan/front.png index ddb10b0b8..30f58175e 100644 Binary files a/graphics/pokemon/rotom/fan/front.png and b/graphics/pokemon/rotom/fan/front.png differ diff --git a/graphics/pokemon/rotom/fan/normal.pal b/graphics/pokemon/rotom/fan/normal.pal index 21ca78cf3..dbeac9367 100644 --- a/graphics/pokemon/rotom/fan/normal.pal +++ b/graphics/pokemon/rotom/fan/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -200 152 80 -240 208 112 -248 232 168 +208 168 0 +248 224 88 +248 232 160 248 248 248 -176 88 48 +192 72 24 120 56 32 -248 112 64 -248 160 128 +232 112 40 +248 168 128 16 16 16 -88 80 96 +72 72 80 184 184 184 -248 192 136 -208 136 56 -48 40 40 +248 216 112 +224 112 24 +40 40 40 0 0 0 diff --git a/graphics/pokemon/rotom/front.png b/graphics/pokemon/rotom/front.png index 2c99d4afc..f6141a709 100644 Binary files a/graphics/pokemon/rotom/front.png and b/graphics/pokemon/rotom/front.png differ diff --git a/graphics/pokemon/rotom/frost/anim_front.png b/graphics/pokemon/rotom/frost/anim_front.png index 9b1266cfc..019aa481e 100644 Binary files a/graphics/pokemon/rotom/frost/anim_front.png and b/graphics/pokemon/rotom/frost/anim_front.png differ diff --git a/graphics/pokemon/rotom/frost/front.png b/graphics/pokemon/rotom/frost/front.png index 1e91c6915..d94fd9376 100644 Binary files a/graphics/pokemon/rotom/frost/front.png and b/graphics/pokemon/rotom/frost/front.png differ diff --git a/graphics/pokemon/rotom/frost/normal.pal b/graphics/pokemon/rotom/frost/normal.pal index 6e774c738..9844e99f6 100644 --- a/graphics/pokemon/rotom/frost/normal.pal +++ b/graphics/pokemon/rotom/frost/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 104 168 -168 136 192 -176 88 48 +176 80 200 +200 112 248 +192 72 24 120 56 32 -248 160 128 -248 112 64 +248 168 128 +232 112 40 16 16 16 248 248 248 -176 152 192 -120 88 152 +144 128 216 +104 56 168 184 184 184 -80 72 72 +72 72 80 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/rotom/heat/anim_front.png b/graphics/pokemon/rotom/heat/anim_front.png index 6172556cc..5d96fda88 100644 Binary files a/graphics/pokemon/rotom/heat/anim_front.png and b/graphics/pokemon/rotom/heat/anim_front.png differ diff --git a/graphics/pokemon/rotom/heat/front.png b/graphics/pokemon/rotom/heat/front.png index fb519b2e5..59878b8bb 100644 Binary files a/graphics/pokemon/rotom/heat/front.png and b/graphics/pokemon/rotom/heat/front.png differ diff --git a/graphics/pokemon/rotom/heat/normal.pal b/graphics/pokemon/rotom/heat/normal.pal index 09854ef92..f03c9ec60 100644 --- a/graphics/pokemon/rotom/heat/normal.pal +++ b/graphics/pokemon/rotom/heat/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -168 32 64 -224 72 72 -240 136 136 +184 40 40 +248 64 48 +248 152 144 248 248 248 -176 88 48 +192 72 24 120 56 32 -248 112 64 -248 160 128 +232 112 40 +248 168 128 184 184 184 -232 128 128 -200 64 56 +248 112 112 +200 48 56 16 16 16 -56 56 56 -120 120 128 +40 40 40 +72 72 80 0 0 0 diff --git a/graphics/pokemon/rotom/mow/anim_front.png b/graphics/pokemon/rotom/mow/anim_front.png index 93c327839..550ddfc73 100644 Binary files a/graphics/pokemon/rotom/mow/anim_front.png and b/graphics/pokemon/rotom/mow/anim_front.png differ diff --git a/graphics/pokemon/rotom/mow/front.png b/graphics/pokemon/rotom/mow/front.png index 302f1af1d..41031736f 100644 Binary files a/graphics/pokemon/rotom/mow/front.png and b/graphics/pokemon/rotom/mow/front.png differ diff --git a/graphics/pokemon/rotom/mow/normal.pal b/graphics/pokemon/rotom/mow/normal.pal index 7d59d2267..f199d83f9 100644 --- a/graphics/pokemon/rotom/mow/normal.pal +++ b/graphics/pokemon/rotom/mow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 152 56 -144 184 72 -176 88 48 +0 152 0 +0 200 0 +192 72 24 120 56 32 -248 112 64 -248 160 128 +232 112 40 +248 168 128 16 16 16 -80 72 80 +72 72 80 248 248 248 -160 192 104 -192 184 176 -120 160 56 -184 216 144 +32 176 80 +184 184 184 +8 120 64 +136 240 168 40 40 40 0 0 0 diff --git a/graphics/pokemon/rotom/normal.pal b/graphics/pokemon/rotom/normal.pal index 172105d9c..dc8026c5d 100644 --- a/graphics/pokemon/rotom/normal.pal +++ b/graphics/pokemon/rotom/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 160 176 -112 200 200 -176 88 48 +40 168 184 +88 192 184 +192 72 24 120 56 32 -248 112 64 -248 160 128 +232 112 40 +248 168 128 16 16 16 248 248 248 184 184 184 -96 152 232 -24 88 160 -176 232 232 +48 120 232 +8 64 168 +184 240 232 72 72 80 0 0 0 0 0 0 diff --git a/graphics/pokemon/rotom/wash/anim_front.png b/graphics/pokemon/rotom/wash/anim_front.png index f526b215e..d0e54071c 100644 Binary files a/graphics/pokemon/rotom/wash/anim_front.png and b/graphics/pokemon/rotom/wash/anim_front.png differ diff --git a/graphics/pokemon/rotom/wash/front.png b/graphics/pokemon/rotom/wash/front.png index 8c01db3c5..5313d0302 100644 Binary files a/graphics/pokemon/rotom/wash/front.png and b/graphics/pokemon/rotom/wash/front.png differ diff --git a/graphics/pokemon/rotom/wash/normal.pal b/graphics/pokemon/rotom/wash/normal.pal index 1070cb148..d7ae28e2b 100644 --- a/graphics/pokemon/rotom/wash/normal.pal +++ b/graphics/pokemon/rotom/wash/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 144 168 -48 168 192 -176 88 48 -248 112 64 +8 72 192 +72 120 248 +192 72 24 +232 112 40 120 56 32 -248 160 128 +248 168 128 248 248 248 184 184 184 -104 192 216 +48 120 232 16 16 16 -136 208 224 -80 80 72 -48 48 48 -32 144 168 -0 0 0 +136 184 240 +72 72 80 +8 64 168 +40 40 40 +8 72 192 diff --git a/graphics/pokemon/rufflet/anim_front.png b/graphics/pokemon/rufflet/anim_front.png index 522129e95..4e1e1edc8 100644 Binary files a/graphics/pokemon/rufflet/anim_front.png and b/graphics/pokemon/rufflet/anim_front.png differ diff --git a/graphics/pokemon/rufflet/front.png b/graphics/pokemon/rufflet/front.png index 7a89fcb8e..b3e83329b 100644 Binary files a/graphics/pokemon/rufflet/front.png and b/graphics/pokemon/rufflet/front.png differ diff --git a/graphics/pokemon/rufflet/normal.pal b/graphics/pokemon/rufflet/normal.pal index f4b4c2130..0a9811451 100644 --- a/graphics/pokemon/rufflet/normal.pal +++ b/graphics/pokemon/rufflet/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 120 168 -16 16 16 -128 104 88 +104 128 144 +0 0 0 +128 112 96 248 248 248 -64 64 48 -240 240 208 -184 168 136 -160 64 64 -224 96 88 -88 88 112 -48 56 80 -248 208 144 -168 136 96 +80 72 56 +240 232 208 +184 176 152 +168 72 72 +216 88 88 +72 96 112 +40 64 80 +232 200 88 +184 152 56 168 176 192 0 0 0 diff --git a/graphics/pokemon/sableye/anim_front.png b/graphics/pokemon/sableye/anim_front.png index a67c5172d..827f9c28b 100644 Binary files a/graphics/pokemon/sableye/anim_front.png and b/graphics/pokemon/sableye/anim_front.png differ diff --git a/graphics/pokemon/sableye/front.png b/graphics/pokemon/sableye/front.png index 24c705294..02d95cca0 100644 Binary files a/graphics/pokemon/sableye/front.png and b/graphics/pokemon/sableye/front.png differ diff --git a/graphics/pokemon/sableye/normal.pal b/graphics/pokemon/sableye/normal.pal index cf010347d..471538fa8 100644 --- a/graphics/pokemon/sableye/normal.pal +++ b/graphics/pokemon/sableye/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 40 136 -184 160 208 -16 16 16 +56 48 120 +144 136 208 +0 0 0 24 16 56 -128 96 168 -96 64 144 -128 184 216 -176 216 232 +112 96 176 +88 64 160 +128 192 208 +176 224 240 120 136 176 248 248 248 -64 136 168 +64 144 160 192 16 32 -248 168 176 -232 72 80 +248 144 168 +248 72 88 0 0 0 diff --git a/graphics/pokemon/salamence/anim_front.png b/graphics/pokemon/salamence/anim_front.png index 70cc7c0f8..977f43a6f 100644 Binary files a/graphics/pokemon/salamence/anim_front.png and b/graphics/pokemon/salamence/anim_front.png differ diff --git a/graphics/pokemon/salamence/front.png b/graphics/pokemon/salamence/front.png index ccb50e4e5..6f1a13419 100644 Binary files a/graphics/pokemon/salamence/front.png and b/graphics/pokemon/salamence/front.png differ diff --git a/graphics/pokemon/salamence/normal.pal b/graphics/pokemon/salamence/normal.pal index eee5f13af..9da83c827 100644 --- a/graphics/pokemon/salamence/normal.pal +++ b/graphics/pokemon/salamence/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 40 48 -216 136 152 -192 88 96 -152 56 72 +96 40 40 +224 128 144 +192 80 104 +160 56 72 24 24 24 -24 96 120 -48 128 152 -128 200 216 -72 160 184 -184 168 168 +40 96 120 +64 128 152 +128 200 232 +72 160 208 +184 184 176 248 248 248 96 56 64 152 88 104 128 144 144 -224 216 224 +240 240 232 diff --git a/graphics/pokemon/samurott/anim_front.png b/graphics/pokemon/samurott/anim_front.png index 3bf85693d..ee43614bf 100644 Binary files a/graphics/pokemon/samurott/anim_front.png and b/graphics/pokemon/samurott/anim_front.png differ diff --git a/graphics/pokemon/samurott/front.png b/graphics/pokemon/samurott/front.png index 769657fcf..ceef8bab9 100644 Binary files a/graphics/pokemon/samurott/front.png and b/graphics/pokemon/samurott/front.png differ diff --git a/graphics/pokemon/samurott/normal.pal b/graphics/pokemon/samurott/normal.pal index 8eacbf6f6..213b132b7 100644 --- a/graphics/pokemon/samurott/normal.pal +++ b/graphics/pokemon/samurott/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -112 96 64 -208 192 120 -240 224 168 -160 144 96 +120 96 64 +216 200 120 +248 232 144 +168 144 88 72 64 80 248 248 248 -128 168 176 -32 64 104 -40 96 168 -224 104 72 -192 184 200 -96 120 120 +128 160 160 +24 56 96 +32 88 152 +208 80 96 +192 192 200 +88 112 112 32 48 72 0 0 0 diff --git a/graphics/pokemon/sandile/anim_front.png b/graphics/pokemon/sandile/anim_front.png index a396e9581..40d559ea2 100644 Binary files a/graphics/pokemon/sandile/anim_front.png and b/graphics/pokemon/sandile/anim_front.png differ diff --git a/graphics/pokemon/sandile/front.png b/graphics/pokemon/sandile/front.png index 14b1f76bf..21ff3c968 100644 Binary files a/graphics/pokemon/sandile/front.png and b/graphics/pokemon/sandile/front.png differ diff --git a/graphics/pokemon/sandile/normal.pal b/graphics/pokemon/sandile/normal.pal index 1c62e6c79..b079c8061 100644 --- a/graphics/pokemon/sandile/normal.pal +++ b/graphics/pokemon/sandile/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -152 112 72 +139 115 49 32 32 32 -240 216 176 -80 56 32 +222 189 131 +82 57 16 16 16 16 -216 160 112 -72 72 80 -176 168 168 -80 80 96 -176 96 104 +197 156 90 +65 65 74 +180 180 189 +82 82 98 +205 115 123 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/sandshrew/anim_front.png b/graphics/pokemon/sandshrew/anim_front.png index 9f8bbf63d..907d47dd2 100644 Binary files a/graphics/pokemon/sandshrew/anim_front.png and b/graphics/pokemon/sandshrew/anim_front.png differ diff --git a/graphics/pokemon/sandshrew/back.png b/graphics/pokemon/sandshrew/back.png index 5375da9d6..f8a0c9ce2 100644 Binary files a/graphics/pokemon/sandshrew/back.png and b/graphics/pokemon/sandshrew/back.png differ diff --git a/graphics/pokemon/sandshrew/front.png b/graphics/pokemon/sandshrew/front.png index 4e6be966e..7d373f122 100644 Binary files a/graphics/pokemon/sandshrew/front.png and b/graphics/pokemon/sandshrew/front.png differ diff --git a/graphics/pokemon/sandshrew/normal.pal b/graphics/pokemon/sandshrew/normal.pal index 9468fd84a..0107394ec 100644 --- a/graphics/pokemon/sandshrew/normal.pal +++ b/graphics/pokemon/sandshrew/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 72 32 -232 192 88 -184 176 160 -16 16 16 -192 152 80 -144 112 48 -232 232 200 -8 80 120 -248 248 248 -0 112 184 -216 216 192 -128 128 128 -40 120 200 -16 56 120 128 96 16 +232 216 16 +200 184 176 +16 16 16 +200 176 0 +176 128 16 +232 232 200 +16 56 120 +248 248 248 +40 120 200 +232 216 200 +128 128 128 +200 200 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sandshrew/shiny.pal b/graphics/pokemon/sandshrew/shiny.pal index ac8291fe5..4ee0966b0 100644 --- a/graphics/pokemon/sandshrew/shiny.pal +++ b/graphics/pokemon/sandshrew/shiny.pal @@ -14,6 +14,6 @@ JASC-PAL 48 96 144 216 208 200 128 128 128 -48 96 144 -24 48 88 -64 96 64 +200 200 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sandslash/anim_front.png b/graphics/pokemon/sandslash/anim_front.png index 5409c3aa6..00f895d9a 100644 Binary files a/graphics/pokemon/sandslash/anim_front.png and b/graphics/pokemon/sandslash/anim_front.png differ diff --git a/graphics/pokemon/sandslash/back.png b/graphics/pokemon/sandslash/back.png index 13efe9433..cb4b5697c 100644 Binary files a/graphics/pokemon/sandslash/back.png and b/graphics/pokemon/sandslash/back.png differ diff --git a/graphics/pokemon/sandslash/front.png b/graphics/pokemon/sandslash/front.png index 5c2e6da90..6e8842c62 100644 Binary files a/graphics/pokemon/sandslash/front.png and b/graphics/pokemon/sandslash/front.png differ diff --git a/graphics/pokemon/sandslash/normal.pal b/graphics/pokemon/sandslash/normal.pal index f79c67d10..21eebe9eb 100644 --- a/graphics/pokemon/sandslash/normal.pal +++ b/graphics/pokemon/sandslash/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 40 16 -152 104 40 +72 56 16 +168 128 48 16 16 16 128 104 56 -112 72 24 -192 152 72 -80 64 32 -232 184 80 +136 96 24 +208 168 32 +88 72 0 +240 208 32 248 248 248 136 136 136 -216 200 176 +216 200 184 200 200 208 48 48 72 80 80 80 -216 200 176 +0 0 0 diff --git a/graphics/pokemon/sandslash/shiny.pal b/graphics/pokemon/sandslash/shiny.pal index fe701e536..86e888dbb 100644 --- a/graphics/pokemon/sandslash/shiny.pal +++ b/graphics/pokemon/sandslash/shiny.pal @@ -13,7 +13,7 @@ JASC-PAL 248 248 248 136 136 136 216 200 184 -216 200 184 +200 200 208 48 48 72 80 80 80 -216 200 176 +255 0 0 diff --git a/graphics/pokemon/sawk/anim_front.png b/graphics/pokemon/sawk/anim_front.png index 7b16d08ed..9ee074103 100644 Binary files a/graphics/pokemon/sawk/anim_front.png and b/graphics/pokemon/sawk/anim_front.png differ diff --git a/graphics/pokemon/sawk/front.png b/graphics/pokemon/sawk/front.png index c40a99672..a3ab00548 100644 Binary files a/graphics/pokemon/sawk/front.png and b/graphics/pokemon/sawk/front.png differ diff --git a/graphics/pokemon/sawk/normal.pal b/graphics/pokemon/sawk/normal.pal index 4ab8bcb88..fccc99bec 100644 --- a/graphics/pokemon/sawk/normal.pal +++ b/graphics/pokemon/sawk/normal.pal @@ -2,12 +2,12 @@ JASC-PAL 0100 16 152 208 160 -32 64 96 -104 152 208 -56 96 136 +24 72 96 +80 136 232 +24 88 152 16 16 16 40 40 40 -56 128 192 +56 104 192 64 64 64 112 168 160 144 216 216 diff --git a/graphics/pokemon/sawsbuck/anim_front.png b/graphics/pokemon/sawsbuck/anim_front.png index 87f828dbf..fa28352dd 100644 Binary files a/graphics/pokemon/sawsbuck/anim_front.png and b/graphics/pokemon/sawsbuck/anim_front.png differ diff --git a/graphics/pokemon/sawsbuck/autumn/front.png b/graphics/pokemon/sawsbuck/autumn/front.png index 9a3284010..97c43db22 100644 Binary files a/graphics/pokemon/sawsbuck/autumn/front.png and b/graphics/pokemon/sawsbuck/autumn/front.png differ diff --git a/graphics/pokemon/sawsbuck/autumn/normal.pal b/graphics/pokemon/sawsbuck/autumn/normal.pal index 330a22f95..12bcb1a06 100644 --- a/graphics/pokemon/sawsbuck/autumn/normal.pal +++ b/graphics/pokemon/sawsbuck/autumn/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -119 50 50 -81 34 46 -0 0 0 -186 79 78 -51 30 15 -247 212 123 -30 20 10 -86 53 36 -65 32 16 -119 77 53 -61 35 34 -158 127 75 -249 159 79 -222 222 222 -172 172 172 +152 208 160 +128 32 48 +88 24 24 +16 16 16 +184 56 56 +72 16 8 +216 192 104 +48 16 16 +96 56 32 +64 32 16 +120 88 48 +64 32 24 +160 120 72 +216 144 40 +216 216 216 +168 168 168 diff --git a/graphics/pokemon/sawsbuck/front.png b/graphics/pokemon/sawsbuck/front.png index eb18835d6..71aed05e3 100644 Binary files a/graphics/pokemon/sawsbuck/front.png and b/graphics/pokemon/sawsbuck/front.png differ diff --git a/graphics/pokemon/sawsbuck/normal.pal b/graphics/pokemon/sawsbuck/normal.pal index 2564dd71c..4120eb595 100644 --- a/graphics/pokemon/sawsbuck/normal.pal +++ b/graphics/pokemon/sawsbuck/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 48 16 16 -0 0 0 -168 88 104 -112 56 64 -48 24 8 -240 208 120 -232 128 144 -80 48 32 -56 32 32 -248 152 72 -112 72 48 -152 120 72 +16 16 16 +200 64 96 +112 24 48 +72 16 8 +216 192 104 +248 112 152 +96 56 32 +64 32 24 +216 144 40 +120 88 48 +160 120 72 216 216 216 168 168 168 -24 16 8 +0 0 0 diff --git a/graphics/pokemon/sawsbuck/summer/front.png b/graphics/pokemon/sawsbuck/summer/front.png index 9e84b66e1..96a0c150c 100644 Binary files a/graphics/pokemon/sawsbuck/summer/front.png and b/graphics/pokemon/sawsbuck/summer/front.png differ diff --git a/graphics/pokemon/sawsbuck/summer/normal.pal b/graphics/pokemon/sawsbuck/summer/normal.pal index 2fa072e32..dd20a7bcc 100644 --- a/graphics/pokemon/sawsbuck/summer/normal.pal +++ b/graphics/pokemon/sawsbuck/summer/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -34 58 37 -0 0 0 -46 145 76 -40 96 54 -247 212 123 -51 30 15 -86 53 36 -119 77 53 -61 35 34 -158 127 75 -249 159 79 -222 222 222 -172 172 172 -30 20 10 +152 208 160 +24 56 40 +16 16 16 +8 136 64 +24 88 48 +216 192 104 +72 16 8 +96 56 32 +120 88 48 +64 32 24 +160 120 72 +216 144 40 +216 216 216 +168 168 168 +48 16 16 0 0 0 diff --git a/graphics/pokemon/sawsbuck/winter/back.png b/graphics/pokemon/sawsbuck/winter/back.png index 89fb13912..607a9ee99 100644 Binary files a/graphics/pokemon/sawsbuck/winter/back.png and b/graphics/pokemon/sawsbuck/winter/back.png differ diff --git a/graphics/pokemon/sawsbuck/winter/front.png b/graphics/pokemon/sawsbuck/winter/front.png index 92f7000bb..d97aa2a90 100644 Binary files a/graphics/pokemon/sawsbuck/winter/front.png and b/graphics/pokemon/sawsbuck/winter/front.png differ diff --git a/graphics/pokemon/sawsbuck/winter/normal.pal b/graphics/pokemon/sawsbuck/winter/normal.pal index b0d26c0f1..76ad023bd 100644 --- a/graphics/pokemon/sawsbuck/winter/normal.pal +++ b/graphics/pokemon/sawsbuck/winter/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -135 116 121 -76 61 72 -49 16 16 +152 208 160 +104 104 104 +64 72 64 +48 16 16 0 0 0 -255 255 255 -178 160 153 -51 30 15 -247 212 123 -119 77 53 -65 32 16 -86 53 36 -61 35 34 -158 127 75 -249 159 79 -222 222 222 +248 248 248 +168 168 168 +72 16 8 +216 192 104 +120 88 48 +64 32 24 +96 56 32 +160 120 72 +216 144 40 +216 216 216 +96 56 32 diff --git a/graphics/pokemon/sawsbuck/winter/shiny.pal b/graphics/pokemon/sawsbuck/winter/shiny.pal index feb2911d9..32f04a54e 100644 --- a/graphics/pokemon/sawsbuck/winter/shiny.pal +++ b/graphics/pokemon/sawsbuck/winter/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 +152 208 160 104 104 104 64 72 64 -49 16 16 +48 16 16 0 0 0 -255 255 255 +248 248 248 168 168 168 -74 16 8 -247 212 123 -178 114 49 -65 32 16 -130 67 23 -84 35 16 -183 167 84 -222 205 41 -222 222 222 +72 16 8 +216 192 104 +176 104 32 +64 32 24 +128 64 16 +160 120 72 +216 200 40 +216 216 216 +96 56 32 diff --git a/graphics/pokemon/sceptile/anim_front.png b/graphics/pokemon/sceptile/anim_front.png index ce0372adc..c297cf729 100644 Binary files a/graphics/pokemon/sceptile/anim_front.png and b/graphics/pokemon/sceptile/anim_front.png differ diff --git a/graphics/pokemon/sceptile/front.png b/graphics/pokemon/sceptile/front.png index 0d038b387..f49aef765 100644 Binary files a/graphics/pokemon/sceptile/front.png and b/graphics/pokemon/sceptile/front.png differ diff --git a/graphics/pokemon/sceptile/normal.pal b/graphics/pokemon/sceptile/normal.pal index 91cd9737d..bc16e8557 100644 --- a/graphics/pokemon/sceptile/normal.pal +++ b/graphics/pokemon/sceptile/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -200 128 216 -40 80 40 -168 216 184 -80 160 80 -80 112 80 -112 200 120 +192 192 248 +32 72 32 +176 232 144 +64 152 64 +56 128 56 +128 200 104 16 16 16 -216 184 96 -248 224 128 -184 88 72 -232 112 96 +200 152 8 +232 224 64 +192 32 32 +232 72 56 112 88 40 -80 152 88 -128 176 128 -40 80 40 -80 112 80 +40 128 48 +72 168 72 +24 96 40 +0 0 0 diff --git a/graphics/pokemon/scizor/anim_front.png b/graphics/pokemon/scizor/anim_front.png index 0b49c6b8d..c5e6b302b 100644 Binary files a/graphics/pokemon/scizor/anim_front.png and b/graphics/pokemon/scizor/anim_front.png differ diff --git a/graphics/pokemon/scizor/front.png b/graphics/pokemon/scizor/front.png index be2df1461..f872c488b 100644 Binary files a/graphics/pokemon/scizor/front.png and b/graphics/pokemon/scizor/front.png differ diff --git a/graphics/pokemon/scizor/normal.pal b/graphics/pokemon/scizor/normal.pal index f67d67b6a..a8c921b19 100644 --- a/graphics/pokemon/scizor/normal.pal +++ b/graphics/pokemon/scizor/normal.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 152 208 160 -88 24 32 -224 104 104 +96 40 40 +240 104 104 16 16 16 -152 40 40 -200 64 64 -104 104 112 -176 184 224 +160 40 40 +208 56 56 +112 112 136 +184 184 216 248 248 248 -48 48 56 +56 56 72 248 192 88 144 144 160 152 104 32 diff --git a/graphics/pokemon/scolipede/anim_front.png b/graphics/pokemon/scolipede/anim_front.png index aa4078abc..9ed55dab0 100644 Binary files a/graphics/pokemon/scolipede/anim_front.png and b/graphics/pokemon/scolipede/anim_front.png differ diff --git a/graphics/pokemon/scolipede/front.png b/graphics/pokemon/scolipede/front.png index 5a133202f..7d254636f 100644 Binary files a/graphics/pokemon/scolipede/front.png and b/graphics/pokemon/scolipede/front.png differ diff --git a/graphics/pokemon/scolipede/normal.pal b/graphics/pokemon/scolipede/normal.pal index 857618fda..1eeb0e21e 100644 --- a/graphics/pokemon/scolipede/normal.pal +++ b/graphics/pokemon/scolipede/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -64 32 40 -184 64 96 -112 56 104 -160 80 152 +96 16 16 +192 24 88 +104 32 104 +136 56 152 168 40 120 56 16 32 -112 40 64 -32 40 32 -80 88 80 +152 16 64 +32 40 48 +64 72 96 88 48 88 -240 160 80 -56 64 56 +216 160 80 +56 56 72 0 0 0 -208 136 56 +128 104 24 diff --git a/graphics/pokemon/scrafty/anim_front.png b/graphics/pokemon/scrafty/anim_front.png index 3e0e821e6..d150e4298 100644 Binary files a/graphics/pokemon/scrafty/anim_front.png and b/graphics/pokemon/scrafty/anim_front.png differ diff --git a/graphics/pokemon/scrafty/front.png b/graphics/pokemon/scrafty/front.png index ea1d8f764..642dcb966 100644 Binary files a/graphics/pokemon/scrafty/front.png and b/graphics/pokemon/scrafty/front.png differ diff --git a/graphics/pokemon/scrafty/normal.pal b/graphics/pokemon/scrafty/normal.pal index bfc329bbe..2b1a6c3fa 100644 --- a/graphics/pokemon/scrafty/normal.pal +++ b/graphics/pokemon/scrafty/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 32 32 -232 128 112 +120 56 40 +224 96 112 32 32 32 -168 72 64 -176 96 64 -248 136 80 -120 64 40 -72 64 72 +216 40 56 +192 88 24 +240 120 32 +120 56 40 +72 72 72 168 168 168 248 248 248 216 216 216 -88 96 104 -96 72 48 -240 184 96 -176 128 72 +96 96 96 +104 80 40 +240 200 16 +176 144 24 diff --git a/graphics/pokemon/scraggy/anim_front.png b/graphics/pokemon/scraggy/anim_front.png index 33c0a6f4f..fde3828d2 100644 Binary files a/graphics/pokemon/scraggy/anim_front.png and b/graphics/pokemon/scraggy/anim_front.png differ diff --git a/graphics/pokemon/scraggy/front.png b/graphics/pokemon/scraggy/front.png index da995ce5e..1cade69cc 100644 Binary files a/graphics/pokemon/scraggy/front.png and b/graphics/pokemon/scraggy/front.png differ diff --git a/graphics/pokemon/scraggy/normal.pal b/graphics/pokemon/scraggy/normal.pal index c0b65e6c1..d796f276c 100644 --- a/graphics/pokemon/scraggy/normal.pal +++ b/graphics/pokemon/scraggy/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 64 56 -104 40 40 -232 96 88 -120 88 64 +176 40 48 +112 32 40 +224 56 64 +120 96 8 32 32 32 -192 144 72 -248 192 96 +184 152 0 +248 200 0 64 64 64 248 248 248 -104 96 88 -176 160 152 +96 96 88 +168 168 160 120 112 80 -192 176 120 -248 232 152 +192 184 128 +248 240 176 0 0 0 diff --git a/graphics/pokemon/scyther/anim_front.png b/graphics/pokemon/scyther/anim_front.png index 673dc2d22..eb115b910 100644 Binary files a/graphics/pokemon/scyther/anim_front.png and b/graphics/pokemon/scyther/anim_front.png differ diff --git a/graphics/pokemon/scyther/front.png b/graphics/pokemon/scyther/front.png index abf81a063..81f2bf619 100644 Binary files a/graphics/pokemon/scyther/front.png and b/graphics/pokemon/scyther/front.png differ diff --git a/graphics/pokemon/scyther/normal.pal b/graphics/pokemon/scyther/normal.pal index 5d2fb2e2b..6030b0486 100644 --- a/graphics/pokemon/scyther/normal.pal +++ b/graphics/pokemon/scyther/normal.pal @@ -2,14 +2,14 @@ JASC-PAL 0100 16 0 176 232 -48 80 56 -192 224 136 +64 88 24 +184 224 112 16 16 16 136 120 80 248 232 208 -136 208 120 +136 200 112 224 208 168 -96 152 96 +88 152 72 208 232 232 248 248 248 160 176 200 diff --git a/graphics/pokemon/seadra/anim_front.png b/graphics/pokemon/seadra/anim_front.png index c882fe365..d141ec042 100644 Binary files a/graphics/pokemon/seadra/anim_front.png and b/graphics/pokemon/seadra/anim_front.png differ diff --git a/graphics/pokemon/seadra/front.png b/graphics/pokemon/seadra/front.png index b22465680..9cf3daf51 100644 Binary files a/graphics/pokemon/seadra/front.png and b/graphics/pokemon/seadra/front.png differ diff --git a/graphics/pokemon/seadra/normal.pal b/graphics/pokemon/seadra/normal.pal index 6a9b23a80..b650994c2 100644 --- a/graphics/pokemon/seadra/normal.pal +++ b/graphics/pokemon/seadra/normal.pal @@ -8,9 +8,9 @@ JASC-PAL 16 16 16 104 200 232 128 104 96 -248 224 176 +248 232 192 248 248 248 -200 184 144 +216 176 128 48 56 96 128 168 200 0 0 0 diff --git a/graphics/pokemon/seaking/anim_front.png b/graphics/pokemon/seaking/anim_front.png index a4261b84d..52407b3b8 100644 Binary files a/graphics/pokemon/seaking/anim_front.png and b/graphics/pokemon/seaking/anim_front.png differ diff --git a/graphics/pokemon/seaking/front.png b/graphics/pokemon/seaking/front.png index f4173bae8..6f728a24b 100644 Binary files a/graphics/pokemon/seaking/front.png and b/graphics/pokemon/seaking/front.png differ diff --git a/graphics/pokemon/seaking/normal.pal b/graphics/pokemon/seaking/normal.pal index 906dd52e3..9fc7fb8a2 100644 --- a/graphics/pokemon/seaking/normal.pal +++ b/graphics/pokemon/seaking/normal.pal @@ -8,11 +8,11 @@ JASC-PAL 80 80 80 16 16 16 224 192 160 -184 72 56 -128 40 16 -240 104 72 -240 144 120 -200 224 224 +192 64 40 +144 48 24 +224 112 64 +240 144 96 +216 216 224 88 88 112 128 72 80 240 168 192 diff --git a/graphics/pokemon/sealeo/anim_front.png b/graphics/pokemon/sealeo/anim_front.png index 84dcfe7ee..027ef6de1 100644 Binary files a/graphics/pokemon/sealeo/anim_front.png and b/graphics/pokemon/sealeo/anim_front.png differ diff --git a/graphics/pokemon/sealeo/front.png b/graphics/pokemon/sealeo/front.png index ff628ded9..87d8fdb2f 100644 Binary files a/graphics/pokemon/sealeo/front.png and b/graphics/pokemon/sealeo/front.png differ diff --git a/graphics/pokemon/sealeo/normal.pal b/graphics/pokemon/sealeo/normal.pal index 32796e4a6..b09e7af8b 100644 --- a/graphics/pokemon/sealeo/normal.pal +++ b/graphics/pokemon/sealeo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 160 200 -24 136 160 -40 88 112 -96 192 232 -152 216 240 +88 144 216 +72 112 176 +72 80 112 +120 192 248 +176 224 248 16 16 16 248 248 248 -128 104 88 -136 144 176 -176 184 216 -216 216 240 -232 208 168 -200 176 152 -248 232 192 -183 119 139 +120 96 80 +120 128 168 +184 184 208 +216 216 248 +232 200 168 +184 152 120 +248 224 184 +224 104 120 diff --git a/graphics/pokemon/seedot/anim_front.png b/graphics/pokemon/seedot/anim_front.png index 5ab60fc69..8f99f3090 100644 Binary files a/graphics/pokemon/seedot/anim_front.png and b/graphics/pokemon/seedot/anim_front.png differ diff --git a/graphics/pokemon/seedot/front.png b/graphics/pokemon/seedot/front.png index 2cde824a5..2ffd8d666 100644 Binary files a/graphics/pokemon/seedot/front.png and b/graphics/pokemon/seedot/front.png differ diff --git a/graphics/pokemon/seedot/normal.pal b/graphics/pokemon/seedot/normal.pal index ac54e53d4..c0cd306d9 100644 --- a/graphics/pokemon/seedot/normal.pal +++ b/graphics/pokemon/seedot/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 72 72 -128 112 120 -16 16 16 -176 168 168 -216 208 208 -56 40 40 -120 96 80 -200 176 128 -168 136 112 -224 200 152 -248 232 176 -88 64 48 +82 82 74 +123 115 106 +0 0 0 +172 172 172 +213 213 213 +49 49 41 +131 98 90 +189 172 131 +172 148 115 +222 189 148 +255 238 189 +82 57 49 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/seel/anim_front.png b/graphics/pokemon/seel/anim_front.png index 37f1d1247..1bdfb7aa2 100644 Binary files a/graphics/pokemon/seel/anim_front.png and b/graphics/pokemon/seel/anim_front.png differ diff --git a/graphics/pokemon/seel/front.png b/graphics/pokemon/seel/front.png index 31590d82a..7ca1efc7e 100644 Binary files a/graphics/pokemon/seel/front.png and b/graphics/pokemon/seel/front.png differ diff --git a/graphics/pokemon/seel/normal.pal b/graphics/pokemon/seel/normal.pal index b9de9a39f..f7f97e3fb 100644 --- a/graphics/pokemon/seel/normal.pal +++ b/graphics/pokemon/seel/normal.pal @@ -8,12 +8,12 @@ JASC-PAL 184 208 232 16 16 16 248 248 248 -56 144 128 -104 80 40 -176 144 88 -240 216 176 -120 64 112 -160 120 152 -232 176 224 +40 168 160 +104 88 16 +176 144 64 +240 224 184 +136 48 32 +208 112 88 +248 168 168 200 176 128 0 0 0 diff --git a/graphics/pokemon/seismitoad/anim_front.png b/graphics/pokemon/seismitoad/anim_front.png index 2db9eaf7a..9446c095d 100644 Binary files a/graphics/pokemon/seismitoad/anim_front.png and b/graphics/pokemon/seismitoad/anim_front.png differ diff --git a/graphics/pokemon/seismitoad/front.png b/graphics/pokemon/seismitoad/front.png index e0b386e5c..e87b7a4a0 100644 Binary files a/graphics/pokemon/seismitoad/front.png and b/graphics/pokemon/seismitoad/front.png differ diff --git a/graphics/pokemon/seismitoad/normal.pal b/graphics/pokemon/seismitoad/normal.pal index 27dec4986..22d9ac2a4 100644 --- a/graphics/pokemon/seismitoad/normal.pal +++ b/graphics/pokemon/seismitoad/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 104 96 -16 16 16 +24 96 112 +0 0 0 64 64 64 -80 152 136 -104 208 200 -88 88 104 -32 32 40 -24 56 88 -48 136 200 -48 104 144 -128 48 48 +80 160 136 +112 224 200 +96 96 96 +40 40 40 +16 64 120 +8 144 208 +40 104 168 +176 56 32 192 192 192 -200 88 80 +232 88 56 0 0 0 0 0 0 diff --git a/graphics/pokemon/sentret/anim_front.png b/graphics/pokemon/sentret/anim_front.png index e3edb08b8..820a036ac 100644 Binary files a/graphics/pokemon/sentret/anim_front.png and b/graphics/pokemon/sentret/anim_front.png differ diff --git a/graphics/pokemon/sentret/front.png b/graphics/pokemon/sentret/front.png index d83ba97d1..650589130 100644 Binary files a/graphics/pokemon/sentret/front.png and b/graphics/pokemon/sentret/front.png differ diff --git a/graphics/pokemon/sentret/normal.pal b/graphics/pokemon/sentret/normal.pal index 0402183a6..1e09bf2d7 100644 --- a/graphics/pokemon/sentret/normal.pal +++ b/graphics/pokemon/sentret/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 48 40 -32 24 16 -104 72 64 +72 48 32 +56 8 0 +96 64 48 16 16 16 -160 72 80 -232 104 120 -128 88 72 -208 152 136 -184 120 96 -248 232 184 -160 104 88 -48 24 16 -192 176 144 +176 32 64 +216 64 72 +136 88 64 +200 160 128 +184 128 88 +248 248 248 +160 112 72 +56 24 16 +200 200 192 0 0 0 0 0 0 diff --git a/graphics/pokemon/serperior/anim_front.png b/graphics/pokemon/serperior/anim_front.png index 30fb8818d..1056e166c 100644 Binary files a/graphics/pokemon/serperior/anim_front.png and b/graphics/pokemon/serperior/anim_front.png differ diff --git a/graphics/pokemon/serperior/front.png b/graphics/pokemon/serperior/front.png index ec2a8e5da..8f26506a6 100644 Binary files a/graphics/pokemon/serperior/front.png and b/graphics/pokemon/serperior/front.png differ diff --git a/graphics/pokemon/serperior/normal.pal b/graphics/pokemon/serperior/normal.pal index e4a3df792..af892b12e 100644 --- a/graphics/pokemon/serperior/normal.pal +++ b/graphics/pokemon/serperior/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 128 208 232 -112 96 48 -232 200 56 -176 144 48 -168 144 136 -24 144 96 -0 104 64 +104 112 56 +248 200 40 +208 152 8 +136 136 168 +24 152 72 +16 112 56 8 16 16 248 248 248 -136 208 160 -200 184 184 -104 152 120 -112 40 24 -224 80 56 -0 72 40 -0 72 40 +152 208 152 +192 192 208 +112 160 112 +144 56 0 +248 128 0 +16 80 40 +24 152 72 diff --git a/graphics/pokemon/servine/anim_front.png b/graphics/pokemon/servine/anim_front.png index f4fda6a37..05e7e6d81 100644 Binary files a/graphics/pokemon/servine/anim_front.png and b/graphics/pokemon/servine/anim_front.png differ diff --git a/graphics/pokemon/servine/front.png b/graphics/pokemon/servine/front.png index fb91132b9..ab5a141b9 100644 Binary files a/graphics/pokemon/servine/front.png and b/graphics/pokemon/servine/front.png differ diff --git a/graphics/pokemon/servine/normal.pal b/graphics/pokemon/servine/normal.pal index fd968a5d3..c3ec729c5 100644 --- a/graphics/pokemon/servine/normal.pal +++ b/graphics/pokemon/servine/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 72 32 -96 184 88 +16 80 40 +40 192 72 248 208 48 136 112 48 -56 136 56 -240 240 192 +32 144 56 +248 240 184 16 16 16 248 248 248 -168 160 128 -120 48 48 -192 80 80 -128 112 112 +192 184 96 +112 64 16 +184 72 32 +136 120 48 184 152 40 0 0 0 0 0 0 diff --git a/graphics/pokemon/seviper/anim_front.png b/graphics/pokemon/seviper/anim_front.png index 42fcc1309..364385b87 100644 Binary files a/graphics/pokemon/seviper/anim_front.png and b/graphics/pokemon/seviper/anim_front.png differ diff --git a/graphics/pokemon/seviper/front.png b/graphics/pokemon/seviper/front.png index baf054fa2..c80d9c80f 100644 Binary files a/graphics/pokemon/seviper/front.png and b/graphics/pokemon/seviper/front.png differ diff --git a/graphics/pokemon/seviper/normal.pal b/graphics/pokemon/seviper/normal.pal index 37b994571..a8a6215be 100644 --- a/graphics/pokemon/seviper/normal.pal +++ b/graphics/pokemon/seviper/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 112 48 -72 88 112 -48 64 88 -200 160 72 +184 88 56 +72 80 104 +56 64 80 +224 160 72 240 208 136 -96 120 136 -56 48 80 -16 16 16 -112 96 136 -104 48 48 -168 80 72 -152 136 192 -240 136 120 +96 104 136 +72 48 80 +0 0 0 +112 88 144 +96 24 24 +168 64 56 +160 112 224 +208 80 72 248 248 248 80 88 112 diff --git a/graphics/pokemon/sewaddle/anim_front.png b/graphics/pokemon/sewaddle/anim_front.png index 26ad02e8d..3a46aa599 100644 Binary files a/graphics/pokemon/sewaddle/anim_front.png and b/graphics/pokemon/sewaddle/anim_front.png differ diff --git a/graphics/pokemon/sewaddle/front.png b/graphics/pokemon/sewaddle/front.png index a744bffad..7f01fe90c 100644 Binary files a/graphics/pokemon/sewaddle/front.png and b/graphics/pokemon/sewaddle/front.png differ diff --git a/graphics/pokemon/sewaddle/normal.pal b/graphics/pokemon/sewaddle/normal.pal index 23b34cc08..00ac01e7a 100644 --- a/graphics/pokemon/sewaddle/normal.pal +++ b/graphics/pokemon/sewaddle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -72 88 40 -104 144 48 -144 200 56 -200 152 64 -136 104 48 -248 216 144 -248 192 88 -248 248 248 -96 80 72 -240 136 24 -144 80 24 -200 184 168 -248 168 88 +0 0 0 +56 96 24 +88 152 48 +144 200 8 +208 168 0 +152 120 8 +248 240 168 +248 216 48 +248 248 248 +72 72 72 +224 128 8 +144 80 24 +200 200 208 +248 168 72 0 0 0 diff --git a/graphics/pokemon/sharpedo/anim_front.png b/graphics/pokemon/sharpedo/anim_front.png index 008c2d6b9..cf261cd4a 100644 Binary files a/graphics/pokemon/sharpedo/anim_front.png and b/graphics/pokemon/sharpedo/anim_front.png differ diff --git a/graphics/pokemon/sharpedo/front.png b/graphics/pokemon/sharpedo/front.png index 14a2a91ca..67db44c34 100644 Binary files a/graphics/pokemon/sharpedo/front.png and b/graphics/pokemon/sharpedo/front.png differ diff --git a/graphics/pokemon/sharpedo/normal.pal b/graphics/pokemon/sharpedo/normal.pal index 7b1655e8f..36e0ce843 100644 --- a/graphics/pokemon/sharpedo/normal.pal +++ b/graphics/pokemon/sharpedo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -0 64 96 -64 128 176 -8 96 136 -0 40 72 +48 64 112 +80 112 184 +56 80 144 +40 56 80 16 16 16 -192 160 112 -232 200 120 +168 168 144 +248 216 96 248 248 248 -160 64 104 -216 48 96 -208 216 232 -168 168 192 -208 136 160 +168 56 80 +248 0 56 +224 216 240 +168 160 176 +224 104 120 144 120 104 0 0 0 diff --git a/graphics/pokemon/shaymin/anim_front.png b/graphics/pokemon/shaymin/anim_front.png index e59994d74..82ae30626 100644 Binary files a/graphics/pokemon/shaymin/anim_front.png and b/graphics/pokemon/shaymin/anim_front.png differ diff --git a/graphics/pokemon/shaymin/front.png b/graphics/pokemon/shaymin/front.png index 069bee40d..f8e316903 100644 Binary files a/graphics/pokemon/shaymin/front.png and b/graphics/pokemon/shaymin/front.png differ diff --git a/graphics/pokemon/shaymin/normal.pal b/graphics/pokemon/shaymin/normal.pal index 3af83a641..53068c4d6 100644 --- a/graphics/pokemon/shaymin/normal.pal +++ b/graphics/pokemon/shaymin/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 152 80 -80 104 56 -168 200 96 +136 168 96 +88 112 64 +168 216 96 248 216 96 -128 72 88 -232 144 136 +128 72 104 +232 136 160 80 80 104 184 192 208 248 248 248 16 16 16 64 152 56 -216 112 128 +200 104 136 32 112 48 32 56 40 144 144 176 diff --git a/graphics/pokemon/shaymin/sky/anim_front.png b/graphics/pokemon/shaymin/sky/anim_front.png index 0cb7a632b..541477651 100644 Binary files a/graphics/pokemon/shaymin/sky/anim_front.png and b/graphics/pokemon/shaymin/sky/anim_front.png differ diff --git a/graphics/pokemon/shaymin/sky/front.png b/graphics/pokemon/shaymin/sky/front.png index 0b544105f..190c4ebf6 100644 Binary files a/graphics/pokemon/shaymin/sky/front.png and b/graphics/pokemon/shaymin/sky/front.png differ diff --git a/graphics/pokemon/shaymin/sky/normal.pal b/graphics/pokemon/shaymin/sky/normal.pal index 07f4e6401..2b71401c1 100644 --- a/graphics/pokemon/shaymin/sky/normal.pal +++ b/graphics/pokemon/shaymin/sky/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 168 80 -88 104 56 -176 200 120 -160 136 160 -72 64 56 +120 168 32 +56 104 16 +152 208 32 +144 144 168 +80 80 88 16 16 16 -248 240 232 -216 192 184 +248 248 248 +200 200 208 248 248 248 56 120 48 120 168 88 -160 64 64 -216 80 80 -112 48 40 +184 72 88 +240 72 64 +120 56 80 0 0 0 diff --git a/graphics/pokemon/shedinja/anim_front.png b/graphics/pokemon/shedinja/anim_front.png index 9560d75a5..897127dff 100644 Binary files a/graphics/pokemon/shedinja/anim_front.png and b/graphics/pokemon/shedinja/anim_front.png differ diff --git a/graphics/pokemon/shedinja/front.png b/graphics/pokemon/shedinja/front.png index 9bf0e8ca4..9c217d773 100644 Binary files a/graphics/pokemon/shedinja/front.png and b/graphics/pokemon/shedinja/front.png differ diff --git a/graphics/pokemon/shedinja/normal.pal b/graphics/pokemon/shedinja/normal.pal index b212ce0f6..78be62b12 100644 --- a/graphics/pokemon/shedinja/normal.pal +++ b/graphics/pokemon/shedinja/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 176 224 -120 128 168 +160 160 200 +128 144 168 248 248 248 -208 224 248 -80 64 56 -216 176 104 -176 136 80 -24 24 24 -248 208 128 -144 120 112 -112 88 80 +208 208 224 +88 80 64 +216 176 112 +176 144 88 +16 16 16 +240 208 128 +144 128 120 +112 104 88 184 176 168 -176 160 144 -176 160 144 +168 152 136 +168 152 136 0 0 0 diff --git a/graphics/pokemon/shelgon/anim_front.png b/graphics/pokemon/shelgon/anim_front.png index 551c19906..d3a746fce 100644 Binary files a/graphics/pokemon/shelgon/anim_front.png and b/graphics/pokemon/shelgon/anim_front.png differ diff --git a/graphics/pokemon/shelgon/front.png b/graphics/pokemon/shelgon/front.png index b042523e1..713ba5226 100644 Binary files a/graphics/pokemon/shelgon/front.png and b/graphics/pokemon/shelgon/front.png differ diff --git a/graphics/pokemon/shelgon/normal.pal b/graphics/pokemon/shelgon/normal.pal index 6dc51d422..8d21991d6 100644 --- a/graphics/pokemon/shelgon/normal.pal +++ b/graphics/pokemon/shelgon/normal.pal @@ -7,13 +7,13 @@ JASC-PAL 208 216 224 168 160 176 120 112 136 -96 88 96 +80 88 80 72 56 72 -216 192 128 -248 232 192 -144 136 136 -184 64 80 +232 224 96 +248 248 200 +120 120 112 +168 40 64 96 48 56 -192 112 120 +184 64 80 144 144 160 0 0 0 diff --git a/graphics/pokemon/shellder/anim_front.png b/graphics/pokemon/shellder/anim_front.png index b63e9a48f..ec58b85d1 100644 Binary files a/graphics/pokemon/shellder/anim_front.png and b/graphics/pokemon/shellder/anim_front.png differ diff --git a/graphics/pokemon/shellder/front.png b/graphics/pokemon/shellder/front.png index 5b3e211b1..4c3e7f522 100644 Binary files a/graphics/pokemon/shellder/front.png and b/graphics/pokemon/shellder/front.png differ diff --git a/graphics/pokemon/shellder/normal.pal b/graphics/pokemon/shellder/normal.pal index c05187339..462bd5ee4 100644 --- a/graphics/pokemon/shellder/normal.pal +++ b/graphics/pokemon/shellder/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -96 72 128 -184 176 224 -120 112 192 -152 152 216 +112 88 136 +216 216 240 +152 136 192 +192 184 232 16 16 16 -56 40 88 -104 104 104 +72 56 96 +128 128 144 248 248 248 -104 48 56 -160 112 120 -216 144 160 +120 16 48 +192 96 104 +232 168 176 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/shellos/anim_front.png b/graphics/pokemon/shellos/anim_front.png index 3d39bc795..f548e886c 100644 Binary files a/graphics/pokemon/shellos/anim_front.png and b/graphics/pokemon/shellos/anim_front.png differ diff --git a/graphics/pokemon/shellos/east_sea/anim_front.png b/graphics/pokemon/shellos/east_sea/anim_front.png index db306c3cd..0ba327803 100644 Binary files a/graphics/pokemon/shellos/east_sea/anim_front.png and b/graphics/pokemon/shellos/east_sea/anim_front.png differ diff --git a/graphics/pokemon/shellos/east_sea/front.png b/graphics/pokemon/shellos/east_sea/front.png index 4700dca46..79d1c97cc 100644 Binary files a/graphics/pokemon/shellos/east_sea/front.png and b/graphics/pokemon/shellos/east_sea/front.png differ diff --git a/graphics/pokemon/shellos/east_sea/normal.pal b/graphics/pokemon/shellos/east_sea/normal.pal index 64d5e8fd9..82ebd332f 100644 --- a/graphics/pokemon/shellos/east_sea/normal.pal +++ b/graphics/pokemon/shellos/east_sea/normal.pal @@ -6,14 +6,14 @@ JASC-PAL 206 211 186 255 255 255 16 16 16 -50 185 209 -45 96 114 -123 224 207 -52 137 150 -247 223 118 -168 148 67 +104 176 240 +80 80 120 +128 224 248 +104 120 168 +248 224 112 +160 136 56 89 82 53 131 153 76 76 91 41 -182 209 119 +176 208 120 0 0 0 diff --git a/graphics/pokemon/shellos/front.png b/graphics/pokemon/shellos/front.png index 0eab6cf86..0d1be14f6 100644 Binary files a/graphics/pokemon/shellos/front.png and b/graphics/pokemon/shellos/front.png differ diff --git a/graphics/pokemon/shellos/normal.pal b/graphics/pokemon/shellos/normal.pal index 55212a56b..e5f6ceb50 100644 --- a/graphics/pokemon/shellos/normal.pal +++ b/graphics/pokemon/shellos/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 56 96 +112 64 104 16 16 16 -240 136 184 -216 80 144 +248 136 192 +224 80 160 104 56 80 -168 96 128 -240 184 184 -240 216 112 -168 144 64 +168 96 144 +248 176 224 +248 216 112 +160 136 56 248 248 248 -88 80 48 -200 176 176 -128 112 112 +80 72 56 +176 176 192 +112 112 120 232 232 232 -160 64 120 +168 48 136 diff --git a/graphics/pokemon/shelmet/anim_front.png b/graphics/pokemon/shelmet/anim_front.png index 93b0b8b18..a655e54d1 100644 Binary files a/graphics/pokemon/shelmet/anim_front.png and b/graphics/pokemon/shelmet/anim_front.png differ diff --git a/graphics/pokemon/shelmet/front.png b/graphics/pokemon/shelmet/front.png index e3abb63bc..e881e7149 100644 Binary files a/graphics/pokemon/shelmet/front.png and b/graphics/pokemon/shelmet/front.png differ diff --git a/graphics/pokemon/shelmet/normal.pal b/graphics/pokemon/shelmet/normal.pal index c5c862321..cd858c102 100644 --- a/graphics/pokemon/shelmet/normal.pal +++ b/graphics/pokemon/shelmet/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 112 96 -216 200 184 -96 80 72 +88 88 120 +192 192 208 +40 48 88 16 16 16 -176 152 144 +144 144 168 56 48 48 96 104 136 56 72 112 -96 24 48 -160 64 72 -208 80 96 -248 96 120 +96 0 32 +176 32 72 +216 48 96 +248 72 120 80 128 72 248 248 248 112 200 112 diff --git a/graphics/pokemon/shieldon/anim_front.png b/graphics/pokemon/shieldon/anim_front.png index 5ce78d198..43e59272e 100644 Binary files a/graphics/pokemon/shieldon/anim_front.png and b/graphics/pokemon/shieldon/anim_front.png differ diff --git a/graphics/pokemon/shiftry/anim_front.png b/graphics/pokemon/shiftry/anim_front.png index 33cbb68fe..f813d71d1 100644 Binary files a/graphics/pokemon/shiftry/anim_front.png and b/graphics/pokemon/shiftry/anim_front.png differ diff --git a/graphics/pokemon/shiftry/front.png b/graphics/pokemon/shiftry/front.png index 82df0118b..15e263cb9 100644 Binary files a/graphics/pokemon/shiftry/front.png and b/graphics/pokemon/shiftry/front.png differ diff --git a/graphics/pokemon/shiftry/normal.pal b/graphics/pokemon/shiftry/normal.pal index 733e980ce..f10000fcb 100644 --- a/graphics/pokemon/shiftry/normal.pal +++ b/graphics/pokemon/shiftry/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 0 176 232 -88 64 48 -224 168 128 +96 64 40 +224 176 136 112 104 128 16 16 16 -152 104 56 -16 96 48 -192 136 88 +152 104 72 +56 104 40 +192 136 104 248 248 248 -88 176 112 -24 136 64 +104 200 112 +72 144 88 176 176 208 216 224 248 240 224 128 diff --git a/graphics/pokemon/shinx/anim_front.png b/graphics/pokemon/shinx/anim_front.png index 16221a2a2..c46f6c259 100644 Binary files a/graphics/pokemon/shinx/anim_front.png and b/graphics/pokemon/shinx/anim_front.png differ diff --git a/graphics/pokemon/shinx/front.png b/graphics/pokemon/shinx/front.png index a14872017..f6d437c6e 100644 Binary files a/graphics/pokemon/shinx/front.png and b/graphics/pokemon/shinx/front.png differ diff --git a/graphics/pokemon/shinx/normal.pal b/graphics/pokemon/shinx/normal.pal index 467dbc775..78ad0357e 100644 --- a/graphics/pokemon/shinx/normal.pal +++ b/graphics/pokemon/shinx/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 80 88 -80 128 144 -104 184 200 -96 88 48 +64 64 104 +96 120 176 +120 168 240 +112 96 80 16 16 16 -192 144 32 -248 192 48 +176 152 88 +248 224 88 248 248 248 -240 96 96 -144 48 48 -80 80 88 -48 48 48 -147 88 104 +224 72 80 +144 56 80 +72 72 96 +48 48 64 +224 104 120 0 0 0 0 0 0 diff --git a/graphics/pokemon/shroomish/anim_front.png b/graphics/pokemon/shroomish/anim_front.png index 597fe846c..d06679fdb 100644 Binary files a/graphics/pokemon/shroomish/anim_front.png and b/graphics/pokemon/shroomish/anim_front.png differ diff --git a/graphics/pokemon/shroomish/front.png b/graphics/pokemon/shroomish/front.png index 120a7902f..0a4389204 100644 Binary files a/graphics/pokemon/shroomish/front.png and b/graphics/pokemon/shroomish/front.png differ diff --git a/graphics/pokemon/shroomish/normal.pal b/graphics/pokemon/shroomish/normal.pal index e80a8e783..c72c8dfc7 100644 --- a/graphics/pokemon/shroomish/normal.pal +++ b/graphics/pokemon/shroomish/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 0 176 232 112 96 72 -88 72 56 -232 200 168 -16 16 16 -184 160 128 -120 176 144 -160 200 168 -104 152 120 -248 224 200 -56 96 72 -153 96 121 -204 148 190 +88 72 64 +232 208 176 +0 0 0 +192 160 128 +144 176 120 +192 192 144 +128 152 120 +240 232 208 +80 104 64 +168 40 40 +232 128 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/shuckle/anim_front.png b/graphics/pokemon/shuckle/anim_front.png index cba7aac76..619f3b978 100644 Binary files a/graphics/pokemon/shuckle/anim_front.png and b/graphics/pokemon/shuckle/anim_front.png differ diff --git a/graphics/pokemon/shuckle/back.png b/graphics/pokemon/shuckle/back.png index 6c74f0e25..235287795 100644 Binary files a/graphics/pokemon/shuckle/back.png and b/graphics/pokemon/shuckle/back.png differ diff --git a/graphics/pokemon/shuckle/front.png b/graphics/pokemon/shuckle/front.png index d8eab34e0..0b00c414d 100644 Binary files a/graphics/pokemon/shuckle/front.png and b/graphics/pokemon/shuckle/front.png differ diff --git a/graphics/pokemon/shuckle/normal.pal b/graphics/pokemon/shuckle/normal.pal index 3fc5a9469..7b9d396be 100644 --- a/graphics/pokemon/shuckle/normal.pal +++ b/graphics/pokemon/shuckle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -192 152 48 -248 224 160 -248 200 72 -112 96 32 +184 136 40 +248 248 88 +232 192 72 +112 80 16 16 16 16 112 24 16 -104 88 56 +104 104 104 248 248 248 -192 176 128 +192 192 192 176 40 40 -224 104 96 +224 72 64 248 224 160 -0 0 0 +168 168 168 0 0 0 0 0 0 diff --git a/graphics/pokemon/shuckle/shiny.pal b/graphics/pokemon/shuckle/shiny.pal index 24d9d5f19..f831af379 100644 --- a/graphics/pokemon/shuckle/shiny.pal +++ b/graphics/pokemon/shuckle/shiny.pal @@ -14,6 +14,6 @@ JASC-PAL 24 96 208 72 152 248 176 200 240 -0 0 0 +104 136 208 0 0 0 0 0 0 diff --git a/graphics/pokemon/shuppet/anim_front.png b/graphics/pokemon/shuppet/anim_front.png index 196c57e51..fe5e682d3 100644 Binary files a/graphics/pokemon/shuppet/anim_front.png and b/graphics/pokemon/shuppet/anim_front.png differ diff --git a/graphics/pokemon/shuppet/front.png b/graphics/pokemon/shuppet/front.png index 4fda57b31..e2633121a 100644 Binary files a/graphics/pokemon/shuppet/front.png and b/graphics/pokemon/shuppet/front.png differ diff --git a/graphics/pokemon/shuppet/normal.pal b/graphics/pokemon/shuppet/normal.pal index 39015d185..18c342843 100644 --- a/graphics/pokemon/shuppet/normal.pal +++ b/graphics/pokemon/shuppet/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 88 128 -16 16 16 -160 160 216 -120 120 176 -64 64 96 -96 104 152 -40 40 72 -96 144 168 -64 112 168 -136 208 232 +99 90 140 +0 0 0 +165 173 214 +132 132 173 +58 74 123 +115 115 156 +25 49 90 +66 140 173 +66 115 173 +115 181 214 184 224 240 -184 160 72 -248 208 80 -142 82 116 -214 130 175 +181 140 0 +230 189 82 +181 49 123 +255 115 189 diff --git a/graphics/pokemon/sigilyph/anim_front.png b/graphics/pokemon/sigilyph/anim_front.png index a9c0736cd..db53519b7 100644 Binary files a/graphics/pokemon/sigilyph/anim_front.png and b/graphics/pokemon/sigilyph/anim_front.png differ diff --git a/graphics/pokemon/sigilyph/back.png b/graphics/pokemon/sigilyph/back.png index 09fe68d39..e1528d211 100644 Binary files a/graphics/pokemon/sigilyph/back.png and b/graphics/pokemon/sigilyph/back.png differ diff --git a/graphics/pokemon/sigilyph/front.png b/graphics/pokemon/sigilyph/front.png index 373f63a04..8ce63b837 100644 Binary files a/graphics/pokemon/sigilyph/front.png and b/graphics/pokemon/sigilyph/front.png differ diff --git a/graphics/pokemon/sigilyph/normal.pal b/graphics/pokemon/sigilyph/normal.pal index 3fdaae47c..aa021fdd1 100644 --- a/graphics/pokemon/sigilyph/normal.pal +++ b/graphics/pokemon/sigilyph/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 104 144 +40 120 136 16 16 16 -120 168 208 -216 56 56 -248 184 64 -136 56 72 -168 112 48 -96 72 40 -56 48 48 +72 168 224 +216 0 0 +248 192 8 +144 80 112 +152 120 24 +96 64 16 +48 48 48 248 248 248 -80 176 88 -160 152 144 -40 104 64 -248 184 64 +56 160 72 +144 144 144 +48 112 56 +0 0 0 0 0 0 diff --git a/graphics/pokemon/sigilyph/shiny.pal b/graphics/pokemon/sigilyph/shiny.pal index db05b0891..c747e6c86 100644 --- a/graphics/pokemon/sigilyph/shiny.pal +++ b/graphics/pokemon/sigilyph/shiny.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -152 208 160 +120 192 168 160 104 48 16 16 16 248 168 72 @@ -15,5 +15,5 @@ JASC-PAL 160 136 80 208 192 136 96 80 48 -192 216 104 +0 0 0 0 0 0 diff --git a/graphics/pokemon/silcoon/anim_front.png b/graphics/pokemon/silcoon/anim_front.png index 94b2bf97a..8fb93f1fc 100644 Binary files a/graphics/pokemon/silcoon/anim_front.png and b/graphics/pokemon/silcoon/anim_front.png differ diff --git a/graphics/pokemon/silcoon/front.png b/graphics/pokemon/silcoon/front.png index c26d8efe2..e6f2a614c 100644 Binary files a/graphics/pokemon/silcoon/front.png and b/graphics/pokemon/silcoon/front.png differ diff --git a/graphics/pokemon/silcoon/normal.pal b/graphics/pokemon/silcoon/normal.pal index f43a07f6c..cb6b793aa 100644 --- a/graphics/pokemon/silcoon/normal.pal +++ b/graphics/pokemon/silcoon/normal.pal @@ -8,8 +8,8 @@ JASC-PAL 192 208 224 16 16 16 168 184 176 -152 56 64 -224 88 96 +176 24 56 +248 80 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/simipour/anim_front.png b/graphics/pokemon/simipour/anim_front.png index f7a31691c..927aeb1eb 100644 Binary files a/graphics/pokemon/simipour/anim_front.png and b/graphics/pokemon/simipour/anim_front.png differ diff --git a/graphics/pokemon/simipour/front.png b/graphics/pokemon/simipour/front.png index 56a3f7547..3ea50454c 100644 Binary files a/graphics/pokemon/simipour/front.png and b/graphics/pokemon/simipour/front.png differ diff --git a/graphics/pokemon/simipour/normal.pal b/graphics/pokemon/simipour/normal.pal index 0cc05ef5f..846b3976b 100644 --- a/graphics/pokemon/simipour/normal.pal +++ b/graphics/pokemon/simipour/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 72 96 -40 104 136 -16 16 16 -48 136 152 -48 184 216 -120 208 224 +0 56 112 +16 104 136 +0 0 0 +32 136 160 +40 176 216 +152 224 232 248 248 248 -192 160 96 -144 128 88 -192 176 168 -248 208 112 +200 160 88 +160 120 56 +192 192 192 +248 200 120 80 80 80 56 56 56 -96 80 64 +112 80 32 152 152 152 diff --git a/graphics/pokemon/simisage/anim_front.png b/graphics/pokemon/simisage/anim_front.png index 1b3a09c14..d9601c955 100644 Binary files a/graphics/pokemon/simisage/anim_front.png and b/graphics/pokemon/simisage/anim_front.png differ diff --git a/graphics/pokemon/simisage/front.png b/graphics/pokemon/simisage/front.png index 44f7b6ada..22e5dff39 100644 Binary files a/graphics/pokemon/simisage/front.png and b/graphics/pokemon/simisage/front.png differ diff --git a/graphics/pokemon/simisage/normal.pal b/graphics/pokemon/simisage/normal.pal index 8e2676bed..953226776 100644 --- a/graphics/pokemon/simisage/normal.pal +++ b/graphics/pokemon/simisage/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -32 80 56 -16 16 16 -48 168 104 -40 120 72 -248 208 112 -144 128 64 -176 144 96 +24 72 40 +0 0 0 +24 160 80 +8 112 48 +248 200 120 +200 160 88 +160 120 56 248 248 248 -168 152 144 -136 208 160 +152 152 152 +128 200 152 80 80 80 -208 192 192 -104 88 32 +192 192 192 +112 80 32 0 0 0 0 0 0 diff --git a/graphics/pokemon/simisear/anim_front.png b/graphics/pokemon/simisear/anim_front.png index 89bdf1153..7426fffe7 100644 Binary files a/graphics/pokemon/simisear/anim_front.png and b/graphics/pokemon/simisear/anim_front.png differ diff --git a/graphics/pokemon/simisear/front.png b/graphics/pokemon/simisear/front.png index 4259f5f49..c8ce5ef58 100644 Binary files a/graphics/pokemon/simisear/front.png and b/graphics/pokemon/simisear/front.png differ diff --git a/graphics/pokemon/simisear/normal.pal b/graphics/pokemon/simisear/normal.pal index 73ae069ff..42c14f4bd 100644 --- a/graphics/pokemon/simisear/normal.pal +++ b/graphics/pokemon/simisear/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 48 56 -16 16 16 -224 88 88 -168 72 64 -224 144 40 +120 48 48 +8 8 8 +224 80 64 +184 64 56 +240 144 64 248 248 248 -160 144 144 +152 152 152 80 80 80 -192 160 80 -192 176 168 -240 200 120 -152 128 64 -104 88 40 +200 160 88 +192 192 192 +248 200 120 +160 120 56 +112 80 32 0 0 0 0 0 0 diff --git a/graphics/pokemon/skarmory/anim_front.png b/graphics/pokemon/skarmory/anim_front.png index 44b7f8da1..ea1033f3e 100644 Binary files a/graphics/pokemon/skarmory/anim_front.png and b/graphics/pokemon/skarmory/anim_front.png differ diff --git a/graphics/pokemon/skarmory/front.png b/graphics/pokemon/skarmory/front.png index f66f968d4..719acd0f8 100644 Binary files a/graphics/pokemon/skarmory/front.png and b/graphics/pokemon/skarmory/front.png differ diff --git a/graphics/pokemon/skarmory/normal.pal b/graphics/pokemon/skarmory/normal.pal index 53ebc0422..22e83a220 100644 --- a/graphics/pokemon/skarmory/normal.pal +++ b/graphics/pokemon/skarmory/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 144 168 -224 224 248 -56 64 104 -184 200 232 -160 176 216 +120 144 184 +216 232 248 +48 80 120 +184 200 224 +152 176 208 16 16 16 -120 24 32 -160 48 48 -232 88 104 -96 104 152 -208 56 72 -176 168 48 -248 248 96 -184 120 136 +144 16 24 +192 48 72 +248 128 144 +96 120 168 +232 88 96 +200 144 0 +248 216 0 +128 24 32 248 248 248 diff --git a/graphics/pokemon/skiploom/anim_front.png b/graphics/pokemon/skiploom/anim_front.png index 710e60deb..873e2c86f 100644 Binary files a/graphics/pokemon/skiploom/anim_front.png and b/graphics/pokemon/skiploom/anim_front.png differ diff --git a/graphics/pokemon/skiploom/front.png b/graphics/pokemon/skiploom/front.png index c8d8cc547..8bbabfd30 100644 Binary files a/graphics/pokemon/skiploom/front.png and b/graphics/pokemon/skiploom/front.png differ diff --git a/graphics/pokemon/skiploom/normal.pal b/graphics/pokemon/skiploom/normal.pal index 545ace0e2..4ead4707f 100644 --- a/graphics/pokemon/skiploom/normal.pal +++ b/graphics/pokemon/skiploom/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -112 96 40 -16 16 16 -248 232 128 -232 208 88 -184 168 80 -200 208 192 -248 248 248 -64 104 16 -120 200 56 -168 224 120 -112 160 48 -240 72 64 -144 128 64 -176 184 168 +136 80 0 0 0 0 +248 232 0 +248 208 0 +240 160 24 +176 208 216 +248 248 248 +24 104 0 +144 200 48 +176 232 104 +112 168 24 +248 0 64 +200 128 0 +152 80 0 +152 168 184 diff --git a/graphics/pokemon/skitty/anim_front.png b/graphics/pokemon/skitty/anim_front.png index 42c19ca61..7f0c1ab4e 100644 Binary files a/graphics/pokemon/skitty/anim_front.png and b/graphics/pokemon/skitty/anim_front.png differ diff --git a/graphics/pokemon/skitty/front.png b/graphics/pokemon/skitty/front.png index 1242c7a3e..2a7321c26 100644 Binary files a/graphics/pokemon/skitty/front.png and b/graphics/pokemon/skitty/front.png differ diff --git a/graphics/pokemon/skitty/normal.pal b/graphics/pokemon/skitty/normal.pal index d0413c239..482ce24ec 100644 --- a/graphics/pokemon/skitty/normal.pal +++ b/graphics/pokemon/skitty/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 104 56 -248 240 176 -232 208 144 +120 96 64 +240 216 168 +232 184 120 16 16 16 -152 72 80 -248 184 176 -232 144 144 -216 120 120 -168 112 176 -104 56 136 -192 168 112 -192 128 152 +152 48 64 +240 152 176 +232 120 144 +208 88 120 +136 56 144 +104 48 112 +200 136 88 +216 96 128 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/skorupi/anim_front.png b/graphics/pokemon/skorupi/anim_front.png index bf20b1b24..2120db4b0 100644 Binary files a/graphics/pokemon/skorupi/anim_front.png and b/graphics/pokemon/skorupi/anim_front.png differ diff --git a/graphics/pokemon/skorupi/front.png b/graphics/pokemon/skorupi/front.png index 0395737ac..480051932 100644 Binary files a/graphics/pokemon/skorupi/front.png and b/graphics/pokemon/skorupi/front.png differ diff --git a/graphics/pokemon/skorupi/normal.pal b/graphics/pokemon/skorupi/normal.pal index 1c98bdc25..4b71afccb 100644 --- a/graphics/pokemon/skorupi/normal.pal +++ b/graphics/pokemon/skorupi/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -136 112 104 -248 248 240 +136 136 136 +248 248 248 16 16 16 -56 64 120 -224 208 200 +64 64 112 +208 208 224 104 120 176 -152 168 216 -200 176 168 -40 32 80 -88 104 152 +144 152 232 +176 176 208 +40 40 48 +104 104 176 40 96 112 48 168 184 40 40 48 diff --git a/graphics/pokemon/skuntank/anim_front.png b/graphics/pokemon/skuntank/anim_front.png index b9172b0f5..52caa25ad 100644 Binary files a/graphics/pokemon/skuntank/anim_front.png and b/graphics/pokemon/skuntank/anim_front.png differ diff --git a/graphics/pokemon/skuntank/front.png b/graphics/pokemon/skuntank/front.png index a6d0f5f8b..d188535e2 100644 Binary files a/graphics/pokemon/skuntank/front.png and b/graphics/pokemon/skuntank/front.png differ diff --git a/graphics/pokemon/skuntank/normal.pal b/graphics/pokemon/skuntank/normal.pal index e42858906..c76b89826 100644 --- a/graphics/pokemon/skuntank/normal.pal +++ b/graphics/pokemon/skuntank/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 48 72 -136 112 144 -96 72 112 +72 56 96 +136 112 176 +104 80 136 16 16 16 -48 24 56 -176 152 128 -248 224 168 -88 80 64 +48 40 64 +176 152 120 +232 216 168 +96 88 64 248 248 248 -184 200 208 -160 80 40 -232 120 72 -120 56 24 -152 88 96 -232 136 136 +176 176 208 +176 88 48 +240 136 72 +128 72 48 +104 96 112 +0 0 0 diff --git a/graphics/pokemon/slaking/anim_front.png b/graphics/pokemon/slaking/anim_front.png index c488092fb..1b0ddece3 100644 Binary files a/graphics/pokemon/slaking/anim_front.png and b/graphics/pokemon/slaking/anim_front.png differ diff --git a/graphics/pokemon/slaking/back.png b/graphics/pokemon/slaking/back.png index f64617251..9e541ebc1 100644 Binary files a/graphics/pokemon/slaking/back.png and b/graphics/pokemon/slaking/back.png differ diff --git a/graphics/pokemon/slaking/front.png b/graphics/pokemon/slaking/front.png index b99bc6c6f..bc7ed93b0 100644 Binary files a/graphics/pokemon/slaking/front.png and b/graphics/pokemon/slaking/front.png differ diff --git a/graphics/pokemon/slaking/normal.pal b/graphics/pokemon/slaking/normal.pal index 95c095135..835251a51 100644 --- a/graphics/pokemon/slaking/normal.pal +++ b/graphics/pokemon/slaking/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 16 16 16 88 64 48 -96 104 120 +88 96 120 232 232 248 -168 136 112 -128 96 72 -192 200 224 -232 208 176 -184 168 144 +160 128 104 +120 96 72 +208 208 232 +232 216 184 +184 176 144 248 248 248 -120 56 80 -224 144 160 -184 96 120 -64 48 48 +144 64 88 +216 128 152 +200 88 128 +0 0 0 0 0 0 diff --git a/graphics/pokemon/slakoth/anim_front.png b/graphics/pokemon/slakoth/anim_front.png index b15f5d039..32085285f 100644 Binary files a/graphics/pokemon/slakoth/anim_front.png and b/graphics/pokemon/slakoth/anim_front.png differ diff --git a/graphics/pokemon/slakoth/front.png b/graphics/pokemon/slakoth/front.png index 737b8dbae..e40b34fb2 100644 Binary files a/graphics/pokemon/slakoth/front.png and b/graphics/pokemon/slakoth/front.png differ diff --git a/graphics/pokemon/slakoth/normal.pal b/graphics/pokemon/slakoth/normal.pal index 15dd6bc1c..f9b089f45 100644 --- a/graphics/pokemon/slakoth/normal.pal +++ b/graphics/pokemon/slakoth/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 64 48 -16 16 16 -232 216 200 -200 184 160 -176 152 128 -112 80 56 -168 120 96 +80 56 40 +0 0 0 +216 200 184 +192 176 144 +176 152 120 +104 72 32 +136 112 80 200 200 200 152 152 152 248 248 248 -224 144 144 -168 104 104 -120 64 64 +224 136 144 +184 88 104 +120 56 80 64 64 64 0 0 0 diff --git a/graphics/pokemon/slowbro/anim_front.png b/graphics/pokemon/slowbro/anim_front.png index 2e4c70678..f944ffb99 100644 Binary files a/graphics/pokemon/slowbro/anim_front.png and b/graphics/pokemon/slowbro/anim_front.png differ diff --git a/graphics/pokemon/slowbro/front.png b/graphics/pokemon/slowbro/front.png index 9c7144bb8..4ec5e110f 100644 Binary files a/graphics/pokemon/slowbro/front.png and b/graphics/pokemon/slowbro/front.png differ diff --git a/graphics/pokemon/slowbro/normal.pal b/graphics/pokemon/slowbro/normal.pal index cdb6101e6..83a239b6d 100644 --- a/graphics/pokemon/slowbro/normal.pal +++ b/graphics/pokemon/slowbro/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 56 72 -200 120 136 -232 144 168 +120 48 48 +232 104 120 +248 144 144 24 24 24 -248 184 192 +248 192 176 248 248 248 216 216 208 -72 96 128 -120 152 168 -128 104 72 -168 200 216 -248 216 200 -232 200 160 -192 168 120 -184 128 160 +88 88 88 +144 144 144 +128 88 32 +184 184 184 +248 240 176 +240 216 128 +208 160 96 +232 80 40 diff --git a/graphics/pokemon/slowking/anim_front.png b/graphics/pokemon/slowking/anim_front.png index 853d6180c..d9740c007 100644 Binary files a/graphics/pokemon/slowking/anim_front.png and b/graphics/pokemon/slowking/anim_front.png differ diff --git a/graphics/pokemon/slowking/front.png b/graphics/pokemon/slowking/front.png index 928c6925d..d9af555c2 100644 Binary files a/graphics/pokemon/slowking/front.png and b/graphics/pokemon/slowking/front.png differ diff --git a/graphics/pokemon/slowking/normal.pal b/graphics/pokemon/slowking/normal.pal index f0d76fb46..a001414d9 100644 --- a/graphics/pokemon/slowking/normal.pal +++ b/graphics/pokemon/slowking/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -104 96 112 -216 232 224 -168 168 152 -96 48 56 +96 96 104 +208 208 208 +168 160 160 +120 48 48 248 248 248 -224 120 120 -168 80 96 -248 168 168 -112 96 48 -184 168 104 -248 240 160 -184 80 72 -232 120 88 +224 104 120 +168 64 80 +248 144 144 +128 88 32 +200 160 96 +232 208 128 +224 64 32 +248 88 72 176 176 168 diff --git a/graphics/pokemon/slowpoke/anim_front.png b/graphics/pokemon/slowpoke/anim_front.png index 2a4da7d8a..61740747b 100644 Binary files a/graphics/pokemon/slowpoke/anim_front.png and b/graphics/pokemon/slowpoke/anim_front.png differ diff --git a/graphics/pokemon/slowpoke/back.png b/graphics/pokemon/slowpoke/back.png index 96e62c4bf..e2ff691a0 100644 Binary files a/graphics/pokemon/slowpoke/back.png and b/graphics/pokemon/slowpoke/back.png differ diff --git a/graphics/pokemon/slowpoke/front.png b/graphics/pokemon/slowpoke/front.png index 592a56f53..aa53f9c55 100644 Binary files a/graphics/pokemon/slowpoke/front.png and b/graphics/pokemon/slowpoke/front.png differ diff --git a/graphics/pokemon/slowpoke/normal.pal b/graphics/pokemon/slowpoke/normal.pal index 28586dd73..b07163f93 100644 --- a/graphics/pokemon/slowpoke/normal.pal +++ b/graphics/pokemon/slowpoke/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 88 104 -200 120 136 -248 184 192 -232 144 168 -104 56 64 +168 64 80 +216 96 120 +248 160 160 +248 128 144 +120 32 48 104 96 96 208 200 200 248 248 248 16 16 16 -208 176 128 -128 104 72 -248 216 200 -232 200 160 -248 232 232 -240 192 208 +216 160 96 +136 88 24 +248 224 176 +232 192 136 +248 224 176 +0 0 0 diff --git a/graphics/pokemon/slugma/anim_front.png b/graphics/pokemon/slugma/anim_front.png index 3ddbf4f6e..98d0bd14c 100644 Binary files a/graphics/pokemon/slugma/anim_front.png and b/graphics/pokemon/slugma/anim_front.png differ diff --git a/graphics/pokemon/slugma/front.png b/graphics/pokemon/slugma/front.png index 643357be0..a64ce0042 100644 Binary files a/graphics/pokemon/slugma/front.png and b/graphics/pokemon/slugma/front.png differ diff --git a/graphics/pokemon/slugma/normal.pal b/graphics/pokemon/slugma/normal.pal index 91d80b1b5..11a0e10c2 100644 --- a/graphics/pokemon/slugma/normal.pal +++ b/graphics/pokemon/slugma/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -184 48 32 -104 32 16 -240 144 104 +200 48 24 +120 24 0 +248 144 112 16 16 16 -232 80 64 +232 72 64 240 112 104 -248 232 136 +248 232 120 248 248 248 -200 184 80 -248 232 136 +232 184 8 +248 232 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/smeargle/anim_front.png b/graphics/pokemon/smeargle/anim_front.png index 53c7cd6cb..9a62395cc 100644 Binary files a/graphics/pokemon/smeargle/anim_front.png and b/graphics/pokemon/smeargle/anim_front.png differ diff --git a/graphics/pokemon/smeargle/front.png b/graphics/pokemon/smeargle/front.png index d2eacc4a9..1804f2514 100644 Binary files a/graphics/pokemon/smeargle/front.png and b/graphics/pokemon/smeargle/front.png differ diff --git a/graphics/pokemon/smeargle/normal.pal b/graphics/pokemon/smeargle/normal.pal index e55b273d0..2d9f37a4a 100644 --- a/graphics/pokemon/smeargle/normal.pal +++ b/graphics/pokemon/smeargle/normal.pal @@ -9,11 +9,11 @@ JASC-PAL 184 160 136 16 16 16 248 248 248 -96 128 48 -152 184 112 +24 152 0 +104 216 64 144 144 152 -128 168 88 +64 192 24 144 120 104 -64 96 16 +8 96 0 176 64 64 232 128 128 diff --git a/graphics/pokemon/smoochum/anim_front.png b/graphics/pokemon/smoochum/anim_front.png index 53c16714d..c9d2b13b0 100644 Binary files a/graphics/pokemon/smoochum/anim_front.png and b/graphics/pokemon/smoochum/anim_front.png differ diff --git a/graphics/pokemon/smoochum/front.png b/graphics/pokemon/smoochum/front.png index 6d64ea327..6f4927480 100644 Binary files a/graphics/pokemon/smoochum/front.png and b/graphics/pokemon/smoochum/front.png differ diff --git a/graphics/pokemon/smoochum/normal.pal b/graphics/pokemon/smoochum/normal.pal index b5e84f7c0..162bb5da4 100644 --- a/graphics/pokemon/smoochum/normal.pal +++ b/graphics/pokemon/smoochum/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 112 32 -240 216 104 -208 184 96 -16 16 16 -144 40 80 -184 88 128 +144 128 24 +248 224 88 +216 200 48 +0 0 0 +136 16 88 +192 88 144 208 208 208 -240 120 168 +240 128 176 248 248 248 -72 136 128 -248 160 176 -248 224 160 -136 112 72 -208 184 136 -168 160 72 +48 128 104 +248 176 176 +240 224 168 +136 128 72 +216 192 128 +184 168 40 diff --git a/graphics/pokemon/sneasel/anim_front.png b/graphics/pokemon/sneasel/anim_front.png index 2666f8775..72da2a55e 100644 Binary files a/graphics/pokemon/sneasel/anim_front.png and b/graphics/pokemon/sneasel/anim_front.png differ diff --git a/graphics/pokemon/sneasel/front.png b/graphics/pokemon/sneasel/front.png index bd730da20..d422fe52e 100644 Binary files a/graphics/pokemon/sneasel/front.png and b/graphics/pokemon/sneasel/front.png differ diff --git a/graphics/pokemon/sneasel/normal.pal b/graphics/pokemon/sneasel/normal.pal index 78967e7dc..10165115f 100644 --- a/graphics/pokemon/sneasel/normal.pal +++ b/graphics/pokemon/sneasel/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 32 48 -184 64 88 -24 56 72 -232 96 96 -40 96 120 -72 152 168 -16 16 16 -56 136 152 -200 152 80 -248 192 96 -168 176 184 -240 240 248 -56 56 72 -248 144 152 +128 32 80 +192 40 112 +32 48 88 +240 80 112 +48 96 112 +56 144 168 0 0 0 +64 128 152 +160 120 56 +216 200 112 +184 184 192 +240 240 248 +72 72 72 +248 88 120 +248 144 160 diff --git a/graphics/pokemon/snivy/anim_front.png b/graphics/pokemon/snivy/anim_front.png index 59b26b7aa..893d974a2 100644 Binary files a/graphics/pokemon/snivy/anim_front.png and b/graphics/pokemon/snivy/anim_front.png differ diff --git a/graphics/pokemon/snivy/front.png b/graphics/pokemon/snivy/front.png index 19a181c0f..040a32f83 100644 Binary files a/graphics/pokemon/snivy/front.png and b/graphics/pokemon/snivy/front.png differ diff --git a/graphics/pokemon/snivy/normal.pal b/graphics/pokemon/snivy/normal.pal index 6c79186ce..1a3499e6a 100644 --- a/graphics/pokemon/snivy/normal.pal +++ b/graphics/pokemon/snivy/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 64 24 -80 184 80 +0 80 0 +0 176 0 8 8 8 -248 200 48 -240 248 168 -96 104 80 -176 168 112 -176 144 40 -152 56 56 -88 16 16 +248 216 40 +248 240 184 +136 120 48 +192 184 96 +192 152 0 +144 56 0 +88 32 0 248 248 248 -184 112 80 -56 120 56 -136 112 48 +216 120 64 +8 128 0 +0 0 0 0 0 0 diff --git a/graphics/pokemon/snorlax/anim_front.png b/graphics/pokemon/snorlax/anim_front.png index 87ff8eb73..94d9d4784 100644 Binary files a/graphics/pokemon/snorlax/anim_front.png and b/graphics/pokemon/snorlax/anim_front.png differ diff --git a/graphics/pokemon/snorlax/front.png b/graphics/pokemon/snorlax/front.png index b2d7776d5..eff039d3d 100644 Binary files a/graphics/pokemon/snorlax/front.png and b/graphics/pokemon/snorlax/front.png differ diff --git a/graphics/pokemon/snorlax/normal.pal b/graphics/pokemon/snorlax/normal.pal index 421db579c..5b782626d 100644 --- a/graphics/pokemon/snorlax/normal.pal +++ b/graphics/pokemon/snorlax/normal.pal @@ -4,9 +4,9 @@ JASC-PAL 152 208 160 16 16 8 16 48 56 -72 144 168 -16 88 120 -32 64 80 +80 136 168 +48 88 120 +32 64 96 112 168 192 216 192 176 248 232 208 diff --git a/graphics/pokemon/snorunt/anim_front.png b/graphics/pokemon/snorunt/anim_front.png index ff0a10b76..a3bef621c 100644 Binary files a/graphics/pokemon/snorunt/anim_front.png and b/graphics/pokemon/snorunt/anim_front.png differ diff --git a/graphics/pokemon/snorunt/front.png b/graphics/pokemon/snorunt/front.png index 4950af814..02c956098 100644 Binary files a/graphics/pokemon/snorunt/front.png and b/graphics/pokemon/snorunt/front.png differ diff --git a/graphics/pokemon/snorunt/normal.pal b/graphics/pokemon/snorunt/normal.pal index 7e422617f..28932d73c 100644 --- a/graphics/pokemon/snorunt/normal.pal +++ b/graphics/pokemon/snorunt/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -192 160 80 -120 104 48 -248 232 168 -232 208 120 -16 16 16 -224 120 72 -48 40 40 -80 72 72 -168 96 64 -120 104 104 -96 216 248 -56 152 184 +200 136 88 +144 96 72 +248 232 160 +232 192 104 +0 0 0 +248 112 88 +56 48 48 +72 72 72 +176 88 48 +112 112 112 +136 208 248 +64 144 208 216 216 216 248 248 248 176 168 168 diff --git a/graphics/pokemon/snover/anim_front.png b/graphics/pokemon/snover/anim_front.png index 6b510dcab..f666d58b3 100644 Binary files a/graphics/pokemon/snover/anim_front.png and b/graphics/pokemon/snover/anim_front.png differ diff --git a/graphics/pokemon/snover/front.png b/graphics/pokemon/snover/front.png index e11a3b995..9dff7b2a5 100644 Binary files a/graphics/pokemon/snover/front.png and b/graphics/pokemon/snover/front.png differ diff --git a/graphics/pokemon/snover/normal.pal b/graphics/pokemon/snover/normal.pal index 5a37debe8..ba3cd07ba 100644 --- a/graphics/pokemon/snover/normal.pal +++ b/graphics/pokemon/snover/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 168 224 24 -128 160 184 -88 112 136 +144 160 168 +104 120 128 248 248 248 -16 16 16 -184 208 224 -40 72 80 -96 160 144 -64 120 112 -128 200 176 -80 72 56 -112 104 80 -152 128 104 -64 120 112 +32 32 40 +200 216 216 +40 88 88 +72 152 136 +56 112 120 +136 208 168 +88 72 64 +112 88 72 +136 112 80 +56 112 120 0 0 0 0 0 0 diff --git a/graphics/pokemon/snubbull/anim_front.png b/graphics/pokemon/snubbull/anim_front.png index b4f411269..b74b9d6a5 100644 Binary files a/graphics/pokemon/snubbull/anim_front.png and b/graphics/pokemon/snubbull/anim_front.png differ diff --git a/graphics/pokemon/snubbull/front.png b/graphics/pokemon/snubbull/front.png index 4e3f2c60f..fa6456d89 100644 Binary files a/graphics/pokemon/snubbull/front.png and b/graphics/pokemon/snubbull/front.png differ diff --git a/graphics/pokemon/snubbull/normal.pal b/graphics/pokemon/snubbull/normal.pal index 31f88d4cc..434cbb11c 100644 --- a/graphics/pokemon/snubbull/normal.pal +++ b/graphics/pokemon/snubbull/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -80 72 72 -200 96 112 -144 48 64 -112 112 112 -248 144 160 -248 176 184 +72 88 88 +232 104 120 +168 48 64 +112 128 128 +248 168 176 +248 192 192 216 216 216 248 248 248 -112 152 176 -136 208 240 -88 64 40 -152 128 104 -248 200 144 -132 76 86 +112 168 224 +176 216 240 +88 48 8 +184 104 8 +248 176 80 +168 0 0 diff --git a/graphics/pokemon/solosis/anim_front.png b/graphics/pokemon/solosis/anim_front.png index 250ea1b98..b1130a2bc 100644 Binary files a/graphics/pokemon/solosis/anim_front.png and b/graphics/pokemon/solosis/anim_front.png differ diff --git a/graphics/pokemon/solosis/front.png b/graphics/pokemon/solosis/front.png index 0c233bf78..6be1e5a06 100644 Binary files a/graphics/pokemon/solosis/front.png and b/graphics/pokemon/solosis/front.png differ diff --git a/graphics/pokemon/solosis/normal.pal b/graphics/pokemon/solosis/normal.pal index 94dde5274..d35894cc3 100644 --- a/graphics/pokemon/solosis/normal.pal +++ b/graphics/pokemon/solosis/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -56 136 104 -112 184 136 -184 232 184 +64 136 88 +88 176 120 +144 224 168 248 248 248 88 128 88 -208 232 168 +200 224 184 16 16 16 -104 96 56 -176 160 104 -232 216 128 -160 168 120 -112 56 72 -48 104 80 -160 88 88 -176 192 136 +104 96 40 +160 152 48 +224 216 112 +152 168 136 +144 48 72 +48 96 64 +192 64 80 +176 200 160 diff --git a/graphics/pokemon/solrock/anim_front.png b/graphics/pokemon/solrock/anim_front.png index 8156f736c..a8ea53f01 100644 Binary files a/graphics/pokemon/solrock/anim_front.png and b/graphics/pokemon/solrock/anim_front.png differ diff --git a/graphics/pokemon/solrock/front.png b/graphics/pokemon/solrock/front.png index e24e84149..24336f16b 100644 Binary files a/graphics/pokemon/solrock/front.png and b/graphics/pokemon/solrock/front.png differ diff --git a/graphics/pokemon/solrock/normal.pal b/graphics/pokemon/solrock/normal.pal index 973515b65..28fde096a 100644 --- a/graphics/pokemon/solrock/normal.pal +++ b/graphics/pokemon/solrock/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 72 32 +96 72 24 16 16 16 -240 216 144 -216 192 88 -184 152 72 +240 224 96 +216 176 24 +192 144 64 232 216 104 -144 112 56 -152 80 32 -208 96 56 -136 64 32 -216 120 80 -240 152 96 -216 32 40 +152 104 32 +168 72 32 +208 80 24 +160 80 0 +232 96 32 +240 136 80 +192 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/spearow/anim_front.png b/graphics/pokemon/spearow/anim_front.png index 44dac4526..055e84677 100644 Binary files a/graphics/pokemon/spearow/anim_front.png and b/graphics/pokemon/spearow/anim_front.png differ diff --git a/graphics/pokemon/spearow/back.png b/graphics/pokemon/spearow/back.png index f0a62997a..6d5395837 100644 Binary files a/graphics/pokemon/spearow/back.png and b/graphics/pokemon/spearow/back.png differ diff --git a/graphics/pokemon/spearow/front.png b/graphics/pokemon/spearow/front.png index 3d73670a1..68621040a 100644 Binary files a/graphics/pokemon/spearow/front.png and b/graphics/pokemon/spearow/front.png differ diff --git a/graphics/pokemon/spearow/normal.pal b/graphics/pokemon/spearow/normal.pal index 14354042c..f03dd0e30 100644 --- a/graphics/pokemon/spearow/normal.pal +++ b/graphics/pokemon/spearow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 72 48 -160 104 64 +152 80 24 +192 104 32 64 40 24 -200 144 104 +232 168 80 16 16 16 -216 80 72 -160 56 64 -224 208 176 +232 80 72 +168 64 72 +192 176 152 248 248 248 -224 184 176 -224 144 136 -184 136 128 +248 208 200 +248 160 136 +255 255 0 120 40 40 -184 160 136 -72 64 64 +136 120 96 +96 80 72 diff --git a/graphics/pokemon/spheal/anim_front.png b/graphics/pokemon/spheal/anim_front.png index 5cc50c5c9..31c4d81d1 100644 Binary files a/graphics/pokemon/spheal/anim_front.png and b/graphics/pokemon/spheal/anim_front.png differ diff --git a/graphics/pokemon/spheal/front.png b/graphics/pokemon/spheal/front.png index 40f4ad277..2063a772b 100644 Binary files a/graphics/pokemon/spheal/front.png and b/graphics/pokemon/spheal/front.png differ diff --git a/graphics/pokemon/spheal/normal.pal b/graphics/pokemon/spheal/normal.pal index 2ad58f410..866fa3392 100644 --- a/graphics/pokemon/spheal/normal.pal +++ b/graphics/pokemon/spheal/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 56 72 120 -112 144 200 -136 168 224 -72 112 184 -168 192 232 -32 32 32 +104 136 216 +144 168 240 +72 104 184 +168 192 248 +0 0 0 248 248 248 -102 93 71 -247 232 200 -214 194 145 -178 160 116 -130 93 102 -237 166 181 +104 88 48 +240 224 184 +200 184 128 +160 144 104 +168 56 80 +224 104 120 0 0 0 0 0 0 diff --git a/graphics/pokemon/spinarak/anim_front.png b/graphics/pokemon/spinarak/anim_front.png index 6b8097233..d5837da99 100644 Binary files a/graphics/pokemon/spinarak/anim_front.png and b/graphics/pokemon/spinarak/anim_front.png differ diff --git a/graphics/pokemon/spinarak/front.png b/graphics/pokemon/spinarak/front.png index 7d1f51def..36c6e8f60 100644 Binary files a/graphics/pokemon/spinarak/front.png and b/graphics/pokemon/spinarak/front.png differ diff --git a/graphics/pokemon/spinarak/normal.pal b/graphics/pokemon/spinarak/normal.pal index aad0bb3a3..22db1c2ce 100644 --- a/graphics/pokemon/spinarak/normal.pal +++ b/graphics/pokemon/spinarak/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 0 176 232 16 16 16 -56 80 32 -40 88 96 -160 216 120 -192 232 144 -128 168 88 +48 72 16 +40 96 96 +136 224 48 +168 240 96 +80 176 104 96 152 160 112 88 32 -192 160 72 +192 176 24 72 72 72 248 248 248 -248 208 96 +248 224 72 200 192 192 144 48 40 248 88 72 diff --git a/graphics/pokemon/spiritomb/anim_front.png b/graphics/pokemon/spiritomb/anim_front.png index 6a70d9239..8342c4220 100644 Binary files a/graphics/pokemon/spiritomb/anim_front.png and b/graphics/pokemon/spiritomb/anim_front.png differ diff --git a/graphics/pokemon/spiritomb/front.png b/graphics/pokemon/spiritomb/front.png index e2ad070a8..bcfd704f6 100644 Binary files a/graphics/pokemon/spiritomb/front.png and b/graphics/pokemon/spiritomb/front.png differ diff --git a/graphics/pokemon/spiritomb/normal.pal b/graphics/pokemon/spiritomb/normal.pal index 4f53eb76c..0b612defc 100644 --- a/graphics/pokemon/spiritomb/normal.pal +++ b/graphics/pokemon/spiritomb/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -208 136 168 -160 104 128 -88 184 64 -152 208 128 -240 224 120 -56 96 48 -80 120 56 +192 112 184 +160 80 152 +96 176 64 +184 208 64 +248 216 16 +48 96 72 +72 136 64 16 16 16 48 64 48 -120 72 96 -104 64 80 -80 72 64 -184 160 136 -152 136 112 -136 112 96 +112 72 120 +80 64 104 +80 64 80 +176 152 144 +152 128 104 +128 104 96 diff --git a/graphics/pokemon/spoink/anim_front.png b/graphics/pokemon/spoink/anim_front.png index a1e84f375..0e40632d4 100644 Binary files a/graphics/pokemon/spoink/anim_front.png and b/graphics/pokemon/spoink/anim_front.png differ diff --git a/graphics/pokemon/spoink/front.png b/graphics/pokemon/spoink/front.png index 2f59eb397..4d5e236fe 100644 Binary files a/graphics/pokemon/spoink/front.png and b/graphics/pokemon/spoink/front.png differ diff --git a/graphics/pokemon/spoink/normal.pal b/graphics/pokemon/spoink/normal.pal index 8c3c5fbb8..5b55893ab 100644 --- a/graphics/pokemon/spoink/normal.pal +++ b/graphics/pokemon/spoink/normal.pal @@ -2,9 +2,9 @@ JASC-PAL 0100 16 152 208 160 -208 120 128 -232 144 152 -240 184 184 +192 96 120 +232 128 168 +240 160 184 144 80 80 248 208 224 248 248 248 diff --git a/graphics/pokemon/squirtle/anim_front.png b/graphics/pokemon/squirtle/anim_front.png index a7559113d..b125bbdfb 100644 Binary files a/graphics/pokemon/squirtle/anim_front.png and b/graphics/pokemon/squirtle/anim_front.png differ diff --git a/graphics/pokemon/squirtle/front.png b/graphics/pokemon/squirtle/front.png index 5920ee165..f8854997d 100644 Binary files a/graphics/pokemon/squirtle/front.png and b/graphics/pokemon/squirtle/front.png differ diff --git a/graphics/pokemon/squirtle/normal.pal b/graphics/pokemon/squirtle/normal.pal index bbe75688d..c66f21e48 100644 --- a/graphics/pokemon/squirtle/normal.pal +++ b/graphics/pokemon/squirtle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 152 184 -40 96 112 -176 216 232 -120 192 208 +72 160 200 +40 104 144 +128 216 248 +112 192 240 16 16 16 208 200 200 248 248 248 -184 88 128 +200 40 48 88 64 32 -168 96 72 -136 112 72 -184 160 128 -240 208 152 +176 96 16 +160 128 48 +200 168 88 +240 224 136 80 48 40 -200 144 136 +208 112 16 diff --git a/graphics/pokemon/stantler/anim_front.png b/graphics/pokemon/stantler/anim_front.png index 1e36c8a5c..e0ce71ad7 100644 Binary files a/graphics/pokemon/stantler/anim_front.png and b/graphics/pokemon/stantler/anim_front.png differ diff --git a/graphics/pokemon/stantler/front.png b/graphics/pokemon/stantler/front.png index 0fc22dd19..3c4e0b08f 100644 Binary files a/graphics/pokemon/stantler/front.png and b/graphics/pokemon/stantler/front.png differ diff --git a/graphics/pokemon/stantler/normal.pal b/graphics/pokemon/stantler/normal.pal index 64b959b58..fade238f1 100644 --- a/graphics/pokemon/stantler/normal.pal +++ b/graphics/pokemon/stantler/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 104 80 -248 216 112 -88 64 56 -176 152 88 +152 96 80 +248 232 136 +104 64 24 +224 168 24 16 16 16 -72 48 80 -184 160 168 -128 104 136 -176 128 104 -216 160 136 +72 72 72 +176 176 176 +120 120 120 +184 128 96 +232 168 120 248 248 248 -120 72 40 -248 232 184 -184 168 136 +120 64 32 +248 248 168 +248 216 128 0 0 0 diff --git a/graphics/pokemon/staraptor/anim_front.png b/graphics/pokemon/staraptor/anim_front.png index 33c16a688..4620e6cfd 100644 Binary files a/graphics/pokemon/staraptor/anim_front.png and b/graphics/pokemon/staraptor/anim_front.png differ diff --git a/graphics/pokemon/staraptor/front.png b/graphics/pokemon/staraptor/front.png index 5387fee5f..dbb5a2f95 100644 Binary files a/graphics/pokemon/staraptor/front.png and b/graphics/pokemon/staraptor/front.png differ diff --git a/graphics/pokemon/staraptor/normal.pal b/graphics/pokemon/staraptor/normal.pal index bbe481816..0e4196241 100644 --- a/graphics/pokemon/staraptor/normal.pal +++ b/graphics/pokemon/staraptor/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 40 40 -112 96 88 +56 56 56 +120 104 120 16 16 16 -80 72 64 -168 56 40 -232 88 64 -64 48 56 -144 112 128 -104 88 88 -184 176 168 -240 232 232 -112 80 40 -248 168 88 -192 120 56 +88 80 88 +152 64 64 +240 80 64 +80 56 72 +152 128 136 +112 88 96 +176 176 176 +248 248 248 +120 64 32 +248 144 40 +184 96 0 0 0 0 diff --git a/graphics/pokemon/staravia/anim_front.png b/graphics/pokemon/staravia/anim_front.png index fc451c052..5f8db161d 100644 Binary files a/graphics/pokemon/staravia/anim_front.png and b/graphics/pokemon/staravia/anim_front.png differ diff --git a/graphics/pokemon/staravia/front.png b/graphics/pokemon/staravia/front.png index ce01062ba..bd7c8ab4f 100644 Binary files a/graphics/pokemon/staravia/front.png and b/graphics/pokemon/staravia/front.png differ diff --git a/graphics/pokemon/staravia/normal.pal b/graphics/pokemon/staravia/normal.pal index ec0bd1984..f57c2fd0b 100644 --- a/graphics/pokemon/staravia/normal.pal +++ b/graphics/pokemon/staravia/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 56 40 40 -88 80 72 +88 80 88 16 16 16 -160 128 128 +152 128 136 240 240 240 -168 184 192 -192 96 32 -224 128 72 -128 64 24 -112 88 88 -56 48 56 -147 99 111 +176 176 176 +184 96 0 +248 144 40 +120 64 32 +112 88 96 +56 56 56 +248 88 64 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/starly/anim_front.png b/graphics/pokemon/starly/anim_front.png index d05ad5d57..1235ff408 100644 Binary files a/graphics/pokemon/starly/anim_front.png and b/graphics/pokemon/starly/anim_front.png differ diff --git a/graphics/pokemon/starly/back.png b/graphics/pokemon/starly/back.png index 96d3309ce..89148bc9f 100644 Binary files a/graphics/pokemon/starly/back.png and b/graphics/pokemon/starly/back.png differ diff --git a/graphics/pokemon/starly/front.png b/graphics/pokemon/starly/front.png index 28aa86e57..c188a7ff5 100644 Binary files a/graphics/pokemon/starly/front.png and b/graphics/pokemon/starly/front.png differ diff --git a/graphics/pokemon/starly/normal.pal b/graphics/pokemon/starly/normal.pal index ae7a09f36..2d0c723a3 100644 --- a/graphics/pokemon/starly/normal.pal +++ b/graphics/pokemon/starly/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 64 56 +80 72 72 16 16 16 -112 96 96 +136 112 112 24 24 32 184 176 168 248 248 248 -224 216 208 +208 216 216 120 72 24 240 128 56 176 88 40 -152 128 128 +168 152 152 112 88 88 112 96 96 -144 96 104 +248 80 64 0 0 0 diff --git a/graphics/pokemon/starmie/anim_front.png b/graphics/pokemon/starmie/anim_front.png index bf69ae037..5bc72ff51 100644 Binary files a/graphics/pokemon/starmie/anim_front.png and b/graphics/pokemon/starmie/anim_front.png differ diff --git a/graphics/pokemon/starmie/front.png b/graphics/pokemon/starmie/front.png index ba121899c..ab2abd1a0 100644 Binary files a/graphics/pokemon/starmie/front.png and b/graphics/pokemon/starmie/front.png differ diff --git a/graphics/pokemon/starmie/normal.pal b/graphics/pokemon/starmie/normal.pal index a05b36c5b..82ffa3fa9 100644 --- a/graphics/pokemon/starmie/normal.pal +++ b/graphics/pokemon/starmie/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 88 120 -64 48 80 -200 200 240 -128 120 168 -160 160 216 -16 16 16 -80 72 48 -248 216 96 -248 232 176 -184 160 80 -120 104 56 -240 176 176 -184 64 80 -224 112 112 -128 40 56 +88 80 152 +48 56 112 +208 184 240 +144 128 184 +176 152 216 +0 0 0 +88 64 48 +232 216 80 +248 248 152 +176 160 48 +144 112 64 +240 192 216 +200 32 88 +240 80 112 +136 16 80 diff --git a/graphics/pokemon/staryu/anim_front.png b/graphics/pokemon/staryu/anim_front.png index be579253b..ad2250818 100644 Binary files a/graphics/pokemon/staryu/anim_front.png and b/graphics/pokemon/staryu/anim_front.png differ diff --git a/graphics/pokemon/staryu/front.png b/graphics/pokemon/staryu/front.png index 4283d56fb..ffb70b69d 100644 Binary files a/graphics/pokemon/staryu/front.png and b/graphics/pokemon/staryu/front.png differ diff --git a/graphics/pokemon/staryu/normal.pal b/graphics/pokemon/staryu/normal.pal index e410143a5..7d0a10b2a 100644 --- a/graphics/pokemon/staryu/normal.pal +++ b/graphics/pokemon/staryu/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 104 64 -80 48 32 -224 192 112 -16 16 16 -96 72 56 -176 128 72 -112 104 56 -248 240 192 -72 64 40 -248 216 88 -160 152 80 -240 128 120 -248 176 176 -168 48 72 +144 104 56 +96 48 48 +216 176 96 +0 0 0 +120 80 56 +192 144 72 +128 104 64 +248 240 160 +88 64 48 +232 216 48 +200 144 40 +240 136 136 +240 192 184 +192 32 88 248 248 248 diff --git a/graphics/pokemon/steelix/anim_front.png b/graphics/pokemon/steelix/anim_front.png index b60f12fda..206cf665f 100644 Binary files a/graphics/pokemon/steelix/anim_front.png and b/graphics/pokemon/steelix/anim_front.png differ diff --git a/graphics/pokemon/steelix/front.png b/graphics/pokemon/steelix/front.png index d86221a35..a00376baf 100644 Binary files a/graphics/pokemon/steelix/front.png and b/graphics/pokemon/steelix/front.png differ diff --git a/graphics/pokemon/steelix/normal.pal b/graphics/pokemon/steelix/normal.pal index 6eb8c5db3..2986bbeab 100644 --- a/graphics/pokemon/steelix/normal.pal +++ b/graphics/pokemon/steelix/normal.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 152 208 160 -112 136 160 -88 88 136 +112 128 168 +72 96 136 16 16 16 -216 216 208 -168 184 208 -40 40 80 +216 216 232 +176 184 208 +56 56 80 248 248 248 -176 40 48 -216 216 208 +192 0 0 +216 216 232 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/stoutland/anim_front.png b/graphics/pokemon/stoutland/anim_front.png index 79aea7daf..256f3911a 100644 Binary files a/graphics/pokemon/stoutland/anim_front.png and b/graphics/pokemon/stoutland/anim_front.png differ diff --git a/graphics/pokemon/stoutland/front.png b/graphics/pokemon/stoutland/front.png index fd1c8fd3b..bd5570182 100644 Binary files a/graphics/pokemon/stoutland/front.png and b/graphics/pokemon/stoutland/front.png differ diff --git a/graphics/pokemon/stoutland/normal.pal b/graphics/pokemon/stoutland/normal.pal index 0b84f2f50..a2ba428ef 100644 --- a/graphics/pokemon/stoutland/normal.pal +++ b/graphics/pokemon/stoutland/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 80 48 -184 120 72 -248 216 168 -64 40 32 +144 88 48 +184 128 80 +248 224 168 +72 48 16 16 16 16 -24 24 32 -64 72 96 -176 152 112 -240 232 216 +24 32 56 +72 72 104 +192 168 104 +248 248 248 192 192 192 -184 176 160 -40 40 56 -96 128 136 -72 88 96 +200 184 152 +48 56 72 +120 144 152 +88 104 104 32 48 48 diff --git a/graphics/pokemon/stunfisk/anim_front.png b/graphics/pokemon/stunfisk/anim_front.png index 84a1e28fc..769ce41b7 100644 Binary files a/graphics/pokemon/stunfisk/anim_front.png and b/graphics/pokemon/stunfisk/anim_front.png differ diff --git a/graphics/pokemon/stunfisk/front.png b/graphics/pokemon/stunfisk/front.png index 2444184fd..4e46cfa8f 100644 Binary files a/graphics/pokemon/stunfisk/front.png and b/graphics/pokemon/stunfisk/front.png differ diff --git a/graphics/pokemon/stunfisk/normal.pal b/graphics/pokemon/stunfisk/normal.pal index 5a0f02b42..e9049ed2b 100644 --- a/graphics/pokemon/stunfisk/normal.pal +++ b/graphics/pokemon/stunfisk/normal.pal @@ -2,8 +2,8 @@ JASC-PAL 0100 16 152 208 160 -176 144 56 -248 224 112 +200 184 0 +248 248 0 112 88 32 8 16 24 64 48 40 diff --git a/graphics/pokemon/stunky/anim_front.png b/graphics/pokemon/stunky/anim_front.png index df7adec82..2463e0b8d 100644 Binary files a/graphics/pokemon/stunky/anim_front.png and b/graphics/pokemon/stunky/anim_front.png differ diff --git a/graphics/pokemon/stunky/front.png b/graphics/pokemon/stunky/front.png index cf124ce6a..da228e831 100644 Binary files a/graphics/pokemon/stunky/front.png and b/graphics/pokemon/stunky/front.png differ diff --git a/graphics/pokemon/stunky/normal.pal b/graphics/pokemon/stunky/normal.pal index 0aa39fd8f..f33806dab 100644 --- a/graphics/pokemon/stunky/normal.pal +++ b/graphics/pokemon/stunky/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 48 80 +72 56 96 16 16 16 -104 80 120 -160 144 112 -248 216 168 -96 80 56 +104 80 136 +168 136 104 +232 216 176 +96 88 64 40 32 56 112 64 40 -224 120 72 +240 136 72 248 248 248 104 96 112 176 176 208 -168 88 48 +128 72 48 0 0 0 0 0 0 diff --git a/graphics/pokemon/sudowoodo/anim_front.png b/graphics/pokemon/sudowoodo/anim_front.png index d9ca431ab..3eefcba5f 100644 Binary files a/graphics/pokemon/sudowoodo/anim_front.png and b/graphics/pokemon/sudowoodo/anim_front.png differ diff --git a/graphics/pokemon/sudowoodo/front.png b/graphics/pokemon/sudowoodo/front.png index 27ec5d0d4..df699a5c7 100644 Binary files a/graphics/pokemon/sudowoodo/front.png and b/graphics/pokemon/sudowoodo/front.png differ diff --git a/graphics/pokemon/sudowoodo/normal.pal b/graphics/pokemon/sudowoodo/normal.pal index ec032d38c..4f6c86659 100644 --- a/graphics/pokemon/sudowoodo/normal.pal +++ b/graphics/pokemon/sudowoodo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -80 56 48 +80 64 48 16 16 16 -208 152 128 -184 128 104 -136 88 72 -48 80 24 -144 216 120 -104 184 80 -96 136 56 -160 104 80 -224 120 120 -232 192 80 -208 160 56 +216 176 144 +200 144 104 +128 104 64 +48 88 24 +152 216 120 +72 192 64 +88 136 88 +168 128 88 +248 128 128 +248 200 0 +224 176 72 136 96 72 -184 152 136 +192 160 72 diff --git a/graphics/pokemon/suicune/anim_front.png b/graphics/pokemon/suicune/anim_front.png index 099146ccb..83c95cc1b 100644 Binary files a/graphics/pokemon/suicune/anim_front.png and b/graphics/pokemon/suicune/anim_front.png differ diff --git a/graphics/pokemon/suicune/front.png b/graphics/pokemon/suicune/front.png index 7620858d7..b1ff2a841 100644 Binary files a/graphics/pokemon/suicune/front.png and b/graphics/pokemon/suicune/front.png differ diff --git a/graphics/pokemon/suicune/normal.pal b/graphics/pokemon/suicune/normal.pal index 659236c75..266bc41ab 100644 --- a/graphics/pokemon/suicune/normal.pal +++ b/graphics/pokemon/suicune/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 64 96 +40 72 120 16 16 16 -96 176 176 -104 128 160 -112 80 136 -72 40 96 -160 104 168 -192 136 184 -64 72 80 -120 136 144 +88 184 208 +72 128 176 +120 88 176 +80 56 120 +168 104 208 +192 144 216 +80 80 80 +128 128 128 248 248 248 -176 64 64 -144 216 216 +208 16 16 +152 224 248 216 216 216 -168 184 184 +184 184 184 diff --git a/graphics/pokemon/sunflora/anim_front.png b/graphics/pokemon/sunflora/anim_front.png index 512b85256..ce54002b8 100644 Binary files a/graphics/pokemon/sunflora/anim_front.png and b/graphics/pokemon/sunflora/anim_front.png differ diff --git a/graphics/pokemon/sunflora/front.png b/graphics/pokemon/sunflora/front.png index 5290aa354..ebdac3a02 100644 Binary files a/graphics/pokemon/sunflora/front.png and b/graphics/pokemon/sunflora/front.png differ diff --git a/graphics/pokemon/sunflora/normal.pal b/graphics/pokemon/sunflora/normal.pal index 83fdabdb8..8425c047d 100644 --- a/graphics/pokemon/sunflora/normal.pal +++ b/graphics/pokemon/sunflora/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -184 152 40 +216 160 24 16 16 16 -248 216 128 -112 80 24 -248 200 56 -216 200 128 -248 240 168 -176 120 48 -144 72 80 -216 112 120 -64 128 64 -40 96 40 -96 168 80 -144 208 128 +248 240 16 +128 88 16 +232 200 8 +224 216 88 +248 248 160 +192 120 32 +152 32 0 +216 56 0 +88 128 64 +80 96 40 +112 168 48 +168 216 88 0 0 0 diff --git a/graphics/pokemon/sunkern/anim_front.png b/graphics/pokemon/sunkern/anim_front.png index fc042e7e2..ec83fa963 100644 Binary files a/graphics/pokemon/sunkern/anim_front.png and b/graphics/pokemon/sunkern/anim_front.png differ diff --git a/graphics/pokemon/sunkern/front.png b/graphics/pokemon/sunkern/front.png index be19820d0..72c2510ce 100644 Binary files a/graphics/pokemon/sunkern/front.png and b/graphics/pokemon/sunkern/front.png differ diff --git a/graphics/pokemon/sunkern/normal.pal b/graphics/pokemon/sunkern/normal.pal index d924c91c7..bd1479ef8 100644 --- a/graphics/pokemon/sunkern/normal.pal +++ b/graphics/pokemon/sunkern/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -88 152 64 -144 200 136 -48 96 32 -112 176 96 +248 128 248 +80 160 56 +160 240 56 +32 96 16 +112 208 40 16 16 16 -88 72 56 -240 216 112 -176 152 56 -216 192 72 +96 72 48 +248 248 0 +176 160 48 +208 200 48 248 248 248 -80 80 80 -64 48 32 +88 128 128 +72 56 40 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/surskit/anim_front.png b/graphics/pokemon/surskit/anim_front.png index 74a708929..9745c2eb0 100644 Binary files a/graphics/pokemon/surskit/anim_front.png and b/graphics/pokemon/surskit/anim_front.png differ diff --git a/graphics/pokemon/surskit/front.png b/graphics/pokemon/surskit/front.png index db20a260d..32508e31f 100644 Binary files a/graphics/pokemon/surskit/front.png and b/graphics/pokemon/surskit/front.png differ diff --git a/graphics/pokemon/surskit/normal.pal b/graphics/pokemon/surskit/normal.pal index 71c1ce3a9..bbd156dda 100644 --- a/graphics/pokemon/surskit/normal.pal +++ b/graphics/pokemon/surskit/normal.pal @@ -2,11 +2,11 @@ JASC-PAL 0100 16 152 208 160 -176 136 64 -248 224 160 +176 136 0 +240 208 104 16 16 16 -216 184 88 -112 96 40 +216 160 0 +120 96 48 32 88 104 136 208 232 72 168 208 diff --git a/graphics/pokemon/swablu/anim_front.png b/graphics/pokemon/swablu/anim_front.png index 43b716977..43c738b52 100644 Binary files a/graphics/pokemon/swablu/anim_front.png and b/graphics/pokemon/swablu/anim_front.png differ diff --git a/graphics/pokemon/swablu/front.png b/graphics/pokemon/swablu/front.png index d2ebdd4dd..b7d58d06b 100644 Binary files a/graphics/pokemon/swablu/front.png and b/graphics/pokemon/swablu/front.png differ diff --git a/graphics/pokemon/swablu/normal.pal b/graphics/pokemon/swablu/normal.pal index 93b698a20..4361d9645 100644 --- a/graphics/pokemon/swablu/normal.pal +++ b/graphics/pokemon/swablu/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 144 184 -40 96 128 -112 200 240 -80 176 224 +16 152 200 +56 104 128 +120 200 248 +16 176 232 16 16 16 -128 160 176 -112 128 144 +152 152 192 +128 128 144 248 248 248 -184 208 224 +200 200 224 88 88 112 -240 248 248 -163 117 138 +248 248 240 +224 104 120 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/swadloon/anim_front.png b/graphics/pokemon/swadloon/anim_front.png index 4440cdf0e..818802b1f 100644 Binary files a/graphics/pokemon/swadloon/anim_front.png and b/graphics/pokemon/swadloon/anim_front.png differ diff --git a/graphics/pokemon/swadloon/front.png b/graphics/pokemon/swadloon/front.png index 04aec3675..1b7f74db5 100644 Binary files a/graphics/pokemon/swadloon/front.png and b/graphics/pokemon/swadloon/front.png differ diff --git a/graphics/pokemon/swadloon/normal.pal b/graphics/pokemon/swadloon/normal.pal index 3c69b764c..b7eb1862e 100644 --- a/graphics/pokemon/swadloon/normal.pal +++ b/graphics/pokemon/swadloon/normal.pal @@ -3,15 +3,15 @@ JASC-PAL 16 152 208 160 16 16 16 -56 80 24 -144 200 56 -112 152 48 -24 56 24 -56 112 48 -64 144 56 -184 160 72 -248 224 88 -56 48 40 +56 96 24 +144 200 8 +88 152 48 +16 64 56 +24 112 72 +40 152 80 +176 160 40 +248 232 56 +88 88 56 120 112 56 248 248 248 0 0 0 diff --git a/graphics/pokemon/swalot/anim_front.png b/graphics/pokemon/swalot/anim_front.png index c15602412..20e234a6c 100644 Binary files a/graphics/pokemon/swalot/anim_front.png and b/graphics/pokemon/swalot/anim_front.png differ diff --git a/graphics/pokemon/swalot/front.png b/graphics/pokemon/swalot/front.png index a853b13fc..6ae76a4f3 100644 Binary files a/graphics/pokemon/swalot/front.png and b/graphics/pokemon/swalot/front.png differ diff --git a/graphics/pokemon/swalot/normal.pal b/graphics/pokemon/swalot/normal.pal index 28a45315b..cb2b60bb5 100644 --- a/graphics/pokemon/swalot/normal.pal +++ b/graphics/pokemon/swalot/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 56 112 -128 104 176 -152 128 208 -184 160 208 -16 16 16 +96 64 112 +136 104 200 +168 128 232 +192 160 248 +0 0 0 248 248 248 -224 112 120 -136 112 64 -200 168 88 -248 216 112 -72 72 72 +224 48 88 +128 120 64 +216 176 64 +248 208 88 +80 80 80 48 48 48 104 104 104 -88 64 136 -173 78 82 +112 72 144 +168 0 0 diff --git a/graphics/pokemon/swampert/anim_front.png b/graphics/pokemon/swampert/anim_front.png index 7ecf488bc..26eedc617 100644 Binary files a/graphics/pokemon/swampert/anim_front.png and b/graphics/pokemon/swampert/anim_front.png differ diff --git a/graphics/pokemon/swampert/front.png b/graphics/pokemon/swampert/front.png index 3966935c4..7a86a418d 100644 Binary files a/graphics/pokemon/swampert/front.png and b/graphics/pokemon/swampert/front.png differ diff --git a/graphics/pokemon/swampert/normal.pal b/graphics/pokemon/swampert/normal.pal index ba7b6e3b6..539768aa6 100644 --- a/graphics/pokemon/swampert/normal.pal +++ b/graphics/pokemon/swampert/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 24 24 24 -48 64 72 -80 96 120 -72 136 176 -48 80 112 -112 168 208 -112 72 48 -192 136 88 -240 168 104 -152 192 232 -200 120 160 -120 56 88 -144 176 184 -104 120 128 -208 232 232 +80 72 80 +104 104 136 +88 128 192 +88 88 136 +128 160 216 +128 72 40 +232 128 64 +240 176 64 +152 192 216 +192 96 120 +104 40 64 +168 184 176 +104 120 112 +216 232 224 diff --git a/graphics/pokemon/swanna/anim_front.png b/graphics/pokemon/swanna/anim_front.png index ae90cb66f..354bebb26 100644 Binary files a/graphics/pokemon/swanna/anim_front.png and b/graphics/pokemon/swanna/anim_front.png differ diff --git a/graphics/pokemon/swanna/front.png b/graphics/pokemon/swanna/front.png index 5f8c04cca..e1b58cf39 100644 Binary files a/graphics/pokemon/swanna/front.png and b/graphics/pokemon/swanna/front.png differ diff --git a/graphics/pokemon/swanna/normal.pal b/graphics/pokemon/swanna/normal.pal index ebc9577d9..ffb9ad30d 100644 --- a/graphics/pokemon/swanna/normal.pal +++ b/graphics/pokemon/swanna/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 128 176 -88 104 128 -240 248 248 -16 16 16 -176 200 224 -104 104 112 -248 248 248 +148 156 172 +90 106 131 +255 255 255 +0 0 0 +180 197 213 +98 98 131 +239 123 156 56 64 88 -248 208 64 -104 104 64 -56 104 152 -80 144 200 -120 184 240 -56 72 104 -152 136 72 +246 246 74 +172 164 98 +65 115 172 +98 148 180 +164 205 238 +57 74 106 +106 106 65 diff --git a/graphics/pokemon/swanna/shiny.pal b/graphics/pokemon/swanna/shiny.pal index c57e468eb..506a9ff09 100644 --- a/graphics/pokemon/swanna/shiny.pal +++ b/graphics/pokemon/swanna/shiny.pal @@ -8,7 +8,7 @@ JASC-PAL 16 16 16 200 184 224 96 96 128 -248 248 248 +239 123 156 56 56 56 248 200 72 136 80 40 diff --git a/graphics/pokemon/swellow/anim_front.png b/graphics/pokemon/swellow/anim_front.png index 33999c5a6..83d0ae8ec 100644 Binary files a/graphics/pokemon/swellow/anim_front.png and b/graphics/pokemon/swellow/anim_front.png differ diff --git a/graphics/pokemon/swellow/front.png b/graphics/pokemon/swellow/front.png index 1f347b480..32345b406 100644 Binary files a/graphics/pokemon/swellow/front.png and b/graphics/pokemon/swellow/front.png differ diff --git a/graphics/pokemon/swellow/normal.pal b/graphics/pokemon/swellow/normal.pal index 58eedc906..8dcf49a85 100644 --- a/graphics/pokemon/swellow/normal.pal +++ b/graphics/pokemon/swellow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 32 56 -216 88 112 -160 56 88 -72 88 128 -48 56 96 -96 32 48 +41 41 82 +197 90 115 +156 49 82 +65 90 123 +41 65 98 +98 32 57 16 16 16 -96 80 56 -248 248 248 -184 184 208 -240 208 120 -248 248 144 -160 136 80 -48 48 56 -72 88 88 +82 65 32 +255 255 255 +180 180 213 +222 164 49 +230 180 98 +148 90 16 +49 49 57 +90 90 90 diff --git a/graphics/pokemon/swinub/anim_front.png b/graphics/pokemon/swinub/anim_front.png index 9ee564c1d..ee4dae253 100644 Binary files a/graphics/pokemon/swinub/anim_front.png and b/graphics/pokemon/swinub/anim_front.png differ diff --git a/graphics/pokemon/swinub/front.png b/graphics/pokemon/swinub/front.png index 8d96e08b6..ec1915009 100644 Binary files a/graphics/pokemon/swinub/front.png and b/graphics/pokemon/swinub/front.png differ diff --git a/graphics/pokemon/swinub/normal.pal b/graphics/pokemon/swinub/normal.pal index 7a67baa29..f62275047 100644 --- a/graphics/pokemon/swinub/normal.pal +++ b/graphics/pokemon/swinub/normal.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 152 208 160 -88 48 24 -160 112 96 -112 72 56 +65 49 8 +156 123 106 +115 74 49 16 16 16 -208 152 120 -56 32 16 -240 144 152 -224 104 120 -160 80 88 +205 156 123 +57 41 0 +246 139 156 +180 115 123 +148 90 90 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/swoobat/anim_front.png b/graphics/pokemon/swoobat/anim_front.png index ca8972b27..2b57a2e43 100644 Binary files a/graphics/pokemon/swoobat/anim_front.png and b/graphics/pokemon/swoobat/anim_front.png differ diff --git a/graphics/pokemon/swoobat/front.png b/graphics/pokemon/swoobat/front.png index 4bb05cbc4..7a4ccae93 100644 Binary files a/graphics/pokemon/swoobat/front.png and b/graphics/pokemon/swoobat/front.png differ diff --git a/graphics/pokemon/swoobat/normal.pal b/graphics/pokemon/swoobat/normal.pal index c903f6096..8d4e3b400 100644 --- a/graphics/pokemon/swoobat/normal.pal +++ b/graphics/pokemon/swoobat/normal.pal @@ -2,9 +2,9 @@ JASC-PAL 0100 16 104 48 152 -48 40 40 +48 48 48 16 16 16 -80 64 72 +72 72 80 32 56 80 64 136 208 80 80 104 diff --git a/graphics/pokemon/taillow/anim_front.png b/graphics/pokemon/taillow/anim_front.png index d99d0d783..7e5c54443 100644 Binary files a/graphics/pokemon/taillow/anim_front.png and b/graphics/pokemon/taillow/anim_front.png differ diff --git a/graphics/pokemon/taillow/front.png b/graphics/pokemon/taillow/front.png index 76aa69920..3e4be10ea 100644 Binary files a/graphics/pokemon/taillow/front.png and b/graphics/pokemon/taillow/front.png differ diff --git a/graphics/pokemon/taillow/normal.pal b/graphics/pokemon/taillow/normal.pal index 63cab5336..2277c5f72 100644 --- a/graphics/pokemon/taillow/normal.pal +++ b/graphics/pokemon/taillow/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 56 112 -80 88 136 -160 72 80 -224 88 112 -32 32 56 +49 74 123 +90 106 156 +148 57 82 +205 82 115 +32 41 82 16 16 16 -176 184 208 -248 248 248 -64 64 64 -160 128 88 -248 232 176 -224 192 104 -96 80 56 +189 189 205 +255 255 255 +57 57 49 +164 115 49 +238 189 98 +230 148 16 +82 74 41 112 136 176 0 0 0 diff --git a/graphics/pokemon/tangela/anim_front.png b/graphics/pokemon/tangela/anim_front.png index b7d278024..1a768a091 100644 Binary files a/graphics/pokemon/tangela/anim_front.png and b/graphics/pokemon/tangela/anim_front.png differ diff --git a/graphics/pokemon/tangela/front.png b/graphics/pokemon/tangela/front.png index 0904495ee..34f9ff5fb 100644 Binary files a/graphics/pokemon/tangela/front.png and b/graphics/pokemon/tangela/front.png differ diff --git a/graphics/pokemon/tangela/normal.pal b/graphics/pokemon/tangela/normal.pal index 9455b1ee7..d90fcacca 100644 --- a/graphics/pokemon/tangela/normal.pal +++ b/graphics/pokemon/tangela/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 96 128 -120 184 216 -80 136 176 -48 48 64 +40 88 128 +80 152 192 +56 112 168 +16 40 72 16 16 16 -80 72 72 -192 176 200 +80 80 80 +176 176 176 248 248 248 112 40 40 -160 80 80 -240 152 136 -232 104 80 +168 40 64 +248 128 128 +216 72 104 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/tangrowth/anim_front.png b/graphics/pokemon/tangrowth/anim_front.png index 170769a92..564dc5626 100644 Binary files a/graphics/pokemon/tangrowth/anim_front.png and b/graphics/pokemon/tangrowth/anim_front.png differ diff --git a/graphics/pokemon/tangrowth/front.png b/graphics/pokemon/tangrowth/front.png index c43652a81..ae389e74a 100644 Binary files a/graphics/pokemon/tangrowth/front.png and b/graphics/pokemon/tangrowth/front.png differ diff --git a/graphics/pokemon/tangrowth/normal.pal b/graphics/pokemon/tangrowth/normal.pal index 451020c4c..10fe2ebbc 100644 --- a/graphics/pokemon/tangrowth/normal.pal +++ b/graphics/pokemon/tangrowth/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -152 56 88 -208 88 128 -80 24 48 -40 56 80 -56 88 112 -112 160 192 -72 120 160 +184 32 104 +208 88 144 +88 24 56 +24 56 96 +40 88 128 +80 152 192 +56 112 168 0 0 0 -80 80 88 +72 72 80 248 248 248 -40 48 56 +48 48 56 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/tauros/anim_front.png b/graphics/pokemon/tauros/anim_front.png index d1051ecc7..1d186f77b 100644 Binary files a/graphics/pokemon/tauros/anim_front.png and b/graphics/pokemon/tauros/anim_front.png differ diff --git a/graphics/pokemon/tauros/front.png b/graphics/pokemon/tauros/front.png index 0f088d59d..587db94cd 100644 Binary files a/graphics/pokemon/tauros/front.png and b/graphics/pokemon/tauros/front.png differ diff --git a/graphics/pokemon/tauros/normal.pal b/graphics/pokemon/tauros/normal.pal index ea90060c1..1bb372aa7 100644 --- a/graphics/pokemon/tauros/normal.pal +++ b/graphics/pokemon/tauros/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 56 96 -88 104 152 -16 16 16 -56 40 24 -120 104 88 -80 64 56 -128 88 64 -208 144 80 -160 152 136 -208 216 240 -152 160 184 -56 48 24 -232 184 120 -168 120 64 +56 56 72 +104 104 128 +0 0 0 +72 56 40 +120 104 96 +80 72 64 +136 96 32 +216 160 72 +152 144 136 +200 200 216 +152 152 168 +80 56 16 +224 192 120 +176 128 48 248 248 248 diff --git a/graphics/pokemon/teddiursa/anim_front.png b/graphics/pokemon/teddiursa/anim_front.png index cc6737bc9..2c6e3f3b1 100644 Binary files a/graphics/pokemon/teddiursa/anim_front.png and b/graphics/pokemon/teddiursa/anim_front.png differ diff --git a/graphics/pokemon/teddiursa/front.png b/graphics/pokemon/teddiursa/front.png index 83302972d..9412d0c7f 100644 Binary files a/graphics/pokemon/teddiursa/front.png and b/graphics/pokemon/teddiursa/front.png differ diff --git a/graphics/pokemon/teddiursa/normal.pal b/graphics/pokemon/teddiursa/normal.pal index fea71f114..59d40c386 100644 --- a/graphics/pokemon/teddiursa/normal.pal +++ b/graphics/pokemon/teddiursa/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 56 24 -176 96 40 -232 136 64 -200 112 56 +106 65 24 +180 98 32 +255 131 57 +222 115 49 16 16 16 -240 224 168 -208 176 96 +255 255 255 +238 172 82 248 248 248 -248 224 120 -88 88 88 -176 176 168 -216 216 216 +255 230 164 +106 106 123 +180 180 189 +222 222 222 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/tentacool/anim_front.png b/graphics/pokemon/tentacool/anim_front.png index fe0bffbef..4ccacc344 100644 Binary files a/graphics/pokemon/tentacool/anim_front.png and b/graphics/pokemon/tentacool/anim_front.png differ diff --git a/graphics/pokemon/tentacool/front.png b/graphics/pokemon/tentacool/front.png index 67396165b..460479345 100644 Binary files a/graphics/pokemon/tentacool/front.png and b/graphics/pokemon/tentacool/front.png differ diff --git a/graphics/pokemon/tentacool/normal.pal b/graphics/pokemon/tentacool/normal.pal index 69a7e55a5..2f409fd92 100644 --- a/graphics/pokemon/tentacool/normal.pal +++ b/graphics/pokemon/tentacool/normal.pal @@ -6,14 +6,14 @@ JASC-PAL 104 16 40 152 208 240 104 184 224 -168 40 72 +168 32 64 248 248 248 232 184 200 -200 96 144 +216 80 128 48 144 192 16 16 16 208 208 208 -88 80 72 -200 184 176 -120 104 96 -168 152 136 +80 80 88 +184 184 184 +112 104 120 +152 144 160 diff --git a/graphics/pokemon/tentacruel/anim_front.png b/graphics/pokemon/tentacruel/anim_front.png index 3c2ffa461..d401d1eaf 100644 Binary files a/graphics/pokemon/tentacruel/anim_front.png and b/graphics/pokemon/tentacruel/anim_front.png differ diff --git a/graphics/pokemon/tentacruel/front.png b/graphics/pokemon/tentacruel/front.png index 58112bc50..b751ed684 100644 Binary files a/graphics/pokemon/tentacruel/front.png and b/graphics/pokemon/tentacruel/front.png differ diff --git a/graphics/pokemon/tentacruel/normal.pal b/graphics/pokemon/tentacruel/normal.pal index 82ee96b36..c28517e86 100644 --- a/graphics/pokemon/tentacruel/normal.pal +++ b/graphics/pokemon/tentacruel/normal.pal @@ -8,12 +8,12 @@ JASC-PAL 88 176 216 48 144 184 16 16 16 -200 96 144 +216 80 128 232 184 200 248 248 248 -168 40 72 +168 32 64 208 208 208 -64 72 80 -168 168 152 +80 80 88 +152 144 160 104 112 104 -216 200 184 +184 184 184 diff --git a/graphics/pokemon/tepig/anim_front.png b/graphics/pokemon/tepig/anim_front.png index 4c50ebcaf..e2e6da880 100644 Binary files a/graphics/pokemon/tepig/anim_front.png and b/graphics/pokemon/tepig/anim_front.png differ diff --git a/graphics/pokemon/tepig/front.png b/graphics/pokemon/tepig/front.png index ebe16e580..0e706ecad 100644 Binary files a/graphics/pokemon/tepig/front.png and b/graphics/pokemon/tepig/front.png differ diff --git a/graphics/pokemon/tepig/normal.pal b/graphics/pokemon/tepig/normal.pal index f66c90909..6938b34af 100644 --- a/graphics/pokemon/tepig/normal.pal +++ b/graphics/pokemon/tepig/normal.pal @@ -3,12 +3,12 @@ JASC-PAL 16 152 208 160 16 16 16 -72 64 56 -40 32 40 +72 56 48 +48 32 32 104 56 40 176 88 56 -224 120 104 -200 80 72 +224 104 40 +200 64 56 144 120 40 240 128 72 248 200 64 diff --git a/graphics/pokemon/terrakion/anim_front.png b/graphics/pokemon/terrakion/anim_front.png index 5a16f12e5..ec6c37876 100644 Binary files a/graphics/pokemon/terrakion/anim_front.png and b/graphics/pokemon/terrakion/anim_front.png differ diff --git a/graphics/pokemon/terrakion/front.png b/graphics/pokemon/terrakion/front.png index de8a977f6..53b731785 100644 Binary files a/graphics/pokemon/terrakion/front.png and b/graphics/pokemon/terrakion/front.png differ diff --git a/graphics/pokemon/terrakion/normal.pal b/graphics/pokemon/terrakion/normal.pal index 57ca72204..84bbdb56e 100644 --- a/graphics/pokemon/terrakion/normal.pal +++ b/graphics/pokemon/terrakion/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 +153 204 153 +0 0 0 +64 56 48 +34 34 34 +96 80 72 +176 168 168 +51 51 51 +128 128 128 +160 104 56 +248 136 0 +176 160 128 +255 255 255 +216 200 168 +136 120 88 +80 72 72 0 0 0 -64 48 40 -40 32 32 -96 72 64 -160 168 184 -56 56 56 -128 120 120 -176 88 48 -248 144 88 -136 112 88 -248 248 248 -200 168 136 -88 80 88 -80 72 64 -40 32 32 diff --git a/graphics/pokemon/throh/anim_front.png b/graphics/pokemon/throh/anim_front.png index b51d87ad8..d99b04374 100644 Binary files a/graphics/pokemon/throh/anim_front.png and b/graphics/pokemon/throh/anim_front.png differ diff --git a/graphics/pokemon/throh/front.png b/graphics/pokemon/throh/front.png index 9c8fa4fcc..82351e40b 100644 Binary files a/graphics/pokemon/throh/front.png and b/graphics/pokemon/throh/front.png differ diff --git a/graphics/pokemon/throh/normal.pal b/graphics/pokemon/throh/normal.pal index 73c16e875..45da3c8f5 100644 --- a/graphics/pokemon/throh/normal.pal +++ b/graphics/pokemon/throh/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -96 32 32 -208 88 80 +96 24 24 +216 88 88 16 16 16 -64 64 64 -144 56 48 -224 224 208 -40 40 40 -136 120 120 -184 176 152 +56 56 56 +168 48 48 +232 224 208 +40 40 32 +144 136 128 +192 184 168 240 240 240 -0 0 0 +216 88 88 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/thundurus/anim_front.png b/graphics/pokemon/thundurus/anim_front.png index 82089b223..1a16e76c2 100644 Binary files a/graphics/pokemon/thundurus/anim_front.png and b/graphics/pokemon/thundurus/anim_front.png differ diff --git a/graphics/pokemon/thundurus/front.png b/graphics/pokemon/thundurus/front.png index 455723e04..b8ff39958 100644 Binary files a/graphics/pokemon/thundurus/front.png and b/graphics/pokemon/thundurus/front.png differ diff --git a/graphics/pokemon/thundurus/normal.pal b/graphics/pokemon/thundurus/normal.pal index 653b89e32..76ba74a07 100644 --- a/graphics/pokemon/thundurus/normal.pal +++ b/graphics/pokemon/thundurus/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -88 88 112 -248 248 248 -152 152 184 -16 16 16 -32 32 80 -96 88 176 -72 112 144 -56 56 120 -96 192 232 -56 56 64 -248 192 120 -48 48 64 -24 32 32 -88 88 96 -176 128 80 +153 204 153 +112 112 112 +255 255 255 +176 176 184 +17 17 17 +34 34 85 +102 85 170 +80 128 160 +51 51 119 +96 192 248 +48 48 48 +248 192 88 +24 24 24 +72 72 72 +170 136 85 +0 0 0 diff --git a/graphics/pokemon/thundurus/therian/anim_front.png b/graphics/pokemon/thundurus/therian/anim_front.png index 9d09a76b8..e87cf107b 100644 Binary files a/graphics/pokemon/thundurus/therian/anim_front.png and b/graphics/pokemon/thundurus/therian/anim_front.png differ diff --git a/graphics/pokemon/thundurus/therian/front.png b/graphics/pokemon/thundurus/therian/front.png index 04888d1e7..4d1543d59 100644 Binary files a/graphics/pokemon/thundurus/therian/front.png and b/graphics/pokemon/thundurus/therian/front.png differ diff --git a/graphics/pokemon/thundurus/therian/normal.pal b/graphics/pokemon/thundurus/therian/normal.pal index d6415c50f..41ec8e38f 100644 --- a/graphics/pokemon/thundurus/therian/normal.pal +++ b/graphics/pokemon/thundurus/therian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 104 112 +112 112 112 248 248 248 16 16 16 -32 24 80 -192 176 168 -88 72 160 -56 48 112 -80 128 152 -48 80 96 -112 184 232 -168 128 80 -232 200 144 -64 56 56 -32 32 40 -48 104 144 +24 40 80 +176 176 184 +88 72 168 +56 56 128 +80 128 160 +40 64 104 +96 192 248 +208 144 48 +248 192 88 +48 48 48 +32 32 32 +0 0 0 diff --git a/graphics/pokemon/timburr/anim_front.png b/graphics/pokemon/timburr/anim_front.png index caaee7540..4e32b20fd 100644 Binary files a/graphics/pokemon/timburr/anim_front.png and b/graphics/pokemon/timburr/anim_front.png differ diff --git a/graphics/pokemon/timburr/front.png b/graphics/pokemon/timburr/front.png index 8a7d351e4..b79489a86 100644 Binary files a/graphics/pokemon/timburr/front.png and b/graphics/pokemon/timburr/front.png differ diff --git a/graphics/pokemon/timburr/normal.pal b/graphics/pokemon/timburr/normal.pal index 3cdc96b4e..e9d711a76 100644 --- a/graphics/pokemon/timburr/normal.pal +++ b/graphics/pokemon/timburr/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 88 80 72 16 16 16 -192 176 144 +192 184 168 112 48 80 -248 96 128 -152 128 104 -176 72 88 +248 120 136 +152 136 128 +192 88 112 64 72 80 192 192 192 248 248 248 120 112 112 -56 40 24 -96 56 24 -144 88 40 -200 152 96 +88 56 8 +120 80 8 +168 112 8 +216 176 96 diff --git a/graphics/pokemon/tirtouga/anim_front.png b/graphics/pokemon/tirtouga/anim_front.png index dc4a722e4..37cdaff8e 100644 Binary files a/graphics/pokemon/tirtouga/anim_front.png and b/graphics/pokemon/tirtouga/anim_front.png differ diff --git a/graphics/pokemon/tirtouga/front.png b/graphics/pokemon/tirtouga/front.png index 61446de0e..3228a2f66 100644 Binary files a/graphics/pokemon/tirtouga/front.png and b/graphics/pokemon/tirtouga/front.png differ diff --git a/graphics/pokemon/tirtouga/normal.pal b/graphics/pokemon/tirtouga/normal.pal index dac560816..752ec9327 100644 --- a/graphics/pokemon/tirtouga/normal.pal +++ b/graphics/pokemon/tirtouga/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 72 104 -104 160 208 +32 80 112 +72 152 216 16 16 16 48 56 72 -72 112 152 -112 120 144 -72 88 120 +48 112 168 +104 120 136 +80 96 112 224 224 224 136 200 216 -128 80 96 -168 112 120 -64 72 88 +192 96 120 +240 120 152 +56 72 80 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/togekiss/anim_front.png b/graphics/pokemon/togekiss/anim_front.png index 10a6c63ba..f902aff3b 100644 Binary files a/graphics/pokemon/togekiss/anim_front.png and b/graphics/pokemon/togekiss/anim_front.png differ diff --git a/graphics/pokemon/togekiss/front.png b/graphics/pokemon/togekiss/front.png index 6509b14ac..0a699e780 100644 Binary files a/graphics/pokemon/togekiss/front.png and b/graphics/pokemon/togekiss/front.png differ diff --git a/graphics/pokemon/togekiss/normal.pal b/graphics/pokemon/togekiss/normal.pal index 0c770d6a4..6cce97f24 100644 --- a/graphics/pokemon/togekiss/normal.pal +++ b/graphics/pokemon/togekiss/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -168 208 200 -136 160 160 -72 96 96 -216 240 240 -16 16 16 -32 144 216 -128 32 32 -200 72 64 -88 192 232 +184 192 216 +128 152 176 +72 88 112 232 232 248 -224 128 128 -24 104 152 +16 16 16 +64 128 232 +112 48 40 +200 72 48 +144 176 248 +248 248 248 +184 128 128 +80 88 168 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/togepi/anim_front.png b/graphics/pokemon/togepi/anim_front.png index e08da7b4b..07d7f05b8 100644 Binary files a/graphics/pokemon/togepi/anim_front.png and b/graphics/pokemon/togepi/anim_front.png differ diff --git a/graphics/pokemon/togepi/front.png b/graphics/pokemon/togepi/front.png index 0c6d162f7..e6520872b 100644 Binary files a/graphics/pokemon/togepi/front.png and b/graphics/pokemon/togepi/front.png differ diff --git a/graphics/pokemon/togepi/normal.pal b/graphics/pokemon/togepi/normal.pal index bbac7b3f8..0fb20049a 100644 --- a/graphics/pokemon/togepi/normal.pal +++ b/graphics/pokemon/togepi/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 112 96 -16 16 16 -248 232 184 -184 176 128 -104 88 64 -240 216 152 -128 88 104 +144 112 88 +0 0 0 +240 232 192 +200 176 112 +112 72 72 +240 208 160 +168 32 32 248 248 248 -144 136 120 -232 224 208 -64 176 216 -240 104 80 -200 80 48 -208 200 176 -56 144 168 +120 136 144 +208 216 216 +72 128 192 +216 112 104 +192 64 64 +176 176 192 +48 96 168 diff --git a/graphics/pokemon/togetic/anim_front.png b/graphics/pokemon/togetic/anim_front.png index 629ea3c50..1079c2b01 100644 Binary files a/graphics/pokemon/togetic/anim_front.png and b/graphics/pokemon/togetic/anim_front.png differ diff --git a/graphics/pokemon/togetic/front.png b/graphics/pokemon/togetic/front.png index 37434e899..0bacb627e 100644 Binary files a/graphics/pokemon/togetic/front.png and b/graphics/pokemon/togetic/front.png differ diff --git a/graphics/pokemon/togetic/normal.pal b/graphics/pokemon/togetic/normal.pal index d49068655..0b1731459 100644 --- a/graphics/pokemon/togetic/normal.pal +++ b/graphics/pokemon/togetic/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -112 120 120 -240 248 240 -16 16 16 -176 192 168 -224 232 216 -248 72 64 -176 56 48 -48 152 200 -48 112 152 -153 103 91 -196 138 129 +112 120 128 +248 248 248 +0 0 0 +168 192 184 +208 232 232 +216 64 56 +184 24 8 +40 144 224 +16 96 184 +192 48 32 +136 16 16 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/torchic/anim_front.png b/graphics/pokemon/torchic/anim_front.png index 241b673ae..f7eb75e3d 100644 Binary files a/graphics/pokemon/torchic/anim_front.png and b/graphics/pokemon/torchic/anim_front.png differ diff --git a/graphics/pokemon/torchic/front.png b/graphics/pokemon/torchic/front.png index 56ab67fd4..b4e2066d1 100644 Binary files a/graphics/pokemon/torchic/front.png and b/graphics/pokemon/torchic/front.png differ diff --git a/graphics/pokemon/torchic/normal.pal b/graphics/pokemon/torchic/normal.pal index 84d058a30..1a2a98caa 100644 --- a/graphics/pokemon/torchic/normal.pal +++ b/graphics/pokemon/torchic/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 168 136 0 232 184 48 240 216 104 -24 24 24 +0 0 0 168 64 16 -248 152 32 -224 104 0 -248 184 112 +248 136 48 +224 88 32 +248 168 80 120 72 24 248 248 248 -168 144 56 -248 232 144 -216 200 96 +168 136 0 +240 216 104 +232 184 48 136 80 32 0 0 0 diff --git a/graphics/pokemon/torkoal/anim_front.png b/graphics/pokemon/torkoal/anim_front.png index 0a0162d48..71f1b97fc 100644 Binary files a/graphics/pokemon/torkoal/anim_front.png and b/graphics/pokemon/torkoal/anim_front.png differ diff --git a/graphics/pokemon/torkoal/front.png b/graphics/pokemon/torkoal/front.png index ff72e1c86..abe45c343 100644 Binary files a/graphics/pokemon/torkoal/front.png and b/graphics/pokemon/torkoal/front.png differ diff --git a/graphics/pokemon/torkoal/normal.pal b/graphics/pokemon/torkoal/normal.pal index 15c05fb0f..4488371de 100644 --- a/graphics/pokemon/torkoal/normal.pal +++ b/graphics/pokemon/torkoal/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -192 168 136 -240 240 216 -232 200 160 -144 136 136 -80 56 40 -240 160 128 -240 136 88 -160 88 48 -192 112 64 +184 168 160 +232 216 208 +208 200 192 +128 128 128 +88 48 56 +248 168 104 +232 128 64 +168 80 56 +200 96 72 56 56 56 -16 16 16 -96 88 88 -224 56 64 -240 152 152 +0 0 0 +96 96 96 +104 40 40 +248 32 32 0 0 0 diff --git a/graphics/pokemon/tornadus/anim_front.png b/graphics/pokemon/tornadus/anim_front.png index 6b9f6e478..675dfa020 100644 Binary files a/graphics/pokemon/tornadus/anim_front.png and b/graphics/pokemon/tornadus/anim_front.png differ diff --git a/graphics/pokemon/tornadus/front.png b/graphics/pokemon/tornadus/front.png index 513895275..b121301dd 100644 Binary files a/graphics/pokemon/tornadus/front.png and b/graphics/pokemon/tornadus/front.png differ diff --git a/graphics/pokemon/tornadus/normal.pal b/graphics/pokemon/tornadus/normal.pal index 4d6c5ff02..c0b2eca35 100644 --- a/graphics/pokemon/tornadus/normal.pal +++ b/graphics/pokemon/tornadus/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 80 104 +112 112 112 248 248 248 16 16 16 -160 152 176 -120 80 168 -48 40 80 -64 104 64 -96 168 88 -80 56 112 -56 56 56 -248 208 120 -96 72 64 -176 128 80 -240 192 136 +176 176 184 +128 64 168 +64 32 80 +64 112 56 +72 152 64 +88 48 112 +40 72 48 +248 192 0 +104 64 40 +168 120 72 +216 176 104 0 0 0 diff --git a/graphics/pokemon/tornadus/therian/anim_front.png b/graphics/pokemon/tornadus/therian/anim_front.png index c0eb46fae..574aa1cc7 100644 Binary files a/graphics/pokemon/tornadus/therian/anim_front.png and b/graphics/pokemon/tornadus/therian/anim_front.png differ diff --git a/graphics/pokemon/tornadus/therian/front.png b/graphics/pokemon/tornadus/therian/front.png index 9c47da33e..b168d3bd9 100644 Binary files a/graphics/pokemon/tornadus/therian/front.png and b/graphics/pokemon/tornadus/therian/front.png differ diff --git a/graphics/pokemon/tornadus/therian/normal.pal b/graphics/pokemon/tornadus/therian/normal.pal index d5f0fdfe7..dc8578fa0 100644 --- a/graphics/pokemon/tornadus/therian/normal.pal +++ b/graphics/pokemon/tornadus/therian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -104 64 120 +88 56 112 64 32 80 -144 96 168 +128 64 168 16 16 16 -112 104 112 +112 112 112 248 248 248 -192 176 168 -48 80 40 -112 160 80 -248 200 120 -72 120 56 -184 136 80 -120 88 56 -232 56 16 +176 176 184 +40 72 48 +72 152 64 +216 176 104 +64 112 56 +168 120 72 +104 64 40 +216 56 40 0 0 0 diff --git a/graphics/pokemon/torterra/anim_front.png b/graphics/pokemon/torterra/anim_front.png index cd41f4e31..cbc7c3e52 100644 Binary files a/graphics/pokemon/torterra/anim_front.png and b/graphics/pokemon/torterra/anim_front.png differ diff --git a/graphics/pokemon/torterra/front.png b/graphics/pokemon/torterra/front.png index ee1e5df76..2ef06d2f0 100644 Binary files a/graphics/pokemon/torterra/front.png and b/graphics/pokemon/torterra/front.png differ diff --git a/graphics/pokemon/torterra/normal.pal b/graphics/pokemon/torterra/normal.pal index 82cf9dd2e..48962babc 100644 --- a/graphics/pokemon/torterra/normal.pal +++ b/graphics/pokemon/torterra/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 88 40 -64 136 88 -88 160 96 +24 96 24 +48 136 56 +64 168 64 16 16 16 160 160 160 -120 120 120 -216 216 216 -184 184 176 -80 56 32 -128 96 56 -176 128 72 +104 112 120 +224 224 224 +184 184 184 +96 72 56 +136 104 64 +176 128 80 56 88 40 72 80 88 -176 128 72 +176 128 80 0 0 0 diff --git a/graphics/pokemon/totodile/anim_front.png b/graphics/pokemon/totodile/anim_front.png index e7e0f11cd..49e4fee75 100644 Binary files a/graphics/pokemon/totodile/anim_front.png and b/graphics/pokemon/totodile/anim_front.png differ diff --git a/graphics/pokemon/totodile/front.png b/graphics/pokemon/totodile/front.png index 61c435e95..ba9c9994b 100644 Binary files a/graphics/pokemon/totodile/front.png and b/graphics/pokemon/totodile/front.png differ diff --git a/graphics/pokemon/totodile/normal.pal b/graphics/pokemon/totodile/normal.pal index 665f9c176..bf7ef18af 100644 --- a/graphics/pokemon/totodile/normal.pal +++ b/graphics/pokemon/totodile/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 208 152 184 -64 136 152 -32 72 88 -88 200 208 -144 232 232 +32 136 184 +40 88 128 +80 192 216 +152 224 248 16 16 16 248 248 248 64 64 72 176 176 176 -120 24 32 +120 24 0 152 80 88 -168 48 72 +200 64 32 232 120 120 -160 136 80 -240 208 120 +144 128 32 +248 224 136 184 104 104 diff --git a/graphics/pokemon/toxicroak/anim_front.png b/graphics/pokemon/toxicroak/anim_front.png index 9eaccecbc..105ad18cb 100644 Binary files a/graphics/pokemon/toxicroak/anim_front.png and b/graphics/pokemon/toxicroak/anim_front.png differ diff --git a/graphics/pokemon/toxicroak/front.png b/graphics/pokemon/toxicroak/front.png index d21885a99..27acc59b7 100644 Binary files a/graphics/pokemon/toxicroak/front.png and b/graphics/pokemon/toxicroak/front.png differ diff --git a/graphics/pokemon/toxicroak/normal.pal b/graphics/pokemon/toxicroak/normal.pal index 9b23239b3..b18a334af 100644 --- a/graphics/pokemon/toxicroak/normal.pal +++ b/graphics/pokemon/toxicroak/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 96 136 +72 72 136 16 16 16 -88 144 184 -160 200 200 -48 48 40 +104 112 208 +128 152 248 +48 48 64 80 80 80 -168 128 24 -240 184 48 -224 96 88 -160 64 56 -184 176 168 +176 136 24 +248 208 24 +224 80 88 +152 56 56 +176 176 192 248 248 248 56 56 80 -232 168 160 -136 120 120 +248 152 160 +120 120 136 diff --git a/graphics/pokemon/tranquill/anim_front.png b/graphics/pokemon/tranquill/anim_front.png index 8141ed766..a3063146b 100644 Binary files a/graphics/pokemon/tranquill/anim_front.png and b/graphics/pokemon/tranquill/anim_front.png differ diff --git a/graphics/pokemon/tranquill/front.png b/graphics/pokemon/tranquill/front.png index b7b0789e0..2294a1f13 100644 Binary files a/graphics/pokemon/tranquill/front.png and b/graphics/pokemon/tranquill/front.png differ diff --git a/graphics/pokemon/tranquill/normal.pal b/graphics/pokemon/tranquill/normal.pal index 5752e8a42..d85d078ae 100644 --- a/graphics/pokemon/tranquill/normal.pal +++ b/graphics/pokemon/tranquill/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -40 32 32 -72 64 64 -16 16 16 -120 40 56 -208 72 96 -200 208 224 -120 120 120 +48 48 48 +72 72 72 +8 8 8 +136 32 48 +248 64 120 +216 216 216 +128 128 128 248 248 248 -160 168 176 +160 160 160 184 184 184 -240 176 72 -160 112 48 -144 144 152 -152 88 88 -216 120 128 +248 200 56 +152 120 8 +144 144 144 +184 96 96 +248 152 152 diff --git a/graphics/pokemon/trapinch/anim_front.png b/graphics/pokemon/trapinch/anim_front.png index a0f792c07..e8ee63af6 100644 Binary files a/graphics/pokemon/trapinch/anim_front.png and b/graphics/pokemon/trapinch/anim_front.png differ diff --git a/graphics/pokemon/trapinch/front.png b/graphics/pokemon/trapinch/front.png index 110c9ab4e..a74591721 100644 Binary files a/graphics/pokemon/trapinch/front.png and b/graphics/pokemon/trapinch/front.png differ diff --git a/graphics/pokemon/trapinch/normal.pal b/graphics/pokemon/trapinch/normal.pal index a771387d7..affb02664 100644 --- a/graphics/pokemon/trapinch/normal.pal +++ b/graphics/pokemon/trapinch/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -168 96 64 -240 168 136 -240 136 88 -104 64 48 +192 88 72 +248 144 120 +232 112 64 +112 64 64 32 32 32 -216 224 232 +200 200 192 248 248 248 -184 184 208 -136 144 152 -72 72 88 +160 168 160 +128 128 128 +64 64 48 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/treecko/anim_front.png b/graphics/pokemon/treecko/anim_front.png index 728b53a33..867137cfc 100644 Binary files a/graphics/pokemon/treecko/anim_front.png and b/graphics/pokemon/treecko/anim_front.png differ diff --git a/graphics/pokemon/treecko/front.png b/graphics/pokemon/treecko/front.png index 67fb82a27..6869c279b 100644 Binary files a/graphics/pokemon/treecko/front.png and b/graphics/pokemon/treecko/front.png differ diff --git a/graphics/pokemon/treecko/normal.pal b/graphics/pokemon/treecko/normal.pal index e2a879c93..b655471e4 100644 --- a/graphics/pokemon/treecko/normal.pal +++ b/graphics/pokemon/treecko/normal.pal @@ -7,13 +7,13 @@ JASC-PAL 224 248 160 128 176 40 192 224 104 -168 136 32 +160 128 0 248 248 248 -248 208 56 -248 232 160 -224 72 96 -128 32 40 -240 128 136 -40 80 24 -80 128 56 -128 176 112 +248 160 32 +248 232 80 +224 72 104 +168 56 72 +240 96 120 +48 80 40 +56 104 56 +88 152 88 diff --git a/graphics/pokemon/tropius/anim_front.png b/graphics/pokemon/tropius/anim_front.png index 975e12732..a8ce49059 100644 Binary files a/graphics/pokemon/tropius/anim_front.png and b/graphics/pokemon/tropius/anim_front.png differ diff --git a/graphics/pokemon/tropius/front.png b/graphics/pokemon/tropius/front.png index 2e6ea1add..4bece6d40 100644 Binary files a/graphics/pokemon/tropius/front.png and b/graphics/pokemon/tropius/front.png differ diff --git a/graphics/pokemon/tropius/normal.pal b/graphics/pokemon/tropius/normal.pal index 1d980f30c..9bffa5d77 100644 --- a/graphics/pokemon/tropius/normal.pal +++ b/graphics/pokemon/tropius/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -88 136 80 -64 88 56 -88 176 104 +56 136 72 +32 96 32 +80 168 80 16 16 16 -144 200 152 -88 64 48 +104 192 104 +80 56 48 248 248 248 -152 120 96 -184 160 136 -120 96 80 -224 176 96 -248 224 136 -176 120 144 -88 64 48 +144 112 80 +176 144 104 +120 88 72 +232 184 56 +248 248 104 +224 104 136 0 0 0 +80 56 48 diff --git a/graphics/pokemon/trubbish/anim_front.png b/graphics/pokemon/trubbish/anim_front.png index 46c3ba76e..3ed705609 100644 Binary files a/graphics/pokemon/trubbish/anim_front.png and b/graphics/pokemon/trubbish/anim_front.png differ diff --git a/graphics/pokemon/trubbish/front.png b/graphics/pokemon/trubbish/front.png index f1b7eb3f7..75fb61a26 100644 Binary files a/graphics/pokemon/trubbish/front.png and b/graphics/pokemon/trubbish/front.png differ diff --git a/graphics/pokemon/trubbish/normal.pal b/graphics/pokemon/trubbish/normal.pal index 0f5e78c36..4f2653379 100644 --- a/graphics/pokemon/trubbish/normal.pal +++ b/graphics/pokemon/trubbish/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -176 176 176 -88 120 96 +120 192 168 +40 104 72 16 16 16 -120 160 120 -32 56 40 -176 184 192 +72 136 104 +16 48 32 +160 192 168 248 248 248 -64 88 64 -80 64 56 -128 104 88 -176 152 128 -216 112 160 -40 128 120 -16 96 104 -160 64 104 +24 72 48 +80 72 56 +112 96 80 +160 136 112 +232 80 160 +0 136 224 +24 88 128 +184 48 120 0 0 0 diff --git a/graphics/pokemon/turtwig/anim_front.png b/graphics/pokemon/turtwig/anim_front.png index 91ac3ee83..84e5fc8eb 100644 Binary files a/graphics/pokemon/turtwig/anim_front.png and b/graphics/pokemon/turtwig/anim_front.png differ diff --git a/graphics/pokemon/turtwig/front.png b/graphics/pokemon/turtwig/front.png index 774f44c7d..59d3efa89 100644 Binary files a/graphics/pokemon/turtwig/front.png and b/graphics/pokemon/turtwig/front.png differ diff --git a/graphics/pokemon/turtwig/normal.pal b/graphics/pokemon/turtwig/normal.pal index b1325eb3c..775b018c2 100644 --- a/graphics/pokemon/turtwig/normal.pal +++ b/graphics/pokemon/turtwig/normal.pal @@ -2,9 +2,9 @@ JASC-PAL 0100 16 152 208 160 -48 160 56 +56 160 64 56 88 40 -88 208 112 +120 208 104 104 80 48 16 16 16 168 120 64 diff --git a/graphics/pokemon/tympole/anim_front.png b/graphics/pokemon/tympole/anim_front.png index f0ba75c18..2d72a92d1 100644 Binary files a/graphics/pokemon/tympole/anim_front.png and b/graphics/pokemon/tympole/anim_front.png differ diff --git a/graphics/pokemon/tympole/front.png b/graphics/pokemon/tympole/front.png index dc6ccd191..d1b5dfd48 100644 Binary files a/graphics/pokemon/tympole/front.png and b/graphics/pokemon/tympole/front.png differ diff --git a/graphics/pokemon/tympole/normal.pal b/graphics/pokemon/tympole/normal.pal index 26fc0fc31..1e707ef25 100644 --- a/graphics/pokemon/tympole/normal.pal +++ b/graphics/pokemon/tympole/normal.pal @@ -5,14 +5,14 @@ JASC-PAL 40 40 40 64 64 64 248 248 248 -248 216 160 -192 160 112 -16 16 16 -56 88 120 +248 216 184 +192 152 128 +0 0 0 +56 96 136 96 96 96 -144 112 72 -80 152 176 -96 200 240 +144 88 72 +112 144 192 +104 184 248 24 24 24 0 0 0 0 0 0 diff --git a/graphics/pokemon/tynamo/anim_front.png b/graphics/pokemon/tynamo/anim_front.png index 4dc1d1261..827e650ac 100644 Binary files a/graphics/pokemon/tynamo/anim_front.png and b/graphics/pokemon/tynamo/anim_front.png differ diff --git a/graphics/pokemon/tynamo/front.png b/graphics/pokemon/tynamo/front.png index 8489c52f0..47d48757e 100644 Binary files a/graphics/pokemon/tynamo/front.png and b/graphics/pokemon/tynamo/front.png differ diff --git a/graphics/pokemon/tynamo/normal.pal b/graphics/pokemon/tynamo/normal.pal index ee546581d..7c53e6da9 100644 --- a/graphics/pokemon/tynamo/normal.pal +++ b/graphics/pokemon/tynamo/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -152 176 208 -120 136 176 -232 248 248 -80 120 144 +180 189 205 +156 164 180 +238 255 255 +123 131 148 24 24 32 -184 216 232 -184 80 88 -136 56 72 -248 224 128 -248 216 56 -240 96 88 +205 222 230 +205 74 0 +148 32 0 +255 230 123 +255 213 0 +246 131 90 176 184 200 0 0 0 0 0 0 diff --git a/graphics/pokemon/typhlosion/anim_front.png b/graphics/pokemon/typhlosion/anim_front.png index d2cde117e..a4f46ae24 100644 Binary files a/graphics/pokemon/typhlosion/anim_front.png and b/graphics/pokemon/typhlosion/anim_front.png differ diff --git a/graphics/pokemon/typhlosion/back.png b/graphics/pokemon/typhlosion/back.png index 30af3f6df..3252c26e9 100644 Binary files a/graphics/pokemon/typhlosion/back.png and b/graphics/pokemon/typhlosion/back.png differ diff --git a/graphics/pokemon/typhlosion/front.png b/graphics/pokemon/typhlosion/front.png index 292c6a309..79830374f 100644 Binary files a/graphics/pokemon/typhlosion/front.png and b/graphics/pokemon/typhlosion/front.png differ diff --git a/graphics/pokemon/typhlosion/normal.pal b/graphics/pokemon/typhlosion/normal.pal index 6578eb2a9..8315b8af8 100644 --- a/graphics/pokemon/typhlosion/normal.pal +++ b/graphics/pokemon/typhlosion/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 56 16 -248 88 16 -248 216 32 -224 168 16 -72 80 104 +216 0 0 +248 96 0 +248 216 0 +248 152 0 +40 88 120 24 40 48 -104 120 136 -168 144 88 -248 224 144 -88 72 40 +56 128 136 +160 136 72 +248 232 144 +104 80 40 16 16 16 248 248 248 -216 192 104 +208 192 112 128 72 72 -48 56 88 +48 64 112 diff --git a/graphics/pokemon/tyranitar/anim_front.png b/graphics/pokemon/tyranitar/anim_front.png index d080f270c..0c39b74f9 100644 Binary files a/graphics/pokemon/tyranitar/anim_front.png and b/graphics/pokemon/tyranitar/anim_front.png differ diff --git a/graphics/pokemon/tyranitar/front.png b/graphics/pokemon/tyranitar/front.png index af5ffe0af..2032b956a 100644 Binary files a/graphics/pokemon/tyranitar/front.png and b/graphics/pokemon/tyranitar/front.png differ diff --git a/graphics/pokemon/tyranitar/normal.pal b/graphics/pokemon/tyranitar/normal.pal index c7ddf8e37..8773244e8 100644 --- a/graphics/pokemon/tyranitar/normal.pal +++ b/graphics/pokemon/tyranitar/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 248 160 176 -64 80 48 -168 192 128 +72 88 56 +168 200 152 16 16 16 -216 216 184 -128 144 96 +216 224 200 +112 152 96 248 248 248 -184 192 208 -88 96 112 -120 80 80 -224 136 136 -104 120 168 -48 64 104 -136 152 192 +192 192 192 +112 112 112 +144 40 0 +208 80 0 +104 128 168 +64 88 120 +144 168 208 0 0 0 0 0 0 diff --git a/graphics/pokemon/tyrogue/anim_front.png b/graphics/pokemon/tyrogue/anim_front.png index dce02b7ad..b5c0a3d87 100644 Binary files a/graphics/pokemon/tyrogue/anim_front.png and b/graphics/pokemon/tyrogue/anim_front.png differ diff --git a/graphics/pokemon/tyrogue/front.png b/graphics/pokemon/tyrogue/front.png index 27c3d8cd4..0fcc422d5 100644 Binary files a/graphics/pokemon/tyrogue/front.png and b/graphics/pokemon/tyrogue/front.png differ diff --git a/graphics/pokemon/tyrogue/normal.pal b/graphics/pokemon/tyrogue/normal.pal index a8540cb04..34d6db822 100644 --- a/graphics/pokemon/tyrogue/normal.pal +++ b/graphics/pokemon/tyrogue/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 112 136 +152 104 152 112 64 96 192 152 184 -240 184 232 +232 192 248 16 16 16 248 248 248 160 128 64 224 160 64 -176 80 152 -160 144 136 -88 64 40 -176 136 104 -56 40 24 -136 96 56 +176 48 0 +152 152 168 +120 72 0 +208 152 72 +80 48 0 +160 120 64 216 208 200 diff --git a/graphics/pokemon/umbreon/anim_front.png b/graphics/pokemon/umbreon/anim_front.png index 658ff6b68..74c7e1c79 100644 Binary files a/graphics/pokemon/umbreon/anim_front.png and b/graphics/pokemon/umbreon/anim_front.png differ diff --git a/graphics/pokemon/umbreon/front.png b/graphics/pokemon/umbreon/front.png index 4d5ddb188..82a649940 100644 Binary files a/graphics/pokemon/umbreon/front.png and b/graphics/pokemon/umbreon/front.png differ diff --git a/graphics/pokemon/umbreon/normal.pal b/graphics/pokemon/umbreon/normal.pal index 526761aed..1019edcaf 100644 --- a/graphics/pokemon/umbreon/normal.pal +++ b/graphics/pokemon/umbreon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 48 48 -88 96 104 +40 48 72 +96 96 120 16 16 16 -128 96 48 -240 208 120 -200 152 72 -64 72 72 -104 40 24 -248 232 216 -184 72 40 -24 32 40 -232 96 56 +80 80 0 +232 208 80 +176 144 40 +64 64 80 +128 32 16 +248 240 240 +192 48 48 +32 32 56 +248 64 64 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/unfezant/anim_front.png b/graphics/pokemon/unfezant/anim_front.png index 59ff1e4d6..8e564674d 100644 Binary files a/graphics/pokemon/unfezant/anim_front.png and b/graphics/pokemon/unfezant/anim_front.png differ diff --git a/graphics/pokemon/unfezant/anim_frontf.png b/graphics/pokemon/unfezant/anim_frontf.png index bd39fc3d1..46fbed1c2 100644 Binary files a/graphics/pokemon/unfezant/anim_frontf.png and b/graphics/pokemon/unfezant/anim_frontf.png differ diff --git a/graphics/pokemon/unfezant/front.png b/graphics/pokemon/unfezant/front.png index 6227f4c9b..cea0bc3ab 100644 Binary files a/graphics/pokemon/unfezant/front.png and b/graphics/pokemon/unfezant/front.png differ diff --git a/graphics/pokemon/unfezant/frontf.png b/graphics/pokemon/unfezant/frontf.png new file mode 100644 index 000000000..76e532526 Binary files /dev/null and b/graphics/pokemon/unfezant/frontf.png differ diff --git a/graphics/pokemon/unfezant/normal.pal b/graphics/pokemon/unfezant/normal.pal index bb69c2c40..7310caf8e 100644 --- a/graphics/pokemon/unfezant/normal.pal +++ b/graphics/pokemon/unfezant/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -170 97 108 -219 189 54 -109 68 29 -98 98 98 -51 165 110 -96 50 72 -132 127 132 -49 49 53 -48 122 82 -158 60 79 -221 79 108 -164 166 173 +120 192 168 +168 96 104 +248 224 0 +96 72 48 +96 96 96 +56 168 112 +120 32 80 +120 128 136 +40 40 40 +48 120 80 +176 24 88 +248 64 120 +176 176 176 16 16 16 -75 75 81 -255 255 255 +64 64 80 +248 248 248 diff --git a/graphics/pokemon/unfezant/normalf.pal b/graphics/pokemon/unfezant/normalf.pal index a878e4c53..c870fbffc 100644 --- a/graphics/pokemon/unfezant/normalf.pal +++ b/graphics/pokemon/unfezant/normalf.pal @@ -1,18 +1,18 @@ JASC-PAL 0100 16 -153 210 164 +120 192 168 170 97 108 -219 189 54 +248 224 0 98 98 98 -158 110 55 +160 120 64 0 0 0 -132 127 132 -109 68 29 -49 49 53 +120 120 136 +96 72 48 +40 40 40 16 16 16 -164 166 173 -75 75 81 +176 176 176 +64 64 80 255 255 255 0 0 0 0 0 0 diff --git a/graphics/pokemon/ursaring/anim_front.png b/graphics/pokemon/ursaring/anim_front.png index 66f54bcef..3a8e048b2 100644 Binary files a/graphics/pokemon/ursaring/anim_front.png and b/graphics/pokemon/ursaring/anim_front.png differ diff --git a/graphics/pokemon/ursaring/front.png b/graphics/pokemon/ursaring/front.png index f85b56895..0229df204 100644 Binary files a/graphics/pokemon/ursaring/front.png and b/graphics/pokemon/ursaring/front.png differ diff --git a/graphics/pokemon/ursaring/normal.pal b/graphics/pokemon/ursaring/normal.pal index 10e091cd8..41bc6f31a 100644 --- a/graphics/pokemon/ursaring/normal.pal +++ b/graphics/pokemon/ursaring/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 64 48 -144 88 64 -56 32 24 -112 128 136 +96 64 40 +144 80 32 +64 40 24 +120 120 136 16 16 16 -176 128 104 +184 112 64 248 248 248 -248 240 152 -168 184 176 -200 224 216 -240 208 104 -184 152 80 -104 56 64 -200 112 120 -248 240 152 +248 232 128 +176 176 184 +216 216 216 +240 192 96 +192 152 72 +128 24 48 +216 56 88 +248 232 128 diff --git a/graphics/pokemon/uxie/anim_front.png b/graphics/pokemon/uxie/anim_front.png index effb33d2d..4753ea3cb 100644 Binary files a/graphics/pokemon/uxie/anim_front.png and b/graphics/pokemon/uxie/anim_front.png differ diff --git a/graphics/pokemon/uxie/back.png b/graphics/pokemon/uxie/back.png index d5114c262..5f6292d52 100644 Binary files a/graphics/pokemon/uxie/back.png and b/graphics/pokemon/uxie/back.png differ diff --git a/graphics/pokemon/uxie/front.png b/graphics/pokemon/uxie/front.png index f45ac4e5f..3d923f443 100644 Binary files a/graphics/pokemon/uxie/front.png and b/graphics/pokemon/uxie/front.png differ diff --git a/graphics/pokemon/uxie/normal.pal b/graphics/pokemon/uxie/normal.pal index bd46f4f88..e3783dcae 100644 --- a/graphics/pokemon/uxie/normal.pal +++ b/graphics/pokemon/uxie/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 96 56 -168 136 72 -240 200 104 -248 224 160 +112 88 64 +168 136 64 +240 192 112 +248 216 152 16 16 16 -224 104 96 -72 64 48 +232 64 64 +248 208 160 248 248 248 -176 48 48 -168 208 240 -128 160 192 -48 64 72 -96 120 152 -0 0 0 +168 64 64 +176 200 240 +144 152 192 +64 64 64 +120 112 144 +88 56 64 0 0 0 diff --git a/graphics/pokemon/vanillish/anim_front.png b/graphics/pokemon/vanillish/anim_front.png index fdd2bbf6e..6ccecc5c8 100644 Binary files a/graphics/pokemon/vanillish/anim_front.png and b/graphics/pokemon/vanillish/anim_front.png differ diff --git a/graphics/pokemon/vanillish/front.png b/graphics/pokemon/vanillish/front.png index a9d589b27..eb3237a5c 100644 Binary files a/graphics/pokemon/vanillish/front.png and b/graphics/pokemon/vanillish/front.png differ diff --git a/graphics/pokemon/vanillish/normal.pal b/graphics/pokemon/vanillish/normal.pal index 5aa6c7fab..61580bb7b 100644 --- a/graphics/pokemon/vanillish/normal.pal +++ b/graphics/pokemon/vanillish/normal.pal @@ -5,14 +5,14 @@ JASC-PAL 120 136 184 248 248 248 72 80 112 -16 16 16 -160 176 224 -144 208 248 +0 0 0 +184 184 216 +160 216 240 120 176 200 -88 160 216 -48 80 152 -72 104 176 -192 200 232 +104 160 232 +56 64 112 +72 80 160 +208 208 232 40 96 168 32 80 120 0 0 0 diff --git a/graphics/pokemon/vanillite/anim_front.png b/graphics/pokemon/vanillite/anim_front.png index e63bdf23e..a837f0dcd 100644 Binary files a/graphics/pokemon/vanillite/anim_front.png and b/graphics/pokemon/vanillite/anim_front.png differ diff --git a/graphics/pokemon/vanillite/front.png b/graphics/pokemon/vanillite/front.png index 8aaabc8af..dfcfb42c7 100644 Binary files a/graphics/pokemon/vanillite/front.png and b/graphics/pokemon/vanillite/front.png differ diff --git a/graphics/pokemon/vanillite/normal.pal b/graphics/pokemon/vanillite/normal.pal index ba24b30c4..58ca8c87b 100644 --- a/graphics/pokemon/vanillite/normal.pal +++ b/graphics/pokemon/vanillite/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 120 136 184 72 80 112 248 248 248 -16 16 16 -160 176 224 -192 200 232 -136 208 240 +0 0 0 +184 184 216 +208 208 232 +160 216 240 120 160 192 -88 144 208 +104 160 232 104 120 160 -32 56 136 -48 88 168 +48 56 96 +64 72 136 40 96 168 32 80 120 0 0 0 diff --git a/graphics/pokemon/vanilluxe/anim_front.png b/graphics/pokemon/vanilluxe/anim_front.png index 1993221f3..c2dc106e7 100644 Binary files a/graphics/pokemon/vanilluxe/anim_front.png and b/graphics/pokemon/vanilluxe/anim_front.png differ diff --git a/graphics/pokemon/vanilluxe/front.png b/graphics/pokemon/vanilluxe/front.png index 7bda2d14e..168c54b67 100644 Binary files a/graphics/pokemon/vanilluxe/front.png and b/graphics/pokemon/vanilluxe/front.png differ diff --git a/graphics/pokemon/vanilluxe/normal.pal b/graphics/pokemon/vanilluxe/normal.pal index 23d54f7ba..8a88dfe3c 100644 --- a/graphics/pokemon/vanilluxe/normal.pal +++ b/graphics/pokemon/vanilluxe/normal.pal @@ -4,16 +4,16 @@ JASC-PAL 152 208 160 120 136 184 248 248 248 -160 176 224 +184 184 216 64 64 112 -16 16 16 +0 0 0 40 96 168 -88 160 216 -192 200 232 -144 208 248 +104 160 232 +208 208 232 +160 216 240 32 64 112 120 160 192 -96 80 152 -144 120 184 +88 72 120 +128 88 168 72 80 112 32 64 112 diff --git a/graphics/pokemon/vaporeon/anim_front.png b/graphics/pokemon/vaporeon/anim_front.png index 40c1f627e..3d7011269 100644 Binary files a/graphics/pokemon/vaporeon/anim_front.png and b/graphics/pokemon/vaporeon/anim_front.png differ diff --git a/graphics/pokemon/vaporeon/front.png b/graphics/pokemon/vaporeon/front.png index 7005e9439..e0e276556 100644 Binary files a/graphics/pokemon/vaporeon/front.png and b/graphics/pokemon/vaporeon/front.png differ diff --git a/graphics/pokemon/vaporeon/normal.pal b/graphics/pokemon/vaporeon/normal.pal index cdbd04274..3655a6b0d 100644 --- a/graphics/pokemon/vaporeon/normal.pal +++ b/graphics/pokemon/vaporeon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -24 64 88 -32 112 152 -184 176 128 -112 104 64 -128 136 144 +16 72 96 +16 112 144 +184 168 88 +104 96 32 +136 136 136 16 16 16 248 248 248 -248 240 168 -200 208 224 -112 200 224 -152 224 240 -80 160 176 -80 48 120 -120 56 104 -200 112 184 +248 224 160 +200 200 200 +88 192 224 +128 216 248 +64 152 184 +80 16 112 +120 8 40 +208 80 112 diff --git a/graphics/pokemon/venipede/anim_front.png b/graphics/pokemon/venipede/anim_front.png index 7794ee605..27bad5955 100644 Binary files a/graphics/pokemon/venipede/anim_front.png and b/graphics/pokemon/venipede/anim_front.png differ diff --git a/graphics/pokemon/venipede/front.png b/graphics/pokemon/venipede/front.png index c18a74559..ebabe585c 100644 Binary files a/graphics/pokemon/venipede/front.png and b/graphics/pokemon/venipede/front.png differ diff --git a/graphics/pokemon/venipede/normal.pal b/graphics/pokemon/venipede/normal.pal index c4321b3a9..28e4b09d7 100644 --- a/graphics/pokemon/venipede/normal.pal +++ b/graphics/pokemon/venipede/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -96 24 40 +96 32 48 16 16 16 -176 56 88 -128 40 64 -248 152 168 -200 96 112 -32 64 40 -32 40 56 -72 136 96 -56 96 64 -160 104 56 -240 168 80 -0 0 0 +184 48 80 +144 0 64 +248 144 160 +224 96 120 +8 72 56 +48 48 56 +0 144 88 +0 112 56 +184 136 8 +232 176 8 +0 128 255 0 0 0 0 0 0 diff --git a/graphics/pokemon/venomoth/anim_front.png b/graphics/pokemon/venomoth/anim_front.png index 1e7559448..c0c2cd340 100644 Binary files a/graphics/pokemon/venomoth/anim_front.png and b/graphics/pokemon/venomoth/anim_front.png differ diff --git a/graphics/pokemon/venomoth/front.png b/graphics/pokemon/venomoth/front.png index b804c9154..b4eba1b5c 100644 Binary files a/graphics/pokemon/venomoth/front.png and b/graphics/pokemon/venomoth/front.png differ diff --git a/graphics/pokemon/venomoth/normal.pal b/graphics/pokemon/venomoth/normal.pal index deda9413c..2e1ee16bf 100644 --- a/graphics/pokemon/venomoth/normal.pal +++ b/graphics/pokemon/venomoth/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 112 88 120 -176 152 184 +152 136 184 240 216 248 216 192 232 16 16 16 -160 152 208 -64 56 104 -192 184 224 -104 104 160 +208 168 216 +96 72 112 +232 192 248 +152 136 184 248 248 248 184 200 224 -96 80 64 -152 144 144 -200 192 192 +96 80 56 +160 128 120 +192 168 136 224 224 224 diff --git a/graphics/pokemon/venonat/anim_front.png b/graphics/pokemon/venonat/anim_front.png index 619b91818..201b5db4f 100644 Binary files a/graphics/pokemon/venonat/anim_front.png and b/graphics/pokemon/venonat/anim_front.png differ diff --git a/graphics/pokemon/venonat/front.png b/graphics/pokemon/venonat/front.png index 898b4ac40..522f87ef5 100644 Binary files a/graphics/pokemon/venonat/front.png and b/graphics/pokemon/venonat/front.png differ diff --git a/graphics/pokemon/venonat/normal.pal b/graphics/pokemon/venonat/normal.pal index 15dcf048e..42a121e7c 100644 --- a/graphics/pokemon/venonat/normal.pal +++ b/graphics/pokemon/venonat/normal.pal @@ -9,11 +9,11 @@ JASC-PAL 72 64 144 112 112 184 80 24 48 -168 64 120 -216 96 144 -240 128 184 +176 64 88 +232 104 160 +240 144 200 48 48 80 -112 80 64 -216 184 152 -176 144 112 +112 64 40 +232 184 152 +184 144 104 144 136 200 diff --git a/graphics/pokemon/venusaur/anim_front.png b/graphics/pokemon/venusaur/anim_front.png index e814e6278..9ba3e62ad 100644 Binary files a/graphics/pokemon/venusaur/anim_front.png and b/graphics/pokemon/venusaur/anim_front.png differ diff --git a/graphics/pokemon/venusaur/front.png b/graphics/pokemon/venusaur/front.png index 886fe6fa0..0d21e669d 100644 Binary files a/graphics/pokemon/venusaur/front.png and b/graphics/pokemon/venusaur/front.png differ diff --git a/graphics/pokemon/venusaur/normal.pal b/graphics/pokemon/venusaur/normal.pal index 6c5c41d5b..d6751ffe0 100644 --- a/graphics/pokemon/venusaur/normal.pal +++ b/graphics/pokemon/venusaur/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -208 248 184 -88 64 40 -232 176 184 -232 104 120 -184 64 72 -136 104 72 -200 160 80 +248 192 248 +128 48 0 +248 184 184 +248 120 112 +216 64 64 +184 104 48 +216 184 40 16 16 16 -232 192 120 -32 80 80 -80 152 80 -120 192 112 -136 200 200 -72 168 168 -48 128 128 +248 232 80 +16 80 64 +88 152 56 +128 216 120 +88 208 192 +32 176 152 +16 120 104 248 248 248 diff --git a/graphics/pokemon/vespiquen/anim_front.png b/graphics/pokemon/vespiquen/anim_front.png index 80e6e4e2d..abaa335c8 100644 Binary files a/graphics/pokemon/vespiquen/anim_front.png and b/graphics/pokemon/vespiquen/anim_front.png differ diff --git a/graphics/pokemon/vespiquen/front.png b/graphics/pokemon/vespiquen/front.png index 4ba80e4ff..cc731fc7b 100644 Binary files a/graphics/pokemon/vespiquen/front.png and b/graphics/pokemon/vespiquen/front.png differ diff --git a/graphics/pokemon/vespiquen/normal.pal b/graphics/pokemon/vespiquen/normal.pal index d6c43bd44..d806da444 100644 --- a/graphics/pokemon/vespiquen/normal.pal +++ b/graphics/pokemon/vespiquen/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 88 104 -176 200 208 +80 88 112 +184 184 208 16 16 16 -48 40 40 -232 248 248 -96 80 32 -72 64 72 -248 184 64 -176 128 32 -224 88 80 -72 48 24 -144 48 48 -232 128 72 -144 80 40 +40 40 40 +232 232 248 +104 88 0 +64 64 72 +248 200 8 +176 136 0 +232 56 56 +104 40 0 +120 48 56 +232 112 0 +168 80 0 128 136 160 diff --git a/graphics/pokemon/vibrava/anim_front.png b/graphics/pokemon/vibrava/anim_front.png index 5cffff36f..553f82207 100644 Binary files a/graphics/pokemon/vibrava/anim_front.png and b/graphics/pokemon/vibrava/anim_front.png differ diff --git a/graphics/pokemon/vibrava/front.png b/graphics/pokemon/vibrava/front.png index c56c6e754..d3dca4c68 100644 Binary files a/graphics/pokemon/vibrava/front.png and b/graphics/pokemon/vibrava/front.png differ diff --git a/graphics/pokemon/vibrava/normal.pal b/graphics/pokemon/vibrava/normal.pal index 11144072b..72ac12b22 100644 --- a/graphics/pokemon/vibrava/normal.pal +++ b/graphics/pokemon/vibrava/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 64 56 -16 16 16 -104 120 120 -72 88 80 -40 144 56 -80 184 88 -112 112 80 -176 176 112 -184 184 216 -248 248 248 -224 224 128 -248 248 176 -112 216 120 +57 57 65 +0 0 0 +106 115 115 +74 82 74 +74 148 74 +106 197 106 +115 115 82 +189 172 123 +189 189 222 +255 255 255 +230 213 139 +255 255 164 +148 222 131 0 0 0 0 0 0 diff --git a/graphics/pokemon/victini/anim_front.png b/graphics/pokemon/victini/anim_front.png index 1d037d955..a6b9408ee 100644 Binary files a/graphics/pokemon/victini/anim_front.png and b/graphics/pokemon/victini/anim_front.png differ diff --git a/graphics/pokemon/victini/front.png b/graphics/pokemon/victini/front.png index 8129f758f..6901f6fb3 100644 Binary files a/graphics/pokemon/victini/front.png and b/graphics/pokemon/victini/front.png differ diff --git a/graphics/pokemon/victini/normal.pal b/graphics/pokemon/victini/normal.pal index 9654c51a1..23e9a657e 100644 --- a/graphics/pokemon/victini/normal.pal +++ b/graphics/pokemon/victini/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 168 -120 40 16 -248 112 56 -176 72 32 -16 16 16 -184 160 104 -96 80 56 -248 232 176 -48 40 40 -0 112 184 +152 208 160 +136 48 16 +248 104 24 +184 72 0 +0 0 0 +192 152 88 +104 72 16 +248 224 168 +56 56 56 +56 88 168 248 248 248 192 184 184 -128 192 208 -128 72 104 -224 120 128 -120 104 80 +112 168 248 +160 88 88 +192 112 112 +128 104 56 diff --git a/graphics/pokemon/victreebel/anim_front.png b/graphics/pokemon/victreebel/anim_front.png index 4bdbff1a5..119d4105c 100644 Binary files a/graphics/pokemon/victreebel/anim_front.png and b/graphics/pokemon/victreebel/anim_front.png differ diff --git a/graphics/pokemon/victreebel/back.png b/graphics/pokemon/victreebel/back.png index 9715fcca7..0626c3534 100644 Binary files a/graphics/pokemon/victreebel/back.png and b/graphics/pokemon/victreebel/back.png differ diff --git a/graphics/pokemon/victreebel/front.png b/graphics/pokemon/victreebel/front.png index 257de676a..c87545b1d 100644 Binary files a/graphics/pokemon/victreebel/front.png and b/graphics/pokemon/victreebel/front.png differ diff --git a/graphics/pokemon/victreebel/normal.pal b/graphics/pokemon/victreebel/normal.pal index 39cc05735..fe0893abb 100644 --- a/graphics/pokemon/victreebel/normal.pal +++ b/graphics/pokemon/victreebel/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -88 72 56 +96 80 40 40 96 40 -136 112 88 +160 120 48 16 16 16 112 208 120 88 160 96 -168 112 104 -240 160 168 +200 104 128 +232 152 168 248 248 248 200 216 208 -192 192 72 +216 184 80 144 152 32 -224 216 72 -248 240 136 -168 176 56 +232 208 104 +240 232 144 +120 40 40 diff --git a/graphics/pokemon/victreebel/shiny.pal b/graphics/pokemon/victreebel/shiny.pal index 8193a9d83..1aac75ff4 100644 --- a/graphics/pokemon/victreebel/shiny.pal +++ b/graphics/pokemon/victreebel/shiny.pal @@ -16,4 +16,4 @@ JASC-PAL 144 152 32 216 248 88 232 248 152 -168 176 56 +0 40 152 diff --git a/graphics/pokemon/vigoroth/anim_front.png b/graphics/pokemon/vigoroth/anim_front.png index 9a394434c..deb372530 100644 Binary files a/graphics/pokemon/vigoroth/anim_front.png and b/graphics/pokemon/vigoroth/anim_front.png differ diff --git a/graphics/pokemon/vigoroth/front.png b/graphics/pokemon/vigoroth/front.png index 4b5669f87..b3840cd1b 100644 Binary files a/graphics/pokemon/vigoroth/front.png and b/graphics/pokemon/vigoroth/front.png differ diff --git a/graphics/pokemon/vigoroth/normal.pal b/graphics/pokemon/vigoroth/normal.pal index 0e6f9968f..f9e53c8d1 100644 --- a/graphics/pokemon/vigoroth/normal.pal +++ b/graphics/pokemon/vigoroth/normal.pal @@ -3,15 +3,15 @@ JASC-PAL 16 152 208 160 104 48 40 -232 96 104 +248 72 88 72 64 64 -152 80 72 +152 64 72 16 16 16 200 200 208 248 248 248 152 120 96 120 96 72 -232 216 216 +224 224 224 136 120 120 88 56 32 160 80 120 diff --git a/graphics/pokemon/vileplume/anim_front.png b/graphics/pokemon/vileplume/anim_front.png index 1b75422cd..f482d7130 100644 Binary files a/graphics/pokemon/vileplume/anim_front.png and b/graphics/pokemon/vileplume/anim_front.png differ diff --git a/graphics/pokemon/vileplume/front.png b/graphics/pokemon/vileplume/front.png index 67ebc9fd3..1a14c31a3 100644 Binary files a/graphics/pokemon/vileplume/front.png and b/graphics/pokemon/vileplume/front.png differ diff --git a/graphics/pokemon/vileplume/normal.pal b/graphics/pokemon/vileplume/normal.pal index 08cb32604..817796bf8 100644 --- a/graphics/pokemon/vileplume/normal.pal +++ b/graphics/pokemon/vileplume/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -152 56 72 -104 32 40 -224 128 144 +192 48 72 +152 56 64 +248 96 96 248 200 208 -200 88 104 +240 48 48 240 168 176 16 16 16 -224 144 88 -144 72 24 +248 160 40 +176 96 32 40 40 40 -200 112 56 +200 144 32 24 40 64 48 72 112 80 112 152 diff --git a/graphics/pokemon/virizion/anim_front.png b/graphics/pokemon/virizion/anim_front.png index 516c9423d..0b7ef3bb8 100644 Binary files a/graphics/pokemon/virizion/anim_front.png and b/graphics/pokemon/virizion/anim_front.png differ diff --git a/graphics/pokemon/virizion/front.png b/graphics/pokemon/virizion/front.png index fa808fc8a..6c1f3a36c 100644 Binary files a/graphics/pokemon/virizion/front.png and b/graphics/pokemon/virizion/front.png differ diff --git a/graphics/pokemon/virizion/normal.pal b/graphics/pokemon/virizion/normal.pal index 9dc688808..a4436e0dd 100644 --- a/graphics/pokemon/virizion/normal.pal +++ b/graphics/pokemon/virizion/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -72 104 48 -40 64 32 -104 136 64 -152 208 96 +153 204 153 +74 98 41 +49 74 41 +98 139 16 +156 205 82 16 16 16 -64 72 80 -120 112 120 -248 136 136 -248 248 248 -104 48 72 -224 232 192 -208 80 96 -168 168 136 -104 104 72 +65 65 74 +106 115 123 +222 115 139 +255 255 255 +123 16 57 +246 246 213 +172 65 106 +172 180 106 +106 106 74 0 0 0 diff --git a/graphics/pokemon/volbeat/anim_front.png b/graphics/pokemon/volbeat/anim_front.png index 429e9b196..b635eae4e 100644 Binary files a/graphics/pokemon/volbeat/anim_front.png and b/graphics/pokemon/volbeat/anim_front.png differ diff --git a/graphics/pokemon/volbeat/front.png b/graphics/pokemon/volbeat/front.png index 11dc67ba3..e4f17ee4d 100644 Binary files a/graphics/pokemon/volbeat/front.png and b/graphics/pokemon/volbeat/front.png differ diff --git a/graphics/pokemon/volbeat/normal.pal b/graphics/pokemon/volbeat/normal.pal index 885328b62..87145254f 100644 --- a/graphics/pokemon/volbeat/normal.pal +++ b/graphics/pokemon/volbeat/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 72 64 +72 72 80 16 16 16 216 216 216 -136 136 136 -120 104 56 -224 168 64 -248 224 120 -184 56 64 -136 32 40 -152 168 200 -56 72 104 -112 128 168 -216 88 88 +136 136 144 +136 104 80 +216 176 80 +248 224 80 +200 56 80 +136 48 72 +160 176 192 +72 80 104 +120 136 160 +224 80 96 248 248 248 -240 136 128 +240 128 112 diff --git a/graphics/pokemon/volcarona/anim_front.png b/graphics/pokemon/volcarona/anim_front.png index 9475a4064..a200fe516 100644 Binary files a/graphics/pokemon/volcarona/anim_front.png and b/graphics/pokemon/volcarona/anim_front.png differ diff --git a/graphics/pokemon/volcarona/front.png b/graphics/pokemon/volcarona/front.png index 782ac1276..d36a22a25 100644 Binary files a/graphics/pokemon/volcarona/front.png and b/graphics/pokemon/volcarona/front.png differ diff --git a/graphics/pokemon/volcarona/normal.pal b/graphics/pokemon/volcarona/normal.pal index 4ac0cab8f..a3d2bcfcd 100644 --- a/graphics/pokemon/volcarona/normal.pal +++ b/graphics/pokemon/volcarona/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 64 56 -192 88 80 -96 40 40 -56 48 56 +160 40 8 +192 72 64 +120 32 0 +48 48 56 24 24 32 -240 112 64 -96 88 88 -176 160 152 -232 216 216 -0 112 152 -0 192 240 -56 72 88 -112 152 144 -160 224 224 -80 104 120 +232 112 24 +96 96 96 +176 176 176 +224 224 224 +0 104 160 +0 192 248 +24 80 96 +80 144 152 +144 200 208 +56 112 128 diff --git a/graphics/pokemon/voltorb/anim_front.png b/graphics/pokemon/voltorb/anim_front.png index fcd0ab765..d1928a122 100644 Binary files a/graphics/pokemon/voltorb/anim_front.png and b/graphics/pokemon/voltorb/anim_front.png differ diff --git a/graphics/pokemon/voltorb/front.png b/graphics/pokemon/voltorb/front.png index c87c4dec0..0bf80d9ac 100644 Binary files a/graphics/pokemon/voltorb/front.png and b/graphics/pokemon/voltorb/front.png differ diff --git a/graphics/pokemon/voltorb/normal.pal b/graphics/pokemon/voltorb/normal.pal index f59c1a4d4..d60934515 100644 --- a/graphics/pokemon/voltorb/normal.pal +++ b/graphics/pokemon/voltorb/normal.pal @@ -3,15 +3,15 @@ JASC-PAL 16 152 208 160 16 16 16 -120 48 56 -176 80 88 -224 112 104 -200 80 88 -248 144 144 -232 168 160 +128 16 16 +208 32 72 +240 96 80 +240 56 80 +248 120 120 +248 168 152 200 48 96 -208 216 224 -176 184 200 +216 208 208 +176 168 184 248 248 248 88 80 80 136 128 128 diff --git a/graphics/pokemon/vullaby/anim_front.png b/graphics/pokemon/vullaby/anim_front.png index da73a48bb..4af9402a1 100644 Binary files a/graphics/pokemon/vullaby/anim_front.png and b/graphics/pokemon/vullaby/anim_front.png differ diff --git a/graphics/pokemon/vullaby/front.png b/graphics/pokemon/vullaby/front.png index e4b46f175..a24b2aafb 100644 Binary files a/graphics/pokemon/vullaby/front.png and b/graphics/pokemon/vullaby/front.png differ diff --git a/graphics/pokemon/vullaby/normal.pal b/graphics/pokemon/vullaby/normal.pal index eb0b431a8..9bbe6e037 100644 --- a/graphics/pokemon/vullaby/normal.pal +++ b/graphics/pokemon/vullaby/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 48 40 +56 40 40 16 16 16 -88 72 64 -104 56 64 -216 128 144 -152 88 96 +80 64 64 +128 48 64 +224 128 144 +176 80 96 248 248 248 -224 96 88 -136 120 120 -104 88 80 -168 144 112 -240 216 184 -80 64 48 -0 0 0 +200 48 24 +128 120 112 +104 88 88 +176 160 128 +232 232 192 +88 80 56 +104 88 88 0 0 0 diff --git a/graphics/pokemon/vulpix/anim_front.png b/graphics/pokemon/vulpix/anim_front.png index 322b00e4d..2e1f7b084 100644 Binary files a/graphics/pokemon/vulpix/anim_front.png and b/graphics/pokemon/vulpix/anim_front.png differ diff --git a/graphics/pokemon/vulpix/front.png b/graphics/pokemon/vulpix/front.png index 53c4ced44..4de0d78f1 100644 Binary files a/graphics/pokemon/vulpix/front.png and b/graphics/pokemon/vulpix/front.png differ diff --git a/graphics/pokemon/vulpix/normal.pal b/graphics/pokemon/vulpix/normal.pal index 555aff127..acc496df3 100644 --- a/graphics/pokemon/vulpix/normal.pal +++ b/graphics/pokemon/vulpix/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 40 16 -232 136 96 -216 112 64 -176 88 32 +112 32 0 +248 144 88 +216 112 40 +184 72 40 16 16 16 -96 56 48 -168 112 88 -200 136 112 -128 64 40 -184 96 64 +112 48 0 +184 112 88 +224 144 104 +168 88 8 +200 120 40 248 248 248 160 120 112 -128 80 80 -216 192 152 +168 0 0 +240 184 120 0 0 0 diff --git a/graphics/pokemon/wailmer/anim_front.png b/graphics/pokemon/wailmer/anim_front.png index 8d19af603..b2f2a2690 100644 Binary files a/graphics/pokemon/wailmer/anim_front.png and b/graphics/pokemon/wailmer/anim_front.png differ diff --git a/graphics/pokemon/wailmer/front.png b/graphics/pokemon/wailmer/front.png index 457887bdd..3c887adf8 100644 Binary files a/graphics/pokemon/wailmer/front.png and b/graphics/pokemon/wailmer/front.png differ diff --git a/graphics/pokemon/wailmer/normal.pal b/graphics/pokemon/wailmer/normal.pal index d483af0d8..b2007f524 100644 --- a/graphics/pokemon/wailmer/normal.pal +++ b/graphics/pokemon/wailmer/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -32 72 104 -88 160 192 -56 128 176 -16 88 136 -16 40 56 -16 16 16 -168 184 208 -240 216 160 -120 104 56 -248 248 248 -248 240 200 -120 136 168 -168 144 96 -208 184 120 +49 74 115 +98 156 205 +74 131 180 +49 90 148 +32 49 74 +0 0 0 +180 189 197 +238 213 164 +106 98 74 +255 255 255 +255 238 205 +131 139 156 +156 139 98 +205 180 131 0 0 0 diff --git a/graphics/pokemon/wailord/anim_front.png b/graphics/pokemon/wailord/anim_front.png index e0e37ad97..887ecbcf3 100644 Binary files a/graphics/pokemon/wailord/anim_front.png and b/graphics/pokemon/wailord/anim_front.png differ diff --git a/graphics/pokemon/wailord/front.png b/graphics/pokemon/wailord/front.png index aef6d9b8c..9f337fd82 100644 Binary files a/graphics/pokemon/wailord/front.png and b/graphics/pokemon/wailord/front.png differ diff --git a/graphics/pokemon/wailord/normal.pal b/graphics/pokemon/wailord/normal.pal index 6323bf1f4..b6b17ba68 100644 --- a/graphics/pokemon/wailord/normal.pal +++ b/graphics/pokemon/wailord/normal.pal @@ -1,18 +1,18 @@ JASC-PAL 0100 16 -152 208 160 -16 64 96 -24 104 152 +248 248 192 +40 56 152 +16 80 200 8 40 64 -64 168 224 -184 176 168 -104 96 88 -32 136 192 -152 144 136 -168 208 240 +88 128 240 +216 208 224 +128 112 128 +32 112 224 +176 168 176 +144 176 248 56 48 48 -224 208 200 +240 232 248 24 24 24 0 0 0 0 0 0 diff --git a/graphics/pokemon/walrein/anim_front.png b/graphics/pokemon/walrein/anim_front.png index d434f35d4..9a087634e 100644 Binary files a/graphics/pokemon/walrein/anim_front.png and b/graphics/pokemon/walrein/anim_front.png differ diff --git a/graphics/pokemon/walrein/front.png b/graphics/pokemon/walrein/front.png index 3ca4a3d41..7dc56050a 100644 Binary files a/graphics/pokemon/walrein/front.png and b/graphics/pokemon/walrein/front.png differ diff --git a/graphics/pokemon/walrein/normal.pal b/graphics/pokemon/walrein/normal.pal index cd33fcf12..dc70970eb 100644 --- a/graphics/pokemon/walrein/normal.pal +++ b/graphics/pokemon/walrein/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -32 72 96 -16 16 16 -160 208 240 -32 120 160 -248 248 248 -192 224 240 -128 176 208 -160 136 88 -248 216 120 -80 144 176 -224 192 136 -248 224 168 -168 104 128 -232 160 176 +248 192 192 +40 72 104 +0 0 0 +160 192 216 +48 120 160 +248 248 248 +192 208 248 +96 168 200 +160 128 88 +240 160 104 +64 144 192 +248 216 128 +248 248 160 +200 80 128 +232 152 176 0 0 0 diff --git a/graphics/pokemon/wartortle/anim_front.png b/graphics/pokemon/wartortle/anim_front.png index 1480f5f80..a732c60db 100644 Binary files a/graphics/pokemon/wartortle/anim_front.png and b/graphics/pokemon/wartortle/anim_front.png differ diff --git a/graphics/pokemon/wartortle/back.png b/graphics/pokemon/wartortle/back.png index 3e47971cf..9bb691ccb 100644 Binary files a/graphics/pokemon/wartortle/back.png and b/graphics/pokemon/wartortle/back.png differ diff --git a/graphics/pokemon/wartortle/front.png b/graphics/pokemon/wartortle/front.png index ee548702f..8a5639d01 100644 Binary files a/graphics/pokemon/wartortle/front.png and b/graphics/pokemon/wartortle/front.png differ diff --git a/graphics/pokemon/wartortle/normal.pal b/graphics/pokemon/wartortle/normal.pal index ff42ae4d4..9c3c1d6f5 100644 --- a/graphics/pokemon/wartortle/normal.pal +++ b/graphics/pokemon/wartortle/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 153 210 164 -152 174 220 -255 255 255 +136 168 248 +248 248 248 16 16 16 -171 208 219 -43 82 136 -85 137 200 -218 235 242 -192 205 235 -80 46 39 -145 112 87 -204 182 140 -49 65 74 -255 239 206 -145 112 87 -184 157 137 +192 200 232 +40 80 136 +96 120 200 +216 240 248 +172 200 248 +80 48 40 +144 112 88 +200 184 144 +48 64 72 +248 240 208 +200 48 0 +152 128 72 diff --git a/graphics/pokemon/wartortle/shiny.pal b/graphics/pokemon/wartortle/shiny.pal index 39b77faec..b8ca2cfbc 100644 --- a/graphics/pokemon/wartortle/shiny.pal +++ b/graphics/pokemon/wartortle/shiny.pal @@ -15,5 +15,5 @@ JASC-PAL 222 164 65 65 65 82 246 213 123 -164 98 32 -156 197 49 +192 24 0 +136 96 24 diff --git a/graphics/pokemon/watchog/anim_front.png b/graphics/pokemon/watchog/anim_front.png index 21bddd3c8..c47a88e1b 100644 Binary files a/graphics/pokemon/watchog/anim_front.png and b/graphics/pokemon/watchog/anim_front.png differ diff --git a/graphics/pokemon/watchog/front.png b/graphics/pokemon/watchog/front.png index 58affb580..82cfc39e5 100644 Binary files a/graphics/pokemon/watchog/front.png and b/graphics/pokemon/watchog/front.png differ diff --git a/graphics/pokemon/watchog/normal.pal b/graphics/pokemon/watchog/normal.pal index 2dcff58a5..282e96789 100644 --- a/graphics/pokemon/watchog/normal.pal +++ b/graphics/pokemon/watchog/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -144 128 120 +128 128 128 248 248 248 -80 40 32 -144 72 56 -200 184 176 +88 40 56 +144 56 56 +184 184 184 +56 56 56 168 48 48 -64 56 64 -232 72 72 +240 72 72 240 176 40 128 120 96 -216 192 160 -176 152 128 -112 40 40 -184 128 32 +208 184 144 +176 152 112 +112 48 64 +184 128 64 diff --git a/graphics/pokemon/weavile/anim_front.png b/graphics/pokemon/weavile/anim_front.png index a09dde1ff..c98cdf564 100644 Binary files a/graphics/pokemon/weavile/anim_front.png and b/graphics/pokemon/weavile/anim_front.png differ diff --git a/graphics/pokemon/weavile/front.png b/graphics/pokemon/weavile/front.png index 6f8da6525..90ad62cb9 100644 Binary files a/graphics/pokemon/weavile/front.png and b/graphics/pokemon/weavile/front.png differ diff --git a/graphics/pokemon/weavile/normal.pal b/graphics/pokemon/weavile/normal.pal index 8e81acac3..4577a2702 100644 --- a/graphics/pokemon/weavile/normal.pal +++ b/graphics/pokemon/weavile/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 40 80 -112 24 40 -240 72 104 +192 40 112 +128 32 80 +240 80 112 240 128 128 104 96 120 192 184 200 16 16 16 248 248 248 -136 128 168 -72 80 112 +112 128 184 +64 72 128 96 112 152 -40 40 64 +40 48 80 240 208 80 176 136 56 72 80 104 diff --git a/graphics/pokemon/weedle/anim_front.png b/graphics/pokemon/weedle/anim_front.png index 16b95eaa6..34dc029e2 100644 Binary files a/graphics/pokemon/weedle/anim_front.png and b/graphics/pokemon/weedle/anim_front.png differ diff --git a/graphics/pokemon/weedle/front.png b/graphics/pokemon/weedle/front.png index 329f69e22..7c0d01400 100644 Binary files a/graphics/pokemon/weedle/front.png and b/graphics/pokemon/weedle/front.png differ diff --git a/graphics/pokemon/weedle/normal.pal b/graphics/pokemon/weedle/normal.pal index eefe5e0dd..a42d955fb 100644 --- a/graphics/pokemon/weedle/normal.pal +++ b/graphics/pokemon/weedle/normal.pal @@ -6,14 +6,14 @@ JASC-PAL 248 248 248 88 88 96 192 192 192 -128 88 48 -208 160 96 -168 112 64 -80 56 32 -224 192 160 +144 88 8 +232 168 64 +200 112 16 +104 56 8 +248 208 120 24 24 24 -152 72 104 -216 112 152 -232 184 208 -0 0 0 +144 64 112 +232 120 184 +248 176 224 +248 216 200 0 0 0 diff --git a/graphics/pokemon/weepinbell/anim_front.png b/graphics/pokemon/weepinbell/anim_front.png index e182c3582..d33c4aa59 100644 Binary files a/graphics/pokemon/weepinbell/anim_front.png and b/graphics/pokemon/weepinbell/anim_front.png differ diff --git a/graphics/pokemon/weepinbell/back.png b/graphics/pokemon/weepinbell/back.png index b4745775c..1f9ccd1a9 100644 Binary files a/graphics/pokemon/weepinbell/back.png and b/graphics/pokemon/weepinbell/back.png differ diff --git a/graphics/pokemon/weepinbell/front.png b/graphics/pokemon/weepinbell/front.png index 10cba75a7..c381e5332 100644 Binary files a/graphics/pokemon/weepinbell/front.png and b/graphics/pokemon/weepinbell/front.png differ diff --git a/graphics/pokemon/weepinbell/normal.pal b/graphics/pokemon/weepinbell/normal.pal index d489fda44..bf05a1549 100644 --- a/graphics/pokemon/weepinbell/normal.pal +++ b/graphics/pokemon/weepinbell/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -40 96 40 -88 160 96 -160 216 120 -96 88 72 -160 136 112 +8 88 48 +56 168 88 +152 216 128 +96 72 48 +160 120 48 16 16 16 -248 240 160 -240 232 80 -136 192 104 -200 192 72 -152 168 48 +248 240 168 +248 224 104 +104 192 80 +208 192 80 +120 40 40 248 248 248 -144 72 104 -232 168 176 -192 136 128 +176 64 72 +232 152 168 +200 104 128 diff --git a/graphics/pokemon/weepinbell/shiny.pal b/graphics/pokemon/weepinbell/shiny.pal index 700a346af..87c68f5b2 100644 --- a/graphics/pokemon/weepinbell/shiny.pal +++ b/graphics/pokemon/weepinbell/shiny.pal @@ -12,7 +12,7 @@ JASC-PAL 216 248 88 184 224 64 184 200 56 -152 168 48 +144 88 104 248 248 248 152 104 120 232 200 208 diff --git a/graphics/pokemon/weezing/anim_front.png b/graphics/pokemon/weezing/anim_front.png index bcbed2919..95a9ba30f 100644 Binary files a/graphics/pokemon/weezing/anim_front.png and b/graphics/pokemon/weezing/anim_front.png differ diff --git a/graphics/pokemon/weezing/front.png b/graphics/pokemon/weezing/front.png index 1b5aba9c9..3ea4fb6dd 100644 Binary files a/graphics/pokemon/weezing/front.png and b/graphics/pokemon/weezing/front.png differ diff --git a/graphics/pokemon/weezing/normal.pal b/graphics/pokemon/weezing/normal.pal index 3c8be4dec..6ef5ecad9 100644 --- a/graphics/pokemon/weezing/normal.pal +++ b/graphics/pokemon/weezing/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 184 184 136 216 216 184 152 152 96 -120 96 128 -168 144 200 -88 64 80 -144 120 168 -192 184 216 +128 88 136 +184 136 200 +96 48 120 +160 104 176 +208 160 216 16 16 16 248 248 248 -192 192 208 -208 192 176 -160 144 136 -136 88 88 -200 120 136 +184 184 184 +208 208 176 +168 160 80 +152 80 96 +208 112 128 diff --git a/graphics/pokemon/whimsicott/anim_front.png b/graphics/pokemon/whimsicott/anim_front.png index 4b463db3a..07001cccd 100644 Binary files a/graphics/pokemon/whimsicott/anim_front.png and b/graphics/pokemon/whimsicott/anim_front.png differ diff --git a/graphics/pokemon/whimsicott/front.png b/graphics/pokemon/whimsicott/front.png index becc3c286..013719675 100644 Binary files a/graphics/pokemon/whimsicott/front.png and b/graphics/pokemon/whimsicott/front.png differ diff --git a/graphics/pokemon/whimsicott/normal.pal b/graphics/pokemon/whimsicott/normal.pal index 3a8406a84..cce64c2b2 100644 --- a/graphics/pokemon/whimsicott/normal.pal +++ b/graphics/pokemon/whimsicott/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 128 96 -96 80 64 -248 240 200 -184 176 136 +172 148 90 +106 90 65 +230 222 205 +197 180 139 16 16 16 -32 80 40 -56 128 64 -80 184 104 -168 128 96 -64 48 40 -192 96 48 -128 96 72 -248 248 248 -248 152 96 -184 96 96 +24 74 24 +65 123 65 +82 164 74 +148 106 65 +82 57 41 +172 106 16 +115 82 65 +255 255 255 +230 131 0 +172 74 98 diff --git a/graphics/pokemon/whirlipede/anim_front.png b/graphics/pokemon/whirlipede/anim_front.png index 5ff49d921..de69698e2 100644 Binary files a/graphics/pokemon/whirlipede/anim_front.png and b/graphics/pokemon/whirlipede/anim_front.png differ diff --git a/graphics/pokemon/whirlipede/front.png b/graphics/pokemon/whirlipede/front.png index 92f12ebaa..624335082 100644 Binary files a/graphics/pokemon/whirlipede/front.png and b/graphics/pokemon/whirlipede/front.png differ diff --git a/graphics/pokemon/whirlipede/normal.pal b/graphics/pokemon/whirlipede/normal.pal index 59a3b2795..3a0db5c8e 100644 --- a/graphics/pokemon/whirlipede/normal.pal +++ b/graphics/pokemon/whirlipede/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 64 96 -120 112 152 -16 16 16 -152 152 184 -208 112 120 -192 80 104 -72 72 80 -56 48 56 -32 32 32 -88 88 120 -176 120 64 -240 184 112 -144 72 96 -136 48 64 +88 72 96 +128 112 152 +0 0 0 +168 144 192 +184 80 144 +192 24 88 +64 64 80 +48 48 56 +40 40 40 +112 96 120 +224 168 16 +248 248 0 +144 56 112 +160 0 80 0 0 0 diff --git a/graphics/pokemon/whiscash/anim_front.png b/graphics/pokemon/whiscash/anim_front.png index 04ce0e89e..b11b3a8a7 100644 Binary files a/graphics/pokemon/whiscash/anim_front.png and b/graphics/pokemon/whiscash/anim_front.png differ diff --git a/graphics/pokemon/whiscash/front.png b/graphics/pokemon/whiscash/front.png index bfa4b5cbe..d62e69f3c 100644 Binary files a/graphics/pokemon/whiscash/front.png and b/graphics/pokemon/whiscash/front.png differ diff --git a/graphics/pokemon/whiscash/normal.pal b/graphics/pokemon/whiscash/normal.pal index aaad3dab8..2aee971e4 100644 --- a/graphics/pokemon/whiscash/normal.pal +++ b/graphics/pokemon/whiscash/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -192 160 96 -240 208 144 -112 96 56 -8 24 56 -32 48 112 -136 208 240 -96 168 216 -16 16 16 -96 104 168 -64 80 128 +192 160 64 +240 216 88 +104 88 64 +40 48 72 +56 72 152 +128 216 248 +112 168 224 +0 0 0 +96 120 200 +64 96 176 168 176 128 96 128 184 120 176 224 248 248 248 -153 100 125 +192 64 32 diff --git a/graphics/pokemon/whismur/anim_front.png b/graphics/pokemon/whismur/anim_front.png index 7fd9b5962..098910d89 100644 Binary files a/graphics/pokemon/whismur/anim_front.png and b/graphics/pokemon/whismur/anim_front.png differ diff --git a/graphics/pokemon/whismur/front.png b/graphics/pokemon/whismur/front.png index 5c6ef0e1c..3a4c69d47 100644 Binary files a/graphics/pokemon/whismur/front.png and b/graphics/pokemon/whismur/front.png differ diff --git a/graphics/pokemon/whismur/normal.pal b/graphics/pokemon/whismur/normal.pal index a1e8740ff..fbbff8610 100644 --- a/graphics/pokemon/whismur/normal.pal +++ b/graphics/pokemon/whismur/normal.pal @@ -2,16 +2,16 @@ JASC-PAL 0100 16 152 208 160 -128 80 120 -232 184 224 -208 144 200 -248 200 104 -152 112 48 -248 224 144 -192 152 80 -16 16 16 -168 112 160 -184 96 120 +128 64 104 +232 168 224 +208 128 200 +248 200 64 +160 112 24 +248 224 136 +208 152 0 +0 0 0 +168 80 160 +200 64 112 240 200 240 0 0 0 0 0 0 diff --git a/graphics/pokemon/wigglytuff/anim_front.png b/graphics/pokemon/wigglytuff/anim_front.png index 1fd7706d9..01ffab90d 100644 Binary files a/graphics/pokemon/wigglytuff/anim_front.png and b/graphics/pokemon/wigglytuff/anim_front.png differ diff --git a/graphics/pokemon/wigglytuff/front.png b/graphics/pokemon/wigglytuff/front.png index 89d83fa5c..26ab75305 100644 Binary files a/graphics/pokemon/wigglytuff/front.png and b/graphics/pokemon/wigglytuff/front.png differ diff --git a/graphics/pokemon/wigglytuff/normal.pal b/graphics/pokemon/wigglytuff/normal.pal index 143b2f466..ff6efc68a 100644 --- a/graphics/pokemon/wigglytuff/normal.pal +++ b/graphics/pokemon/wigglytuff/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 72 88 +136 64 64 248 248 248 -104 104 112 -224 216 232 +112 112 112 +224 216 224 16 16 16 -248 192 200 -208 144 160 -176 112 136 -248 224 224 -16 144 160 -0 104 136 -72 200 216 -96 40 72 -184 112 136 +248 168 184 +240 120 144 +200 104 96 +248 216 200 +24 112 192 +16 72 136 +16 176 232 +112 64 24 +224 48 48 0 0 0 diff --git a/graphics/pokemon/wingull/anim_front.png b/graphics/pokemon/wingull/anim_front.png index cb83f46af..8580fac15 100644 Binary files a/graphics/pokemon/wingull/anim_front.png and b/graphics/pokemon/wingull/anim_front.png differ diff --git a/graphics/pokemon/wingull/front.png b/graphics/pokemon/wingull/front.png index b0a797561..dc5fe2e80 100644 Binary files a/graphics/pokemon/wingull/front.png and b/graphics/pokemon/wingull/front.png differ diff --git a/graphics/pokemon/wingull/normal.pal b/graphics/pokemon/wingull/normal.pal index b98bdbac8..445b41db6 100644 --- a/graphics/pokemon/wingull/normal.pal +++ b/graphics/pokemon/wingull/normal.pal @@ -6,14 +6,14 @@ JASC-PAL 0 0 0 248 248 248 192 208 232 -32 112 136 -120 200 240 -40 168 208 +40 104 144 +112 168 248 +48 152 208 128 144 144 -144 80 24 -232 168 120 +136 80 16 +248 168 48 48 48 48 -208 128 64 +216 128 0 176 168 192 64 72 64 155 90 110 diff --git a/graphics/pokemon/wobbuffet/anim_front.png b/graphics/pokemon/wobbuffet/anim_front.png index 358a507e5..e5ca905e0 100644 Binary files a/graphics/pokemon/wobbuffet/anim_front.png and b/graphics/pokemon/wobbuffet/anim_front.png differ diff --git a/graphics/pokemon/wobbuffet/front.png b/graphics/pokemon/wobbuffet/front.png index 9034d9ec5..a8efd17ef 100644 Binary files a/graphics/pokemon/wobbuffet/front.png and b/graphics/pokemon/wobbuffet/front.png differ diff --git a/graphics/pokemon/wobbuffet/normal.pal b/graphics/pokemon/wobbuffet/normal.pal index 8a15d7851..de342b751 100644 --- a/graphics/pokemon/wobbuffet/normal.pal +++ b/graphics/pokemon/wobbuffet/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 136 168 -32 88 112 -112 192 224 -72 168 216 -160 224 240 +32 128 200 +32 80 136 +128 192 240 +72 168 224 +168 224 248 16 16 16 -128 72 80 -184 96 96 -224 120 120 -48 48 56 -88 88 88 +160 56 56 +184 80 80 +208 96 96 +80 80 80 +128 128 128 248 248 248 -168 168 168 +192 192 192 0 0 0 0 0 0 diff --git a/graphics/pokemon/woobat/anim_front.png b/graphics/pokemon/woobat/anim_front.png index 3c198e33f..675498484 100644 Binary files a/graphics/pokemon/woobat/anim_front.png and b/graphics/pokemon/woobat/anim_front.png differ diff --git a/graphics/pokemon/woobat/front.png b/graphics/pokemon/woobat/front.png index 0769f47fd..793607dc8 100644 Binary files a/graphics/pokemon/woobat/front.png and b/graphics/pokemon/woobat/front.png differ diff --git a/graphics/pokemon/woobat/normal.pal b/graphics/pokemon/woobat/normal.pal index 313df4625..9092ac11f 100644 --- a/graphics/pokemon/woobat/normal.pal +++ b/graphics/pokemon/woobat/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 24 24 32 -48 40 40 +40 40 48 16 16 16 -80 72 72 -72 104 112 +64 72 88 +72 104 120 168 216 240 -128 184 208 -112 144 152 -120 72 72 -232 160 152 -200 112 120 +112 168 192 +104 144 168 +128 24 56 +240 168 176 +192 104 120 248 248 248 112 112 112 -232 128 136 -120 72 72 +200 40 64 +136 72 80 diff --git a/graphics/pokemon/wooper/anim_front.png b/graphics/pokemon/wooper/anim_front.png index 2ade34d3e..7e35c55c0 100644 Binary files a/graphics/pokemon/wooper/anim_front.png and b/graphics/pokemon/wooper/anim_front.png differ diff --git a/graphics/pokemon/wooper/back.png b/graphics/pokemon/wooper/back.png index b8d50ba58..1e33cd094 100644 Binary files a/graphics/pokemon/wooper/back.png and b/graphics/pokemon/wooper/back.png differ diff --git a/graphics/pokemon/wooper/front.png b/graphics/pokemon/wooper/front.png index 0d74723f0..ad14f25b2 100644 Binary files a/graphics/pokemon/wooper/front.png and b/graphics/pokemon/wooper/front.png differ diff --git a/graphics/pokemon/wooper/normal.pal b/graphics/pokemon/wooper/normal.pal index e047dfb4a..0fffdb9e5 100644 --- a/graphics/pokemon/wooper/normal.pal +++ b/graphics/pokemon/wooper/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 96 120 -208 152 168 -104 56 80 -88 128 152 -96 152 176 -184 216 232 -120 192 224 -184 120 160 +144 96 160 +232 112 224 +96 56 104 +56 120 192 +80 152 224 +152 208 240 +112 184 248 +208 88 208 16 16 16 248 248 248 -48 88 128 -32 48 88 -142 84 82 -224 123 123 +16 72 128 +16 40 112 +168 16 0 +232 64 48 0 0 0 diff --git a/graphics/pokemon/wormadam/anim_front.png b/graphics/pokemon/wormadam/anim_front.png index 9c65c439e..ebd471034 100644 Binary files a/graphics/pokemon/wormadam/anim_front.png and b/graphics/pokemon/wormadam/anim_front.png differ diff --git a/graphics/pokemon/wormadam/front.png b/graphics/pokemon/wormadam/front.png index aa19c6c1b..575460ac0 100644 Binary files a/graphics/pokemon/wormadam/front.png and b/graphics/pokemon/wormadam/front.png differ diff --git a/graphics/pokemon/wormadam/normal.pal b/graphics/pokemon/wormadam/normal.pal index 4ef4c830d..fbc868775 100644 --- a/graphics/pokemon/wormadam/normal.pal +++ b/graphics/pokemon/wormadam/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -88 88 96 -56 56 56 -136 136 120 -32 88 64 -16 56 32 -56 136 96 -232 240 224 -72 112 48 -168 184 120 -112 160 80 -40 72 32 +90 90 90 +57 57 65 +115 123 106 +57 82 65 +41 49 57 +74 115 74 +255 255 255 +82 115 65 +172 189 123 +123 156 74 +49 74 57 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/wormadam/sandy_cloak/anim_front.png b/graphics/pokemon/wormadam/sandy_cloak/anim_front.png index 7410c9ad2..51990c1a3 100644 Binary files a/graphics/pokemon/wormadam/sandy_cloak/anim_front.png and b/graphics/pokemon/wormadam/sandy_cloak/anim_front.png differ diff --git a/graphics/pokemon/wormadam/sandy_cloak/front.png b/graphics/pokemon/wormadam/sandy_cloak/front.png index ecf9b7964..5d08516fd 100644 Binary files a/graphics/pokemon/wormadam/sandy_cloak/front.png and b/graphics/pokemon/wormadam/sandy_cloak/front.png differ diff --git a/graphics/pokemon/wormadam/sandy_cloak/normal.pal b/graphics/pokemon/wormadam/sandy_cloak/normal.pal index 009475503..0c3aeb435 100644 --- a/graphics/pokemon/wormadam/sandy_cloak/normal.pal +++ b/graphics/pokemon/wormadam/sandy_cloak/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -88 88 96 -56 56 56 -136 136 120 -56 48 24 -168 136 88 -120 88 48 -176 160 112 -248 248 248 -160 64 56 -232 208 136 -96 96 80 -232 112 88 -120 120 88 +90 90 90 +57 57 65 +115 123 106 +57 49 49 +164 123 90 +98 74 57 +172 148 115 +255 255 255 +139 74 57 +213 197 115 +98 82 82 +238 115 82 +131 115 98 0 0 0 diff --git a/graphics/pokemon/wormadam/trash_cloak/anim_front.png b/graphics/pokemon/wormadam/trash_cloak/anim_front.png index cdaa7fb02..d0b41b9df 100644 Binary files a/graphics/pokemon/wormadam/trash_cloak/anim_front.png and b/graphics/pokemon/wormadam/trash_cloak/anim_front.png differ diff --git a/graphics/pokemon/wormadam/trash_cloak/front.png b/graphics/pokemon/wormadam/trash_cloak/front.png index 48670cbf8..a15ba6b90 100644 Binary files a/graphics/pokemon/wormadam/trash_cloak/front.png and b/graphics/pokemon/wormadam/trash_cloak/front.png differ diff --git a/graphics/pokemon/wormadam/trash_cloak/normal.pal b/graphics/pokemon/wormadam/trash_cloak/normal.pal index 707910aec..9035a0f64 100644 --- a/graphics/pokemon/wormadam/trash_cloak/normal.pal +++ b/graphics/pokemon/wormadam/trash_cloak/normal.pal @@ -3,16 +3,16 @@ JASC-PAL 16 152 208 160 16 16 16 -88 88 96 -56 56 56 -136 136 120 -88 40 80 -192 96 160 -152 64 128 -112 64 80 -176 96 104 -248 248 248 -240 144 144 +90 90 90 +57 57 65 +115 123 106 +82 57 74 +197 90 156 +131 74 115 +123 74 90 +180 106 123 +255 255 255 +238 148 156 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/wurmple/anim_front.png b/graphics/pokemon/wurmple/anim_front.png index 86444326c..d214a22e5 100644 Binary files a/graphics/pokemon/wurmple/anim_front.png and b/graphics/pokemon/wurmple/anim_front.png differ diff --git a/graphics/pokemon/wurmple/front.png b/graphics/pokemon/wurmple/front.png index 8022d2852..bad155a3d 100644 Binary files a/graphics/pokemon/wurmple/front.png and b/graphics/pokemon/wurmple/front.png differ diff --git a/graphics/pokemon/wurmple/normal.pal b/graphics/pokemon/wurmple/normal.pal index 15795c06f..5710cd179 100644 --- a/graphics/pokemon/wurmple/normal.pal +++ b/graphics/pokemon/wurmple/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -184 64 72 -232 120 128 -112 32 48 -216 72 80 +216 40 80 +248 96 104 +128 40 40 +232 48 88 0 0 0 -184 152 96 -104 88 48 -248 224 128 -104 96 72 -232 216 200 -176 168 136 +184 136 72 +120 96 56 +248 224 112 +112 104 88 +224 224 200 +192 168 144 96 112 112 248 248 248 200 208 216 diff --git a/graphics/pokemon/wynaut/anim_front.png b/graphics/pokemon/wynaut/anim_front.png index 7239c2372..3dad81357 100644 Binary files a/graphics/pokemon/wynaut/anim_front.png and b/graphics/pokemon/wynaut/anim_front.png differ diff --git a/graphics/pokemon/wynaut/front.png b/graphics/pokemon/wynaut/front.png index 0da52676a..197d67fdf 100644 Binary files a/graphics/pokemon/wynaut/front.png and b/graphics/pokemon/wynaut/front.png differ diff --git a/graphics/pokemon/wynaut/normal.pal b/graphics/pokemon/wynaut/normal.pal index 4c5f2c233..832ce361e 100644 --- a/graphics/pokemon/wynaut/normal.pal +++ b/graphics/pokemon/wynaut/normal.pal @@ -2,15 +2,15 @@ JASC-PAL 0100 16 152 208 160 -48 80 88 -48 128 136 -184 224 232 -104 192 200 -16 16 16 -72 160 168 -160 64 64 +56 80 96 +56 120 160 +152 208 232 +104 184 216 +0 0 0 +72 152 184 +160 48 64 120 40 56 -240 136 128 +216 88 96 128 120 120 200 200 192 0 0 0 diff --git a/graphics/pokemon/xatu/anim_front.png b/graphics/pokemon/xatu/anim_front.png index 3ce8a4a3c..b6968e775 100644 Binary files a/graphics/pokemon/xatu/anim_front.png and b/graphics/pokemon/xatu/anim_front.png differ diff --git a/graphics/pokemon/xatu/front.png b/graphics/pokemon/xatu/front.png index 58def347f..93c794763 100644 Binary files a/graphics/pokemon/xatu/front.png and b/graphics/pokemon/xatu/front.png differ diff --git a/graphics/pokemon/xatu/normal.pal b/graphics/pokemon/xatu/normal.pal index 26b002db4..eb20bf6ae 100644 --- a/graphics/pokemon/xatu/normal.pal +++ b/graphics/pokemon/xatu/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 0 176 232 -104 152 48 -144 216 80 -72 104 40 -208 136 24 -120 184 48 -248 184 80 -120 88 32 +72 144 64 +144 208 64 +40 104 40 +176 136 32 +112 184 64 +248 184 48 +136 88 0 16 16 16 248 248 248 144 144 144 -64 64 64 -112 16 40 -152 40 64 -192 208 208 -232 64 88 +80 80 80 +128 40 0 +176 48 0 +200 200 200 +232 56 0 diff --git a/graphics/pokemon/yamask/anim_front.png b/graphics/pokemon/yamask/anim_front.png index 7b297063f..daf3ec638 100644 Binary files a/graphics/pokemon/yamask/anim_front.png and b/graphics/pokemon/yamask/anim_front.png differ diff --git a/graphics/pokemon/yamask/front.png b/graphics/pokemon/yamask/front.png index 58e6e3cd2..28a564b55 100644 Binary files a/graphics/pokemon/yamask/front.png and b/graphics/pokemon/yamask/front.png differ diff --git a/graphics/pokemon/yamask/normal.pal b/graphics/pokemon/yamask/normal.pal index fa4586573..7ce969a07 100644 --- a/graphics/pokemon/yamask/normal.pal +++ b/graphics/pokemon/yamask/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 48 56 -80 80 88 +48 48 48 +80 80 80 16 16 16 -112 40 32 -216 64 64 +168 0 0 +248 0 0 88 0 0 -120 80 40 -248 200 128 -232 176 88 -168 120 64 +136 88 32 +248 216 120 +240 168 40 +200 128 16 216 216 216 -0 0 0 +48 48 48 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/yanma/anim_front.png b/graphics/pokemon/yanma/anim_front.png index 63821296b..cc4df48ea 100644 Binary files a/graphics/pokemon/yanma/anim_front.png and b/graphics/pokemon/yanma/anim_front.png differ diff --git a/graphics/pokemon/yanma/front.png b/graphics/pokemon/yanma/front.png index cd4239010..54d4f54cd 100644 Binary files a/graphics/pokemon/yanma/front.png and b/graphics/pokemon/yanma/front.png differ diff --git a/graphics/pokemon/yanma/normal.pal b/graphics/pokemon/yanma/normal.pal index 8d5f8f9f3..6912eb837 100644 --- a/graphics/pokemon/yanma/normal.pal +++ b/graphics/pokemon/yanma/normal.pal @@ -5,15 +5,15 @@ JASC-PAL 192 208 232 144 168 184 224 248 248 -248 168 128 -96 24 16 -224 80 64 +248 184 152 +120 48 0 +248 80 80 16 16 16 -168 48 24 -232 128 112 -56 72 32 -120 192 56 -96 136 48 -160 216 104 -120 120 152 -80 80 96 +192 64 56 +248 136 96 +56 88 40 +168 208 80 +96 152 48 +208 240 128 +104 120 128 +72 72 80 diff --git a/graphics/pokemon/yanmega/anim_front.png b/graphics/pokemon/yanmega/anim_front.png index 523fb4f73..d50d34b73 100644 Binary files a/graphics/pokemon/yanmega/anim_front.png and b/graphics/pokemon/yanmega/anim_front.png differ diff --git a/graphics/pokemon/yanmega/front.png b/graphics/pokemon/yanmega/front.png index 11000dea1..943aa095a 100644 Binary files a/graphics/pokemon/yanmega/front.png and b/graphics/pokemon/yanmega/front.png differ diff --git a/graphics/pokemon/yanmega/normal.pal b/graphics/pokemon/yanmega/normal.pal index 5c85bb6ee..f7758fee8 100644 --- a/graphics/pokemon/yanmega/normal.pal +++ b/graphics/pokemon/yanmega/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 56 48 -224 104 96 -104 32 32 -184 184 160 -248 248 248 -72 64 64 -136 120 120 -16 16 16 -224 224 192 -32 48 24 -128 160 104 -96 120 64 -64 80 40 -40 40 48 +176 48 24 +240 88 80 +112 48 0 160 168 192 +248 248 248 +72 72 80 +120 120 128 +16 16 16 +192 200 224 +32 56 24 +112 152 96 +80 128 72 +56 88 40 +40 40 48 +0 0 0 diff --git a/graphics/pokemon/zangoose/anim_front.png b/graphics/pokemon/zangoose/anim_front.png index 1e431929b..a7a863feb 100644 Binary files a/graphics/pokemon/zangoose/anim_front.png and b/graphics/pokemon/zangoose/anim_front.png differ diff --git a/graphics/pokemon/zangoose/front.png b/graphics/pokemon/zangoose/front.png index 37b418a10..d9640b842 100644 Binary files a/graphics/pokemon/zangoose/front.png and b/graphics/pokemon/zangoose/front.png differ diff --git a/graphics/pokemon/zangoose/normal.pal b/graphics/pokemon/zangoose/normal.pal index 6d0fd5ca5..dd141c40f 100644 --- a/graphics/pokemon/zangoose/normal.pal +++ b/graphics/pokemon/zangoose/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 144 144 +139 148 148 16 16 16 -248 248 248 -136 40 56 -200 208 240 -176 56 80 -232 80 96 -88 96 112 -136 152 200 -224 96 136 -176 176 208 -248 136 168 -64 56 56 -120 104 104 -176 168 160 +255 255 255 +148 41 49 +205 222 246 +180 57 82 +230 74 106 +90 98 98 +139 156 205 +230 98 139 +172 180 205 +255 131 164 +41 49 49 +90 98 98 +139 148 148 diff --git a/graphics/pokemon/zapdos/anim_front.png b/graphics/pokemon/zapdos/anim_front.png index 730db559b..1c0c87904 100644 Binary files a/graphics/pokemon/zapdos/anim_front.png and b/graphics/pokemon/zapdos/anim_front.png differ diff --git a/graphics/pokemon/zapdos/front.png b/graphics/pokemon/zapdos/front.png index c2bddd8d4..c88ae03a3 100644 Binary files a/graphics/pokemon/zapdos/front.png and b/graphics/pokemon/zapdos/front.png differ diff --git a/graphics/pokemon/zapdos/normal.pal b/graphics/pokemon/zapdos/normal.pal index 82ccddda8..5551ab973 100644 --- a/graphics/pokemon/zapdos/normal.pal +++ b/graphics/pokemon/zapdos/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 104 40 +152 120 16 248 224 168 72 48 16 0 32 56 -192 152 80 +208 168 8 8 16 16 -248 200 88 +248 208 64 248 248 248 -248 200 128 -240 168 80 -152 112 80 -128 104 88 +248 184 104 +240 144 24 +192 104 24 +152 136 48 216 216 216 104 104 104 163 48 48 diff --git a/graphics/pokemon/zebstrika/anim_front.png b/graphics/pokemon/zebstrika/anim_front.png index 252c65af9..db28f434f 100644 Binary files a/graphics/pokemon/zebstrika/anim_front.png and b/graphics/pokemon/zebstrika/anim_front.png differ diff --git a/graphics/pokemon/zebstrika/front.png b/graphics/pokemon/zebstrika/front.png index 9ced3a800..8d0970282 100644 Binary files a/graphics/pokemon/zebstrika/front.png and b/graphics/pokemon/zebstrika/front.png differ diff --git a/graphics/pokemon/zebstrika/normal.pal b/graphics/pokemon/zebstrika/normal.pal index 340931d5c..7939301a7 100644 --- a/graphics/pokemon/zebstrika/normal.pal +++ b/graphics/pokemon/zebstrika/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 88 88 -80 72 72 -168 144 144 -200 184 184 +64 80 88 +64 64 64 +160 160 160 +200 200 200 16 16 16 248 248 248 -120 104 104 -32 24 24 -0 128 160 -0 184 240 -152 136 48 -240 208 80 -56 40 48 +120 120 120 +24 32 32 +0 88 152 +0 168 216 +136 112 32 +248 224 0 +40 48 48 56 56 56 -80 72 72 +0 0 0 diff --git a/graphics/pokemon/zekrom/anim_front.png b/graphics/pokemon/zekrom/anim_front.png index fc445ff40..a987b70e3 100644 Binary files a/graphics/pokemon/zekrom/anim_front.png and b/graphics/pokemon/zekrom/anim_front.png differ diff --git a/graphics/pokemon/zekrom/front.png b/graphics/pokemon/zekrom/front.png index 2e3db00e2..265903400 100644 Binary files a/graphics/pokemon/zekrom/front.png and b/graphics/pokemon/zekrom/front.png differ diff --git a/graphics/pokemon/zekrom/normal.pal b/graphics/pokemon/zekrom/normal.pal index 362c6e7de..2ad25e0bc 100644 --- a/graphics/pokemon/zekrom/normal.pal +++ b/graphics/pokemon/zekrom/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -40 40 48 -24 96 112 -64 64 64 +248 248 248 +32 32 40 +0 104 184 +48 48 56 0 0 0 -96 232 248 -56 152 176 +104 240 248 +0 200 248 80 80 88 -24 32 32 +24 24 32 16 16 16 -192 64 64 -136 48 48 -216 200 200 +208 0 0 +144 0 0 +224 208 208 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/zigzagoon/anim_front.png b/graphics/pokemon/zigzagoon/anim_front.png index d0b6861df..9acce5453 100644 Binary files a/graphics/pokemon/zigzagoon/anim_front.png and b/graphics/pokemon/zigzagoon/anim_front.png differ diff --git a/graphics/pokemon/zigzagoon/front.png b/graphics/pokemon/zigzagoon/front.png index ffa3cd89c..da1a3a6ad 100644 Binary files a/graphics/pokemon/zigzagoon/front.png and b/graphics/pokemon/zigzagoon/front.png differ diff --git a/graphics/pokemon/zigzagoon/normal.pal b/graphics/pokemon/zigzagoon/normal.pal index 85e04e481..e814e4386 100644 --- a/graphics/pokemon/zigzagoon/normal.pal +++ b/graphics/pokemon/zigzagoon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 96 80 -16 16 16 -184 168 152 -240 224 208 -184 160 136 -152 128 104 -96 88 72 -56 72 72 -248 248 248 -96 72 56 -128 96 56 -32 40 40 -192 192 184 +115 98 90 +0 0 0 +189 172 156 +230 222 205 +180 156 139 +148 123 106 +90 82 74 +65 65 65 +255 255 255 +82 65 49 +106 82 49 +32 32 41 +197 197 189 0 0 0 240 224 208 diff --git a/graphics/pokemon/zoroark/anim_front.png b/graphics/pokemon/zoroark/anim_front.png index 4ab1b0769..1cec32288 100644 Binary files a/graphics/pokemon/zoroark/anim_front.png and b/graphics/pokemon/zoroark/anim_front.png differ diff --git a/graphics/pokemon/zoroark/front.png b/graphics/pokemon/zoroark/front.png index d2828bb99..365e9ca96 100644 Binary files a/graphics/pokemon/zoroark/front.png and b/graphics/pokemon/zoroark/front.png differ diff --git a/graphics/pokemon/zoroark/normal.pal b/graphics/pokemon/zoroark/normal.pal index a3ff79c0c..52adb2069 100644 --- a/graphics/pokemon/zoroark/normal.pal +++ b/graphics/pokemon/zoroark/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 16 16 16 -56 48 64 -32 24 40 -104 32 40 -72 16 24 -160 40 56 -120 104 120 -88 80 104 -64 56 72 +40 48 64 +32 32 48 +120 40 64 +72 16 40 +168 16 64 +120 120 128 +96 96 104 +72 72 80 200 200 200 -48 120 104 -48 168 160 +48 128 128 +24 176 176 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/zorua/anim_front.png b/graphics/pokemon/zorua/anim_front.png index 6b16f5c23..a01ab6211 100644 Binary files a/graphics/pokemon/zorua/anim_front.png and b/graphics/pokemon/zorua/anim_front.png differ diff --git a/graphics/pokemon/zorua/front.png b/graphics/pokemon/zorua/front.png index 544b99959..58f3f3a7c 100644 Binary files a/graphics/pokemon/zorua/front.png and b/graphics/pokemon/zorua/front.png differ diff --git a/graphics/pokemon/zorua/normal.pal b/graphics/pokemon/zorua/normal.pal index 83748686b..5c9bfcd1f 100644 --- a/graphics/pokemon/zorua/normal.pal +++ b/graphics/pokemon/zorua/normal.pal @@ -1,17 +1,17 @@ JASC-PAL 0100 16 -152 208 160 -104 32 40 -160 40 56 -96 88 120 -40 32 48 +153 204 153 +104 32 56 +168 16 64 +88 88 112 +32 32 48 16 16 16 64 64 80 -48 176 160 +24 176 176 248 248 248 48 128 128 -64 48 80 +48 48 64 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/zubat/anim_front.png b/graphics/pokemon/zubat/anim_front.png index fecc35b77..b6b809271 100644 Binary files a/graphics/pokemon/zubat/anim_front.png and b/graphics/pokemon/zubat/anim_front.png differ diff --git a/graphics/pokemon/zubat/front.png b/graphics/pokemon/zubat/front.png index e17298b25..83ba7c583 100644 Binary files a/graphics/pokemon/zubat/front.png and b/graphics/pokemon/zubat/front.png differ diff --git a/graphics/pokemon/zubat/normal.pal b/graphics/pokemon/zubat/normal.pal index 2c4a19853..f21f16cf5 100644 --- a/graphics/pokemon/zubat/normal.pal +++ b/graphics/pokemon/zubat/normal.pal @@ -3,14 +3,14 @@ JASC-PAL 16 152 208 160 16 16 16 -48 112 152 -136 184 216 -64 152 184 -24 64 80 96 120 176 -160 88 168 -96 56 96 -192 120 192 +184 200 248 +136 176 232 +72 64 120 +96 120 176 +176 80 152 +112 32 88 +208 112 184 248 248 248 208 208 208 96 96 96 diff --git a/graphics/pokemon/zweilous/anim_front.png b/graphics/pokemon/zweilous/anim_front.png index afb5bc5f3..622db80f6 100644 Binary files a/graphics/pokemon/zweilous/anim_front.png and b/graphics/pokemon/zweilous/anim_front.png differ diff --git a/graphics/pokemon/zweilous/front.png b/graphics/pokemon/zweilous/front.png index 976ad1132..d6e4b809d 100644 Binary files a/graphics/pokemon/zweilous/front.png and b/graphics/pokemon/zweilous/front.png differ diff --git a/graphics/pokemon/zweilous/normal.pal b/graphics/pokemon/zweilous/normal.pal index b0795275a..068f0e652 100644 --- a/graphics/pokemon/zweilous/normal.pal +++ b/graphics/pokemon/zweilous/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 40 40 +40 32 40 64 56 64 -88 80 80 +80 80 80 16 16 16 -80 104 136 -40 56 80 -96 144 200 -136 88 112 +56 96 160 +24 48 104 +96 144 216 +144 88 120 224 216 216 -136 48 88 -72 32 56 -88 56 144 +152 56 104 +96 32 64 168 168 168 -48 40 40 +40 32 40 +0 0 0 0 0 0 diff --git a/graphics/pokemon_storage/box_bg1.pal b/graphics/pokemon_storage/box_bg1.pal deleted file mode 100644 index 52ac12110..000000000 --- a/graphics/pokemon_storage/box_bg1.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 205 106 -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 diff --git a/graphics/pokemon_storage/box_selection_popup_center.png b/graphics/pokemon_storage/box_selection_popup_center.png index f7ab30276..d0b90c578 100644 Binary files a/graphics/pokemon_storage/box_selection_popup_center.png and b/graphics/pokemon_storage/box_selection_popup_center.png differ diff --git a/graphics/pokemon_storage/box_selection_popup_sides.png b/graphics/pokemon_storage/box_selection_popup_sides.png index a0140dc87..27b4dc10a 100644 Binary files a/graphics/pokemon_storage/box_selection_popup_sides.png and b/graphics/pokemon_storage/box_selection_popup_sides.png differ diff --git a/graphics/pokemon_storage/item_info_frame.png b/graphics/pokemon_storage/item_info_frame.png index 743e52441..734101a55 100644 Binary files a/graphics/pokemon_storage/item_info_frame.png and b/graphics/pokemon_storage/item_info_frame.png differ diff --git a/graphics/pokemon_storage/menu.png b/graphics/pokemon_storage/menu.png index 204c07504..0a1ca913b 100644 Binary files a/graphics/pokemon_storage/menu.png and b/graphics/pokemon_storage/menu.png differ diff --git a/graphics/pokemon_storage/party_menu.pal b/graphics/pokemon_storage/party_menu.pal new file mode 100644 index 000000000..a827cfd45 --- /dev/null +++ b/graphics/pokemon_storage/party_menu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +131 172 180 +41 106 98 +82 98 115 +74 172 164 +57 139 139 +164 213 246 +115 189 98 +255 255 255 +123 189 255 +0 123 255 +41 90 164 +123 205 180 +8 74 65 +164 238 148 +65 82 90 diff --git a/graphics/pokemon_storage/bg.pal b/graphics/pokemon_storage/scrolling_bg.pal similarity index 100% rename from graphics/pokemon_storage/bg.pal rename to graphics/pokemon_storage/scrolling_bg.pal diff --git a/graphics/pokemon_storage/scrolling_bg.png b/graphics/pokemon_storage/scrolling_bg.png index 8be861a26..228e9ce6f 100644 Binary files a/graphics/pokemon_storage/scrolling_bg.png and b/graphics/pokemon_storage/scrolling_bg.png differ diff --git a/graphics/pokemon_storage/bg_move_items.pal b/graphics/pokemon_storage/scrolling_bg_move_items.pal similarity index 100% rename from graphics/pokemon_storage/bg_move_items.pal rename to graphics/pokemon_storage/scrolling_bg_move_items.pal diff --git a/graphics/rayquaza_scene/scene_1/clouds.pal b/graphics/rayquaza_scene/scene_1/clouds.pal deleted file mode 100644 index 4b1a354ce..000000000 --- a/graphics/rayquaza_scene/scene_1/clouds.pal +++ /dev/null @@ -1,35 +0,0 @@ -JASC-PAL -0100 -32 -164 205 180 -82 82 90 -255 0 255 -205 115 0 -156 98 16 -98 82 32 -49 65 49 -0 49 65 -24 57 65 -49 65 74 -49 49 57 -74 74 82 -98 98 106 -115 115 131 -139 148 148 -0 0 0 -32 90 115 -131 131 131 -148 148 148 -172 172 172 -197 197 197 -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 diff --git a/graphics/rayquaza_scene/scene_1/clouds.png b/graphics/rayquaza_scene/scene_1/clouds.png index a253f47cc..be4974103 100644 Binary files a/graphics/rayquaza_scene/scene_1/clouds.png and b/graphics/rayquaza_scene/scene_1/clouds.png differ diff --git a/graphics/slot_machine/menu.pal b/graphics/slot_machine/menu.pal deleted file mode 100644 index 56a9d31d0..000000000 --- a/graphics/slot_machine/menu.pal +++ /dev/null @@ -1,83 +0,0 @@ -JASC-PAL -0100 -80 -0 0 0 -57 57 49 -230 230 230 -255 255 255 -131 213 172 -49 123 74 -90 172 106 -255 0 255 -90 172 106 -255 164 41 -255 98 57 -255 197 156 -172 57 0 -0 65 24 -98 98 90 -0 0 0 -222 222 222 -255 255 255 -131 213 172 -255 90 0 -222 41 0 -255 90 0 -222 41 0 -255 90 0 -222 41 0 -255 90 0 -222 41 0 -255 90 0 -222 41 0 -255 0 255 -156 0 0 -0 0 0 -0 0 0 -255 255 255 -74 74 213 -115 172 255 -115 164 74 -156 238 74 -230 65 24 -255 164 41 -255 238 32 -131 213 172 -189 189 189 -156 156 156 -123 123 123 -90 90 90 -65 65 65 -0 0 0 -255 0 255 -255 255 255 -65 164 82 -139 230 139 -139 230 139 -148 238 148 -164 246 164 -180 246 180 -189 246 189 -205 255 205 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -0 0 0 -222 222 222 -65 90 213 -90 172 106 -255 255 255 -131 213 172 -0 98 115 -90 90 0 -90 90 0 -156 16 0 -156 16 0 -106 156 246 -205 205 0 -205 205 0 -246 106 74 -246 106 74 -0 0 0 diff --git a/graphics/slot_machine/menu.png b/graphics/slot_machine/menu.png index 08aa5989d..035ec7fdf 100644 Binary files a/graphics/slot_machine/menu.png and b/graphics/slot_machine/menu.png differ diff --git a/graphics/starter_choose/birch_bag.png b/graphics/starter_choose/birch_bag.png deleted file mode 100644 index 86bfbbbc0..000000000 Binary files a/graphics/starter_choose/birch_bag.png and /dev/null differ diff --git a/graphics/starter_choose/birch_grass.png b/graphics/starter_choose/birch_grass.png deleted file mode 100644 index 838fa5f4c..000000000 Binary files a/graphics/starter_choose/birch_grass.png and /dev/null differ diff --git a/graphics/starter_choose/tiles.png b/graphics/starter_choose/tiles.png new file mode 100644 index 000000000..175b30f9d Binary files /dev/null and b/graphics/starter_choose/tiles.png differ diff --git a/graphics/summary_screen/tiles.pal b/graphics/summary_screen/tiles.pal deleted file mode 100644 index badbfe53b..000000000 --- a/graphics/summary_screen/tiles.pal +++ /dev/null @@ -1,131 +0,0 @@ -JASC-PAL -0100 -128 -180 180 115 -74 65 57 -255 255 255 -222 230 246 -213 213 189 -246 255 255 -115 106 98 -98 156 222 -74 148 189 -57 148 164 -32 148 139 -16 148 115 -156 222 164 -98 180 139 -49 139 115 -0 106 98 -180 180 115 -74 65 57 -255 255 255 -90 106 0 -123 139 32 -255 246 205 -115 106 98 -90 222 123 -90 205 98 -90 189 74 -98 172 49 -98 156 24 -238 164 255 -189 156 164 -148 148 82 -106 148 0 -180 180 115 -74 65 57 -255 255 255 -172 180 172 -205 205 197 -246 255 238 -115 106 98 -238 222 24 -213 189 57 -189 164 98 -164 139 131 -139 115 172 -205 222 123 -172 172 148 -139 131 180 -115 90 213 -180 180 115 -74 65 57 -255 255 255 -0 0 0 -0 0 0 -246 255 246 -115 106 98 -222 24 238 -189 16 238 -164 8 238 -131 8 246 -106 0 246 -172 222 222 -139 148 230 -106 74 238 -82 0 255 -180 180 115 -74 65 57 -148 32 172 -189 106 213 -230 189 255 -255 255 255 -213 148 246 -189 139 205 -255 230 255 -230 180 213 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -115 98 90 -180 180 115 -74 65 57 -255 255 255 -222 230 246 -246 246 222 -246 255 255 -115 106 98 -255 205 74 -230 164 98 -205 123 123 -180 82 148 -156 41 172 -230 156 255 -197 98 238 -164 49 222 -131 0 205 -98 180 106 -0 0 0 -213 213 205 -255 255 255 -98 98 98 -230 8 8 -255 189 115 -65 205 255 -0 139 189 -255 156 148 -189 90 82 -139 246 255 -24 164 213 -255 189 180 -213 115 106 -0 0 0 -98 180 106 -0 0 0 -213 213 205 -255 255 255 -98 98 98 -230 8 8 -255 189 115 -238 238 172 -164 164 98 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -255 0 0 -164 0 0 -255 255 255 diff --git a/graphics/summary_screen/tiles.png b/graphics/summary_screen/tiles.png index 2f9f8db85..915742f1a 100644 Binary files a/graphics/summary_screen/tiles.png and b/graphics/summary_screen/tiles.png differ diff --git a/graphics/trainer_card/one_star.pal b/graphics/trainer_card/bronze.pal similarity index 100% rename from graphics/trainer_card/one_star.pal rename to graphics/trainer_card/bronze.pal diff --git a/graphics/trainer_card/card.png b/graphics/trainer_card/card.png deleted file mode 100644 index eab827246..000000000 Binary files a/graphics/trainer_card/card.png and /dev/null differ diff --git a/graphics/trainer_card/card_fr.png b/graphics/trainer_card/card_fr.png deleted file mode 100644 index 2fea60d09..000000000 Binary files a/graphics/trainer_card/card_fr.png and /dev/null differ diff --git a/graphics/trainer_card/two_stars.pal b/graphics/trainer_card/copper.pal similarity index 100% rename from graphics/trainer_card/two_stars.pal rename to graphics/trainer_card/copper.pal diff --git a/graphics/trainer_card/four_stars.pal b/graphics/trainer_card/four_stars.pal deleted file mode 100644 index 4e1d56b54..000000000 --- a/graphics/trainer_card/four_stars.pal +++ /dev/null @@ -1,51 +0,0 @@ -JASC-PAL -0100 -48 -139 98 115 -246 246 222 -246 238 172 -164 164 164 -123 123 123 -98 98 115 -41 57 65 -57 106 139 -65 139 197 -246 230 139 -230 213 49 -213 197 57 -156 115 57 -106 189 255 -205 205 205 -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 -106 180 213 -41 123 164 -0 0 0 -0 0 0 -98 98 115 -255 255 255 -230 230 238 -164 164 164 -123 123 123 -255 255 255 -230 230 238 -164 164 164 -123 123 123 -255 255 255 -230 230 238 -164 164 164 -123 123 123 -106 189 255 -205 205 205 -0 0 0 diff --git a/graphics/trainer_card/back_fr.bin b/graphics/trainer_card/frlg/back.bin similarity index 100% rename from graphics/trainer_card/back_fr.bin rename to graphics/trainer_card/frlg/back.bin diff --git a/graphics/trainer_card/badges_fr.png b/graphics/trainer_card/frlg/badges.png similarity index 100% rename from graphics/trainer_card/badges_fr.png rename to graphics/trainer_card/frlg/badges.png diff --git a/graphics/trainer_card/bg_fr.bin b/graphics/trainer_card/frlg/bg.bin similarity index 100% rename from graphics/trainer_card/bg_fr.bin rename to graphics/trainer_card/frlg/bg.bin diff --git a/graphics/trainer_card/0star_fr.pal b/graphics/trainer_card/frlg/blue.pal similarity index 100% rename from graphics/trainer_card/0star_fr.pal rename to graphics/trainer_card/frlg/blue.pal diff --git a/graphics/trainer_card/two_stars_fr.pal b/graphics/trainer_card/frlg/bronze.pal similarity index 100% rename from graphics/trainer_card/two_stars_fr.pal rename to graphics/trainer_card/frlg/bronze.pal diff --git a/graphics/trainer_card/female_bg_fr.pal b/graphics/trainer_card/frlg/female_bg.pal similarity index 100% rename from graphics/trainer_card/female_bg_fr.pal rename to graphics/trainer_card/frlg/female_bg.pal diff --git a/graphics/trainer_card/front_fr.bin b/graphics/trainer_card/frlg/front.bin similarity index 100% rename from graphics/trainer_card/front_fr.bin rename to graphics/trainer_card/frlg/front.bin diff --git a/graphics/trainer_card/front_link_fr.bin b/graphics/trainer_card/frlg/front_link.bin similarity index 100% rename from graphics/trainer_card/front_link_fr.bin rename to graphics/trainer_card/frlg/front_link.bin diff --git a/graphics/trainer_card/four_stars_fr.pal b/graphics/trainer_card/frlg/gold.pal similarity index 100% rename from graphics/trainer_card/four_stars_fr.pal rename to graphics/trainer_card/frlg/gold.pal diff --git a/graphics/trainer_card/one_star_fr.pal b/graphics/trainer_card/frlg/green.pal similarity index 100% rename from graphics/trainer_card/one_star_fr.pal rename to graphics/trainer_card/frlg/green.pal diff --git a/graphics/trainer_card/three_stars_fr.pal b/graphics/trainer_card/frlg/silver.pal similarity index 100% rename from graphics/trainer_card/three_stars_fr.pal rename to graphics/trainer_card/frlg/silver.pal diff --git a/graphics/trainer_card/stickers_fr.png b/graphics/trainer_card/frlg/stickers.png similarity index 100% rename from graphics/trainer_card/stickers_fr.png rename to graphics/trainer_card/frlg/stickers.png diff --git a/graphics/trainer_card/stickers_fr1.pal b/graphics/trainer_card/frlg/stickers1.pal similarity index 100% rename from graphics/trainer_card/stickers_fr1.pal rename to graphics/trainer_card/frlg/stickers1.pal diff --git a/graphics/trainer_card/stickers_fr2.pal b/graphics/trainer_card/frlg/stickers2.pal similarity index 100% rename from graphics/trainer_card/stickers_fr2.pal rename to graphics/trainer_card/frlg/stickers2.pal diff --git a/graphics/trainer_card/stickers_fr3.pal b/graphics/trainer_card/frlg/stickers3.pal similarity index 100% rename from graphics/trainer_card/stickers_fr3.pal rename to graphics/trainer_card/frlg/stickers3.pal diff --git a/graphics/trainer_card/stickers_fr4.pal b/graphics/trainer_card/frlg/stickers4.pal similarity index 100% rename from graphics/trainer_card/stickers_fr4.pal rename to graphics/trainer_card/frlg/stickers4.pal diff --git a/graphics/trainer_card/frlg/tiles.png b/graphics/trainer_card/frlg/tiles.png new file mode 100644 index 000000000..5d2b11467 Binary files /dev/null and b/graphics/trainer_card/frlg/tiles.png differ diff --git a/graphics/trainer_card/gold.pal b/graphics/trainer_card/gold.pal index ebd175e97..4e1d56b54 100644 --- a/graphics/trainer_card/gold.pal +++ b/graphics/trainer_card/gold.pal @@ -1,19 +1,51 @@ JASC-PAL 0100 -16 +48 139 98 115 -246 197 0 -205 164 0 -246 197 0 -246 197 0 -246 197 0 -246 197 0 -246 197 0 +246 246 222 +246 238 172 +164 164 164 +123 123 123 +98 98 115 +41 57 65 +57 106 139 +65 139 197 +246 230 139 +230 213 49 +213 197 57 +156 115 57 +106 189 255 +205 205 205 0 0 0 0 0 0 -189 148 16 -255 213 82 0 0 0 0 0 0 -189 148 16 -246 197 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 +106 180 213 +41 123 164 +0 0 0 +0 0 0 +98 98 115 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +106 189 255 +205 205 205 +0 0 0 diff --git a/graphics/trainer_card/0star.pal b/graphics/trainer_card/green.pal similarity index 100% rename from graphics/trainer_card/0star.pal rename to graphics/trainer_card/green.pal diff --git a/graphics/trainer_card/three_stars.pal b/graphics/trainer_card/silver.pal similarity index 100% rename from graphics/trainer_card/three_stars.pal rename to graphics/trainer_card/silver.pal diff --git a/graphics/trainer_card/star.pal b/graphics/trainer_card/star.pal new file mode 100644 index 000000000..ebd175e97 --- /dev/null +++ b/graphics/trainer_card/star.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +139 98 115 +246 197 0 +205 164 0 +246 197 0 +246 197 0 +246 197 0 +246 197 0 +246 197 0 +0 0 0 +0 0 0 +189 148 16 +255 213 82 +0 0 0 +0 0 0 +189 148 16 +246 197 0 diff --git a/graphics/trainer_card/tiles.png b/graphics/trainer_card/tiles.png new file mode 100644 index 000000000..c12c7c2b4 Binary files /dev/null and b/graphics/trainer_card/tiles.png differ diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index a8b945eb9..56ceb4f4d 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -651,9 +651,6 @@ $(WALLPAPERGFXDIR)/ludicolo/tiles.4bpp: $(WALLPAPERGFXDIR)/friends_frame2.4bpp $ $(WALLPAPERGFXDIR)/whiscash/tiles.4bpp: $(WALLPAPERGFXDIR)/friends_frame2.4bpp $(WALLPAPERGFXDIR)/whiscash/bg.4bpp @cat $^ >$@ -$(OBJEVENTGFXDIR)/pics/effects/unknown_4F6D38/0.4bpp: %.4bpp: %.png - $(GFX) $< $@ -num_tiles 11 -Wnum_tiles - $(INTERFACEGFXDIR)/outline_cursor.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 8 -Wnum_tiles @@ -694,9 +691,6 @@ $(POKEDEXGFXDIR)/region_map.8bpp: %.8bpp: %.png $(POKEDEXGFXDIR)/region_map_affine.8bpp: %.8bpp: %.png $(GFX) $< $@ -num_tiles 233 -Wnum_tiles -$(STARTERGFXDIR)/birch_help.4bpp: $(STARTERGFXDIR)/birch_bag.4bpp $(STARTERGFXDIR)/birch_grass.4bpp - @cat $^ >$@ - $(NAMINGGFXDIR)/cursor.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 5 -Wnum_tiles diff --git a/include/battle.h b/include/battle.h index aafc3d2f6..110c252bc 100644 --- a/include/battle.h +++ b/include/battle.h @@ -148,6 +148,7 @@ struct ProtectStruct u16 quickDraw:1; u16 beakBlastCharge:1; u16 quash:1; + u16 silkTrapped:1; u32 physicalDmg; u32 specialDmg; u8 physicalBattlerId; @@ -192,6 +193,9 @@ struct SpecialStatus u8 dancerUsedMove:1; u8 dancerOriginalTarget:3; // End of byte + u8 weatherAbilityDone:1; + u8 terrainAbilityDone:1; + u8 emergencyExited:1; }; struct SideTimer @@ -485,7 +489,6 @@ struct MegaEvolutionData u8 battlerId; bool8 playerSelect; u8 triggerSpriteId; - bool8 isWishMegaEvo; }; struct Illusion @@ -654,6 +657,7 @@ struct BattleStruct u8 beatUpSlot:3; u8 targetsDone[MAX_BATTLERS_COUNT]; // Each battler as a bit. u16 overwrittenAbilities[MAX_BATTLERS_COUNT]; // abilities overwritten during battle (keep separate from battle history in case of switching) + bool8 allowedToChangeFormInWeather[PARTY_SIZE][2]; // For each party member and side, used by Ice Face. }; #define F_DYNAMIC_TYPE_1 (1 << 6) @@ -683,6 +687,13 @@ struct BattleStruct gBattleMons[battlerId].type2 = type; \ gBattleMons[battlerId].type3 = TYPE_MYSTERY; \ } +#define RESTORE_BATTLER_TYPE(battlerId) \ +{ \ + gBattleMons[battlerId].type1 = gSpeciesInfo[gBattleMons[battlerId].species].types[0]; \ + gBattleMons[battlerId].type2 = gSpeciesInfo[gBattleMons[battlerId].species].types[1]; \ + gBattleMons[battlerId].type3 = TYPE_MYSTERY; \ +} + #define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \ || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_WIDE_GUARD \ @@ -692,7 +703,8 @@ struct BattleStruct || gProtectStructs[battlerId].spikyShielded \ || gProtectStructs[battlerId].kingsShielded \ || gProtectStructs[battlerId].banefulBunkered \ - || gProtectStructs[battlerId].obstructed) \ + || gProtectStructs[battlerId].obstructed \ + || gProtectStructs[battlerId].silkTrapped) #define GET_STAT_BUFF_ID(n)((n & 7)) // first three bits 0x1, 0x2, 0x4 #define GET_STAT_BUFF_VALUE_WITH_SIGN(n)((n & 0xF8)) diff --git a/include/battle_anim.h b/include/battle_anim.h index 883934f14..c4b29d26e 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -5,6 +5,14 @@ #include "constants/battle_anim.h" #include "task.h" +enum +{ + ANIM_TYPE_GENERAL, + ANIM_TYPE_MOVE, + ANIM_TYPE_STATUS, + ANIM_TYPE_SPECIAL, +}; + enum { BG_ANIM_SCREEN_SIZE, @@ -54,7 +62,7 @@ extern u16 gAnimMoveIndex; void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); -void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); +void LaunchBattleAnimation(u32 animType, u32 animId); void DestroyAnimSprite(struct Sprite *sprite); void DestroyAnimVisualTask(u8 taskId); void DestroyAnimSoundTask(u8 taskId); diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 3e940995d..491d5fefd 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -23,7 +23,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId); void ClearSpritesHealthboxAnimData(void); void CopyAllBattleSpritesInvisibilities(void); void CopyBattleSpriteInvisibility(u8 battlerId); -void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform, bool32 megaEvo); +void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform, bool32 megaEvo, bool8 trackEnemyPersonality); void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite); void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId); void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 55caf9022..94baab173 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -448,6 +448,9 @@ extern const u8 BattleScript_SupremeOverlordActivates[]; extern const u8 BattleScript_CostarActivates[]; extern const u8 BattleScript_ToxicDebrisActivates[]; extern const u8 BattleScript_EarthEaterActivates[]; +extern const u8 BattleScript_MimicryActivates_End3[]; +extern const u8 BattleScript_IceFaceNullsDamage[]; +extern const u8 BattleScript_BattlerFormChangeWithStringEnd3[]; extern const u8 BattleScript_StealthRockActivates[]; extern const u8 BattleScript_SpikesActivate[]; diff --git a/include/battle_util.h b/include/battle_util.h index 1a05c246c..1c3f486cd 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -26,16 +26,15 @@ #define ABILITYEFFECT_MOVE_END_ATTACKER 4 #define ABILITYEFFECT_MOVE_END 5 #define ABILITYEFFECT_IMMUNITY 6 -#define ABILITYEFFECT_WEATHER_FORM 7 -#define ABILITYEFFECT_SYNCHRONIZE 8 -#define ABILITYEFFECT_ATK_SYNCHRONIZE 9 -#define ABILITYEFFECT_TRACE1 10 -#define ABILITYEFFECT_TRACE2 11 -#define ABILITYEFFECT_MOVE_END_OTHER 12 -#define ABILITYEFFECT_NEUTRALIZINGGAS 13 -#define ABILITYEFFECT_FIELD_SPORT 14 // Only used if B_SPORT_TURNS < GEN_6 -#define ABILITYEFFECT_ON_WEATHER 15 -#define ABILITYEFFECT_ON_TERRAIN 16 +#define ABILITYEFFECT_SYNCHRONIZE 7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE 8 +#define ABILITYEFFECT_TRACE1 9 +#define ABILITYEFFECT_TRACE2 10 +#define ABILITYEFFECT_MOVE_END_OTHER 11 +#define ABILITYEFFECT_NEUTRALIZINGGAS 12 +#define ABILITYEFFECT_FIELD_SPORT 13 // Only used if B_SPORT_TURNS < GEN_6 +#define ABILITYEFFECT_ON_WEATHER 14 +#define ABILITYEFFECT_ON_TERRAIN 15 // Special cases #define ABILITYEFFECT_MUD_SPORT 252 // Only used if B_SPORT_TURNS < GEN_6 #define ABILITYEFFECT_WATER_SPORT 253 // Only used if B_SPORT_TURNS < GEN_6 @@ -182,9 +181,6 @@ void DoBurmyFormChange(u32 monId); bool32 BlocksPrankster(u16 move, u8 battlerPrankster, u8 battlerDef, bool32 checkTarget); u16 GetUsedHeldItem(u8 battler); bool32 IsBattlerWeatherAffected(u8 battlerId, u32 weatherFlags); -void TryToApplyMimicry(u8 battlerId, bool8 various); -void TryToRevertMimicry(void); -void RestoreBattlerOriginalTypes(u8 battlerId); u32 GetBattlerMoveTargetType(u8 battlerId, u16 move); bool32 CanTargetBattler(u8 battlerAtk, u8 battlerDef, u16 move); bool8 IsMoveAffectedByParentalBond(u16 move, u8 battlerId); @@ -207,5 +203,6 @@ bool32 IsBattlerTerrainAffected(u8 battlerId, u32 terrainFlag); u32 GetBattlerFriendshipScore(u8 battlerId); u32 CountBattlerStatIncreases(u8 battlerId, bool32 countEvasionAcc); bool32 IsMyceliumMightOnField(void); +bool8 ChangeTypeBasedOnTerrain(u8 battlerId); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/config/battle.h b/include/config/battle.h index fc5c6536f..6dea72b40 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -30,6 +30,7 @@ #define B_SPORT_DMG_REDUCTION GEN_LATEST // In Gen5+, Water/Mud Sport reduce Fire/Electric Damage by 67% instead of 50%. #define B_EXPLOSION_DEFENSE GEN_LATEST // In Gen5+, Self-Destruct and Explosion don't halve the targets' defense. #define B_PARENTAL_BOND_DMG GEN_LATEST // In Gen7+, Parental Bond's second hit does 25% of the initial hits damage. Before, it did 50%. +#define B_MULTIPLE_TARGETS_DMG GEN_LATEST // In Gen4+, damage dealt by moves that hit multiple targets at once is reduced to 75%. Before, it was 50%. // Type settings #define B_GHOSTS_ESCAPE GEN_LATEST // In Gen6+, abilities like Shadow Tag or moves like Mean Look fail on Ghost-type Pokémon. They can also escape any Wild Battle. @@ -93,6 +94,7 @@ #define B_TELEPORT_BEHAVIOR GEN_LATEST // In Gen7+, starting with Pokémon LGPE, Teleport allows the user to swap out with another party member. #define B_BEAT_UP GEN_LATEST // In Gen5+, Beat Up uses a different formula to calculate its damage, and deals Dark-type damage. Prior to Gen 5, each hit also announces the party member's name. #define B_DARK_VOID_FAIL GEN_LATEST // In Gen7+, only Darkrai can use Dark Void. +#define B_BURN_HIT_THAW GEN_LATEST // In Gen6+, damaging moves with a chance of burn will thaw the target, regardless if they're fire-type moves or not. // Ability settings #define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. @@ -182,6 +184,7 @@ #define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) #define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. #define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class. +#define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level // Animation Settings #define B_NEW_SWORD_PARTICLE FALSE // If set to TRUE, it updates Swords Dance's particle. diff --git a/include/config/pokemon.h b/include/config/pokemon.h index 3d8d7fd48..4cb2271d5 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -1,14 +1,23 @@ #ifndef GUARD_CONFIG_POKEMON_H #define GUARD_CONFIG_POKEMON_H -#define P_UPDATED_TYPES GEN_LATEST // Since Gen 6, several Pokémon were changed to be partially or fully Fairy type. -#define P_UPDATED_STATS GEN_LATEST // Since Gen 6, Pokémon stats are updated with each passing generation. -#define P_UPDATED_ABILITIES GEN_LATEST // Since Gen 6, certain Pokémon have their abilities changed. -#define P_UPDATED_EGG_GROUPS GEN_LATEST // Since Gen 8, certain Pokémon have gained new egg groups. -#define P_SHEDINJA_BALL GEN_LATEST // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. -#define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. -#define P_KADABRA_EVERSTONE GEN_LATEST // Since Gen 4, Kadabra can evolve even when holding an Everstone. -#define P_NIDORAN_M_DITTO_BREED GEN_LATEST // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. +// Species data settings +#define P_UPDATED_TYPES GEN_LATEST // Since Gen 6, several Pokémon were changed to be partially or fully Fairy type. +#define P_UPDATED_STATS GEN_LATEST // Since Gen 6, Pokémon stats are updated with each passing generation. +#define P_UPDATED_ABILITIES GEN_LATEST // Since Gen 6, certain Pokémon have their abilities changed. +#define P_UPDATED_EGG_GROUPS GEN_LATEST // Since Gen 8, certain Pokémon have gained new egg groups. + +// Breeding settings +#define P_NIDORAN_M_DITTO_BREED GEN_LATEST // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. +#define P_INCENSE_BREEDING GEN_LATEST // Since Gen 9, cross-generation Baby Pokémon don't require Incense being held by the parents to be obtained via breeding. +#define P_EGG_HATCH_LEVEL GEN_LATEST // Since Gen 4, Pokémon will hatch from eggs at level 1 instead of 5. +#define P_BALL_INHERITING GEN_LATEST // Since Gen 6, Eggs from the Daycare will inherit the Poké Ball from their mother. From Gen7 onwards, the father can pass it down as well, as long as it's of the same species as the mother. + +// Other settings +#define P_SHEDINJA_BALL GEN_LATEST // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. +#define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. +#define P_KADABRA_EVERSTONE GEN_LATEST // Since Gen 4, Kadabra can evolve even when holding an Everstone. +#define P_HIPPO_GENDER_DIFF_ICONS TRUE // If TRUE, will give Hippopotas and Hippowdon custom icons for their female forms. // Flag settings // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. @@ -20,10 +29,10 @@ // Forms are kept based on the base species, Eg: Meowth and Persian will keep all of their forms, but Perrserker will not be available if P_GEN_8_POKEMON is set to FALSE. // If you're disabling a generation previous to others (eg: Gen 5 but not Gen 6, 7 and 8), // remember to update NATIONAL_DEX enum in include/constants/pokedex.h to avoid players from softlocking in the non-existant entries. -#define P_GEN_4_POKEMON TRUE // Generation 4 Pokémon (DPPt, HGSS) -#define P_GEN_5_POKEMON TRUE // Generation 5 Pokémon (BW, B2W2) -#define P_GEN_6_POKEMON TRUE // Generation 6 Pokémon (XY, ORAS) -#define P_GEN_7_POKEMON TRUE // Generation 7 Pokémon (SM, USUM, LGPE) -#define P_GEN_8_POKEMON TRUE // Generation 8 Pokémon (SwSh, BDSP, LA) +#define P_GEN_4_POKEMON TRUE // Generation 4 Pokémon (DPPt, HGSS) +#define P_GEN_5_POKEMON TRUE // Generation 5 Pokémon (BW, B2W2) +#define P_GEN_6_POKEMON TRUE // Generation 6 Pokémon (XY, ORAS) +#define P_GEN_7_POKEMON TRUE // Generation 7 Pokémon (SM, USUM, LGPE) +#define P_GEN_8_POKEMON TRUE // Generation 8 Pokémon (SwSh, BDSP, LA) #endif // GUARD_CONFIG_POKEMON_H diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 0e8aaea83..4316191a2 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -398,10 +398,17 @@ // battlers -#define ANIM_ATTACKER 0 -#define ANIM_TARGET 1 -#define ANIM_ATK_PARTNER 2 -#define ANIM_DEF_PARTNER 3 +#define ANIM_ATTACKER 0 +#define ANIM_TARGET 1 +#define ANIM_ATK_PARTNER 2 +#define ANIM_DEF_PARTNER 3 + +// Below are used by AnimTask_ShakeMon2 and AnimTask_SetGrayscaleOrOriginalPal +#define ANIM_PLAYER_LEFT (MAX_BATTLERS_COUNT + 0) +#define ANIM_PLAYER_RIGHT (MAX_BATTLERS_COUNT + 1) +#define ANIM_OPPONENT_LEFT (MAX_BATTLERS_COUNT + 2) +#define ANIM_OPPONENT_RIGHT (MAX_BATTLERS_COUNT + 3) +#define ANIM_ATTACKER_FORCE (MAX_BATTLERS_COUNT + 4) // stereo panning constants [0-255] // diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 59d1002a5..a3acd69fc 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -282,127 +282,126 @@ #define EFFECT_QUIVER_DANCE 276 #define EFFECT_COIL 277 #define EFFECT_ELECTRIFY 278 -#define EFFECT_SCALD 279 -#define EFFECT_REFLECT_TYPE 280 -#define EFFECT_SOAK 281 -#define EFFECT_GROWTH 282 -#define EFFECT_CLOSE_COMBAT 283 -#define EFFECT_LAST_RESORT 284 -#define EFFECT_RECOIL_33_STATUS 285 -#define EFFECT_FLINCH_STATUS 286 -#define EFFECT_RECOIL_50 287 -#define EFFECT_SHELL_SMASH 288 -#define EFFECT_SHIFT_GEAR 289 -#define EFFECT_DEFENSE_UP_3 290 -#define EFFECT_NOBLE_ROAR 291 -#define EFFECT_VENOM_DRENCH 292 -#define EFFECT_TOXIC_THREAD 293 -#define EFFECT_CLEAR_SMOG 294 -#define EFFECT_HIT_SWITCH_TARGET 295 -#define EFFECT_FINAL_GAMBIT 296 -#define EFFECT_CHANGE_TYPE_ON_ITEM 297 -#define EFFECT_AUTOTOMIZE 298 -#define EFFECT_COPYCAT 299 -#define EFFECT_DEFOG 300 -#define EFFECT_HIT_ENEMY_HEAL_ALLY 301 -#define EFFECT_SMACK_DOWN 302 -#define EFFECT_SYNCHRONOISE 303 -#define EFFECT_PSYCHO_SHIFT 304 -#define EFFECT_POWER_TRICK 305 -#define EFFECT_FLAME_BURST 306 -#define EFFECT_AFTER_YOU 307 -#define EFFECT_BESTOW 308 -#define EFFECT_ROTOTILLER 309 -#define EFFECT_FLOWER_SHIELD 310 -#define EFFECT_HIT_PREVENT_ESCAPE 311 -#define EFFECT_SPEED_SWAP 312 -#define EFFECT_DEFENSE_UP2_HIT 313 -#define EFFECT_REVELATION_DANCE 314 -#define EFFECT_AURORA_VEIL 315 -#define EFFECT_THIRD_TYPE 316 -#define EFFECT_FEINT 317 -#define EFFECT_SPARKLING_ARIA 318 -#define EFFECT_ACUPRESSURE 319 -#define EFFECT_AROMATIC_MIST 320 -#define EFFECT_POWDER 321 -#define EFFECT_SP_ATTACK_UP_HIT 322 -#define EFFECT_BELCH 323 -#define EFFECT_PARTING_SHOT 324 -#define EFFECT_SPECTRAL_THIEF 325 -#define EFFECT_V_CREATE 326 -#define EFFECT_MAT_BLOCK 327 -#define EFFECT_STOMPING_TANTRUM 328 -#define EFFECT_CORE_ENFORCER 329 -#define EFFECT_INSTRUCT 330 -#define EFFECT_THROAT_CHOP 331 -#define EFFECT_LASER_FOCUS 332 -#define EFFECT_MAGNETIC_FLUX 333 -#define EFFECT_GEAR_UP 334 -#define EFFECT_INCINERATE 335 -#define EFFECT_BUG_BITE 336 -#define EFFECT_STRENGTH_SAP 337 -#define EFFECT_MIND_BLOWN 338 -#define EFFECT_PURIFY 339 -#define EFFECT_BURN_UP 340 -#define EFFECT_SHORE_UP 341 -#define EFFECT_GEOMANCY 342 -#define EFFECT_FAIRY_LOCK 343 -#define EFFECT_ALLY_SWITCH 344 -#define EFFECT_RELIC_SONG 345 -#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 346 -#define EFFECT_BODY_PRESS 347 -#define EFFECT_EERIE_SPELL 348 -#define EFFECT_JUNGLE_HEALING 349 -#define EFFECT_COACHING 350 -#define EFFECT_LASH_OUT 351 -#define EFFECT_GRASSY_GLIDE 352 -#define EFFECT_REMOVE_TERRAIN 353 -#define EFFECT_DYNAMAX_DOUBLE_DMG 354 -#define EFFECT_DECORATE 355 -#define EFFECT_SNIPE_SHOT 356 -#define EFFECT_RECOIL_HP_25 357 -#define EFFECT_STUFF_CHEEKS 358 -#define EFFECT_GRAV_APPLE 359 -#define EFFECT_EVASION_UP_HIT 360 -#define EFFECT_GLITZY_GLOW 361 -#define EFFECT_BADDY_BAD 362 -#define EFFECT_SAPPY_SEED 363 -#define EFFECT_FREEZY_FROST 364 -#define EFFECT_SPARKLY_SWIRL 365 -#define EFFECT_PLASMA_FISTS 366 -#define EFFECT_HYPERSPACE_FURY 367 -#define EFFECT_AURA_WHEEL 368 -#define EFFECT_PHOTON_GEYSER 369 -#define EFFECT_SHELL_SIDE_ARM 370 -#define EFFECT_TERRAIN_PULSE 371 -#define EFFECT_JAW_LOCK 372 -#define EFFECT_NO_RETREAT 373 -#define EFFECT_TAR_SHOT 374 -#define EFFECT_POLTERGEIST 375 -#define EFFECT_OCTOLOCK 376 -#define EFFECT_CLANGOROUS_SOUL 377 -#define EFFECT_BOLT_BEAK 378 -#define EFFECT_SKY_DROP 379 -#define EFFECT_EXPANDING_FORCE 380 -#define EFFECT_SCALE_SHOT 381 -#define EFFECT_METEOR_BEAM 382 -#define EFFECT_RISING_VOLTAGE 383 -#define EFFECT_BEAK_BLAST 384 -#define EFFECT_COURT_CHANGE 385 -#define EFFECT_STEEL_BEAM 386 -#define EFFECT_EXTREME_EVOBOOST 387 -#define EFFECT_HIT_SET_REMOVE_TERRAIN 388 -#define EFFECT_DARK_VOID 389 -#define EFFECT_SLEEP_HIT 390 -#define EFFECT_DOUBLE_SHOCK 391 -#define EFFECT_SPECIAL_ATTACK_UP_HIT 392 -#define EFFECT_VICTORY_DANCE 393 -#define EFFECT_TEATIME 394 -#define EFFECT_CEASELESS_EDGE 395 -#define EFFECT_DIRE_CLAW 396 -#define EFFECT_STONE_AXE 397 -#define EFFECT_BARB_BARRAGE 398 +#define EFFECT_REFLECT_TYPE 279 +#define EFFECT_SOAK 280 +#define EFFECT_GROWTH 281 +#define EFFECT_CLOSE_COMBAT 282 +#define EFFECT_LAST_RESORT 283 +#define EFFECT_RECOIL_33_STATUS 284 +#define EFFECT_FLINCH_STATUS 285 +#define EFFECT_RECOIL_50 286 +#define EFFECT_SHELL_SMASH 287 +#define EFFECT_SHIFT_GEAR 288 +#define EFFECT_DEFENSE_UP_3 289 +#define EFFECT_NOBLE_ROAR 290 +#define EFFECT_VENOM_DRENCH 291 +#define EFFECT_TOXIC_THREAD 292 +#define EFFECT_CLEAR_SMOG 293 +#define EFFECT_HIT_SWITCH_TARGET 294 +#define EFFECT_FINAL_GAMBIT 295 +#define EFFECT_CHANGE_TYPE_ON_ITEM 296 +#define EFFECT_AUTOTOMIZE 297 +#define EFFECT_COPYCAT 298 +#define EFFECT_DEFOG 299 +#define EFFECT_HIT_ENEMY_HEAL_ALLY 300 +#define EFFECT_SMACK_DOWN 301 +#define EFFECT_SYNCHRONOISE 302 +#define EFFECT_PSYCHO_SHIFT 303 +#define EFFECT_POWER_TRICK 304 +#define EFFECT_FLAME_BURST 305 +#define EFFECT_AFTER_YOU 306 +#define EFFECT_BESTOW 307 +#define EFFECT_ROTOTILLER 308 +#define EFFECT_FLOWER_SHIELD 309 +#define EFFECT_HIT_PREVENT_ESCAPE 310 +#define EFFECT_SPEED_SWAP 311 +#define EFFECT_DEFENSE_UP2_HIT 312 +#define EFFECT_REVELATION_DANCE 313 +#define EFFECT_AURORA_VEIL 314 +#define EFFECT_THIRD_TYPE 315 +#define EFFECT_FEINT 316 +#define EFFECT_SPARKLING_ARIA 317 +#define EFFECT_ACUPRESSURE 318 +#define EFFECT_AROMATIC_MIST 319 +#define EFFECT_POWDER 320 +#define EFFECT_SP_ATTACK_UP_HIT 321 +#define EFFECT_BELCH 322 +#define EFFECT_PARTING_SHOT 323 +#define EFFECT_SPECTRAL_THIEF 324 +#define EFFECT_V_CREATE 325 +#define EFFECT_MAT_BLOCK 326 +#define EFFECT_STOMPING_TANTRUM 327 +#define EFFECT_CORE_ENFORCER 328 +#define EFFECT_INSTRUCT 329 +#define EFFECT_THROAT_CHOP 330 +#define EFFECT_LASER_FOCUS 331 +#define EFFECT_MAGNETIC_FLUX 332 +#define EFFECT_GEAR_UP 333 +#define EFFECT_INCINERATE 334 +#define EFFECT_BUG_BITE 335 +#define EFFECT_STRENGTH_SAP 336 +#define EFFECT_MIND_BLOWN 337 +#define EFFECT_PURIFY 338 +#define EFFECT_BURN_UP 339 +#define EFFECT_SHORE_UP 340 +#define EFFECT_GEOMANCY 341 +#define EFFECT_FAIRY_LOCK 342 +#define EFFECT_ALLY_SWITCH 343 +#define EFFECT_RELIC_SONG 344 +#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 345 +#define EFFECT_BODY_PRESS 346 +#define EFFECT_EERIE_SPELL 347 +#define EFFECT_JUNGLE_HEALING 348 +#define EFFECT_COACHING 349 +#define EFFECT_LASH_OUT 350 +#define EFFECT_GRASSY_GLIDE 351 +#define EFFECT_REMOVE_TERRAIN 352 +#define EFFECT_DYNAMAX_DOUBLE_DMG 353 +#define EFFECT_DECORATE 354 +#define EFFECT_SNIPE_SHOT 355 +#define EFFECT_RECOIL_HP_25 356 +#define EFFECT_STUFF_CHEEKS 357 +#define EFFECT_GRAV_APPLE 358 +#define EFFECT_EVASION_UP_HIT 359 +#define EFFECT_GLITZY_GLOW 360 +#define EFFECT_BADDY_BAD 361 +#define EFFECT_SAPPY_SEED 362 +#define EFFECT_FREEZY_FROST 363 +#define EFFECT_SPARKLY_SWIRL 364 +#define EFFECT_PLASMA_FISTS 365 +#define EFFECT_HYPERSPACE_FURY 366 +#define EFFECT_AURA_WHEEL 367 +#define EFFECT_PHOTON_GEYSER 368 +#define EFFECT_SHELL_SIDE_ARM 369 +#define EFFECT_TERRAIN_PULSE 370 +#define EFFECT_JAW_LOCK 371 +#define EFFECT_NO_RETREAT 372 +#define EFFECT_TAR_SHOT 373 +#define EFFECT_POLTERGEIST 374 +#define EFFECT_OCTOLOCK 375 +#define EFFECT_CLANGOROUS_SOUL 376 +#define EFFECT_BOLT_BEAK 377 +#define EFFECT_SKY_DROP 378 +#define EFFECT_EXPANDING_FORCE 379 +#define EFFECT_SCALE_SHOT 380 +#define EFFECT_METEOR_BEAM 381 +#define EFFECT_RISING_VOLTAGE 382 +#define EFFECT_BEAK_BLAST 383 +#define EFFECT_COURT_CHANGE 384 +#define EFFECT_STEEL_BEAM 385 +#define EFFECT_EXTREME_EVOBOOST 386 +#define EFFECT_HIT_SET_REMOVE_TERRAIN 387 // genesis supernova +#define EFFECT_DARK_VOID 388 +#define EFFECT_SLEEP_HIT 389 +#define EFFECT_DOUBLE_SHOCK 390 +#define EFFECT_SPECIAL_ATTACK_UP_HIT 391 +#define EFFECT_VICTORY_DANCE 392 +#define EFFECT_TEATIME 393 +#define EFFECT_CEASELESS_EDGE 394 +#define EFFECT_DIRE_CLAW 395 +#define EFFECT_STONE_AXE 396 +#define EFFECT_BARB_BARRAGE 397 -#define NUM_BATTLE_MOVE_EFFECTS 399 +#define NUM_BATTLE_MOVE_EFFECTS 398 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 8f9ce0af8..123fb5d49 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -216,45 +216,46 @@ #define VARIOUS_JUMP_IF_WEATHER_AFFECTED 125 #define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 126 #define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 127 -#define VARIOUS_TRY_TO_APPLY_MIMICRY 128 -#define VARIOUS_PHOTON_GEYSER_CHECK 129 -#define VARIOUS_SHELL_SIDE_ARM_CHECK 130 -#define VARIOUS_TRY_NO_RETREAT 131 -#define VARIOUS_TRY_TAR_SHOT 132 -#define VARIOUS_CAN_TAR_SHOT_WORK 133 -#define VARIOUS_CHECK_POLTERGEIST 134 -#define VARIOUS_SET_OCTOLOCK 135 -#define VARIOUS_CUT_1_3_HP_RAISE_STATS 136 -#define VARIOUS_TRY_END_NEUTRALIZING_GAS 137 -#define VARIOUS_JUMP_IF_UNDER_200 138 -#define VARIOUS_SET_SKY_DROP 139 -#define VARIOUS_CLEAR_SKY_DROP 140 -#define VARIOUS_SKY_DROP_YAWN 141 -#define VARIOUS_JUMP_IF_CANT_FLING 142 -#define VARIOUS_JUMP_IF_HOLD_EFFECT 143 -#define VARIOUS_CURE_CERTAIN_STATUSES 144 -#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 145 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 146 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 147 -#define VARIOUS_SAVE_BATTLER_ITEM 148 -#define VARIOUS_RESTORE_BATTLER_ITEM 149 -#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 150 -#define VARIOUS_SET_BEAK_BLAST 151 -#define VARIOUS_SWAP_SIDE_STATUSES 152 -#define VARIOUS_SET_Z_EFFECT 153 -#define VARIOUS_TRY_SYMBIOSIS 154 -#define VARIOUS_CAN_TELEPORT 155 -#define VARIOUS_GET_BATTLER_SIDE 156 -#define VARIOUS_CHECK_PARENTAL_BOND_COUNTER 157 -#define VARIOUS_SWAP_STATS 158 -#define VARIOUS_JUMP_IF_ROD 159 -#define VARIOUS_JUMP_IF_ABSORB 160 -#define VARIOUS_JUMP_IF_MOTOR 161 -#define VARIOUS_TEATIME_INVUL 162 -#define VARIOUS_TEATIME_TARGETS 163 -#define VARIOUS_TRY_WIND_RIDER_POWER 164 -#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 165 -#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 166 +#define VARIOUS_PHOTON_GEYSER_CHECK 128 +#define VARIOUS_SHELL_SIDE_ARM_CHECK 129 +#define VARIOUS_TRY_NO_RETREAT 130 +#define VARIOUS_TRY_TAR_SHOT 131 +#define VARIOUS_CAN_TAR_SHOT_WORK 132 +#define VARIOUS_CHECK_POLTERGEIST 133 +#define VARIOUS_SET_OCTOLOCK 134 +#define VARIOUS_CUT_1_3_HP_RAISE_STATS 135 +#define VARIOUS_TRY_END_NEUTRALIZING_GAS 136 +#define VARIOUS_JUMP_IF_UNDER_200 137 +#define VARIOUS_SET_SKY_DROP 138 +#define VARIOUS_CLEAR_SKY_DROP 139 +#define VARIOUS_SKY_DROP_YAWN 140 +#define VARIOUS_JUMP_IF_CANT_FLING 141 +#define VARIOUS_JUMP_IF_HOLD_EFFECT 142 +#define VARIOUS_CURE_CERTAIN_STATUSES 143 +#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 144 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 145 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 146 +#define VARIOUS_SAVE_BATTLER_ITEM 147 +#define VARIOUS_RESTORE_BATTLER_ITEM 148 +#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 149 +#define VARIOUS_SET_BEAK_BLAST 150 +#define VARIOUS_SWAP_SIDE_STATUSES 151 +#define VARIOUS_SET_Z_EFFECT 152 +#define VARIOUS_TRY_SYMBIOSIS 153 +#define VARIOUS_CAN_TELEPORT 154 +#define VARIOUS_GET_BATTLER_SIDE 155 +#define VARIOUS_CHECK_PARENTAL_BOND_COUNTER 156 +#define VARIOUS_SWAP_STATS 157 +#define VARIOUS_JUMP_IF_ROD 158 +#define VARIOUS_JUMP_IF_ABSORB 159 +#define VARIOUS_JUMP_IF_MOTOR 160 +#define VARIOUS_TEATIME_INVUL 161 +#define VARIOUS_TEATIME_TARGETS 162 +#define VARIOUS_TRY_WIND_RIDER_POWER 163 +#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 164 +#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 165 +#define VARIOUS_JUMP_IF_NO_VALID_TARGETS 166 +#define VARIOUS_JUMP_IF_EMERGENCY_EXITED 167 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/daycare.h b/include/constants/daycare.h index 9af7e6f79..782bbe954 100644 --- a/include/constants/daycare.h +++ b/include/constants/daycare.h @@ -13,8 +13,11 @@ #define DAYCARE_ONE_MON 2 #define DAYCARE_TWO_MONS 3 -#define INHERITED_IV_COUNT 3 +#if P_EGG_HATCH_LEVEL >= GEN_4 +#define EGG_HATCH_LEVEL 1 +#else #define EGG_HATCH_LEVEL 5 +#endif #define EGG_GENDER_MALE 0x8000 // used to create a male egg from a female-only parent species (e.g. Nidoran) #define DAYCARE_LEVEL_MENU_EXIT 5 diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h index f98cedbb7..b5875b881 100644 --- a/include/constants/easy_chat.h +++ b/include/constants/easy_chat.h @@ -53,1048 +53,1048 @@ #define EC_NUM_GROUPS 22 // TRAINER -#define EC_WORD_I_CHOOSE_YOU (EC_GROUP_TRAINER << 9) | 0x0 -#define EC_WORD_GOTCHA (EC_GROUP_TRAINER << 9) | 0x1 -#define EC_WORD_TRADE (EC_GROUP_TRAINER << 9) | 0x2 -#define EC_WORD_SAPPHIRE (EC_GROUP_TRAINER << 9) | 0x3 -#define EC_WORD_EVOLVE (EC_GROUP_TRAINER << 9) | 0x4 -#define EC_WORD_ENCYCLOPEDIA (EC_GROUP_TRAINER << 9) | 0x5 -#define EC_WORD_NATURE (EC_GROUP_TRAINER << 9) | 0x6 -#define EC_WORD_CENTER (EC_GROUP_TRAINER << 9) | 0x7 -#define EC_WORD_EGG (EC_GROUP_TRAINER << 9) | 0x8 -#define EC_WORD_LINK (EC_GROUP_TRAINER << 9) | 0x9 -#define EC_WORD_SP_ABILITY (EC_GROUP_TRAINER << 9) | 0xa -#define EC_WORD_TRAINER (EC_GROUP_TRAINER << 9) | 0xb -#define EC_WORD_VERSION (EC_GROUP_TRAINER << 9) | 0xc -#define EC_WORD_POKENAV (EC_GROUP_TRAINER << 9) | 0xd -#define EC_WORD_POKEMON (EC_GROUP_TRAINER << 9) | 0xe -#define EC_WORD_GET (EC_GROUP_TRAINER << 9) | 0xf -#define EC_WORD_POKEDEX (EC_GROUP_TRAINER << 9) | 0x10 -#define EC_WORD_RUBY (EC_GROUP_TRAINER << 9) | 0x11 -#define EC_WORD_LEVEL (EC_GROUP_TRAINER << 9) | 0x12 -#define EC_WORD_RED (EC_GROUP_TRAINER << 9) | 0x13 -#define EC_WORD_GREEN (EC_GROUP_TRAINER << 9) | 0x14 -#define EC_WORD_BAG (EC_GROUP_TRAINER << 9) | 0x15 -#define EC_WORD_FLAME (EC_GROUP_TRAINER << 9) | 0x16 -#define EC_WORD_GOLD (EC_GROUP_TRAINER << 9) | 0x17 -#define EC_WORD_LEAF (EC_GROUP_TRAINER << 9) | 0x18 -#define EC_WORD_SILVER (EC_GROUP_TRAINER << 9) | 0x19 -#define EC_WORD_EMERALD (EC_GROUP_TRAINER << 9) | 0x1a +#define EC_WORD_I_CHOOSE_YOU ((EC_GROUP_TRAINER << EC_MASK_BITS) | 0) +#define EC_WORD_GOTCHA ((EC_GROUP_TRAINER << EC_MASK_BITS) | 1) +#define EC_WORD_TRADE ((EC_GROUP_TRAINER << EC_MASK_BITS) | 2) +#define EC_WORD_SAPPHIRE ((EC_GROUP_TRAINER << EC_MASK_BITS) | 3) +#define EC_WORD_EVOLVE ((EC_GROUP_TRAINER << EC_MASK_BITS) | 4) +#define EC_WORD_ENCYCLOPEDIA ((EC_GROUP_TRAINER << EC_MASK_BITS) | 5) +#define EC_WORD_NATURE ((EC_GROUP_TRAINER << EC_MASK_BITS) | 6) +#define EC_WORD_CENTER ((EC_GROUP_TRAINER << EC_MASK_BITS) | 7) +#define EC_WORD_EGG ((EC_GROUP_TRAINER << EC_MASK_BITS) | 8) +#define EC_WORD_LINK ((EC_GROUP_TRAINER << EC_MASK_BITS) | 9) +#define EC_WORD_SP_ABILITY ((EC_GROUP_TRAINER << EC_MASK_BITS) | 10) +#define EC_WORD_TRAINER ((EC_GROUP_TRAINER << EC_MASK_BITS) | 11) +#define EC_WORD_VERSION ((EC_GROUP_TRAINER << EC_MASK_BITS) | 12) +#define EC_WORD_POKENAV ((EC_GROUP_TRAINER << EC_MASK_BITS) | 13) +#define EC_WORD_POKEMON ((EC_GROUP_TRAINER << EC_MASK_BITS) | 14) +#define EC_WORD_GET ((EC_GROUP_TRAINER << EC_MASK_BITS) | 15) +#define EC_WORD_POKEDEX ((EC_GROUP_TRAINER << EC_MASK_BITS) | 16) +#define EC_WORD_RUBY ((EC_GROUP_TRAINER << EC_MASK_BITS) | 17) +#define EC_WORD_LEVEL ((EC_GROUP_TRAINER << EC_MASK_BITS) | 18) +#define EC_WORD_RED ((EC_GROUP_TRAINER << EC_MASK_BITS) | 19) +#define EC_WORD_GREEN ((EC_GROUP_TRAINER << EC_MASK_BITS) | 20) +#define EC_WORD_BAG ((EC_GROUP_TRAINER << EC_MASK_BITS) | 21) +#define EC_WORD_FLAME ((EC_GROUP_TRAINER << EC_MASK_BITS) | 22) +#define EC_WORD_GOLD ((EC_GROUP_TRAINER << EC_MASK_BITS) | 23) +#define EC_WORD_LEAF ((EC_GROUP_TRAINER << EC_MASK_BITS) | 24) +#define EC_WORD_SILVER ((EC_GROUP_TRAINER << EC_MASK_BITS) | 25) +#define EC_WORD_EMERALD ((EC_GROUP_TRAINER << EC_MASK_BITS) | 26) // STATUS -#define EC_WORD_DARK (EC_GROUP_STATUS << 9) | 0x0 -#define EC_WORD_STENCH (EC_GROUP_STATUS << 9) | 0x1 -#define EC_WORD_THICK_FAT (EC_GROUP_STATUS << 9) | 0x2 -#define EC_WORD_RAIN_DISH (EC_GROUP_STATUS << 9) | 0x3 -#define EC_WORD_DRIZZLE (EC_GROUP_STATUS << 9) | 0x4 -#define EC_WORD_ARENA_TRAP (EC_GROUP_STATUS << 9) | 0x5 -#define EC_WORD_INTIMIDATE (EC_GROUP_STATUS << 9) | 0x6 -#define EC_WORD_ROCK_HEAD (EC_GROUP_STATUS << 9) | 0x7 -#define EC_WORD_COLOR (EC_GROUP_STATUS << 9) | 0x8 -#define EC_WORD_ALT_COLOR (EC_GROUP_STATUS << 9) | 0x9 -#define EC_WORD_ROCK (EC_GROUP_STATUS << 9) | 0xa -#define EC_WORD_BEAUTIFUL (EC_GROUP_STATUS << 9) | 0xb -#define EC_WORD_BEAUTY (EC_GROUP_STATUS << 9) | 0xc -#define EC_WORD_AIR_LOCK (EC_GROUP_STATUS << 9) | 0xd -#define EC_WORD_PSYCHIC (EC_GROUP_STATUS << 9) | 0xe -#define EC_WORD_HYPER_CUTTER (EC_GROUP_STATUS << 9) | 0xf -#define EC_WORD_FIGHTING (EC_GROUP_STATUS << 9) | 0x10 -#define EC_WORD_SHADOW_TAG (EC_GROUP_STATUS << 9) | 0x11 -#define EC_WORD_SMART (EC_GROUP_STATUS << 9) | 0x12 -#define EC_WORD_SMARTNESS (EC_GROUP_STATUS << 9) | 0x13 -#define EC_WORD_SPEED_BOOST (EC_GROUP_STATUS << 9) | 0x14 -#define EC_WORD_COOL (EC_GROUP_STATUS << 9) | 0x15 -#define EC_WORD_COOLNESS (EC_GROUP_STATUS << 9) | 0x16 -#define EC_WORD_BATTLE_ARMOR (EC_GROUP_STATUS << 9) | 0x17 -#define EC_WORD_CUTE (EC_GROUP_STATUS << 9) | 0x18 -#define EC_WORD_CUTENESS (EC_GROUP_STATUS << 9) | 0x19 -#define EC_WORD_STURDY (EC_GROUP_STATUS << 9) | 0x1a -#define EC_WORD_SUCTION_CUPS (EC_GROUP_STATUS << 9) | 0x1b -#define EC_WORD_GRASS (EC_GROUP_STATUS << 9) | 0x1c -#define EC_WORD_CLEAR_BODY (EC_GROUP_STATUS << 9) | 0x1d -#define EC_WORD_TORRENT (EC_GROUP_STATUS << 9) | 0x1e -#define EC_WORD_GHOST (EC_GROUP_STATUS << 9) | 0x1f -#define EC_WORD_ICE (EC_GROUP_STATUS << 9) | 0x20 -#define EC_WORD_GUTS (EC_GROUP_STATUS << 9) | 0x21 -#define EC_WORD_ROUGH_SKIN (EC_GROUP_STATUS << 9) | 0x22 -#define EC_WORD_SHELL_ARMOR (EC_GROUP_STATUS << 9) | 0x23 -#define EC_WORD_NATURAL_CURE (EC_GROUP_STATUS << 9) | 0x24 -#define EC_WORD_DAMP (EC_GROUP_STATUS << 9) | 0x25 -#define EC_WORD_GROUND (EC_GROUP_STATUS << 9) | 0x26 -#define EC_WORD_LIMBER (EC_GROUP_STATUS << 9) | 0x27 -#define EC_WORD_MAGNET_PULL (EC_GROUP_STATUS << 9) | 0x28 -#define EC_WORD_WHITE_SMOKE (EC_GROUP_STATUS << 9) | 0x29 -#define EC_WORD_SYNCHRONIZE (EC_GROUP_STATUS << 9) | 0x2a -#define EC_WORD_OVERGROW (EC_GROUP_STATUS << 9) | 0x2b -#define EC_WORD_SWIFT_SWIM (EC_GROUP_STATUS << 9) | 0x2c -#define EC_WORD_SAND_STREAM (EC_GROUP_STATUS << 9) | 0x2d -#define EC_WORD_SAND_VEIL (EC_GROUP_STATUS << 9) | 0x2e -#define EC_WORD_KEEN_EYE (EC_GROUP_STATUS << 9) | 0x2f -#define EC_WORD_INNER_FOCUS (EC_GROUP_STATUS << 9) | 0x30 -#define EC_WORD_STATIC (EC_GROUP_STATUS << 9) | 0x31 -#define EC_WORD_TYPE (EC_GROUP_STATUS << 9) | 0x32 -#define EC_WORD_TOUGH (EC_GROUP_STATUS << 9) | 0x33 -#define EC_WORD_TOUGHNESS (EC_GROUP_STATUS << 9) | 0x34 -#define EC_WORD_SHED_SKIN (EC_GROUP_STATUS << 9) | 0x35 -#define EC_WORD_HUGE_POWER (EC_GROUP_STATUS << 9) | 0x36 -#define EC_WORD_VOLT_ABSORB (EC_GROUP_STATUS << 9) | 0x37 -#define EC_WORD_WATER_ABSORB (EC_GROUP_STATUS << 9) | 0x38 -#define EC_WORD_ELECTRIC (EC_GROUP_STATUS << 9) | 0x39 -#define EC_WORD_FORECAST (EC_GROUP_STATUS << 9) | 0x3a -#define EC_WORD_SERENE_GRACE (EC_GROUP_STATUS << 9) | 0x3b -#define EC_WORD_POISON (EC_GROUP_STATUS << 9) | 0x3c -#define EC_WORD_POISON_POINT (EC_GROUP_STATUS << 9) | 0x3d -#define EC_WORD_DRAGON (EC_GROUP_STATUS << 9) | 0x3e -#define EC_WORD_TRACE (EC_GROUP_STATUS << 9) | 0x3f -#define EC_WORD_OBLIVIOUS (EC_GROUP_STATUS << 9) | 0x40 -#define EC_WORD_TRUANT (EC_GROUP_STATUS << 9) | 0x41 -#define EC_WORD_RUN_AWAY (EC_GROUP_STATUS << 9) | 0x42 -#define EC_WORD_STICKY_HOLD (EC_GROUP_STATUS << 9) | 0x43 -#define EC_WORD_CLOUD_NINE (EC_GROUP_STATUS << 9) | 0x44 -#define EC_WORD_NORMAL (EC_GROUP_STATUS << 9) | 0x45 -#define EC_WORD_STEEL (EC_GROUP_STATUS << 9) | 0x46 -#define EC_WORD_ILLUMINATE (EC_GROUP_STATUS << 9) | 0x47 -#define EC_WORD_EARLY_BIRD (EC_GROUP_STATUS << 9) | 0x48 -#define EC_WORD_HUSTLE (EC_GROUP_STATUS << 9) | 0x49 -#define EC_WORD_SHINE (EC_GROUP_STATUS << 9) | 0x4a -#define EC_WORD_FLYING (EC_GROUP_STATUS << 9) | 0x4b -#define EC_WORD_DROUGHT (EC_GROUP_STATUS << 9) | 0x4c -#define EC_WORD_LIGHTNINGROD (EC_GROUP_STATUS << 9) | 0x4d -#define EC_WORD_COMPOUNDEYES (EC_GROUP_STATUS << 9) | 0x4e -#define EC_WORD_MARVEL_SCALE (EC_GROUP_STATUS << 9) | 0x4f -#define EC_WORD_WONDER_GUARD (EC_GROUP_STATUS << 9) | 0x50 -#define EC_WORD_INSOMNIA (EC_GROUP_STATUS << 9) | 0x51 -#define EC_WORD_LEVITATE (EC_GROUP_STATUS << 9) | 0x52 -#define EC_WORD_PLUS (EC_GROUP_STATUS << 9) | 0x53 -#define EC_WORD_PRESSURE (EC_GROUP_STATUS << 9) | 0x54 -#define EC_WORD_LIQUID_OOZE (EC_GROUP_STATUS << 9) | 0x55 -#define EC_WORD_COLOR_CHANGE (EC_GROUP_STATUS << 9) | 0x56 -#define EC_WORD_SOUNDPROOF (EC_GROUP_STATUS << 9) | 0x57 -#define EC_WORD_EFFECT_SPORE (EC_GROUP_STATUS << 9) | 0x58 -#define EC_WORD_PKRS (EC_GROUP_STATUS << 9) | 0x59 -#define EC_WORD_FIRE (EC_GROUP_STATUS << 9) | 0x5a -#define EC_WORD_FLAME_BODY (EC_GROUP_STATUS << 9) | 0x5b -#define EC_WORD_MINUS (EC_GROUP_STATUS << 9) | 0x5c -#define EC_WORD_OWN_TEMPO (EC_GROUP_STATUS << 9) | 0x5d -#define EC_WORD_MAGMA_ARMOR (EC_GROUP_STATUS << 9) | 0x5e -#define EC_WORD_WATER (EC_GROUP_STATUS << 9) | 0x5f -#define EC_WORD_WATER_VEIL (EC_GROUP_STATUS << 9) | 0x60 -#define EC_WORD_BUG (EC_GROUP_STATUS << 9) | 0x61 -#define EC_WORD_SWARM (EC_GROUP_STATUS << 9) | 0x62 -#define EC_WORD_CUTE_CHARM (EC_GROUP_STATUS << 9) | 0x63 -#define EC_WORD_IMMUNITY (EC_GROUP_STATUS << 9) | 0x64 -#define EC_WORD_BLAZE (EC_GROUP_STATUS << 9) | 0x65 -#define EC_WORD_PICKUP (EC_GROUP_STATUS << 9) | 0x66 -#define EC_WORD_PATTERN (EC_GROUP_STATUS << 9) | 0x67 -#define EC_WORD_FLASH_FIRE (EC_GROUP_STATUS << 9) | 0x68 -#define EC_WORD_VITAL_SPIRIT (EC_GROUP_STATUS << 9) | 0x69 -#define EC_WORD_CHLOROPHYLL (EC_GROUP_STATUS << 9) | 0x6a -#define EC_WORD_PURE_POWER (EC_GROUP_STATUS << 9) | 0x6b -#define EC_WORD_SHIELD_DUST (EC_GROUP_STATUS << 9) | 0x6c +#define EC_WORD_DARK ((EC_GROUP_STATUS << EC_MASK_BITS) | 0) +#define EC_WORD_STENCH ((EC_GROUP_STATUS << EC_MASK_BITS) | 1) +#define EC_WORD_THICK_FAT ((EC_GROUP_STATUS << EC_MASK_BITS) | 2) +#define EC_WORD_RAIN_DISH ((EC_GROUP_STATUS << EC_MASK_BITS) | 3) +#define EC_WORD_DRIZZLE ((EC_GROUP_STATUS << EC_MASK_BITS) | 4) +#define EC_WORD_ARENA_TRAP ((EC_GROUP_STATUS << EC_MASK_BITS) | 5) +#define EC_WORD_INTIMIDATE ((EC_GROUP_STATUS << EC_MASK_BITS) | 6) +#define EC_WORD_ROCK_HEAD ((EC_GROUP_STATUS << EC_MASK_BITS) | 7) +#define EC_WORD_COLOR ((EC_GROUP_STATUS << EC_MASK_BITS) | 8) +#define EC_WORD_ALT_COLOR ((EC_GROUP_STATUS << EC_MASK_BITS) | 9) +#define EC_WORD_ROCK ((EC_GROUP_STATUS << EC_MASK_BITS) | 10) +#define EC_WORD_BEAUTIFUL ((EC_GROUP_STATUS << EC_MASK_BITS) | 11) +#define EC_WORD_BEAUTY ((EC_GROUP_STATUS << EC_MASK_BITS) | 12) +#define EC_WORD_AIR_LOCK ((EC_GROUP_STATUS << EC_MASK_BITS) | 13) +#define EC_WORD_PSYCHIC ((EC_GROUP_STATUS << EC_MASK_BITS) | 14) +#define EC_WORD_HYPER_CUTTER ((EC_GROUP_STATUS << EC_MASK_BITS) | 15) +#define EC_WORD_FIGHTING ((EC_GROUP_STATUS << EC_MASK_BITS) | 16) +#define EC_WORD_SHADOW_TAG ((EC_GROUP_STATUS << EC_MASK_BITS) | 17) +#define EC_WORD_SMART ((EC_GROUP_STATUS << EC_MASK_BITS) | 18) +#define EC_WORD_SMARTNESS ((EC_GROUP_STATUS << EC_MASK_BITS) | 19) +#define EC_WORD_SPEED_BOOST ((EC_GROUP_STATUS << EC_MASK_BITS) | 20) +#define EC_WORD_COOL ((EC_GROUP_STATUS << EC_MASK_BITS) | 21) +#define EC_WORD_COOLNESS ((EC_GROUP_STATUS << EC_MASK_BITS) | 22) +#define EC_WORD_BATTLE_ARMOR ((EC_GROUP_STATUS << EC_MASK_BITS) | 23) +#define EC_WORD_CUTE ((EC_GROUP_STATUS << EC_MASK_BITS) | 24) +#define EC_WORD_CUTENESS ((EC_GROUP_STATUS << EC_MASK_BITS) | 25) +#define EC_WORD_STURDY ((EC_GROUP_STATUS << EC_MASK_BITS) | 26) +#define EC_WORD_SUCTION_CUPS ((EC_GROUP_STATUS << EC_MASK_BITS) | 27) +#define EC_WORD_GRASS ((EC_GROUP_STATUS << EC_MASK_BITS) | 28) +#define EC_WORD_CLEAR_BODY ((EC_GROUP_STATUS << EC_MASK_BITS) | 29) +#define EC_WORD_TORRENT ((EC_GROUP_STATUS << EC_MASK_BITS) | 30) +#define EC_WORD_GHOST ((EC_GROUP_STATUS << EC_MASK_BITS) | 31) +#define EC_WORD_ICE ((EC_GROUP_STATUS << EC_MASK_BITS) | 32) +#define EC_WORD_GUTS ((EC_GROUP_STATUS << EC_MASK_BITS) | 33) +#define EC_WORD_ROUGH_SKIN ((EC_GROUP_STATUS << EC_MASK_BITS) | 34) +#define EC_WORD_SHELL_ARMOR ((EC_GROUP_STATUS << EC_MASK_BITS) | 35) +#define EC_WORD_NATURAL_CURE ((EC_GROUP_STATUS << EC_MASK_BITS) | 36) +#define EC_WORD_DAMP ((EC_GROUP_STATUS << EC_MASK_BITS) | 37) +#define EC_WORD_GROUND ((EC_GROUP_STATUS << EC_MASK_BITS) | 38) +#define EC_WORD_LIMBER ((EC_GROUP_STATUS << EC_MASK_BITS) | 39) +#define EC_WORD_MAGNET_PULL ((EC_GROUP_STATUS << EC_MASK_BITS) | 40) +#define EC_WORD_WHITE_SMOKE ((EC_GROUP_STATUS << EC_MASK_BITS) | 41) +#define EC_WORD_SYNCHRONIZE ((EC_GROUP_STATUS << EC_MASK_BITS) | 42) +#define EC_WORD_OVERGROW ((EC_GROUP_STATUS << EC_MASK_BITS) | 43) +#define EC_WORD_SWIFT_SWIM ((EC_GROUP_STATUS << EC_MASK_BITS) | 44) +#define EC_WORD_SAND_STREAM ((EC_GROUP_STATUS << EC_MASK_BITS) | 45) +#define EC_WORD_SAND_VEIL ((EC_GROUP_STATUS << EC_MASK_BITS) | 46) +#define EC_WORD_KEEN_EYE ((EC_GROUP_STATUS << EC_MASK_BITS) | 47) +#define EC_WORD_INNER_FOCUS ((EC_GROUP_STATUS << EC_MASK_BITS) | 48) +#define EC_WORD_STATIC ((EC_GROUP_STATUS << EC_MASK_BITS) | 49) +#define EC_WORD_TYPE ((EC_GROUP_STATUS << EC_MASK_BITS) | 50) +#define EC_WORD_TOUGH ((EC_GROUP_STATUS << EC_MASK_BITS) | 51) +#define EC_WORD_TOUGHNESS ((EC_GROUP_STATUS << EC_MASK_BITS) | 52) +#define EC_WORD_SHED_SKIN ((EC_GROUP_STATUS << EC_MASK_BITS) | 53) +#define EC_WORD_HUGE_POWER ((EC_GROUP_STATUS << EC_MASK_BITS) | 54) +#define EC_WORD_VOLT_ABSORB ((EC_GROUP_STATUS << EC_MASK_BITS) | 55) +#define EC_WORD_WATER_ABSORB ((EC_GROUP_STATUS << EC_MASK_BITS) | 56) +#define EC_WORD_ELECTRIC ((EC_GROUP_STATUS << EC_MASK_BITS) | 57) +#define EC_WORD_FORECAST ((EC_GROUP_STATUS << EC_MASK_BITS) | 58) +#define EC_WORD_SERENE_GRACE ((EC_GROUP_STATUS << EC_MASK_BITS) | 59) +#define EC_WORD_POISON ((EC_GROUP_STATUS << EC_MASK_BITS) | 60) +#define EC_WORD_POISON_POINT ((EC_GROUP_STATUS << EC_MASK_BITS) | 61) +#define EC_WORD_DRAGON ((EC_GROUP_STATUS << EC_MASK_BITS) | 62) +#define EC_WORD_TRACE ((EC_GROUP_STATUS << EC_MASK_BITS) | 63) +#define EC_WORD_OBLIVIOUS ((EC_GROUP_STATUS << EC_MASK_BITS) | 64) +#define EC_WORD_TRUANT ((EC_GROUP_STATUS << EC_MASK_BITS) | 65) +#define EC_WORD_RUN_AWAY ((EC_GROUP_STATUS << EC_MASK_BITS) | 66) +#define EC_WORD_STICKY_HOLD ((EC_GROUP_STATUS << EC_MASK_BITS) | 67) +#define EC_WORD_CLOUD_NINE ((EC_GROUP_STATUS << EC_MASK_BITS) | 68) +#define EC_WORD_NORMAL ((EC_GROUP_STATUS << EC_MASK_BITS) | 69) +#define EC_WORD_STEEL ((EC_GROUP_STATUS << EC_MASK_BITS) | 70) +#define EC_WORD_ILLUMINATE ((EC_GROUP_STATUS << EC_MASK_BITS) | 71) +#define EC_WORD_EARLY_BIRD ((EC_GROUP_STATUS << EC_MASK_BITS) | 72) +#define EC_WORD_HUSTLE ((EC_GROUP_STATUS << EC_MASK_BITS) | 73) +#define EC_WORD_SHINE ((EC_GROUP_STATUS << EC_MASK_BITS) | 74) +#define EC_WORD_FLYING ((EC_GROUP_STATUS << EC_MASK_BITS) | 75) +#define EC_WORD_DROUGHT ((EC_GROUP_STATUS << EC_MASK_BITS) | 76) +#define EC_WORD_LIGHTNINGROD ((EC_GROUP_STATUS << EC_MASK_BITS) | 77) +#define EC_WORD_COMPOUNDEYES ((EC_GROUP_STATUS << EC_MASK_BITS) | 78) +#define EC_WORD_MARVEL_SCALE ((EC_GROUP_STATUS << EC_MASK_BITS) | 79) +#define EC_WORD_WONDER_GUARD ((EC_GROUP_STATUS << EC_MASK_BITS) | 80) +#define EC_WORD_INSOMNIA ((EC_GROUP_STATUS << EC_MASK_BITS) | 81) +#define EC_WORD_LEVITATE ((EC_GROUP_STATUS << EC_MASK_BITS) | 82) +#define EC_WORD_PLUS ((EC_GROUP_STATUS << EC_MASK_BITS) | 83) +#define EC_WORD_PRESSURE ((EC_GROUP_STATUS << EC_MASK_BITS) | 84) +#define EC_WORD_LIQUID_OOZE ((EC_GROUP_STATUS << EC_MASK_BITS) | 85) +#define EC_WORD_COLOR_CHANGE ((EC_GROUP_STATUS << EC_MASK_BITS) | 86) +#define EC_WORD_SOUNDPROOF ((EC_GROUP_STATUS << EC_MASK_BITS) | 87) +#define EC_WORD_EFFECT_SPORE ((EC_GROUP_STATUS << EC_MASK_BITS) | 88) +#define EC_WORD_PKRS ((EC_GROUP_STATUS << EC_MASK_BITS) | 89) +#define EC_WORD_FIRE ((EC_GROUP_STATUS << EC_MASK_BITS) | 90) +#define EC_WORD_FLAME_BODY ((EC_GROUP_STATUS << EC_MASK_BITS) | 91) +#define EC_WORD_MINUS ((EC_GROUP_STATUS << EC_MASK_BITS) | 92) +#define EC_WORD_OWN_TEMPO ((EC_GROUP_STATUS << EC_MASK_BITS) | 93) +#define EC_WORD_MAGMA_ARMOR ((EC_GROUP_STATUS << EC_MASK_BITS) | 94) +#define EC_WORD_WATER ((EC_GROUP_STATUS << EC_MASK_BITS) | 95) +#define EC_WORD_WATER_VEIL ((EC_GROUP_STATUS << EC_MASK_BITS) | 96) +#define EC_WORD_BUG ((EC_GROUP_STATUS << EC_MASK_BITS) | 97) +#define EC_WORD_SWARM ((EC_GROUP_STATUS << EC_MASK_BITS) | 98) +#define EC_WORD_CUTE_CHARM ((EC_GROUP_STATUS << EC_MASK_BITS) | 99) +#define EC_WORD_IMMUNITY ((EC_GROUP_STATUS << EC_MASK_BITS) | 100) +#define EC_WORD_BLAZE ((EC_GROUP_STATUS << EC_MASK_BITS) | 101) +#define EC_WORD_PICKUP ((EC_GROUP_STATUS << EC_MASK_BITS) | 102) +#define EC_WORD_PATTERN ((EC_GROUP_STATUS << EC_MASK_BITS) | 103) +#define EC_WORD_FLASH_FIRE ((EC_GROUP_STATUS << EC_MASK_BITS) | 104) +#define EC_WORD_VITAL_SPIRIT ((EC_GROUP_STATUS << EC_MASK_BITS) | 105) +#define EC_WORD_CHLOROPHYLL ((EC_GROUP_STATUS << EC_MASK_BITS) | 106) +#define EC_WORD_PURE_POWER ((EC_GROUP_STATUS << EC_MASK_BITS) | 107) +#define EC_WORD_SHIELD_DUST ((EC_GROUP_STATUS << EC_MASK_BITS) | 108) // BATTLE -#define EC_WORD_MATCH_UP (EC_GROUP_BATTLE << 9) | 0x0 -#define EC_WORD_GO (EC_GROUP_BATTLE << 9) | 0x1 -#define EC_WORD_NO_1 (EC_GROUP_BATTLE << 9) | 0x2 -#define EC_WORD_DECIDE (EC_GROUP_BATTLE << 9) | 0x3 -#define EC_WORD_LET_ME_WIN (EC_GROUP_BATTLE << 9) | 0x4 -#define EC_WORD_WINS (EC_GROUP_BATTLE << 9) | 0x5 -#define EC_WORD_WIN (EC_GROUP_BATTLE << 9) | 0x6 -#define EC_WORD_WON (EC_GROUP_BATTLE << 9) | 0x7 -#define EC_WORD_IF_I_WIN (EC_GROUP_BATTLE << 9) | 0x8 -#define EC_WORD_WHEN_I_WIN (EC_GROUP_BATTLE << 9) | 0x9 -#define EC_WORD_CAN_T_WIN (EC_GROUP_BATTLE << 9) | 0xa -#define EC_WORD_CAN_WIN (EC_GROUP_BATTLE << 9) | 0xb -#define EC_WORD_NO_MATCH (EC_GROUP_BATTLE << 9) | 0xc -#define EC_WORD_SPIRIT (EC_GROUP_BATTLE << 9) | 0xd -#define EC_WORD_DECIDED (EC_GROUP_BATTLE << 9) | 0xe -#define EC_WORD_TRUMP_CARD (EC_GROUP_BATTLE << 9) | 0xf -#define EC_WORD_TAKE_THAT (EC_GROUP_BATTLE << 9) | 0x10 -#define EC_WORD_COME_ON (EC_GROUP_BATTLE << 9) | 0x11 -#define EC_WORD_ATTACK (EC_GROUP_BATTLE << 9) | 0x12 -#define EC_WORD_SURRENDER (EC_GROUP_BATTLE << 9) | 0x13 -#define EC_WORD_GUTSY (EC_GROUP_BATTLE << 9) | 0x14 -#define EC_WORD_TALENT (EC_GROUP_BATTLE << 9) | 0x15 -#define EC_WORD_STRATEGY (EC_GROUP_BATTLE << 9) | 0x16 -#define EC_WORD_SMITE (EC_GROUP_BATTLE << 9) | 0x17 -#define EC_WORD_MATCH (EC_GROUP_BATTLE << 9) | 0x18 -#define EC_WORD_VICTORY (EC_GROUP_BATTLE << 9) | 0x19 -#define EC_WORD_OFFENSIVE (EC_GROUP_BATTLE << 9) | 0x1a -#define EC_WORD_SENSE (EC_GROUP_BATTLE << 9) | 0x1b -#define EC_WORD_VERSUS (EC_GROUP_BATTLE << 9) | 0x1c -#define EC_WORD_FIGHTS (EC_GROUP_BATTLE << 9) | 0x1d -#define EC_WORD_POWER (EC_GROUP_BATTLE << 9) | 0x1e -#define EC_WORD_CHALLENGE (EC_GROUP_BATTLE << 9) | 0x1f -#define EC_WORD_STRONG (EC_GROUP_BATTLE << 9) | 0x20 -#define EC_WORD_TOO_STRONG (EC_GROUP_BATTLE << 9) | 0x21 -#define EC_WORD_GO_EASY (EC_GROUP_BATTLE << 9) | 0x22 -#define EC_WORD_FOE (EC_GROUP_BATTLE << 9) | 0x23 -#define EC_WORD_GENIUS (EC_GROUP_BATTLE << 9) | 0x24 -#define EC_WORD_LEGEND (EC_GROUP_BATTLE << 9) | 0x25 -#define EC_WORD_ESCAPE (EC_GROUP_BATTLE << 9) | 0x26 -#define EC_WORD_AIM (EC_GROUP_BATTLE << 9) | 0x27 -#define EC_WORD_BATTLE (EC_GROUP_BATTLE << 9) | 0x28 -#define EC_WORD_FIGHT (EC_GROUP_BATTLE << 9) | 0x29 -#define EC_WORD_RESUSCITATE (EC_GROUP_BATTLE << 9) | 0x2a -#define EC_WORD_POINTS (EC_GROUP_BATTLE << 9) | 0x2b -#define EC_WORD_SERIOUS (EC_GROUP_BATTLE << 9) | 0x2c -#define EC_WORD_GIVE_UP (EC_GROUP_BATTLE << 9) | 0x2d -#define EC_WORD_LOSS (EC_GROUP_BATTLE << 9) | 0x2e -#define EC_WORD_IF_I_LOSE (EC_GROUP_BATTLE << 9) | 0x2f -#define EC_WORD_LOST (EC_GROUP_BATTLE << 9) | 0x30 -#define EC_WORD_LOSE (EC_GROUP_BATTLE << 9) | 0x31 -#define EC_WORD_GUARD (EC_GROUP_BATTLE << 9) | 0x32 -#define EC_WORD_PARTNER (EC_GROUP_BATTLE << 9) | 0x33 -#define EC_WORD_REJECT (EC_GROUP_BATTLE << 9) | 0x34 -#define EC_WORD_ACCEPT (EC_GROUP_BATTLE << 9) | 0x35 -#define EC_WORD_INVINCIBLE (EC_GROUP_BATTLE << 9) | 0x36 -#define EC_WORD_RECEIVED (EC_GROUP_BATTLE << 9) | 0x37 -#define EC_WORD_EASY (EC_GROUP_BATTLE << 9) | 0x38 -#define EC_WORD_WEAK (EC_GROUP_BATTLE << 9) | 0x39 -#define EC_WORD_TOO_WEAK (EC_GROUP_BATTLE << 9) | 0x3a -#define EC_WORD_PUSHOVER (EC_GROUP_BATTLE << 9) | 0x3b -#define EC_WORD_LEADER (EC_GROUP_BATTLE << 9) | 0x3c -#define EC_WORD_RULE (EC_GROUP_BATTLE << 9) | 0x3d -#define EC_WORD_MOVE (EC_GROUP_BATTLE << 9) | 0x3e +#define EC_WORD_MATCH_UP ((EC_GROUP_BATTLE << EC_MASK_BITS) | 0) +#define EC_WORD_GO ((EC_GROUP_BATTLE << EC_MASK_BITS) | 1) +#define EC_WORD_NO_1 ((EC_GROUP_BATTLE << EC_MASK_BITS) | 2) +#define EC_WORD_DECIDE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 3) +#define EC_WORD_LET_ME_WIN ((EC_GROUP_BATTLE << EC_MASK_BITS) | 4) +#define EC_WORD_WINS ((EC_GROUP_BATTLE << EC_MASK_BITS) | 5) +#define EC_WORD_WIN ((EC_GROUP_BATTLE << EC_MASK_BITS) | 6) +#define EC_WORD_WON ((EC_GROUP_BATTLE << EC_MASK_BITS) | 7) +#define EC_WORD_IF_I_WIN ((EC_GROUP_BATTLE << EC_MASK_BITS) | 8) +#define EC_WORD_WHEN_I_WIN ((EC_GROUP_BATTLE << EC_MASK_BITS) | 9) +#define EC_WORD_CAN_T_WIN ((EC_GROUP_BATTLE << EC_MASK_BITS) | 10) +#define EC_WORD_CAN_WIN ((EC_GROUP_BATTLE << EC_MASK_BITS) | 11) +#define EC_WORD_NO_MATCH ((EC_GROUP_BATTLE << EC_MASK_BITS) | 12) +#define EC_WORD_SPIRIT ((EC_GROUP_BATTLE << EC_MASK_BITS) | 13) +#define EC_WORD_DECIDED ((EC_GROUP_BATTLE << EC_MASK_BITS) | 14) +#define EC_WORD_TRUMP_CARD ((EC_GROUP_BATTLE << EC_MASK_BITS) | 15) +#define EC_WORD_TAKE_THAT ((EC_GROUP_BATTLE << EC_MASK_BITS) | 16) +#define EC_WORD_COME_ON ((EC_GROUP_BATTLE << EC_MASK_BITS) | 17) +#define EC_WORD_ATTACK ((EC_GROUP_BATTLE << EC_MASK_BITS) | 18) +#define EC_WORD_SURRENDER ((EC_GROUP_BATTLE << EC_MASK_BITS) | 19) +#define EC_WORD_GUTSY ((EC_GROUP_BATTLE << EC_MASK_BITS) | 20) +#define EC_WORD_TALENT ((EC_GROUP_BATTLE << EC_MASK_BITS) | 21) +#define EC_WORD_STRATEGY ((EC_GROUP_BATTLE << EC_MASK_BITS) | 22) +#define EC_WORD_SMITE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 23) +#define EC_WORD_MATCH ((EC_GROUP_BATTLE << EC_MASK_BITS) | 24) +#define EC_WORD_VICTORY ((EC_GROUP_BATTLE << EC_MASK_BITS) | 25) +#define EC_WORD_OFFENSIVE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 26) +#define EC_WORD_SENSE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 27) +#define EC_WORD_VERSUS ((EC_GROUP_BATTLE << EC_MASK_BITS) | 28) +#define EC_WORD_FIGHTS ((EC_GROUP_BATTLE << EC_MASK_BITS) | 29) +#define EC_WORD_POWER ((EC_GROUP_BATTLE << EC_MASK_BITS) | 30) +#define EC_WORD_CHALLENGE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 31) +#define EC_WORD_STRONG ((EC_GROUP_BATTLE << EC_MASK_BITS) | 32) +#define EC_WORD_TOO_STRONG ((EC_GROUP_BATTLE << EC_MASK_BITS) | 33) +#define EC_WORD_GO_EASY ((EC_GROUP_BATTLE << EC_MASK_BITS) | 34) +#define EC_WORD_FOE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 35) +#define EC_WORD_GENIUS ((EC_GROUP_BATTLE << EC_MASK_BITS) | 36) +#define EC_WORD_LEGEND ((EC_GROUP_BATTLE << EC_MASK_BITS) | 37) +#define EC_WORD_ESCAPE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 38) +#define EC_WORD_AIM ((EC_GROUP_BATTLE << EC_MASK_BITS) | 39) +#define EC_WORD_BATTLE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 40) +#define EC_WORD_FIGHT ((EC_GROUP_BATTLE << EC_MASK_BITS) | 41) +#define EC_WORD_RESUSCITATE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 42) +#define EC_WORD_POINTS ((EC_GROUP_BATTLE << EC_MASK_BITS) | 43) +#define EC_WORD_SERIOUS ((EC_GROUP_BATTLE << EC_MASK_BITS) | 44) +#define EC_WORD_GIVE_UP ((EC_GROUP_BATTLE << EC_MASK_BITS) | 45) +#define EC_WORD_LOSS ((EC_GROUP_BATTLE << EC_MASK_BITS) | 46) +#define EC_WORD_IF_I_LOSE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 47) +#define EC_WORD_LOST ((EC_GROUP_BATTLE << EC_MASK_BITS) | 48) +#define EC_WORD_LOSE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 49) +#define EC_WORD_GUARD ((EC_GROUP_BATTLE << EC_MASK_BITS) | 50) +#define EC_WORD_PARTNER ((EC_GROUP_BATTLE << EC_MASK_BITS) | 51) +#define EC_WORD_REJECT ((EC_GROUP_BATTLE << EC_MASK_BITS) | 52) +#define EC_WORD_ACCEPT ((EC_GROUP_BATTLE << EC_MASK_BITS) | 53) +#define EC_WORD_INVINCIBLE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 54) +#define EC_WORD_RECEIVED ((EC_GROUP_BATTLE << EC_MASK_BITS) | 55) +#define EC_WORD_EASY ((EC_GROUP_BATTLE << EC_MASK_BITS) | 56) +#define EC_WORD_WEAK ((EC_GROUP_BATTLE << EC_MASK_BITS) | 57) +#define EC_WORD_TOO_WEAK ((EC_GROUP_BATTLE << EC_MASK_BITS) | 58) +#define EC_WORD_PUSHOVER ((EC_GROUP_BATTLE << EC_MASK_BITS) | 59) +#define EC_WORD_LEADER ((EC_GROUP_BATTLE << EC_MASK_BITS) | 60) +#define EC_WORD_RULE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 61) +#define EC_WORD_MOVE ((EC_GROUP_BATTLE << EC_MASK_BITS) | 62) // GREETINGS -#define EC_WORD_THANKS (EC_GROUP_GREETINGS << 9) | 0x0 -#define EC_WORD_YES (EC_GROUP_GREETINGS << 9) | 0x1 -#define EC_WORD_HERE_GOES (EC_GROUP_GREETINGS << 9) | 0x2 -#define EC_WORD_HERE_I_COME (EC_GROUP_GREETINGS << 9) | 0x3 -#define EC_WORD_HERE_IT_IS (EC_GROUP_GREETINGS << 9) | 0x4 -#define EC_WORD_YEAH (EC_GROUP_GREETINGS << 9) | 0x5 -#define EC_WORD_WELCOME (EC_GROUP_GREETINGS << 9) | 0x6 -#define EC_WORD_OI (EC_GROUP_GREETINGS << 9) | 0x7 -#define EC_WORD_HOW_DO (EC_GROUP_GREETINGS << 9) | 0x8 -#define EC_WORD_CONGRATS (EC_GROUP_GREETINGS << 9) | 0x9 -#define EC_WORD_GIVE_ME (EC_GROUP_GREETINGS << 9) | 0xa -#define EC_WORD_SORRY (EC_GROUP_GREETINGS << 9) | 0xb -#define EC_WORD_APOLOGIZE (EC_GROUP_GREETINGS << 9) | 0xc -#define EC_WORD_FORGIVE (EC_GROUP_GREETINGS << 9) | 0xd -#define EC_WORD_HEY_THERE (EC_GROUP_GREETINGS << 9) | 0xe -#define EC_WORD_HELLO (EC_GROUP_GREETINGS << 9) | 0xf -#define EC_WORD_GOOD_BYE (EC_GROUP_GREETINGS << 9) | 0x10 -#define EC_WORD_THANK_YOU (EC_GROUP_GREETINGS << 9) | 0x11 -#define EC_WORD_I_VE_ARRIVED (EC_GROUP_GREETINGS << 9) | 0x12 -#define EC_WORD_PARDON (EC_GROUP_GREETINGS << 9) | 0x13 -#define EC_WORD_EXCUSE (EC_GROUP_GREETINGS << 9) | 0x14 -#define EC_WORD_SEE_YA (EC_GROUP_GREETINGS << 9) | 0x15 -#define EC_WORD_EXCUSE_ME (EC_GROUP_GREETINGS << 9) | 0x16 -#define EC_WORD_WELL_THEN (EC_GROUP_GREETINGS << 9) | 0x17 -#define EC_WORD_GO_AHEAD (EC_GROUP_GREETINGS << 9) | 0x18 -#define EC_WORD_APPRECIATE (EC_GROUP_GREETINGS << 9) | 0x19 -#define EC_WORD_HEY_QUES (EC_GROUP_GREETINGS << 9) | 0x1a -#define EC_WORD_WHAT_S_UP_QUES (EC_GROUP_GREETINGS << 9) | 0x1b -#define EC_WORD_HUH_QUES (EC_GROUP_GREETINGS << 9) | 0x1c -#define EC_WORD_NO (EC_GROUP_GREETINGS << 9) | 0x1d -#define EC_WORD_HI (EC_GROUP_GREETINGS << 9) | 0x1e -#define EC_WORD_YEAH_YEAH (EC_GROUP_GREETINGS << 9) | 0x1f -#define EC_WORD_BYE_BYE (EC_GROUP_GREETINGS << 9) | 0x20 -#define EC_WORD_MEET_YOU (EC_GROUP_GREETINGS << 9) | 0x21 -#define EC_WORD_HEY (EC_GROUP_GREETINGS << 9) | 0x22 -#define EC_WORD_SMELL (EC_GROUP_GREETINGS << 9) | 0x23 -#define EC_WORD_LISTENING (EC_GROUP_GREETINGS << 9) | 0x24 -#define EC_WORD_HOO_HAH (EC_GROUP_GREETINGS << 9) | 0x25 -#define EC_WORD_YAHOO (EC_GROUP_GREETINGS << 9) | 0x26 -#define EC_WORD_YO (EC_GROUP_GREETINGS << 9) | 0x27 -#define EC_WORD_COME_OVER (EC_GROUP_GREETINGS << 9) | 0x28 -#define EC_WORD_COUNT_ON (EC_GROUP_GREETINGS << 9) | 0x29 +#define EC_WORD_THANKS ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 0) +#define EC_WORD_YES ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 1) +#define EC_WORD_HERE_GOES ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 2) +#define EC_WORD_HERE_I_COME ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 3) +#define EC_WORD_HERE_IT_IS ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 4) +#define EC_WORD_YEAH ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 5) +#define EC_WORD_WELCOME ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 6) +#define EC_WORD_OI ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 7) +#define EC_WORD_HOW_DO ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 8) +#define EC_WORD_CONGRATS ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 9) +#define EC_WORD_GIVE_ME ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 10) +#define EC_WORD_SORRY ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 11) +#define EC_WORD_APOLOGIZE ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 12) +#define EC_WORD_FORGIVE ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 13) +#define EC_WORD_HEY_THERE ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 14) +#define EC_WORD_HELLO ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 15) +#define EC_WORD_GOOD_BYE ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 16) +#define EC_WORD_THANK_YOU ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 17) +#define EC_WORD_I_VE_ARRIVED ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 18) +#define EC_WORD_PARDON ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 19) +#define EC_WORD_EXCUSE ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 20) +#define EC_WORD_SEE_YA ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 21) +#define EC_WORD_EXCUSE_ME ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 22) +#define EC_WORD_WELL_THEN ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 23) +#define EC_WORD_GO_AHEAD ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 24) +#define EC_WORD_APPRECIATE ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 25) +#define EC_WORD_HEY_QUES ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 26) +#define EC_WORD_WHAT_S_UP_QUES ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 27) +#define EC_WORD_HUH_QUES ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 28) +#define EC_WORD_NO ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 29) +#define EC_WORD_HI ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 30) +#define EC_WORD_YEAH_YEAH ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 31) +#define EC_WORD_BYE_BYE ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 32) +#define EC_WORD_MEET_YOU ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 33) +#define EC_WORD_HEY ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 34) +#define EC_WORD_SMELL ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 35) +#define EC_WORD_LISTENING ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 36) +#define EC_WORD_HOO_HAH ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 37) +#define EC_WORD_YAHOO ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 38) +#define EC_WORD_YO ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 39) +#define EC_WORD_COME_OVER ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 40) +#define EC_WORD_COUNT_ON ((EC_GROUP_GREETINGS << EC_MASK_BITS) | 41) // PEOPLE -#define EC_WORD_OPPONENT (EC_GROUP_PEOPLE << 9) | 0x0 -#define EC_WORD_I (EC_GROUP_PEOPLE << 9) | 0x1 -#define EC_WORD_YOU (EC_GROUP_PEOPLE << 9) | 0x2 -#define EC_WORD_YOURS (EC_GROUP_PEOPLE << 9) | 0x3 -#define EC_WORD_SON (EC_GROUP_PEOPLE << 9) | 0x4 -#define EC_WORD_YOUR (EC_GROUP_PEOPLE << 9) | 0x5 -#define EC_WORD_YOU_RE (EC_GROUP_PEOPLE << 9) | 0x6 -#define EC_WORD_YOU_VE (EC_GROUP_PEOPLE << 9) | 0x7 -#define EC_WORD_MOTHER (EC_GROUP_PEOPLE << 9) | 0x8 -#define EC_WORD_GRANDFATHER (EC_GROUP_PEOPLE << 9) | 0x9 -#define EC_WORD_UNCLE (EC_GROUP_PEOPLE << 9) | 0xa -#define EC_WORD_FATHER (EC_GROUP_PEOPLE << 9) | 0xb -#define EC_WORD_BOY (EC_GROUP_PEOPLE << 9) | 0xc -#define EC_WORD_ADULT (EC_GROUP_PEOPLE << 9) | 0xd -#define EC_WORD_BROTHER (EC_GROUP_PEOPLE << 9) | 0xe -#define EC_WORD_SISTER (EC_GROUP_PEOPLE << 9) | 0xf -#define EC_WORD_GRANDMOTHER (EC_GROUP_PEOPLE << 9) | 0x10 -#define EC_WORD_AUNT (EC_GROUP_PEOPLE << 9) | 0x11 -#define EC_WORD_PARENT (EC_GROUP_PEOPLE << 9) | 0x12 -#define EC_WORD_MAN (EC_GROUP_PEOPLE << 9) | 0x13 -#define EC_WORD_ME (EC_GROUP_PEOPLE << 9) | 0x14 -#define EC_WORD_GIRL (EC_GROUP_PEOPLE << 9) | 0x15 -#define EC_WORD_BABE (EC_GROUP_PEOPLE << 9) | 0x16 -#define EC_WORD_FAMILY (EC_GROUP_PEOPLE << 9) | 0x17 -#define EC_WORD_HER (EC_GROUP_PEOPLE << 9) | 0x18 -#define EC_WORD_HIM (EC_GROUP_PEOPLE << 9) | 0x19 -#define EC_WORD_HE (EC_GROUP_PEOPLE << 9) | 0x1a -#define EC_WORD_PLACE (EC_GROUP_PEOPLE << 9) | 0x1b -#define EC_WORD_DAUGHTER (EC_GROUP_PEOPLE << 9) | 0x1c -#define EC_WORD_HIS (EC_GROUP_PEOPLE << 9) | 0x1d -#define EC_WORD_HE_S (EC_GROUP_PEOPLE << 9) | 0x1e -#define EC_WORD_AREN_T (EC_GROUP_PEOPLE << 9) | 0x1f -#define EC_WORD_SIBLINGS (EC_GROUP_PEOPLE << 9) | 0x20 -#define EC_WORD_KID (EC_GROUP_PEOPLE << 9) | 0x21 -#define EC_WORD_CHILDREN (EC_GROUP_PEOPLE << 9) | 0x22 -#define EC_WORD_MR (EC_GROUP_PEOPLE << 9) | 0x23 -#define EC_WORD_MRS (EC_GROUP_PEOPLE << 9) | 0x24 -#define EC_WORD_MYSELF (EC_GROUP_PEOPLE << 9) | 0x25 -#define EC_WORD_I_WAS (EC_GROUP_PEOPLE << 9) | 0x26 -#define EC_WORD_TO_ME (EC_GROUP_PEOPLE << 9) | 0x27 -#define EC_WORD_MY (EC_GROUP_PEOPLE << 9) | 0x28 -#define EC_WORD_I_AM (EC_GROUP_PEOPLE << 9) | 0x29 -#define EC_WORD_I_VE (EC_GROUP_PEOPLE << 9) | 0x2a -#define EC_WORD_WHO (EC_GROUP_PEOPLE << 9) | 0x2b -#define EC_WORD_SOMEONE (EC_GROUP_PEOPLE << 9) | 0x2c -#define EC_WORD_WHO_WAS (EC_GROUP_PEOPLE << 9) | 0x2d -#define EC_WORD_TO_WHOM (EC_GROUP_PEOPLE << 9) | 0x2e -#define EC_WORD_WHOSE (EC_GROUP_PEOPLE << 9) | 0x2f -#define EC_WORD_WHO_IS (EC_GROUP_PEOPLE << 9) | 0x30 -#define EC_WORD_IT_S (EC_GROUP_PEOPLE << 9) | 0x31 -#define EC_WORD_LADY (EC_GROUP_PEOPLE << 9) | 0x32 -#define EC_WORD_FRIEND (EC_GROUP_PEOPLE << 9) | 0x33 -#define EC_WORD_ALLY (EC_GROUP_PEOPLE << 9) | 0x34 -#define EC_WORD_PERSON (EC_GROUP_PEOPLE << 9) | 0x35 -#define EC_WORD_DUDE (EC_GROUP_PEOPLE << 9) | 0x36 -#define EC_WORD_THEY (EC_GROUP_PEOPLE << 9) | 0x37 -#define EC_WORD_THEY_WERE (EC_GROUP_PEOPLE << 9) | 0x38 -#define EC_WORD_TO_THEM (EC_GROUP_PEOPLE << 9) | 0x39 -#define EC_WORD_THEIR (EC_GROUP_PEOPLE << 9) | 0x3a -#define EC_WORD_THEY_RE (EC_GROUP_PEOPLE << 9) | 0x3b -#define EC_WORD_THEY_VE (EC_GROUP_PEOPLE << 9) | 0x3c -#define EC_WORD_WE (EC_GROUP_PEOPLE << 9) | 0x3d -#define EC_WORD_BEEN (EC_GROUP_PEOPLE << 9) | 0x3e -#define EC_WORD_TO_US (EC_GROUP_PEOPLE << 9) | 0x3f -#define EC_WORD_OUR (EC_GROUP_PEOPLE << 9) | 0x40 -#define EC_WORD_WE_RE (EC_GROUP_PEOPLE << 9) | 0x41 -#define EC_WORD_RIVAL (EC_GROUP_PEOPLE << 9) | 0x42 -#define EC_WORD_WE_VE (EC_GROUP_PEOPLE << 9) | 0x43 -#define EC_WORD_WOMAN (EC_GROUP_PEOPLE << 9) | 0x44 -#define EC_WORD_SHE (EC_GROUP_PEOPLE << 9) | 0x45 -#define EC_WORD_SHE_WAS (EC_GROUP_PEOPLE << 9) | 0x46 -#define EC_WORD_TO_HER (EC_GROUP_PEOPLE << 9) | 0x47 -#define EC_WORD_HERS (EC_GROUP_PEOPLE << 9) | 0x48 -#define EC_WORD_SHE_IS (EC_GROUP_PEOPLE << 9) | 0x49 -#define EC_WORD_SOME (EC_GROUP_PEOPLE << 9) | 0x4a +#define EC_WORD_OPPONENT ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 0) +#define EC_WORD_I ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 1) +#define EC_WORD_YOU ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 2) +#define EC_WORD_YOURS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 3) +#define EC_WORD_SON ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 4) +#define EC_WORD_YOUR ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 5) +#define EC_WORD_YOU_RE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 6) +#define EC_WORD_YOU_VE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 7) +#define EC_WORD_MOTHER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 8) +#define EC_WORD_GRANDFATHER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 9) +#define EC_WORD_UNCLE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 10) +#define EC_WORD_FATHER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 11) +#define EC_WORD_BOY ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 12) +#define EC_WORD_ADULT ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 13) +#define EC_WORD_BROTHER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 14) +#define EC_WORD_SISTER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 15) +#define EC_WORD_GRANDMOTHER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 16) +#define EC_WORD_AUNT ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 17) +#define EC_WORD_PARENT ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 18) +#define EC_WORD_MAN ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 19) +#define EC_WORD_ME ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 20) +#define EC_WORD_GIRL ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 21) +#define EC_WORD_BABE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 22) +#define EC_WORD_FAMILY ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 23) +#define EC_WORD_HER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 24) +#define EC_WORD_HIM ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 25) +#define EC_WORD_HE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 26) +#define EC_WORD_PLACE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 27) +#define EC_WORD_DAUGHTER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 28) +#define EC_WORD_HIS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 29) +#define EC_WORD_HE_S ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 30) +#define EC_WORD_AREN_T ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 31) +#define EC_WORD_SIBLINGS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 32) +#define EC_WORD_KID ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 33) +#define EC_WORD_CHILDREN ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 34) +#define EC_WORD_MR ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 35) +#define EC_WORD_MRS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 36) +#define EC_WORD_MYSELF ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 37) +#define EC_WORD_I_WAS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 38) +#define EC_WORD_TO_ME ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 39) +#define EC_WORD_MY ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 40) +#define EC_WORD_I_AM ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 41) +#define EC_WORD_I_VE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 42) +#define EC_WORD_WHO ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 43) +#define EC_WORD_SOMEONE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 44) +#define EC_WORD_WHO_WAS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 45) +#define EC_WORD_TO_WHOM ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 46) +#define EC_WORD_WHOSE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 47) +#define EC_WORD_WHO_IS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 48) +#define EC_WORD_IT_S ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 49) +#define EC_WORD_LADY ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 50) +#define EC_WORD_FRIEND ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 51) +#define EC_WORD_ALLY ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 52) +#define EC_WORD_PERSON ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 53) +#define EC_WORD_DUDE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 54) +#define EC_WORD_THEY ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 55) +#define EC_WORD_THEY_WERE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 56) +#define EC_WORD_TO_THEM ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 57) +#define EC_WORD_THEIR ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 58) +#define EC_WORD_THEY_RE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 59) +#define EC_WORD_THEY_VE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 60) +#define EC_WORD_WE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 61) +#define EC_WORD_BEEN ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 62) +#define EC_WORD_TO_US ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 63) +#define EC_WORD_OUR ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 64) +#define EC_WORD_WE_RE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 65) +#define EC_WORD_RIVAL ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 66) +#define EC_WORD_WE_VE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 67) +#define EC_WORD_WOMAN ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 68) +#define EC_WORD_SHE ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 69) +#define EC_WORD_SHE_WAS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 70) +#define EC_WORD_TO_HER ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 71) +#define EC_WORD_HERS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 72) +#define EC_WORD_SHE_IS ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 73) +#define EC_WORD_SOME ((EC_GROUP_PEOPLE << EC_MASK_BITS) | 74) // VOICES -#define EC_WORD_EXCL (EC_GROUP_VOICES << 9) | 0x0 -#define EC_WORD_EXCL_EXCL (EC_GROUP_VOICES << 9) | 0x1 -#define EC_WORD_QUES_EXCL (EC_GROUP_VOICES << 9) | 0x2 -#define EC_WORD_QUES (EC_GROUP_VOICES << 9) | 0x3 -#define EC_WORD_ELLIPSIS (EC_GROUP_VOICES << 9) | 0x4 -#define EC_WORD_ELLIPSIS_EXCL (EC_GROUP_VOICES << 9) | 0x5 -#define EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS (EC_GROUP_VOICES << 9) | 0x6 -#define EC_WORD_DASH (EC_GROUP_VOICES << 9) | 0x7 -#define EC_WORD_DASH_DASH_DASH (EC_GROUP_VOICES << 9) | 0x8 -#define EC_WORD_UH_OH (EC_GROUP_VOICES << 9) | 0x9 -#define EC_WORD_WAAAH (EC_GROUP_VOICES << 9) | 0xa -#define EC_WORD_AHAHA (EC_GROUP_VOICES << 9) | 0xb -#define EC_WORD_OH_QUES (EC_GROUP_VOICES << 9) | 0xc -#define EC_WORD_NOPE (EC_GROUP_VOICES << 9) | 0xd -#define EC_WORD_URGH (EC_GROUP_VOICES << 9) | 0xe -#define EC_WORD_HMM (EC_GROUP_VOICES << 9) | 0xf -#define EC_WORD_WHOAH (EC_GROUP_VOICES << 9) | 0x10 -#define EC_WORD_WROOOAAR_EXCL (EC_GROUP_VOICES << 9) | 0x11 -#define EC_WORD_WOW (EC_GROUP_VOICES << 9) | 0x12 -#define EC_WORD_GIGGLE (EC_GROUP_VOICES << 9) | 0x13 -#define EC_WORD_SIGH (EC_GROUP_VOICES << 9) | 0x14 -#define EC_WORD_UNBELIEVABLE (EC_GROUP_VOICES << 9) | 0x15 -#define EC_WORD_CRIES (EC_GROUP_VOICES << 9) | 0x16 -#define EC_WORD_AGREE (EC_GROUP_VOICES << 9) | 0x17 -#define EC_WORD_EH_QUES (EC_GROUP_VOICES << 9) | 0x18 -#define EC_WORD_CRY (EC_GROUP_VOICES << 9) | 0x19 -#define EC_WORD_EHEHE (EC_GROUP_VOICES << 9) | 0x1a -#define EC_WORD_OI_OI_OI (EC_GROUP_VOICES << 9) | 0x1b -#define EC_WORD_OH_YEAH (EC_GROUP_VOICES << 9) | 0x1c -#define EC_WORD_OH (EC_GROUP_VOICES << 9) | 0x1d -#define EC_WORD_OOPS (EC_GROUP_VOICES << 9) | 0x1e -#define EC_WORD_SHOCKED (EC_GROUP_VOICES << 9) | 0x1f -#define EC_WORD_EEK (EC_GROUP_VOICES << 9) | 0x20 -#define EC_WORD_GRAAAH (EC_GROUP_VOICES << 9) | 0x21 -#define EC_WORD_GWAHAHAHA (EC_GROUP_VOICES << 9) | 0x22 -#define EC_WORD_WAY (EC_GROUP_VOICES << 9) | 0x23 -#define EC_WORD_TCH (EC_GROUP_VOICES << 9) | 0x24 -#define EC_WORD_HEHE (EC_GROUP_VOICES << 9) | 0x25 -#define EC_WORD_HAH (EC_GROUP_VOICES << 9) | 0x26 -#define EC_WORD_YUP (EC_GROUP_VOICES << 9) | 0x27 -#define EC_WORD_HAHAHA (EC_GROUP_VOICES << 9) | 0x28 -#define EC_WORD_AIYEEH (EC_GROUP_VOICES << 9) | 0x29 -#define EC_WORD_HIYAH (EC_GROUP_VOICES << 9) | 0x2a -#define EC_WORD_FUFUFU (EC_GROUP_VOICES << 9) | 0x2b -#define EC_WORD_LOL (EC_GROUP_VOICES << 9) | 0x2c -#define EC_WORD_SNORT (EC_GROUP_VOICES << 9) | 0x2d -#define EC_WORD_HUMPH (EC_GROUP_VOICES << 9) | 0x2e -#define EC_WORD_HEHEHE (EC_GROUP_VOICES << 9) | 0x2f -#define EC_WORD_HEH (EC_GROUP_VOICES << 9) | 0x30 -#define EC_WORD_HOHOHO (EC_GROUP_VOICES << 9) | 0x31 -#define EC_WORD_UH_HUH (EC_GROUP_VOICES << 9) | 0x32 -#define EC_WORD_OH_DEAR (EC_GROUP_VOICES << 9) | 0x33 -#define EC_WORD_ARRGH (EC_GROUP_VOICES << 9) | 0x34 -#define EC_WORD_MUFUFU (EC_GROUP_VOICES << 9) | 0x35 -#define EC_WORD_MMM (EC_GROUP_VOICES << 9) | 0x36 -#define EC_WORD_OH_KAY (EC_GROUP_VOICES << 9) | 0x37 -#define EC_WORD_OKAY (EC_GROUP_VOICES << 9) | 0x38 -#define EC_WORD_LALALA (EC_GROUP_VOICES << 9) | 0x39 -#define EC_WORD_YAY (EC_GROUP_VOICES << 9) | 0x3a -#define EC_WORD_AWW (EC_GROUP_VOICES << 9) | 0x3b -#define EC_WORD_WOWEE (EC_GROUP_VOICES << 9) | 0x3c -#define EC_WORD_GWAH (EC_GROUP_VOICES << 9) | 0x3d -#define EC_WORD_WAHAHAHA (EC_GROUP_VOICES << 9) | 0x3e +#define EC_WORD_EXCL ((EC_GROUP_VOICES << EC_MASK_BITS) | 0) +#define EC_WORD_EXCL_EXCL ((EC_GROUP_VOICES << EC_MASK_BITS) | 1) +#define EC_WORD_QUES_EXCL ((EC_GROUP_VOICES << EC_MASK_BITS) | 2) +#define EC_WORD_QUES ((EC_GROUP_VOICES << EC_MASK_BITS) | 3) +#define EC_WORD_ELLIPSIS ((EC_GROUP_VOICES << EC_MASK_BITS) | 4) +#define EC_WORD_ELLIPSIS_EXCL ((EC_GROUP_VOICES << EC_MASK_BITS) | 5) +#define EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS ((EC_GROUP_VOICES << EC_MASK_BITS) | 6) +#define EC_WORD_DASH ((EC_GROUP_VOICES << EC_MASK_BITS) | 7) +#define EC_WORD_DASH_DASH_DASH ((EC_GROUP_VOICES << EC_MASK_BITS) | 8) +#define EC_WORD_UH_OH ((EC_GROUP_VOICES << EC_MASK_BITS) | 9) +#define EC_WORD_WAAAH ((EC_GROUP_VOICES << EC_MASK_BITS) | 10) +#define EC_WORD_AHAHA ((EC_GROUP_VOICES << EC_MASK_BITS) | 11) +#define EC_WORD_OH_QUES ((EC_GROUP_VOICES << EC_MASK_BITS) | 12) +#define EC_WORD_NOPE ((EC_GROUP_VOICES << EC_MASK_BITS) | 13) +#define EC_WORD_URGH ((EC_GROUP_VOICES << EC_MASK_BITS) | 14) +#define EC_WORD_HMM ((EC_GROUP_VOICES << EC_MASK_BITS) | 15) +#define EC_WORD_WHOAH ((EC_GROUP_VOICES << EC_MASK_BITS) | 16) +#define EC_WORD_WROOOAAR_EXCL ((EC_GROUP_VOICES << EC_MASK_BITS) | 17) +#define EC_WORD_WOW ((EC_GROUP_VOICES << EC_MASK_BITS) | 18) +#define EC_WORD_GIGGLE ((EC_GROUP_VOICES << EC_MASK_BITS) | 19) +#define EC_WORD_SIGH ((EC_GROUP_VOICES << EC_MASK_BITS) | 20) +#define EC_WORD_UNBELIEVABLE ((EC_GROUP_VOICES << EC_MASK_BITS) | 21) +#define EC_WORD_CRIES ((EC_GROUP_VOICES << EC_MASK_BITS) | 22) +#define EC_WORD_AGREE ((EC_GROUP_VOICES << EC_MASK_BITS) | 23) +#define EC_WORD_EH_QUES ((EC_GROUP_VOICES << EC_MASK_BITS) | 24) +#define EC_WORD_CRY ((EC_GROUP_VOICES << EC_MASK_BITS) | 25) +#define EC_WORD_EHEHE ((EC_GROUP_VOICES << EC_MASK_BITS) | 26) +#define EC_WORD_OI_OI_OI ((EC_GROUP_VOICES << EC_MASK_BITS) | 27) +#define EC_WORD_OH_YEAH ((EC_GROUP_VOICES << EC_MASK_BITS) | 28) +#define EC_WORD_OH ((EC_GROUP_VOICES << EC_MASK_BITS) | 29) +#define EC_WORD_OOPS ((EC_GROUP_VOICES << EC_MASK_BITS) | 30) +#define EC_WORD_SHOCKED ((EC_GROUP_VOICES << EC_MASK_BITS) | 31) +#define EC_WORD_EEK ((EC_GROUP_VOICES << EC_MASK_BITS) | 32) +#define EC_WORD_GRAAAH ((EC_GROUP_VOICES << EC_MASK_BITS) | 33) +#define EC_WORD_GWAHAHAHA ((EC_GROUP_VOICES << EC_MASK_BITS) | 34) +#define EC_WORD_WAY ((EC_GROUP_VOICES << EC_MASK_BITS) | 35) +#define EC_WORD_TCH ((EC_GROUP_VOICES << EC_MASK_BITS) | 36) +#define EC_WORD_HEHE ((EC_GROUP_VOICES << EC_MASK_BITS) | 37) +#define EC_WORD_HAH ((EC_GROUP_VOICES << EC_MASK_BITS) | 38) +#define EC_WORD_YUP ((EC_GROUP_VOICES << EC_MASK_BITS) | 39) +#define EC_WORD_HAHAHA ((EC_GROUP_VOICES << EC_MASK_BITS) | 40) +#define EC_WORD_AIYEEH ((EC_GROUP_VOICES << EC_MASK_BITS) | 41) +#define EC_WORD_HIYAH ((EC_GROUP_VOICES << EC_MASK_BITS) | 42) +#define EC_WORD_FUFUFU ((EC_GROUP_VOICES << EC_MASK_BITS) | 43) +#define EC_WORD_LOL ((EC_GROUP_VOICES << EC_MASK_BITS) | 44) +#define EC_WORD_SNORT ((EC_GROUP_VOICES << EC_MASK_BITS) | 45) +#define EC_WORD_HUMPH ((EC_GROUP_VOICES << EC_MASK_BITS) | 46) +#define EC_WORD_HEHEHE ((EC_GROUP_VOICES << EC_MASK_BITS) | 47) +#define EC_WORD_HEH ((EC_GROUP_VOICES << EC_MASK_BITS) | 48) +#define EC_WORD_HOHOHO ((EC_GROUP_VOICES << EC_MASK_BITS) | 49) +#define EC_WORD_UH_HUH ((EC_GROUP_VOICES << EC_MASK_BITS) | 50) +#define EC_WORD_OH_DEAR ((EC_GROUP_VOICES << EC_MASK_BITS) | 51) +#define EC_WORD_ARRGH ((EC_GROUP_VOICES << EC_MASK_BITS) | 52) +#define EC_WORD_MUFUFU ((EC_GROUP_VOICES << EC_MASK_BITS) | 53) +#define EC_WORD_MMM ((EC_GROUP_VOICES << EC_MASK_BITS) | 54) +#define EC_WORD_OH_KAY ((EC_GROUP_VOICES << EC_MASK_BITS) | 55) +#define EC_WORD_OKAY ((EC_GROUP_VOICES << EC_MASK_BITS) | 56) +#define EC_WORD_LALALA ((EC_GROUP_VOICES << EC_MASK_BITS) | 57) +#define EC_WORD_YAY ((EC_GROUP_VOICES << EC_MASK_BITS) | 58) +#define EC_WORD_AWW ((EC_GROUP_VOICES << EC_MASK_BITS) | 59) +#define EC_WORD_WOWEE ((EC_GROUP_VOICES << EC_MASK_BITS) | 60) +#define EC_WORD_GWAH ((EC_GROUP_VOICES << EC_MASK_BITS) | 61) +#define EC_WORD_WAHAHAHA ((EC_GROUP_VOICES << EC_MASK_BITS) | 62) // SPEECH -#define EC_WORD_LISTEN (EC_GROUP_SPEECH << 9) | 0x0 -#define EC_WORD_NOT_VERY (EC_GROUP_SPEECH << 9) | 0x1 -#define EC_WORD_MEAN (EC_GROUP_SPEECH << 9) | 0x2 -#define EC_WORD_LIE (EC_GROUP_SPEECH << 9) | 0x3 -#define EC_WORD_LAY (EC_GROUP_SPEECH << 9) | 0x4 -#define EC_WORD_RECOMMEND (EC_GROUP_SPEECH << 9) | 0x5 -#define EC_WORD_NITWIT (EC_GROUP_SPEECH << 9) | 0x6 -#define EC_WORD_QUITE (EC_GROUP_SPEECH << 9) | 0x7 -#define EC_WORD_FROM (EC_GROUP_SPEECH << 9) | 0x8 -#define EC_WORD_FEELING (EC_GROUP_SPEECH << 9) | 0x9 -#define EC_WORD_BUT (EC_GROUP_SPEECH << 9) | 0xa -#define EC_WORD_HOWEVER (EC_GROUP_SPEECH << 9) | 0xb -#define EC_WORD_CASE (EC_GROUP_SPEECH << 9) | 0xc -#define EC_WORD_THE (EC_GROUP_SPEECH << 9) | 0xd -#define EC_WORD_MISS (EC_GROUP_SPEECH << 9) | 0xe -#define EC_WORD_HOW (EC_GROUP_SPEECH << 9) | 0xf -#define EC_WORD_HIT (EC_GROUP_SPEECH << 9) | 0x10 -#define EC_WORD_ENOUGH (EC_GROUP_SPEECH << 9) | 0x11 -#define EC_WORD_A_LOT (EC_GROUP_SPEECH << 9) | 0x12 -#define EC_WORD_A_LITTLE (EC_GROUP_SPEECH << 9) | 0x13 -#define EC_WORD_ABSOLUTELY (EC_GROUP_SPEECH << 9) | 0x14 -#define EC_WORD_AND (EC_GROUP_SPEECH << 9) | 0x15 -#define EC_WORD_ONLY (EC_GROUP_SPEECH << 9) | 0x16 -#define EC_WORD_AROUND (EC_GROUP_SPEECH << 9) | 0x17 -#define EC_WORD_PROBABLY (EC_GROUP_SPEECH << 9) | 0x18 -#define EC_WORD_IF (EC_GROUP_SPEECH << 9) | 0x19 -#define EC_WORD_VERY (EC_GROUP_SPEECH << 9) | 0x1a -#define EC_WORD_A_TINY_BIT (EC_GROUP_SPEECH << 9) | 0x1b -#define EC_WORD_WILD (EC_GROUP_SPEECH << 9) | 0x1c -#define EC_WORD_THAT_S (EC_GROUP_SPEECH << 9) | 0x1d -#define EC_WORD_JUST (EC_GROUP_SPEECH << 9) | 0x1e -#define EC_WORD_EVEN_SO (EC_GROUP_SPEECH << 9) | 0x1f -#define EC_WORD_MUST_BE (EC_GROUP_SPEECH << 9) | 0x20 -#define EC_WORD_NATURALLY (EC_GROUP_SPEECH << 9) | 0x21 -#define EC_WORD_FOR_NOW (EC_GROUP_SPEECH << 9) | 0x22 -#define EC_WORD_UNDERSTOOD (EC_GROUP_SPEECH << 9) | 0x23 -#define EC_WORD_JOKING (EC_GROUP_SPEECH << 9) | 0x24 -#define EC_WORD_READY (EC_GROUP_SPEECH << 9) | 0x25 -#define EC_WORD_SOMETHING (EC_GROUP_SPEECH << 9) | 0x26 -#define EC_WORD_SOMEHOW (EC_GROUP_SPEECH << 9) | 0x27 -#define EC_WORD_ALTHOUGH (EC_GROUP_SPEECH << 9) | 0x28 -#define EC_WORD_ALSO (EC_GROUP_SPEECH << 9) | 0x29 -#define EC_WORD_PERFECT (EC_GROUP_SPEECH << 9) | 0x2a -#define EC_WORD_AS_MUCH_AS (EC_GROUP_SPEECH << 9) | 0x2b -#define EC_WORD_REALLY (EC_GROUP_SPEECH << 9) | 0x2c -#define EC_WORD_TRULY (EC_GROUP_SPEECH << 9) | 0x2d -#define EC_WORD_SERIOUSLY (EC_GROUP_SPEECH << 9) | 0x2e -#define EC_WORD_TOTALLY (EC_GROUP_SPEECH << 9) | 0x2f -#define EC_WORD_UNTIL (EC_GROUP_SPEECH << 9) | 0x30 -#define EC_WORD_AS_IF (EC_GROUP_SPEECH << 9) | 0x31 -#define EC_WORD_MOOD (EC_GROUP_SPEECH << 9) | 0x32 -#define EC_WORD_RATHER (EC_GROUP_SPEECH << 9) | 0x33 -#define EC_WORD_AWFULLY (EC_GROUP_SPEECH << 9) | 0x34 -#define EC_WORD_MODE (EC_GROUP_SPEECH << 9) | 0x35 -#define EC_WORD_MORE (EC_GROUP_SPEECH << 9) | 0x36 -#define EC_WORD_TOO_LATE (EC_GROUP_SPEECH << 9) | 0x37 -#define EC_WORD_FINALLY (EC_GROUP_SPEECH << 9) | 0x38 -#define EC_WORD_ANY (EC_GROUP_SPEECH << 9) | 0x39 -#define EC_WORD_INSTEAD (EC_GROUP_SPEECH << 9) | 0x3a -#define EC_WORD_FANTASTIC (EC_GROUP_SPEECH << 9) | 0x3b +#define EC_WORD_LISTEN ((EC_GROUP_SPEECH << EC_MASK_BITS) | 0) +#define EC_WORD_NOT_VERY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 1) +#define EC_WORD_MEAN ((EC_GROUP_SPEECH << EC_MASK_BITS) | 2) +#define EC_WORD_LIE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 3) +#define EC_WORD_LAY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 4) +#define EC_WORD_RECOMMEND ((EC_GROUP_SPEECH << EC_MASK_BITS) | 5) +#define EC_WORD_NITWIT ((EC_GROUP_SPEECH << EC_MASK_BITS) | 6) +#define EC_WORD_QUITE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 7) +#define EC_WORD_FROM ((EC_GROUP_SPEECH << EC_MASK_BITS) | 8) +#define EC_WORD_FEELING ((EC_GROUP_SPEECH << EC_MASK_BITS) | 9) +#define EC_WORD_BUT ((EC_GROUP_SPEECH << EC_MASK_BITS) | 10) +#define EC_WORD_HOWEVER ((EC_GROUP_SPEECH << EC_MASK_BITS) | 11) +#define EC_WORD_CASE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 12) +#define EC_WORD_THE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 13) +#define EC_WORD_MISS ((EC_GROUP_SPEECH << EC_MASK_BITS) | 14) +#define EC_WORD_HOW ((EC_GROUP_SPEECH << EC_MASK_BITS) | 15) +#define EC_WORD_HIT ((EC_GROUP_SPEECH << EC_MASK_BITS) | 16) +#define EC_WORD_ENOUGH ((EC_GROUP_SPEECH << EC_MASK_BITS) | 17) +#define EC_WORD_A_LOT ((EC_GROUP_SPEECH << EC_MASK_BITS) | 18) +#define EC_WORD_A_LITTLE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 19) +#define EC_WORD_ABSOLUTELY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 20) +#define EC_WORD_AND ((EC_GROUP_SPEECH << EC_MASK_BITS) | 21) +#define EC_WORD_ONLY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 22) +#define EC_WORD_AROUND ((EC_GROUP_SPEECH << EC_MASK_BITS) | 23) +#define EC_WORD_PROBABLY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 24) +#define EC_WORD_IF ((EC_GROUP_SPEECH << EC_MASK_BITS) | 25) +#define EC_WORD_VERY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 26) +#define EC_WORD_A_TINY_BIT ((EC_GROUP_SPEECH << EC_MASK_BITS) | 27) +#define EC_WORD_WILD ((EC_GROUP_SPEECH << EC_MASK_BITS) | 28) +#define EC_WORD_THAT_S ((EC_GROUP_SPEECH << EC_MASK_BITS) | 29) +#define EC_WORD_JUST ((EC_GROUP_SPEECH << EC_MASK_BITS) | 30) +#define EC_WORD_EVEN_SO ((EC_GROUP_SPEECH << EC_MASK_BITS) | 31) +#define EC_WORD_MUST_BE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 32) +#define EC_WORD_NATURALLY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 33) +#define EC_WORD_FOR_NOW ((EC_GROUP_SPEECH << EC_MASK_BITS) | 34) +#define EC_WORD_UNDERSTOOD ((EC_GROUP_SPEECH << EC_MASK_BITS) | 35) +#define EC_WORD_JOKING ((EC_GROUP_SPEECH << EC_MASK_BITS) | 36) +#define EC_WORD_READY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 37) +#define EC_WORD_SOMETHING ((EC_GROUP_SPEECH << EC_MASK_BITS) | 38) +#define EC_WORD_SOMEHOW ((EC_GROUP_SPEECH << EC_MASK_BITS) | 39) +#define EC_WORD_ALTHOUGH ((EC_GROUP_SPEECH << EC_MASK_BITS) | 40) +#define EC_WORD_ALSO ((EC_GROUP_SPEECH << EC_MASK_BITS) | 41) +#define EC_WORD_PERFECT ((EC_GROUP_SPEECH << EC_MASK_BITS) | 42) +#define EC_WORD_AS_MUCH_AS ((EC_GROUP_SPEECH << EC_MASK_BITS) | 43) +#define EC_WORD_REALLY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 44) +#define EC_WORD_TRULY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 45) +#define EC_WORD_SERIOUSLY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 46) +#define EC_WORD_TOTALLY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 47) +#define EC_WORD_UNTIL ((EC_GROUP_SPEECH << EC_MASK_BITS) | 48) +#define EC_WORD_AS_IF ((EC_GROUP_SPEECH << EC_MASK_BITS) | 49) +#define EC_WORD_MOOD ((EC_GROUP_SPEECH << EC_MASK_BITS) | 50) +#define EC_WORD_RATHER ((EC_GROUP_SPEECH << EC_MASK_BITS) | 51) +#define EC_WORD_AWFULLY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 52) +#define EC_WORD_MODE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 53) +#define EC_WORD_MORE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 54) +#define EC_WORD_TOO_LATE ((EC_GROUP_SPEECH << EC_MASK_BITS) | 55) +#define EC_WORD_FINALLY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 56) +#define EC_WORD_ANY ((EC_GROUP_SPEECH << EC_MASK_BITS) | 57) +#define EC_WORD_INSTEAD ((EC_GROUP_SPEECH << EC_MASK_BITS) | 58) +#define EC_WORD_FANTASTIC ((EC_GROUP_SPEECH << EC_MASK_BITS) | 59) // ENDINGS -#define EC_WORD_WILL (EC_GROUP_ENDINGS << 9) | 0x0 -#define EC_WORD_WILL_BE_HERE (EC_GROUP_ENDINGS << 9) | 0x1 -#define EC_WORD_OR (EC_GROUP_ENDINGS << 9) | 0x2 -#define EC_WORD_TIMES (EC_GROUP_ENDINGS << 9) | 0x3 -#define EC_WORD_WONDER (EC_GROUP_ENDINGS << 9) | 0x4 -#define EC_WORD_IS_IT_QUES (EC_GROUP_ENDINGS << 9) | 0x5 -#define EC_WORD_BE (EC_GROUP_ENDINGS << 9) | 0x6 -#define EC_WORD_GIMME (EC_GROUP_ENDINGS << 9) | 0x7 -#define EC_WORD_COULD (EC_GROUP_ENDINGS << 9) | 0x8 -#define EC_WORD_LIKELY_TO (EC_GROUP_ENDINGS << 9) | 0x9 -#define EC_WORD_WOULD (EC_GROUP_ENDINGS << 9) | 0xa -#define EC_WORD_IS (EC_GROUP_ENDINGS << 9) | 0xb -#define EC_WORD_ISN_T_IT_QUES (EC_GROUP_ENDINGS << 9) | 0xc -#define EC_WORD_LET_S (EC_GROUP_ENDINGS << 9) | 0xd -#define EC_WORD_OTHER (EC_GROUP_ENDINGS << 9) | 0xe -#define EC_WORD_ARE (EC_GROUP_ENDINGS << 9) | 0xf -#define EC_WORD_WAS (EC_GROUP_ENDINGS << 9) | 0x10 -#define EC_WORD_WERE (EC_GROUP_ENDINGS << 9) | 0x11 -#define EC_WORD_THOSE (EC_GROUP_ENDINGS << 9) | 0x12 -#define EC_WORD_ISN_T (EC_GROUP_ENDINGS << 9) | 0x13 -#define EC_WORD_WON_T (EC_GROUP_ENDINGS << 9) | 0x14 -#define EC_WORD_CAN_T (EC_GROUP_ENDINGS << 9) | 0x15 -#define EC_WORD_CAN (EC_GROUP_ENDINGS << 9) | 0x16 -#define EC_WORD_DON_T (EC_GROUP_ENDINGS << 9) | 0x17 -#define EC_WORD_DO (EC_GROUP_ENDINGS << 9) | 0x18 -#define EC_WORD_DOES (EC_GROUP_ENDINGS << 9) | 0x19 -#define EC_WORD_WHOM (EC_GROUP_ENDINGS << 9) | 0x1a -#define EC_WORD_WHICH (EC_GROUP_ENDINGS << 9) | 0x1b -#define EC_WORD_WASN_T (EC_GROUP_ENDINGS << 9) | 0x1c -#define EC_WORD_WEREN_T (EC_GROUP_ENDINGS << 9) | 0x1d -#define EC_WORD_HAVE (EC_GROUP_ENDINGS << 9) | 0x1e -#define EC_WORD_HAVEN_T (EC_GROUP_ENDINGS << 9) | 0x1f -#define EC_WORD_A (EC_GROUP_ENDINGS << 9) | 0x20 -#define EC_WORD_AN (EC_GROUP_ENDINGS << 9) | 0x21 -#define EC_WORD_NOT (EC_GROUP_ENDINGS << 9) | 0x22 -#define EC_WORD_THERE (EC_GROUP_ENDINGS << 9) | 0x23 -#define EC_WORD_OK_QUES (EC_GROUP_ENDINGS << 9) | 0x24 -#define EC_WORD_SO (EC_GROUP_ENDINGS << 9) | 0x25 -#define EC_WORD_MAYBE (EC_GROUP_ENDINGS << 9) | 0x26 -#define EC_WORD_ABOUT (EC_GROUP_ENDINGS << 9) | 0x27 -#define EC_WORD_OVER (EC_GROUP_ENDINGS << 9) | 0x28 -#define EC_WORD_IT (EC_GROUP_ENDINGS << 9) | 0x29 -#define EC_WORD_ALL (EC_GROUP_ENDINGS << 9) | 0x2a -#define EC_WORD_FOR (EC_GROUP_ENDINGS << 9) | 0x2b -#define EC_WORD_ON (EC_GROUP_ENDINGS << 9) | 0x2c -#define EC_WORD_OFF (EC_GROUP_ENDINGS << 9) | 0x2d -#define EC_WORD_AS (EC_GROUP_ENDINGS << 9) | 0x2e -#define EC_WORD_TO (EC_GROUP_ENDINGS << 9) | 0x2f -#define EC_WORD_WITH (EC_GROUP_ENDINGS << 9) | 0x30 -#define EC_WORD_BETTER (EC_GROUP_ENDINGS << 9) | 0x31 -#define EC_WORD_EVER (EC_GROUP_ENDINGS << 9) | 0x32 -#define EC_WORD_SINCE (EC_GROUP_ENDINGS << 9) | 0x33 -#define EC_WORD_OF (EC_GROUP_ENDINGS << 9) | 0x34 -#define EC_WORD_BELONGS_TO (EC_GROUP_ENDINGS << 9) | 0x35 -#define EC_WORD_AT (EC_GROUP_ENDINGS << 9) | 0x36 -#define EC_WORD_IN (EC_GROUP_ENDINGS << 9) | 0x37 -#define EC_WORD_OUT (EC_GROUP_ENDINGS << 9) | 0x38 -#define EC_WORD_TOO (EC_GROUP_ENDINGS << 9) | 0x39 -#define EC_WORD_LIKE (EC_GROUP_ENDINGS << 9) | 0x3a -#define EC_WORD_DID (EC_GROUP_ENDINGS << 9) | 0x3b -#define EC_WORD_DIDN_T (EC_GROUP_ENDINGS << 9) | 0x3c -#define EC_WORD_DOESN_T (EC_GROUP_ENDINGS << 9) | 0x3d -#define EC_WORD_WITHOUT (EC_GROUP_ENDINGS << 9) | 0x3e -#define EC_WORD_AFTER (EC_GROUP_ENDINGS << 9) | 0x3f -#define EC_WORD_BEFORE (EC_GROUP_ENDINGS << 9) | 0x40 -#define EC_WORD_WHILE (EC_GROUP_ENDINGS << 9) | 0x41 -#define EC_WORD_THAN (EC_GROUP_ENDINGS << 9) | 0x42 -#define EC_WORD_ONCE (EC_GROUP_ENDINGS << 9) | 0x43 -#define EC_WORD_ANYWHERE (EC_GROUP_ENDINGS << 9) | 0x44 +#define EC_WORD_WILL ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 0) +#define EC_WORD_WILL_BE_HERE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 1) +#define EC_WORD_OR ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 2) +#define EC_WORD_TIMES ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 3) +#define EC_WORD_WONDER ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 4) +#define EC_WORD_IS_IT_QUES ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 5) +#define EC_WORD_BE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 6) +#define EC_WORD_GIMME ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 7) +#define EC_WORD_COULD ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 8) +#define EC_WORD_LIKELY_TO ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 9) +#define EC_WORD_WOULD ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 10) +#define EC_WORD_IS ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 11) +#define EC_WORD_ISN_T_IT_QUES ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 12) +#define EC_WORD_LET_S ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 13) +#define EC_WORD_OTHER ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 14) +#define EC_WORD_ARE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 15) +#define EC_WORD_WAS ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 16) +#define EC_WORD_WERE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 17) +#define EC_WORD_THOSE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 18) +#define EC_WORD_ISN_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 19) +#define EC_WORD_WON_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 20) +#define EC_WORD_CAN_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 21) +#define EC_WORD_CAN ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 22) +#define EC_WORD_DON_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 23) +#define EC_WORD_DO ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 24) +#define EC_WORD_DOES ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 25) +#define EC_WORD_WHOM ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 26) +#define EC_WORD_WHICH ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 27) +#define EC_WORD_WASN_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 28) +#define EC_WORD_WEREN_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 29) +#define EC_WORD_HAVE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 30) +#define EC_WORD_HAVEN_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 31) +#define EC_WORD_A ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 32) +#define EC_WORD_AN ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 33) +#define EC_WORD_NOT ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 34) +#define EC_WORD_THERE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 35) +#define EC_WORD_OK_QUES ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 36) +#define EC_WORD_SO ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 37) +#define EC_WORD_MAYBE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 38) +#define EC_WORD_ABOUT ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 39) +#define EC_WORD_OVER ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 40) +#define EC_WORD_IT ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 41) +#define EC_WORD_ALL ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 42) +#define EC_WORD_FOR ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 43) +#define EC_WORD_ON ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 44) +#define EC_WORD_OFF ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 45) +#define EC_WORD_AS ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 46) +#define EC_WORD_TO ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 47) +#define EC_WORD_WITH ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 48) +#define EC_WORD_BETTER ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 49) +#define EC_WORD_EVER ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 50) +#define EC_WORD_SINCE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 51) +#define EC_WORD_OF ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 52) +#define EC_WORD_BELONGS_TO ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 53) +#define EC_WORD_AT ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 54) +#define EC_WORD_IN ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 55) +#define EC_WORD_OUT ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 56) +#define EC_WORD_TOO ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 57) +#define EC_WORD_LIKE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 58) +#define EC_WORD_DID ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 59) +#define EC_WORD_DIDN_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 60) +#define EC_WORD_DOESN_T ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 61) +#define EC_WORD_WITHOUT ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 62) +#define EC_WORD_AFTER ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 63) +#define EC_WORD_BEFORE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 64) +#define EC_WORD_WHILE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 65) +#define EC_WORD_THAN ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 66) +#define EC_WORD_ONCE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 67) +#define EC_WORD_ANYWHERE ((EC_GROUP_ENDINGS << EC_MASK_BITS) | 68) // FEELINGS -#define EC_WORD_MEET (EC_GROUP_FEELINGS << 9) | 0x0 -#define EC_WORD_PLAY (EC_GROUP_FEELINGS << 9) | 0x1 -#define EC_WORD_HURRIED (EC_GROUP_FEELINGS << 9) | 0x2 -#define EC_WORD_GOES (EC_GROUP_FEELINGS << 9) | 0x3 -#define EC_WORD_GIDDY (EC_GROUP_FEELINGS << 9) | 0x4 -#define EC_WORD_HAPPY (EC_GROUP_FEELINGS << 9) | 0x5 -#define EC_WORD_HAPPINESS (EC_GROUP_FEELINGS << 9) | 0x6 -#define EC_WORD_EXCITE (EC_GROUP_FEELINGS << 9) | 0x7 -#define EC_WORD_IMPORTANT (EC_GROUP_FEELINGS << 9) | 0x8 -#define EC_WORD_FUNNY (EC_GROUP_FEELINGS << 9) | 0x9 -#define EC_WORD_GOT (EC_GROUP_FEELINGS << 9) | 0xa -#define EC_WORD_GO_HOME (EC_GROUP_FEELINGS << 9) | 0xb -#define EC_WORD_DISAPPOINTED (EC_GROUP_FEELINGS << 9) | 0xc -#define EC_WORD_DISAPPOINTS (EC_GROUP_FEELINGS << 9) | 0xd -#define EC_WORD_SAD (EC_GROUP_FEELINGS << 9) | 0xe -#define EC_WORD_TRY (EC_GROUP_FEELINGS << 9) | 0xf -#define EC_WORD_TRIES (EC_GROUP_FEELINGS << 9) | 0x10 -#define EC_WORD_HEARS (EC_GROUP_FEELINGS << 9) | 0x11 -#define EC_WORD_THINK (EC_GROUP_FEELINGS << 9) | 0x12 -#define EC_WORD_HEAR (EC_GROUP_FEELINGS << 9) | 0x13 -#define EC_WORD_WANTS (EC_GROUP_FEELINGS << 9) | 0x14 -#define EC_WORD_MISHEARD (EC_GROUP_FEELINGS << 9) | 0x15 -#define EC_WORD_DISLIKE (EC_GROUP_FEELINGS << 9) | 0x16 -#define EC_WORD_ANGRY (EC_GROUP_FEELINGS << 9) | 0x17 -#define EC_WORD_ANGER (EC_GROUP_FEELINGS << 9) | 0x18 -#define EC_WORD_SCARY (EC_GROUP_FEELINGS << 9) | 0x19 -#define EC_WORD_LONESOME (EC_GROUP_FEELINGS << 9) | 0x1a -#define EC_WORD_DISAPPOINT (EC_GROUP_FEELINGS << 9) | 0x1b -#define EC_WORD_JOY (EC_GROUP_FEELINGS << 9) | 0x1c -#define EC_WORD_GETS (EC_GROUP_FEELINGS << 9) | 0x1d -#define EC_WORD_NEVER (EC_GROUP_FEELINGS << 9) | 0x1e -#define EC_WORD_DARN (EC_GROUP_FEELINGS << 9) | 0x1f -#define EC_WORD_DOWNCAST (EC_GROUP_FEELINGS << 9) | 0x20 -#define EC_WORD_INCREDIBLE (EC_GROUP_FEELINGS << 9) | 0x21 -#define EC_WORD_LIKES (EC_GROUP_FEELINGS << 9) | 0x22 -#define EC_WORD_DISLIKES (EC_GROUP_FEELINGS << 9) | 0x23 -#define EC_WORD_BORING (EC_GROUP_FEELINGS << 9) | 0x24 -#define EC_WORD_CARE (EC_GROUP_FEELINGS << 9) | 0x25 -#define EC_WORD_CARES (EC_GROUP_FEELINGS << 9) | 0x26 -#define EC_WORD_ALL_RIGHT (EC_GROUP_FEELINGS << 9) | 0x27 -#define EC_WORD_ADORE (EC_GROUP_FEELINGS << 9) | 0x28 -#define EC_WORD_DISASTER (EC_GROUP_FEELINGS << 9) | 0x29 -#define EC_WORD_ENJOY (EC_GROUP_FEELINGS << 9) | 0x2a -#define EC_WORD_ENJOYS (EC_GROUP_FEELINGS << 9) | 0x2b -#define EC_WORD_EAT (EC_GROUP_FEELINGS << 9) | 0x2c -#define EC_WORD_LACKING (EC_GROUP_FEELINGS << 9) | 0x2d -#define EC_WORD_BAD (EC_GROUP_FEELINGS << 9) | 0x2e -#define EC_WORD_HARD (EC_GROUP_FEELINGS << 9) | 0x2f -#define EC_WORD_TERRIBLE (EC_GROUP_FEELINGS << 9) | 0x30 -#define EC_WORD_SHOULD (EC_GROUP_FEELINGS << 9) | 0x31 -#define EC_WORD_NICE (EC_GROUP_FEELINGS << 9) | 0x32 -#define EC_WORD_DRINK (EC_GROUP_FEELINGS << 9) | 0x33 -#define EC_WORD_SURPRISE (EC_GROUP_FEELINGS << 9) | 0x34 -#define EC_WORD_FEAR (EC_GROUP_FEELINGS << 9) | 0x35 -#define EC_WORD_WANT (EC_GROUP_FEELINGS << 9) | 0x36 -#define EC_WORD_WAIT (EC_GROUP_FEELINGS << 9) | 0x37 -#define EC_WORD_SATISFIED (EC_GROUP_FEELINGS << 9) | 0x38 -#define EC_WORD_SEE (EC_GROUP_FEELINGS << 9) | 0x39 -#define EC_WORD_RARE (EC_GROUP_FEELINGS << 9) | 0x3a -#define EC_WORD_NEGATIVE (EC_GROUP_FEELINGS << 9) | 0x3b -#define EC_WORD_DONE (EC_GROUP_FEELINGS << 9) | 0x3c -#define EC_WORD_DANGER (EC_GROUP_FEELINGS << 9) | 0x3d -#define EC_WORD_DEFEATED (EC_GROUP_FEELINGS << 9) | 0x3e -#define EC_WORD_BEAT (EC_GROUP_FEELINGS << 9) | 0x3f -#define EC_WORD_GREAT (EC_GROUP_FEELINGS << 9) | 0x40 -#define EC_WORD_ROMANTIC (EC_GROUP_FEELINGS << 9) | 0x41 -#define EC_WORD_QUESTION (EC_GROUP_FEELINGS << 9) | 0x42 -#define EC_WORD_UNDERSTAND (EC_GROUP_FEELINGS << 9) | 0x43 -#define EC_WORD_UNDERSTANDS (EC_GROUP_FEELINGS << 9) | 0x44 +#define EC_WORD_MEET ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 0) +#define EC_WORD_PLAY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 1) +#define EC_WORD_HURRIED ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 2) +#define EC_WORD_GOES ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 3) +#define EC_WORD_GIDDY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 4) +#define EC_WORD_HAPPY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 5) +#define EC_WORD_HAPPINESS ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 6) +#define EC_WORD_EXCITE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 7) +#define EC_WORD_IMPORTANT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 8) +#define EC_WORD_FUNNY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 9) +#define EC_WORD_GOT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 10) +#define EC_WORD_GO_HOME ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 11) +#define EC_WORD_DISAPPOINTED ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 12) +#define EC_WORD_DISAPPOINTS ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 13) +#define EC_WORD_SAD ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 14) +#define EC_WORD_TRY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 15) +#define EC_WORD_TRIES ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 16) +#define EC_WORD_HEARS ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 17) +#define EC_WORD_THINK ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 18) +#define EC_WORD_HEAR ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 19) +#define EC_WORD_WANTS ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 20) +#define EC_WORD_MISHEARD ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 21) +#define EC_WORD_DISLIKE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 22) +#define EC_WORD_ANGRY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 23) +#define EC_WORD_ANGER ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 24) +#define EC_WORD_SCARY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 25) +#define EC_WORD_LONESOME ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 26) +#define EC_WORD_DISAPPOINT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 27) +#define EC_WORD_JOY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 28) +#define EC_WORD_GETS ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 29) +#define EC_WORD_NEVER ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 30) +#define EC_WORD_DARN ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 31) +#define EC_WORD_DOWNCAST ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 32) +#define EC_WORD_INCREDIBLE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 33) +#define EC_WORD_LIKES ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 34) +#define EC_WORD_DISLIKES ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 35) +#define EC_WORD_BORING ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 36) +#define EC_WORD_CARE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 37) +#define EC_WORD_CARES ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 38) +#define EC_WORD_ALL_RIGHT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 39) +#define EC_WORD_ADORE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 40) +#define EC_WORD_DISASTER ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 41) +#define EC_WORD_ENJOY ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 42) +#define EC_WORD_ENJOYS ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 43) +#define EC_WORD_EAT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 44) +#define EC_WORD_LACKING ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 45) +#define EC_WORD_BAD ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 46) +#define EC_WORD_HARD ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 47) +#define EC_WORD_TERRIBLE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 48) +#define EC_WORD_SHOULD ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 49) +#define EC_WORD_NICE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 50) +#define EC_WORD_DRINK ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 51) +#define EC_WORD_SURPRISE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 52) +#define EC_WORD_FEAR ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 53) +#define EC_WORD_WANT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 54) +#define EC_WORD_WAIT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 55) +#define EC_WORD_SATISFIED ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 56) +#define EC_WORD_SEE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 57) +#define EC_WORD_RARE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 58) +#define EC_WORD_NEGATIVE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 59) +#define EC_WORD_DONE ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 60) +#define EC_WORD_DANGER ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 61) +#define EC_WORD_DEFEATED ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 62) +#define EC_WORD_BEAT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 63) +#define EC_WORD_GREAT ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 64) +#define EC_WORD_ROMANTIC ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 65) +#define EC_WORD_QUESTION ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 66) +#define EC_WORD_UNDERSTAND ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 67) +#define EC_WORD_UNDERSTANDS ((EC_GROUP_FEELINGS << EC_MASK_BITS) | 68) // CONDITIONS -#define EC_WORD_HOT (EC_GROUP_CONDITIONS << 9) | 0x0 -#define EC_WORD_EXISTS (EC_GROUP_CONDITIONS << 9) | 0x1 -#define EC_WORD_EXCESS (EC_GROUP_CONDITIONS << 9) | 0x2 -#define EC_WORD_APPROVED (EC_GROUP_CONDITIONS << 9) | 0x3 -#define EC_WORD_HAS (EC_GROUP_CONDITIONS << 9) | 0x4 -#define EC_WORD_GOOD (EC_GROUP_CONDITIONS << 9) | 0x5 -#define EC_WORD_LESS (EC_GROUP_CONDITIONS << 9) | 0x6 -#define EC_WORD_MOMENTUM (EC_GROUP_CONDITIONS << 9) | 0x7 -#define EC_WORD_GOING (EC_GROUP_CONDITIONS << 9) | 0x8 -#define EC_WORD_WEIRD (EC_GROUP_CONDITIONS << 9) | 0x9 -#define EC_WORD_BUSY (EC_GROUP_CONDITIONS << 9) | 0xa -#define EC_WORD_TOGETHER (EC_GROUP_CONDITIONS << 9) | 0xb -#define EC_WORD_FULL (EC_GROUP_CONDITIONS << 9) | 0xc -#define EC_WORD_ABSENT (EC_GROUP_CONDITIONS << 9) | 0xd -#define EC_WORD_BEING (EC_GROUP_CONDITIONS << 9) | 0xe -#define EC_WORD_NEED (EC_GROUP_CONDITIONS << 9) | 0xf -#define EC_WORD_TASTY (EC_GROUP_CONDITIONS << 9) | 0x10 -#define EC_WORD_SKILLED (EC_GROUP_CONDITIONS << 9) | 0x11 -#define EC_WORD_NOISY (EC_GROUP_CONDITIONS << 9) | 0x12 -#define EC_WORD_BIG (EC_GROUP_CONDITIONS << 9) | 0x13 -#define EC_WORD_LATE (EC_GROUP_CONDITIONS << 9) | 0x14 -#define EC_WORD_CLOSE (EC_GROUP_CONDITIONS << 9) | 0x15 -#define EC_WORD_DOCILE (EC_GROUP_CONDITIONS << 9) | 0x16 -#define EC_WORD_AMUSING (EC_GROUP_CONDITIONS << 9) | 0x17 -#define EC_WORD_ENTERTAINING (EC_GROUP_CONDITIONS << 9) | 0x18 -#define EC_WORD_PERFECTION (EC_GROUP_CONDITIONS << 9) | 0x19 -#define EC_WORD_PRETTY (EC_GROUP_CONDITIONS << 9) | 0x1a -#define EC_WORD_HEALTHY (EC_GROUP_CONDITIONS << 9) | 0x1b -#define EC_WORD_EXCELLENT (EC_GROUP_CONDITIONS << 9) | 0x1c -#define EC_WORD_UPSIDE_DOWN (EC_GROUP_CONDITIONS << 9) | 0x1d -#define EC_WORD_COLD (EC_GROUP_CONDITIONS << 9) | 0x1e -#define EC_WORD_REFRESHING (EC_GROUP_CONDITIONS << 9) | 0x1f -#define EC_WORD_UNAVOIDABLE (EC_GROUP_CONDITIONS << 9) | 0x20 -#define EC_WORD_MUCH (EC_GROUP_CONDITIONS << 9) | 0x21 -#define EC_WORD_OVERWHELMING (EC_GROUP_CONDITIONS << 9) | 0x22 -#define EC_WORD_FABULOUS (EC_GROUP_CONDITIONS << 9) | 0x23 -#define EC_WORD_ELSE (EC_GROUP_CONDITIONS << 9) | 0x24 -#define EC_WORD_EXPENSIVE (EC_GROUP_CONDITIONS << 9) | 0x25 -#define EC_WORD_CORRECT (EC_GROUP_CONDITIONS << 9) | 0x26 -#define EC_WORD_IMPOSSIBLE (EC_GROUP_CONDITIONS << 9) | 0x27 -#define EC_WORD_SMALL (EC_GROUP_CONDITIONS << 9) | 0x28 -#define EC_WORD_DIFFERENT (EC_GROUP_CONDITIONS << 9) | 0x29 -#define EC_WORD_TIRED (EC_GROUP_CONDITIONS << 9) | 0x2a -#define EC_WORD_SKILL (EC_GROUP_CONDITIONS << 9) | 0x2b -#define EC_WORD_TOP (EC_GROUP_CONDITIONS << 9) | 0x2c -#define EC_WORD_NON_STOP (EC_GROUP_CONDITIONS << 9) | 0x2d -#define EC_WORD_PREPOSTEROUS (EC_GROUP_CONDITIONS << 9) | 0x2e -#define EC_WORD_NONE (EC_GROUP_CONDITIONS << 9) | 0x2f -#define EC_WORD_NOTHING (EC_GROUP_CONDITIONS << 9) | 0x30 -#define EC_WORD_NATURAL (EC_GROUP_CONDITIONS << 9) | 0x31 -#define EC_WORD_BECOMES (EC_GROUP_CONDITIONS << 9) | 0x32 -#define EC_WORD_LUKEWARM (EC_GROUP_CONDITIONS << 9) | 0x33 -#define EC_WORD_FAST (EC_GROUP_CONDITIONS << 9) | 0x34 -#define EC_WORD_LOW (EC_GROUP_CONDITIONS << 9) | 0x35 -#define EC_WORD_AWFUL (EC_GROUP_CONDITIONS << 9) | 0x36 -#define EC_WORD_ALONE (EC_GROUP_CONDITIONS << 9) | 0x37 -#define EC_WORD_BORED (EC_GROUP_CONDITIONS << 9) | 0x38 -#define EC_WORD_SECRET (EC_GROUP_CONDITIONS << 9) | 0x39 -#define EC_WORD_MYSTERY (EC_GROUP_CONDITIONS << 9) | 0x3a -#define EC_WORD_LACKS (EC_GROUP_CONDITIONS << 9) | 0x3b -#define EC_WORD_BEST (EC_GROUP_CONDITIONS << 9) | 0x3c -#define EC_WORD_LOUSY (EC_GROUP_CONDITIONS << 9) | 0x3d -#define EC_WORD_MISTAKE (EC_GROUP_CONDITIONS << 9) | 0x3e -#define EC_WORD_KIND (EC_GROUP_CONDITIONS << 9) | 0x3f -#define EC_WORD_WELL (EC_GROUP_CONDITIONS << 9) | 0x40 -#define EC_WORD_WEAKENED (EC_GROUP_CONDITIONS << 9) | 0x41 -#define EC_WORD_SIMPLE (EC_GROUP_CONDITIONS << 9) | 0x42 -#define EC_WORD_SEEMS (EC_GROUP_CONDITIONS << 9) | 0x43 -#define EC_WORD_BADLY (EC_GROUP_CONDITIONS << 9) | 0x44 +#define EC_WORD_HOT ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 0) +#define EC_WORD_EXISTS ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 1) +#define EC_WORD_EXCESS ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 2) +#define EC_WORD_APPROVED ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 3) +#define EC_WORD_HAS ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 4) +#define EC_WORD_GOOD ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 5) +#define EC_WORD_LESS ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 6) +#define EC_WORD_MOMENTUM ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 7) +#define EC_WORD_GOING ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 8) +#define EC_WORD_WEIRD ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 9) +#define EC_WORD_BUSY ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 10) +#define EC_WORD_TOGETHER ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 11) +#define EC_WORD_FULL ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 12) +#define EC_WORD_ABSENT ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 13) +#define EC_WORD_BEING ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 14) +#define EC_WORD_NEED ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 15) +#define EC_WORD_TASTY ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 16) +#define EC_WORD_SKILLED ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 17) +#define EC_WORD_NOISY ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 18) +#define EC_WORD_BIG ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 19) +#define EC_WORD_LATE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 20) +#define EC_WORD_CLOSE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 21) +#define EC_WORD_DOCILE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 22) +#define EC_WORD_AMUSING ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 23) +#define EC_WORD_ENTERTAINING ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 24) +#define EC_WORD_PERFECTION ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 25) +#define EC_WORD_PRETTY ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 26) +#define EC_WORD_HEALTHY ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 27) +#define EC_WORD_EXCELLENT ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 28) +#define EC_WORD_UPSIDE_DOWN ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 29) +#define EC_WORD_COLD ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 30) +#define EC_WORD_REFRESHING ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 31) +#define EC_WORD_UNAVOIDABLE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 32) +#define EC_WORD_MUCH ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 33) +#define EC_WORD_OVERWHELMING ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 34) +#define EC_WORD_FABULOUS ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 35) +#define EC_WORD_ELSE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 36) +#define EC_WORD_EXPENSIVE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 37) +#define EC_WORD_CORRECT ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 38) +#define EC_WORD_IMPOSSIBLE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 39) +#define EC_WORD_SMALL ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 40) +#define EC_WORD_DIFFERENT ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 41) +#define EC_WORD_TIRED ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 42) +#define EC_WORD_SKILL ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 43) +#define EC_WORD_TOP ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 44) +#define EC_WORD_NON_STOP ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 45) +#define EC_WORD_PREPOSTEROUS ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 46) +#define EC_WORD_NONE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 47) +#define EC_WORD_NOTHING ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 48) +#define EC_WORD_NATURAL ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 49) +#define EC_WORD_BECOMES ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 50) +#define EC_WORD_LUKEWARM ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 51) +#define EC_WORD_FAST ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 52) +#define EC_WORD_LOW ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 53) +#define EC_WORD_AWFUL ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 54) +#define EC_WORD_ALONE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 55) +#define EC_WORD_BORED ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 56) +#define EC_WORD_SECRET ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 57) +#define EC_WORD_MYSTERY ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 58) +#define EC_WORD_LACKS ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 59) +#define EC_WORD_BEST ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 60) +#define EC_WORD_LOUSY ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 61) +#define EC_WORD_MISTAKE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 62) +#define EC_WORD_KIND ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 63) +#define EC_WORD_WELL ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 64) +#define EC_WORD_WEAKENED ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 65) +#define EC_WORD_SIMPLE ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 66) +#define EC_WORD_SEEMS ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 67) +#define EC_WORD_BADLY ((EC_GROUP_CONDITIONS << EC_MASK_BITS) | 68) // ACTIONS -#define EC_WORD_MEETS (EC_GROUP_ACTIONS << 9) | 0x0 -#define EC_WORD_CONCEDE (EC_GROUP_ACTIONS << 9) | 0x1 -#define EC_WORD_GIVE (EC_GROUP_ACTIONS << 9) | 0x2 -#define EC_WORD_GIVES (EC_GROUP_ACTIONS << 9) | 0x3 -#define EC_WORD_PLAYED (EC_GROUP_ACTIONS << 9) | 0x4 -#define EC_WORD_PLAYS (EC_GROUP_ACTIONS << 9) | 0x5 -#define EC_WORD_COLLECT (EC_GROUP_ACTIONS << 9) | 0x6 -#define EC_WORD_WALKING (EC_GROUP_ACTIONS << 9) | 0x7 -#define EC_WORD_WALKS (EC_GROUP_ACTIONS << 9) | 0x8 -#define EC_WORD_SAYS (EC_GROUP_ACTIONS << 9) | 0x9 -#define EC_WORD_WENT (EC_GROUP_ACTIONS << 9) | 0xa -#define EC_WORD_SAID (EC_GROUP_ACTIONS << 9) | 0xb -#define EC_WORD_WAKE_UP (EC_GROUP_ACTIONS << 9) | 0xc -#define EC_WORD_WAKES_UP (EC_GROUP_ACTIONS << 9) | 0xd -#define EC_WORD_ANGERS (EC_GROUP_ACTIONS << 9) | 0xe -#define EC_WORD_TEACH (EC_GROUP_ACTIONS << 9) | 0xf -#define EC_WORD_TEACHES (EC_GROUP_ACTIONS << 9) | 0x10 -#define EC_WORD_PLEASE (EC_GROUP_ACTIONS << 9) | 0x11 -#define EC_WORD_LEARN (EC_GROUP_ACTIONS << 9) | 0x12 -#define EC_WORD_CHANGE (EC_GROUP_ACTIONS << 9) | 0x13 -#define EC_WORD_STORY (EC_GROUP_ACTIONS << 9) | 0x14 -#define EC_WORD_TRUST (EC_GROUP_ACTIONS << 9) | 0x15 -#define EC_WORD_LAVISH (EC_GROUP_ACTIONS << 9) | 0x16 -#define EC_WORD_LISTENS (EC_GROUP_ACTIONS << 9) | 0x17 -#define EC_WORD_HEARING (EC_GROUP_ACTIONS << 9) | 0x18 -#define EC_WORD_TRAINS (EC_GROUP_ACTIONS << 9) | 0x19 -#define EC_WORD_CHOOSE (EC_GROUP_ACTIONS << 9) | 0x1a -#define EC_WORD_COME (EC_GROUP_ACTIONS << 9) | 0x1b -#define EC_WORD_CAME (EC_GROUP_ACTIONS << 9) | 0x1c -#define EC_WORD_SEARCH (EC_GROUP_ACTIONS << 9) | 0x1d -#define EC_WORD_MAKE (EC_GROUP_ACTIONS << 9) | 0x1e -#define EC_WORD_CAUSE (EC_GROUP_ACTIONS << 9) | 0x1f -#define EC_WORD_KNOW (EC_GROUP_ACTIONS << 9) | 0x20 -#define EC_WORD_KNOWS (EC_GROUP_ACTIONS << 9) | 0x21 -#define EC_WORD_REFUSE (EC_GROUP_ACTIONS << 9) | 0x22 -#define EC_WORD_STORES (EC_GROUP_ACTIONS << 9) | 0x23 -#define EC_WORD_BRAG (EC_GROUP_ACTIONS << 9) | 0x24 -#define EC_WORD_IGNORANT (EC_GROUP_ACTIONS << 9) | 0x25 -#define EC_WORD_THINKS (EC_GROUP_ACTIONS << 9) | 0x26 -#define EC_WORD_BELIEVE (EC_GROUP_ACTIONS << 9) | 0x27 -#define EC_WORD_SLIDE (EC_GROUP_ACTIONS << 9) | 0x28 -#define EC_WORD_EATS (EC_GROUP_ACTIONS << 9) | 0x29 -#define EC_WORD_USE (EC_GROUP_ACTIONS << 9) | 0x2a -#define EC_WORD_USES (EC_GROUP_ACTIONS << 9) | 0x2b -#define EC_WORD_USING (EC_GROUP_ACTIONS << 9) | 0x2c -#define EC_WORD_COULDN_T (EC_GROUP_ACTIONS << 9) | 0x2d -#define EC_WORD_CAPABLE (EC_GROUP_ACTIONS << 9) | 0x2e -#define EC_WORD_DISAPPEAR (EC_GROUP_ACTIONS << 9) | 0x2f -#define EC_WORD_APPEAR (EC_GROUP_ACTIONS << 9) | 0x30 -#define EC_WORD_THROW (EC_GROUP_ACTIONS << 9) | 0x31 -#define EC_WORD_WORRY (EC_GROUP_ACTIONS << 9) | 0x32 -#define EC_WORD_SLEPT (EC_GROUP_ACTIONS << 9) | 0x33 -#define EC_WORD_SLEEP (EC_GROUP_ACTIONS << 9) | 0x34 -#define EC_WORD_RELEASE (EC_GROUP_ACTIONS << 9) | 0x35 -#define EC_WORD_DRINKS (EC_GROUP_ACTIONS << 9) | 0x36 -#define EC_WORD_RUNS (EC_GROUP_ACTIONS << 9) | 0x37 -#define EC_WORD_RUN (EC_GROUP_ACTIONS << 9) | 0x38 -#define EC_WORD_WORKS (EC_GROUP_ACTIONS << 9) | 0x39 -#define EC_WORD_WORKING (EC_GROUP_ACTIONS << 9) | 0x3a -#define EC_WORD_TALKING (EC_GROUP_ACTIONS << 9) | 0x3b -#define EC_WORD_TALK (EC_GROUP_ACTIONS << 9) | 0x3c -#define EC_WORD_SINK (EC_GROUP_ACTIONS << 9) | 0x3d -#define EC_WORD_SMACK (EC_GROUP_ACTIONS << 9) | 0x3e -#define EC_WORD_PRETEND (EC_GROUP_ACTIONS << 9) | 0x3f -#define EC_WORD_PRAISE (EC_GROUP_ACTIONS << 9) | 0x40 -#define EC_WORD_OVERDO (EC_GROUP_ACTIONS << 9) | 0x41 -#define EC_WORD_SHOW (EC_GROUP_ACTIONS << 9) | 0x42 -#define EC_WORD_LOOKS (EC_GROUP_ACTIONS << 9) | 0x43 -#define EC_WORD_SEES (EC_GROUP_ACTIONS << 9) | 0x44 -#define EC_WORD_SEEK (EC_GROUP_ACTIONS << 9) | 0x45 -#define EC_WORD_OWN (EC_GROUP_ACTIONS << 9) | 0x46 -#define EC_WORD_TAKE (EC_GROUP_ACTIONS << 9) | 0x47 -#define EC_WORD_ALLOW (EC_GROUP_ACTIONS << 9) | 0x48 -#define EC_WORD_FORGET (EC_GROUP_ACTIONS << 9) | 0x49 -#define EC_WORD_FORGETS (EC_GROUP_ACTIONS << 9) | 0x4a -#define EC_WORD_APPEARS (EC_GROUP_ACTIONS << 9) | 0x4b -#define EC_WORD_FAINT (EC_GROUP_ACTIONS << 9) | 0x4c -#define EC_WORD_FAINTED (EC_GROUP_ACTIONS << 9) | 0x4d +#define EC_WORD_MEETS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 0) +#define EC_WORD_CONCEDE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 1) +#define EC_WORD_GIVE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 2) +#define EC_WORD_GIVES ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 3) +#define EC_WORD_PLAYED ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 4) +#define EC_WORD_PLAYS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 5) +#define EC_WORD_COLLECT ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 6) +#define EC_WORD_WALKING ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 7) +#define EC_WORD_WALKS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 8) +#define EC_WORD_SAYS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 9) +#define EC_WORD_WENT ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 10) +#define EC_WORD_SAID ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 11) +#define EC_WORD_WAKE_UP ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 12) +#define EC_WORD_WAKES_UP ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 13) +#define EC_WORD_ANGERS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 14) +#define EC_WORD_TEACH ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 15) +#define EC_WORD_TEACHES ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 16) +#define EC_WORD_PLEASE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 17) +#define EC_WORD_LEARN ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 18) +#define EC_WORD_CHANGE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 19) +#define EC_WORD_STORY ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 20) +#define EC_WORD_TRUST ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 21) +#define EC_WORD_LAVISH ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 22) +#define EC_WORD_LISTENS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 23) +#define EC_WORD_HEARING ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 24) +#define EC_WORD_TRAINS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 25) +#define EC_WORD_CHOOSE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 26) +#define EC_WORD_COME ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 27) +#define EC_WORD_CAME ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 28) +#define EC_WORD_SEARCH ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 29) +#define EC_WORD_MAKE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 30) +#define EC_WORD_CAUSE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 31) +#define EC_WORD_KNOW ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 32) +#define EC_WORD_KNOWS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 33) +#define EC_WORD_REFUSE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 34) +#define EC_WORD_STORES ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 35) +#define EC_WORD_BRAG ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 36) +#define EC_WORD_IGNORANT ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 37) +#define EC_WORD_THINKS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 38) +#define EC_WORD_BELIEVE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 39) +#define EC_WORD_SLIDE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 40) +#define EC_WORD_EATS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 41) +#define EC_WORD_USE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 42) +#define EC_WORD_USES ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 43) +#define EC_WORD_USING ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 44) +#define EC_WORD_COULDN_T ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 45) +#define EC_WORD_CAPABLE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 46) +#define EC_WORD_DISAPPEAR ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 47) +#define EC_WORD_APPEAR ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 48) +#define EC_WORD_THROW ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 49) +#define EC_WORD_WORRY ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 50) +#define EC_WORD_SLEPT ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 51) +#define EC_WORD_SLEEP ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 52) +#define EC_WORD_RELEASE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 53) +#define EC_WORD_DRINKS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 54) +#define EC_WORD_RUNS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 55) +#define EC_WORD_RUN ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 56) +#define EC_WORD_WORKS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 57) +#define EC_WORD_WORKING ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 58) +#define EC_WORD_TALKING ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 59) +#define EC_WORD_TALK ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 60) +#define EC_WORD_SINK ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 61) +#define EC_WORD_SMACK ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 62) +#define EC_WORD_PRETEND ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 63) +#define EC_WORD_PRAISE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 64) +#define EC_WORD_OVERDO ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 65) +#define EC_WORD_SHOW ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 66) +#define EC_WORD_LOOKS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 67) +#define EC_WORD_SEES ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 68) +#define EC_WORD_SEEK ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 69) +#define EC_WORD_OWN ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 70) +#define EC_WORD_TAKE ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 71) +#define EC_WORD_ALLOW ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 72) +#define EC_WORD_FORGET ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 73) +#define EC_WORD_FORGETS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 74) +#define EC_WORD_APPEARS ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 75) +#define EC_WORD_FAINT ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 76) +#define EC_WORD_FAINTED ((EC_GROUP_ACTIONS << EC_MASK_BITS) | 77) // LIFESTYLE -#define EC_WORD_CHORES (EC_GROUP_LIFESTYLE << 9) | 0x0 -#define EC_WORD_HOME (EC_GROUP_LIFESTYLE << 9) | 0x1 -#define EC_WORD_MONEY (EC_GROUP_LIFESTYLE << 9) | 0x2 -#define EC_WORD_ALLOWANCE (EC_GROUP_LIFESTYLE << 9) | 0x3 -#define EC_WORD_BATH (EC_GROUP_LIFESTYLE << 9) | 0x4 -#define EC_WORD_CONVERSATION (EC_GROUP_LIFESTYLE << 9) | 0x5 -#define EC_WORD_SCHOOL (EC_GROUP_LIFESTYLE << 9) | 0x6 -#define EC_WORD_COMMEMORATE (EC_GROUP_LIFESTYLE << 9) | 0x7 -#define EC_WORD_HABIT (EC_GROUP_LIFESTYLE << 9) | 0x8 -#define EC_WORD_GROUP (EC_GROUP_LIFESTYLE << 9) | 0x9 -#define EC_WORD_WORD (EC_GROUP_LIFESTYLE << 9) | 0xa -#define EC_WORD_STORE (EC_GROUP_LIFESTYLE << 9) | 0xb -#define EC_WORD_SERVICE (EC_GROUP_LIFESTYLE << 9) | 0xc -#define EC_WORD_WORK (EC_GROUP_LIFESTYLE << 9) | 0xd -#define EC_WORD_SYSTEM (EC_GROUP_LIFESTYLE << 9) | 0xe -#define EC_WORD_TRAIN (EC_GROUP_LIFESTYLE << 9) | 0xf -#define EC_WORD_CLASS (EC_GROUP_LIFESTYLE << 9) | 0x10 -#define EC_WORD_LESSONS (EC_GROUP_LIFESTYLE << 9) | 0x11 -#define EC_WORD_INFORMATION (EC_GROUP_LIFESTYLE << 9) | 0x12 -#define EC_WORD_LIVING (EC_GROUP_LIFESTYLE << 9) | 0x13 -#define EC_WORD_TEACHER (EC_GROUP_LIFESTYLE << 9) | 0x14 -#define EC_WORD_TOURNAMENT (EC_GROUP_LIFESTYLE << 9) | 0x15 -#define EC_WORD_LETTER (EC_GROUP_LIFESTYLE << 9) | 0x16 -#define EC_WORD_EVENT (EC_GROUP_LIFESTYLE << 9) | 0x17 -#define EC_WORD_DIGITAL (EC_GROUP_LIFESTYLE << 9) | 0x18 -#define EC_WORD_TEST (EC_GROUP_LIFESTYLE << 9) | 0x19 -#define EC_WORD_DEPT_STORE (EC_GROUP_LIFESTYLE << 9) | 0x1a -#define EC_WORD_TELEVISION (EC_GROUP_LIFESTYLE << 9) | 0x1b -#define EC_WORD_PHONE (EC_GROUP_LIFESTYLE << 9) | 0x1c -#define EC_WORD_ITEM (EC_GROUP_LIFESTYLE << 9) | 0x1d -#define EC_WORD_NAME (EC_GROUP_LIFESTYLE << 9) | 0x1e -#define EC_WORD_NEWS (EC_GROUP_LIFESTYLE << 9) | 0x1f -#define EC_WORD_POPULAR (EC_GROUP_LIFESTYLE << 9) | 0x20 -#define EC_WORD_PARTY (EC_GROUP_LIFESTYLE << 9) | 0x21 -#define EC_WORD_STUDY (EC_GROUP_LIFESTYLE << 9) | 0x22 -#define EC_WORD_MACHINE (EC_GROUP_LIFESTYLE << 9) | 0x23 -#define EC_WORD_MAIL (EC_GROUP_LIFESTYLE << 9) | 0x24 -#define EC_WORD_MESSAGE (EC_GROUP_LIFESTYLE << 9) | 0x25 -#define EC_WORD_PROMISE (EC_GROUP_LIFESTYLE << 9) | 0x26 -#define EC_WORD_DREAM (EC_GROUP_LIFESTYLE << 9) | 0x27 -#define EC_WORD_KINDERGARTEN (EC_GROUP_LIFESTYLE << 9) | 0x28 -#define EC_WORD_LIFE (EC_GROUP_LIFESTYLE << 9) | 0x29 -#define EC_WORD_RADIO (EC_GROUP_LIFESTYLE << 9) | 0x2a -#define EC_WORD_RENTAL (EC_GROUP_LIFESTYLE << 9) | 0x2b -#define EC_WORD_WORLD (EC_GROUP_LIFESTYLE << 9) | 0x2c +#define EC_WORD_CHORES ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 0) +#define EC_WORD_HOME ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 1) +#define EC_WORD_MONEY ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 2) +#define EC_WORD_ALLOWANCE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 3) +#define EC_WORD_BATH ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 4) +#define EC_WORD_CONVERSATION ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 5) +#define EC_WORD_SCHOOL ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 6) +#define EC_WORD_COMMEMORATE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 7) +#define EC_WORD_HABIT ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 8) +#define EC_WORD_GROUP ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 9) +#define EC_WORD_WORD ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 10) +#define EC_WORD_STORE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 11) +#define EC_WORD_SERVICE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 12) +#define EC_WORD_WORK ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 13) +#define EC_WORD_SYSTEM ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 14) +#define EC_WORD_TRAIN ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 15) +#define EC_WORD_CLASS ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 16) +#define EC_WORD_LESSONS ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 17) +#define EC_WORD_INFORMATION ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 18) +#define EC_WORD_LIVING ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 19) +#define EC_WORD_TEACHER ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 20) +#define EC_WORD_TOURNAMENT ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 21) +#define EC_WORD_LETTER ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 22) +#define EC_WORD_EVENT ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 23) +#define EC_WORD_DIGITAL ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 24) +#define EC_WORD_TEST ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 25) +#define EC_WORD_DEPT_STORE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 26) +#define EC_WORD_TELEVISION ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 27) +#define EC_WORD_PHONE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 28) +#define EC_WORD_ITEM ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 29) +#define EC_WORD_NAME ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 30) +#define EC_WORD_NEWS ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 31) +#define EC_WORD_POPULAR ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 32) +#define EC_WORD_PARTY ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 33) +#define EC_WORD_STUDY ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 34) +#define EC_WORD_MACHINE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 35) +#define EC_WORD_MAIL ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 36) +#define EC_WORD_MESSAGE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 37) +#define EC_WORD_PROMISE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 38) +#define EC_WORD_DREAM ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 39) +#define EC_WORD_KINDERGARTEN ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 40) +#define EC_WORD_LIFE ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 41) +#define EC_WORD_RADIO ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 42) +#define EC_WORD_RENTAL ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 43) +#define EC_WORD_WORLD ((EC_GROUP_LIFESTYLE << EC_MASK_BITS) | 44) // HOBBIES -#define EC_WORD_IDOL (EC_GROUP_HOBBIES << 9) | 0x0 -#define EC_WORD_ANIME (EC_GROUP_HOBBIES << 9) | 0x1 -#define EC_WORD_SONG (EC_GROUP_HOBBIES << 9) | 0x2 -#define EC_WORD_MOVIE (EC_GROUP_HOBBIES << 9) | 0x3 -#define EC_WORD_SWEETS (EC_GROUP_HOBBIES << 9) | 0x4 -#define EC_WORD_CHAT (EC_GROUP_HOBBIES << 9) | 0x5 -#define EC_WORD_CHILD_S_PLAY (EC_GROUP_HOBBIES << 9) | 0x6 -#define EC_WORD_TOYS (EC_GROUP_HOBBIES << 9) | 0x7 -#define EC_WORD_MUSIC (EC_GROUP_HOBBIES << 9) | 0x8 -#define EC_WORD_CARDS (EC_GROUP_HOBBIES << 9) | 0x9 -#define EC_WORD_SHOPPING (EC_GROUP_HOBBIES << 9) | 0xa -#define EC_WORD_CAMERA (EC_GROUP_HOBBIES << 9) | 0xb -#define EC_WORD_VIEWING (EC_GROUP_HOBBIES << 9) | 0xc -#define EC_WORD_SPECTATOR (EC_GROUP_HOBBIES << 9) | 0xd -#define EC_WORD_GOURMET (EC_GROUP_HOBBIES << 9) | 0xe -#define EC_WORD_GAME (EC_GROUP_HOBBIES << 9) | 0xf -#define EC_WORD_RPG (EC_GROUP_HOBBIES << 9) | 0x10 -#define EC_WORD_COLLECTION (EC_GROUP_HOBBIES << 9) | 0x11 -#define EC_WORD_COMPLETE (EC_GROUP_HOBBIES << 9) | 0x12 -#define EC_WORD_MAGAZINE (EC_GROUP_HOBBIES << 9) | 0x13 -#define EC_WORD_WALK (EC_GROUP_HOBBIES << 9) | 0x14 -#define EC_WORD_BIKE (EC_GROUP_HOBBIES << 9) | 0x15 -#define EC_WORD_HOBBY (EC_GROUP_HOBBIES << 9) | 0x16 -#define EC_WORD_SPORTS (EC_GROUP_HOBBIES << 9) | 0x17 -#define EC_WORD_SOFTWARE (EC_GROUP_HOBBIES << 9) | 0x18 -#define EC_WORD_SONGS (EC_GROUP_HOBBIES << 9) | 0x19 -#define EC_WORD_DIET (EC_GROUP_HOBBIES << 9) | 0x1a -#define EC_WORD_TREASURE (EC_GROUP_HOBBIES << 9) | 0x1b -#define EC_WORD_TRAVEL (EC_GROUP_HOBBIES << 9) | 0x1c -#define EC_WORD_DANCE (EC_GROUP_HOBBIES << 9) | 0x1d -#define EC_WORD_CHANNEL (EC_GROUP_HOBBIES << 9) | 0x1e -#define EC_WORD_MAKING (EC_GROUP_HOBBIES << 9) | 0x1f -#define EC_WORD_FISHING (EC_GROUP_HOBBIES << 9) | 0x20 -#define EC_WORD_DATE (EC_GROUP_HOBBIES << 9) | 0x21 -#define EC_WORD_DESIGN (EC_GROUP_HOBBIES << 9) | 0x22 -#define EC_WORD_LOCOMOTIVE (EC_GROUP_HOBBIES << 9) | 0x23 -#define EC_WORD_PLUSH_DOLL (EC_GROUP_HOBBIES << 9) | 0x24 -#define EC_WORD_PC (EC_GROUP_HOBBIES << 9) | 0x25 -#define EC_WORD_FLOWERS (EC_GROUP_HOBBIES << 9) | 0x26 -#define EC_WORD_HERO (EC_GROUP_HOBBIES << 9) | 0x27 -#define EC_WORD_NAP (EC_GROUP_HOBBIES << 9) | 0x28 -#define EC_WORD_HEROINE (EC_GROUP_HOBBIES << 9) | 0x29 -#define EC_WORD_FASHION (EC_GROUP_HOBBIES << 9) | 0x2a -#define EC_WORD_ADVENTURE (EC_GROUP_HOBBIES << 9) | 0x2b -#define EC_WORD_BOARD (EC_GROUP_HOBBIES << 9) | 0x2c -#define EC_WORD_BALL (EC_GROUP_HOBBIES << 9) | 0x2d -#define EC_WORD_BOOK (EC_GROUP_HOBBIES << 9) | 0x2e -#define EC_WORD_FESTIVAL (EC_GROUP_HOBBIES << 9) | 0x2f -#define EC_WORD_COMICS (EC_GROUP_HOBBIES << 9) | 0x30 -#define EC_WORD_HOLIDAY (EC_GROUP_HOBBIES << 9) | 0x31 -#define EC_WORD_PLANS (EC_GROUP_HOBBIES << 9) | 0x32 -#define EC_WORD_TRENDY (EC_GROUP_HOBBIES << 9) | 0x33 -#define EC_WORD_VACATION (EC_GROUP_HOBBIES << 9) | 0x34 -#define EC_WORD_LOOK (EC_GROUP_HOBBIES << 9) | 0x35 +#define EC_WORD_IDOL ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 0) +#define EC_WORD_ANIME ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 1) +#define EC_WORD_SONG ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 2) +#define EC_WORD_MOVIE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 3) +#define EC_WORD_SWEETS ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 4) +#define EC_WORD_CHAT ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 5) +#define EC_WORD_CHILD_S_PLAY ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 6) +#define EC_WORD_TOYS ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 7) +#define EC_WORD_MUSIC ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 8) +#define EC_WORD_CARDS ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 9) +#define EC_WORD_SHOPPING ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 10) +#define EC_WORD_CAMERA ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 11) +#define EC_WORD_VIEWING ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 12) +#define EC_WORD_SPECTATOR ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 13) +#define EC_WORD_GOURMET ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 14) +#define EC_WORD_GAME ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 15) +#define EC_WORD_RPG ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 16) +#define EC_WORD_COLLECTION ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 17) +#define EC_WORD_COMPLETE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 18) +#define EC_WORD_MAGAZINE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 19) +#define EC_WORD_WALK ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 20) +#define EC_WORD_BIKE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 21) +#define EC_WORD_HOBBY ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 22) +#define EC_WORD_SPORTS ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 23) +#define EC_WORD_SOFTWARE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 24) +#define EC_WORD_SONGS ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 25) +#define EC_WORD_DIET ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 26) +#define EC_WORD_TREASURE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 27) +#define EC_WORD_TRAVEL ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 28) +#define EC_WORD_DANCE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 29) +#define EC_WORD_CHANNEL ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 30) +#define EC_WORD_MAKING ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 31) +#define EC_WORD_FISHING ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 32) +#define EC_WORD_DATE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 33) +#define EC_WORD_DESIGN ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 34) +#define EC_WORD_LOCOMOTIVE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 35) +#define EC_WORD_PLUSH_DOLL ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 36) +#define EC_WORD_PC ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 37) +#define EC_WORD_FLOWERS ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 38) +#define EC_WORD_HERO ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 39) +#define EC_WORD_NAP ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 40) +#define EC_WORD_HEROINE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 41) +#define EC_WORD_FASHION ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 42) +#define EC_WORD_ADVENTURE ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 43) +#define EC_WORD_BOARD ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 44) +#define EC_WORD_BALL ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 45) +#define EC_WORD_BOOK ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 46) +#define EC_WORD_FESTIVAL ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 47) +#define EC_WORD_COMICS ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 48) +#define EC_WORD_HOLIDAY ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 49) +#define EC_WORD_PLANS ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 50) +#define EC_WORD_TRENDY ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 51) +#define EC_WORD_VACATION ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 52) +#define EC_WORD_LOOK ((EC_GROUP_HOBBIES << EC_MASK_BITS) | 53) // TIME -#define EC_WORD_FALL (EC_GROUP_TIME << 9) | 0x0 -#define EC_WORD_MORNING (EC_GROUP_TIME << 9) | 0x1 -#define EC_WORD_TOMORROW (EC_GROUP_TIME << 9) | 0x2 -#define EC_WORD_LAST (EC_GROUP_TIME << 9) | 0x3 -#define EC_WORD_DAY (EC_GROUP_TIME << 9) | 0x4 -#define EC_WORD_SOMETIME (EC_GROUP_TIME << 9) | 0x5 -#define EC_WORD_ALWAYS (EC_GROUP_TIME << 9) | 0x6 -#define EC_WORD_CURRENT (EC_GROUP_TIME << 9) | 0x7 -#define EC_WORD_FOREVER (EC_GROUP_TIME << 9) | 0x8 -#define EC_WORD_DAYS (EC_GROUP_TIME << 9) | 0x9 -#define EC_WORD_END (EC_GROUP_TIME << 9) | 0xa -#define EC_WORD_TUESDAY (EC_GROUP_TIME << 9) | 0xb -#define EC_WORD_YESTERDAY (EC_GROUP_TIME << 9) | 0xc -#define EC_WORD_TODAY (EC_GROUP_TIME << 9) | 0xd -#define EC_WORD_FRIDAY (EC_GROUP_TIME << 9) | 0xe -#define EC_WORD_MONDAY (EC_GROUP_TIME << 9) | 0xf -#define EC_WORD_LATER (EC_GROUP_TIME << 9) | 0x10 -#define EC_WORD_EARLIER (EC_GROUP_TIME << 9) | 0x11 -#define EC_WORD_ANOTHER (EC_GROUP_TIME << 9) | 0x12 -#define EC_WORD_TIME (EC_GROUP_TIME << 9) | 0x13 -#define EC_WORD_FINISH (EC_GROUP_TIME << 9) | 0x14 -#define EC_WORD_WEDNESDAY (EC_GROUP_TIME << 9) | 0x15 -#define EC_WORD_SOON (EC_GROUP_TIME << 9) | 0x16 -#define EC_WORD_START (EC_GROUP_TIME << 9) | 0x17 -#define EC_WORD_MONTH (EC_GROUP_TIME << 9) | 0x18 -#define EC_WORD_STOP (EC_GROUP_TIME << 9) | 0x19 -#define EC_WORD_NOW (EC_GROUP_TIME << 9) | 0x1a -#define EC_WORD_FINAL (EC_GROUP_TIME << 9) | 0x1b -#define EC_WORD_NEXT (EC_GROUP_TIME << 9) | 0x1c -#define EC_WORD_AGE (EC_GROUP_TIME << 9) | 0x1d -#define EC_WORD_SATURDAY (EC_GROUP_TIME << 9) | 0x1e -#define EC_WORD_SUMMER (EC_GROUP_TIME << 9) | 0x1f -#define EC_WORD_SUNDAY (EC_GROUP_TIME << 9) | 0x20 -#define EC_WORD_BEGINNING (EC_GROUP_TIME << 9) | 0x21 -#define EC_WORD_SPRING (EC_GROUP_TIME << 9) | 0x22 -#define EC_WORD_DAYTIME (EC_GROUP_TIME << 9) | 0x23 -#define EC_WORD_WINTER (EC_GROUP_TIME << 9) | 0x24 -#define EC_WORD_DAILY (EC_GROUP_TIME << 9) | 0x25 -#define EC_WORD_OLDEN (EC_GROUP_TIME << 9) | 0x26 -#define EC_WORD_ALMOST (EC_GROUP_TIME << 9) | 0x27 -#define EC_WORD_NEARLY (EC_GROUP_TIME << 9) | 0x28 -#define EC_WORD_THURSDAY (EC_GROUP_TIME << 9) | 0x29 -#define EC_WORD_NIGHTTIME (EC_GROUP_TIME << 9) | 0x2a -#define EC_WORD_NIGHT (EC_GROUP_TIME << 9) | 0x2b -#define EC_WORD_WEEK (EC_GROUP_TIME << 9) | 0x2c +#define EC_WORD_FALL ((EC_GROUP_TIME << EC_MASK_BITS) | 0) +#define EC_WORD_MORNING ((EC_GROUP_TIME << EC_MASK_BITS) | 1) +#define EC_WORD_TOMORROW ((EC_GROUP_TIME << EC_MASK_BITS) | 2) +#define EC_WORD_LAST ((EC_GROUP_TIME << EC_MASK_BITS) | 3) +#define EC_WORD_DAY ((EC_GROUP_TIME << EC_MASK_BITS) | 4) +#define EC_WORD_SOMETIME ((EC_GROUP_TIME << EC_MASK_BITS) | 5) +#define EC_WORD_ALWAYS ((EC_GROUP_TIME << EC_MASK_BITS) | 6) +#define EC_WORD_CURRENT ((EC_GROUP_TIME << EC_MASK_BITS) | 7) +#define EC_WORD_FOREVER ((EC_GROUP_TIME << EC_MASK_BITS) | 8) +#define EC_WORD_DAYS ((EC_GROUP_TIME << EC_MASK_BITS) | 9) +#define EC_WORD_END ((EC_GROUP_TIME << EC_MASK_BITS) | 10) +#define EC_WORD_TUESDAY ((EC_GROUP_TIME << EC_MASK_BITS) | 11) +#define EC_WORD_YESTERDAY ((EC_GROUP_TIME << EC_MASK_BITS) | 12) +#define EC_WORD_TODAY ((EC_GROUP_TIME << EC_MASK_BITS) | 13) +#define EC_WORD_FRIDAY ((EC_GROUP_TIME << EC_MASK_BITS) | 14) +#define EC_WORD_MONDAY ((EC_GROUP_TIME << EC_MASK_BITS) | 15) +#define EC_WORD_LATER ((EC_GROUP_TIME << EC_MASK_BITS) | 16) +#define EC_WORD_EARLIER ((EC_GROUP_TIME << EC_MASK_BITS) | 17) +#define EC_WORD_ANOTHER ((EC_GROUP_TIME << EC_MASK_BITS) | 18) +#define EC_WORD_TIME ((EC_GROUP_TIME << EC_MASK_BITS) | 19) +#define EC_WORD_FINISH ((EC_GROUP_TIME << EC_MASK_BITS) | 20) +#define EC_WORD_WEDNESDAY ((EC_GROUP_TIME << EC_MASK_BITS) | 21) +#define EC_WORD_SOON ((EC_GROUP_TIME << EC_MASK_BITS) | 22) +#define EC_WORD_START ((EC_GROUP_TIME << EC_MASK_BITS) | 23) +#define EC_WORD_MONTH ((EC_GROUP_TIME << EC_MASK_BITS) | 24) +#define EC_WORD_STOP ((EC_GROUP_TIME << EC_MASK_BITS) | 25) +#define EC_WORD_NOW ((EC_GROUP_TIME << EC_MASK_BITS) | 26) +#define EC_WORD_FINAL ((EC_GROUP_TIME << EC_MASK_BITS) | 27) +#define EC_WORD_NEXT ((EC_GROUP_TIME << EC_MASK_BITS) | 28) +#define EC_WORD_AGE ((EC_GROUP_TIME << EC_MASK_BITS) | 29) +#define EC_WORD_SATURDAY ((EC_GROUP_TIME << EC_MASK_BITS) | 30) +#define EC_WORD_SUMMER ((EC_GROUP_TIME << EC_MASK_BITS) | 31) +#define EC_WORD_SUNDAY ((EC_GROUP_TIME << EC_MASK_BITS) | 32) +#define EC_WORD_BEGINNING ((EC_GROUP_TIME << EC_MASK_BITS) | 33) +#define EC_WORD_SPRING ((EC_GROUP_TIME << EC_MASK_BITS) | 34) +#define EC_WORD_DAYTIME ((EC_GROUP_TIME << EC_MASK_BITS) | 35) +#define EC_WORD_WINTER ((EC_GROUP_TIME << EC_MASK_BITS) | 36) +#define EC_WORD_DAILY ((EC_GROUP_TIME << EC_MASK_BITS) | 37) +#define EC_WORD_OLDEN ((EC_GROUP_TIME << EC_MASK_BITS) | 38) +#define EC_WORD_ALMOST ((EC_GROUP_TIME << EC_MASK_BITS) | 39) +#define EC_WORD_NEARLY ((EC_GROUP_TIME << EC_MASK_BITS) | 40) +#define EC_WORD_THURSDAY ((EC_GROUP_TIME << EC_MASK_BITS) | 41) +#define EC_WORD_NIGHTTIME ((EC_GROUP_TIME << EC_MASK_BITS) | 42) +#define EC_WORD_NIGHT ((EC_GROUP_TIME << EC_MASK_BITS) | 43) +#define EC_WORD_WEEK ((EC_GROUP_TIME << EC_MASK_BITS) | 44) // MISC -#define EC_WORD_HIGHS (EC_GROUP_MISC << 9) | 0x0 -#define EC_WORD_LOWS (EC_GROUP_MISC << 9) | 0x1 -#define EC_WORD_UM (EC_GROUP_MISC << 9) | 0x2 -#define EC_WORD_REAR (EC_GROUP_MISC << 9) | 0x3 -#define EC_WORD_THINGS (EC_GROUP_MISC << 9) | 0x4 -#define EC_WORD_THING (EC_GROUP_MISC << 9) | 0x5 -#define EC_WORD_BELOW (EC_GROUP_MISC << 9) | 0x6 -#define EC_WORD_ABOVE (EC_GROUP_MISC << 9) | 0x7 -#define EC_WORD_BACK (EC_GROUP_MISC << 9) | 0x8 -#define EC_WORD_HIGH (EC_GROUP_MISC << 9) | 0x9 -#define EC_WORD_HERE (EC_GROUP_MISC << 9) | 0xa -#define EC_WORD_INSIDE (EC_GROUP_MISC << 9) | 0xb -#define EC_WORD_OUTSIDE (EC_GROUP_MISC << 9) | 0xc -#define EC_WORD_BESIDE (EC_GROUP_MISC << 9) | 0xd -#define EC_WORD_THIS_IS_IT_EXCL (EC_GROUP_MISC << 9) | 0xe -#define EC_WORD_THIS (EC_GROUP_MISC << 9) | 0xf -#define EC_WORD_EVERY (EC_GROUP_MISC << 9) | 0x10 -#define EC_WORD_THESE (EC_GROUP_MISC << 9) | 0x11 -#define EC_WORD_THESE_WERE (EC_GROUP_MISC << 9) | 0x12 -#define EC_WORD_DOWN (EC_GROUP_MISC << 9) | 0x13 -#define EC_WORD_THAT (EC_GROUP_MISC << 9) | 0x14 -#define EC_WORD_THOSE_ARE (EC_GROUP_MISC << 9) | 0x15 -#define EC_WORD_THOSE_WERE (EC_GROUP_MISC << 9) | 0x16 -#define EC_WORD_THAT_S_IT_EXCL (EC_GROUP_MISC << 9) | 0x17 -#define EC_WORD_AM (EC_GROUP_MISC << 9) | 0x18 -#define EC_WORD_THAT_WAS (EC_GROUP_MISC << 9) | 0x19 -#define EC_WORD_FRONT (EC_GROUP_MISC << 9) | 0x1a -#define EC_WORD_UP (EC_GROUP_MISC << 9) | 0x1b -#define EC_WORD_CHOICE (EC_GROUP_MISC << 9) | 0x1c -#define EC_WORD_FAR (EC_GROUP_MISC << 9) | 0x1d -#define EC_WORD_AWAY (EC_GROUP_MISC << 9) | 0x1e -#define EC_WORD_NEAR (EC_GROUP_MISC << 9) | 0x1f -#define EC_WORD_WHERE (EC_GROUP_MISC << 9) | 0x20 -#define EC_WORD_WHEN (EC_GROUP_MISC << 9) | 0x21 -#define EC_WORD_WHAT (EC_GROUP_MISC << 9) | 0x22 -#define EC_WORD_DEEP (EC_GROUP_MISC << 9) | 0x23 -#define EC_WORD_SHALLOW (EC_GROUP_MISC << 9) | 0x24 -#define EC_WORD_WHY (EC_GROUP_MISC << 9) | 0x25 -#define EC_WORD_CONFUSED (EC_GROUP_MISC << 9) | 0x26 -#define EC_WORD_OPPOSITE (EC_GROUP_MISC << 9) | 0x27 -#define EC_WORD_LEFT (EC_GROUP_MISC << 9) | 0x28 -#define EC_WORD_RIGHT (EC_GROUP_MISC << 9) | 0x29 +#define EC_WORD_HIGHS ((EC_GROUP_MISC << EC_MASK_BITS) | 0) +#define EC_WORD_LOWS ((EC_GROUP_MISC << EC_MASK_BITS) | 1) +#define EC_WORD_UM ((EC_GROUP_MISC << EC_MASK_BITS) | 2) +#define EC_WORD_REAR ((EC_GROUP_MISC << EC_MASK_BITS) | 3) +#define EC_WORD_THINGS ((EC_GROUP_MISC << EC_MASK_BITS) | 4) +#define EC_WORD_THING ((EC_GROUP_MISC << EC_MASK_BITS) | 5) +#define EC_WORD_BELOW ((EC_GROUP_MISC << EC_MASK_BITS) | 6) +#define EC_WORD_ABOVE ((EC_GROUP_MISC << EC_MASK_BITS) | 7) +#define EC_WORD_BACK ((EC_GROUP_MISC << EC_MASK_BITS) | 8) +#define EC_WORD_HIGH ((EC_GROUP_MISC << EC_MASK_BITS) | 9) +#define EC_WORD_HERE ((EC_GROUP_MISC << EC_MASK_BITS) | 10) +#define EC_WORD_INSIDE ((EC_GROUP_MISC << EC_MASK_BITS) | 11) +#define EC_WORD_OUTSIDE ((EC_GROUP_MISC << EC_MASK_BITS) | 12) +#define EC_WORD_BESIDE ((EC_GROUP_MISC << EC_MASK_BITS) | 13) +#define EC_WORD_THIS_IS_IT_EXCL ((EC_GROUP_MISC << EC_MASK_BITS) | 14) +#define EC_WORD_THIS ((EC_GROUP_MISC << EC_MASK_BITS) | 15) +#define EC_WORD_EVERY ((EC_GROUP_MISC << EC_MASK_BITS) | 16) +#define EC_WORD_THESE ((EC_GROUP_MISC << EC_MASK_BITS) | 17) +#define EC_WORD_THESE_WERE ((EC_GROUP_MISC << EC_MASK_BITS) | 18) +#define EC_WORD_DOWN ((EC_GROUP_MISC << EC_MASK_BITS) | 19) +#define EC_WORD_THAT ((EC_GROUP_MISC << EC_MASK_BITS) | 20) +#define EC_WORD_THOSE_ARE ((EC_GROUP_MISC << EC_MASK_BITS) | 21) +#define EC_WORD_THOSE_WERE ((EC_GROUP_MISC << EC_MASK_BITS) | 22) +#define EC_WORD_THAT_S_IT_EXCL ((EC_GROUP_MISC << EC_MASK_BITS) | 23) +#define EC_WORD_AM ((EC_GROUP_MISC << EC_MASK_BITS) | 24) +#define EC_WORD_THAT_WAS ((EC_GROUP_MISC << EC_MASK_BITS) | 25) +#define EC_WORD_FRONT ((EC_GROUP_MISC << EC_MASK_BITS) | 26) +#define EC_WORD_UP ((EC_GROUP_MISC << EC_MASK_BITS) | 27) +#define EC_WORD_CHOICE ((EC_GROUP_MISC << EC_MASK_BITS) | 28) +#define EC_WORD_FAR ((EC_GROUP_MISC << EC_MASK_BITS) | 29) +#define EC_WORD_AWAY ((EC_GROUP_MISC << EC_MASK_BITS) | 30) +#define EC_WORD_NEAR ((EC_GROUP_MISC << EC_MASK_BITS) | 31) +#define EC_WORD_WHERE ((EC_GROUP_MISC << EC_MASK_BITS) | 32) +#define EC_WORD_WHEN ((EC_GROUP_MISC << EC_MASK_BITS) | 33) +#define EC_WORD_WHAT ((EC_GROUP_MISC << EC_MASK_BITS) | 34) +#define EC_WORD_DEEP ((EC_GROUP_MISC << EC_MASK_BITS) | 35) +#define EC_WORD_SHALLOW ((EC_GROUP_MISC << EC_MASK_BITS) | 36) +#define EC_WORD_WHY ((EC_GROUP_MISC << EC_MASK_BITS) | 37) +#define EC_WORD_CONFUSED ((EC_GROUP_MISC << EC_MASK_BITS) | 38) +#define EC_WORD_OPPOSITE ((EC_GROUP_MISC << EC_MASK_BITS) | 39) +#define EC_WORD_LEFT ((EC_GROUP_MISC << EC_MASK_BITS) | 40) +#define EC_WORD_RIGHT ((EC_GROUP_MISC << EC_MASK_BITS) | 41) // ADJECTIVES -#define EC_WORD_WANDERING (EC_GROUP_ADJECTIVES << 9) | 0x0 -#define EC_WORD_RICKETY (EC_GROUP_ADJECTIVES << 9) | 0x1 -#define EC_WORD_ROCK_SOLID (EC_GROUP_ADJECTIVES << 9) | 0x2 -#define EC_WORD_HUNGRY (EC_GROUP_ADJECTIVES << 9) | 0x3 -#define EC_WORD_TIGHT (EC_GROUP_ADJECTIVES << 9) | 0x4 -#define EC_WORD_TICKLISH (EC_GROUP_ADJECTIVES << 9) | 0x5 -#define EC_WORD_TWIRLING (EC_GROUP_ADJECTIVES << 9) | 0x6 -#define EC_WORD_SPIRALING (EC_GROUP_ADJECTIVES << 9) | 0x7 -#define EC_WORD_THIRSTY (EC_GROUP_ADJECTIVES << 9) | 0x8 -#define EC_WORD_LOLLING (EC_GROUP_ADJECTIVES << 9) | 0x9 -#define EC_WORD_SILKY (EC_GROUP_ADJECTIVES << 9) | 0xa -#define EC_WORD_SADLY (EC_GROUP_ADJECTIVES << 9) | 0xb -#define EC_WORD_HOPELESS (EC_GROUP_ADJECTIVES << 9) | 0xc -#define EC_WORD_USELESS (EC_GROUP_ADJECTIVES << 9) | 0xd -#define EC_WORD_DROOLING (EC_GROUP_ADJECTIVES << 9) | 0xe -#define EC_WORD_EXCITING (EC_GROUP_ADJECTIVES << 9) | 0xf -#define EC_WORD_THICK (EC_GROUP_ADJECTIVES << 9) | 0x10 -#define EC_WORD_SMOOTH (EC_GROUP_ADJECTIVES << 9) | 0x11 -#define EC_WORD_SLIMY (EC_GROUP_ADJECTIVES << 9) | 0x12 -#define EC_WORD_THIN (EC_GROUP_ADJECTIVES << 9) | 0x13 -#define EC_WORD_BREAK (EC_GROUP_ADJECTIVES << 9) | 0x14 -#define EC_WORD_VORACIOUS (EC_GROUP_ADJECTIVES << 9) | 0x15 -#define EC_WORD_SCATTER (EC_GROUP_ADJECTIVES << 9) | 0x16 -#define EC_WORD_AWESOME (EC_GROUP_ADJECTIVES << 9) | 0x17 -#define EC_WORD_WIMPY (EC_GROUP_ADJECTIVES << 9) | 0x18 -#define EC_WORD_WOBBLY (EC_GROUP_ADJECTIVES << 9) | 0x19 -#define EC_WORD_SHAKY (EC_GROUP_ADJECTIVES << 9) | 0x1a -#define EC_WORD_RIPPED (EC_GROUP_ADJECTIVES << 9) | 0x1b -#define EC_WORD_SHREDDED (EC_GROUP_ADJECTIVES << 9) | 0x1c -#define EC_WORD_INCREASING (EC_GROUP_ADJECTIVES << 9) | 0x1d -#define EC_WORD_YET (EC_GROUP_ADJECTIVES << 9) | 0x1e -#define EC_WORD_DESTROYED (EC_GROUP_ADJECTIVES << 9) | 0x1f -#define EC_WORD_FIERY (EC_GROUP_ADJECTIVES << 9) | 0x20 -#define EC_WORD_LOVEY_DOVEY (EC_GROUP_ADJECTIVES << 9) | 0x21 -#define EC_WORD_HAPPILY (EC_GROUP_ADJECTIVES << 9) | 0x22 -#define EC_WORD_ANTICIPATION (EC_GROUP_ADJECTIVES << 9) | 0x23 +#define EC_WORD_WANDERING ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 0) +#define EC_WORD_RICKETY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 1) +#define EC_WORD_ROCK_SOLID ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 2) +#define EC_WORD_HUNGRY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 3) +#define EC_WORD_TIGHT ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 4) +#define EC_WORD_TICKLISH ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 5) +#define EC_WORD_TWIRLING ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 6) +#define EC_WORD_SPIRALING ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 7) +#define EC_WORD_THIRSTY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 8) +#define EC_WORD_LOLLING ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 9) +#define EC_WORD_SILKY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 10) +#define EC_WORD_SADLY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 11) +#define EC_WORD_HOPELESS ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 12) +#define EC_WORD_USELESS ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 13) +#define EC_WORD_DROOLING ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 14) +#define EC_WORD_EXCITING ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 15) +#define EC_WORD_THICK ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 16) +#define EC_WORD_SMOOTH ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 17) +#define EC_WORD_SLIMY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 18) +#define EC_WORD_THIN ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 19) +#define EC_WORD_BREAK ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 20) +#define EC_WORD_VORACIOUS ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 21) +#define EC_WORD_SCATTER ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 22) +#define EC_WORD_AWESOME ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 23) +#define EC_WORD_WIMPY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 24) +#define EC_WORD_WOBBLY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 25) +#define EC_WORD_SHAKY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 26) +#define EC_WORD_RIPPED ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 27) +#define EC_WORD_SHREDDED ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 28) +#define EC_WORD_INCREASING ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 29) +#define EC_WORD_YET ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 30) +#define EC_WORD_DESTROYED ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 31) +#define EC_WORD_FIERY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 32) +#define EC_WORD_LOVEY_DOVEY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 33) +#define EC_WORD_HAPPILY ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 34) +#define EC_WORD_ANTICIPATION ((EC_GROUP_ADJECTIVES << EC_MASK_BITS) | 35) // EVENTS -#define EC_WORD_APPEAL (EC_GROUP_EVENTS << 9) | 0x0 -#define EC_WORD_EVENTS (EC_GROUP_EVENTS << 9) | 0x1 -#define EC_WORD_STAY_AT_HOME (EC_GROUP_EVENTS << 9) | 0x2 -#define EC_WORD_BERRY (EC_GROUP_EVENTS << 9) | 0x3 -#define EC_WORD_CONTEST (EC_GROUP_EVENTS << 9) | 0x4 -#define EC_WORD_MC (EC_GROUP_EVENTS << 9) | 0x5 -#define EC_WORD_JUDGE (EC_GROUP_EVENTS << 9) | 0x6 -#define EC_WORD_SUPER (EC_GROUP_EVENTS << 9) | 0x7 -#define EC_WORD_STAGE (EC_GROUP_EVENTS << 9) | 0x8 -#define EC_WORD_HALL_OF_FAME (EC_GROUP_EVENTS << 9) | 0x9 -#define EC_WORD_EVOLUTION (EC_GROUP_EVENTS << 9) | 0xa -#define EC_WORD_HYPER (EC_GROUP_EVENTS << 9) | 0xb -#define EC_WORD_BATTLE_TOWER (EC_GROUP_EVENTS << 9) | 0xc -#define EC_WORD_LEADERS (EC_GROUP_EVENTS << 9) | 0xd -#define EC_WORD_BATTLE_ROOM (EC_GROUP_EVENTS << 9) | 0xe -#define EC_WORD_HIDDEN (EC_GROUP_EVENTS << 9) | 0xf -#define EC_WORD_SECRET_BASE (EC_GROUP_EVENTS << 9) | 0x10 -#define EC_WORD_BLEND (EC_GROUP_EVENTS << 9) | 0x11 -#define EC_WORD_POKEBLOCK (EC_GROUP_EVENTS << 9) | 0x12 -#define EC_WORD_MASTER (EC_GROUP_EVENTS << 9) | 0x13 -#define EC_WORD_RANK (EC_GROUP_EVENTS << 9) | 0x14 -#define EC_WORD_RIBBON (EC_GROUP_EVENTS << 9) | 0x15 -#define EC_WORD_CRUSH (EC_GROUP_EVENTS << 9) | 0x16 -#define EC_WORD_DIRECT (EC_GROUP_EVENTS << 9) | 0x17 -#define EC_WORD_TOWER (EC_GROUP_EVENTS << 9) | 0x18 -#define EC_WORD_UNION (EC_GROUP_EVENTS << 9) | 0x19 -#define EC_WORD_ROOM (EC_GROUP_EVENTS << 9) | 0x1a -#define EC_WORD_WIRELESS (EC_GROUP_EVENTS << 9) | 0x1b -#define EC_WORD_FRONTIER (EC_GROUP_EVENTS << 9) | 0x1c +#define EC_WORD_APPEAL ((EC_GROUP_EVENTS << EC_MASK_BITS) | 0) +#define EC_WORD_EVENTS ((EC_GROUP_EVENTS << EC_MASK_BITS) | 1) +#define EC_WORD_STAY_AT_HOME ((EC_GROUP_EVENTS << EC_MASK_BITS) | 2) +#define EC_WORD_BERRY ((EC_GROUP_EVENTS << EC_MASK_BITS) | 3) +#define EC_WORD_CONTEST ((EC_GROUP_EVENTS << EC_MASK_BITS) | 4) +#define EC_WORD_MC ((EC_GROUP_EVENTS << EC_MASK_BITS) | 5) +#define EC_WORD_JUDGE ((EC_GROUP_EVENTS << EC_MASK_BITS) | 6) +#define EC_WORD_SUPER ((EC_GROUP_EVENTS << EC_MASK_BITS) | 7) +#define EC_WORD_STAGE ((EC_GROUP_EVENTS << EC_MASK_BITS) | 8) +#define EC_WORD_HALL_OF_FAME ((EC_GROUP_EVENTS << EC_MASK_BITS) | 9) +#define EC_WORD_EVOLUTION ((EC_GROUP_EVENTS << EC_MASK_BITS) | 10) +#define EC_WORD_HYPER ((EC_GROUP_EVENTS << EC_MASK_BITS) | 11) +#define EC_WORD_BATTLE_TOWER ((EC_GROUP_EVENTS << EC_MASK_BITS) | 12) +#define EC_WORD_LEADERS ((EC_GROUP_EVENTS << EC_MASK_BITS) | 13) +#define EC_WORD_BATTLE_ROOM ((EC_GROUP_EVENTS << EC_MASK_BITS) | 14) +#define EC_WORD_HIDDEN ((EC_GROUP_EVENTS << EC_MASK_BITS) | 15) +#define EC_WORD_SECRET_BASE ((EC_GROUP_EVENTS << EC_MASK_BITS) | 16) +#define EC_WORD_BLEND ((EC_GROUP_EVENTS << EC_MASK_BITS) | 17) +#define EC_WORD_POKEBLOCK ((EC_GROUP_EVENTS << EC_MASK_BITS) | 18) +#define EC_WORD_MASTER ((EC_GROUP_EVENTS << EC_MASK_BITS) | 19) +#define EC_WORD_RANK ((EC_GROUP_EVENTS << EC_MASK_BITS) | 20) +#define EC_WORD_RIBBON ((EC_GROUP_EVENTS << EC_MASK_BITS) | 21) +#define EC_WORD_CRUSH ((EC_GROUP_EVENTS << EC_MASK_BITS) | 22) +#define EC_WORD_DIRECT ((EC_GROUP_EVENTS << EC_MASK_BITS) | 23) +#define EC_WORD_TOWER ((EC_GROUP_EVENTS << EC_MASK_BITS) | 24) +#define EC_WORD_UNION ((EC_GROUP_EVENTS << EC_MASK_BITS) | 25) +#define EC_WORD_ROOM ((EC_GROUP_EVENTS << EC_MASK_BITS) | 26) +#define EC_WORD_WIRELESS ((EC_GROUP_EVENTS << EC_MASK_BITS) | 27) +#define EC_WORD_FRONTIER ((EC_GROUP_EVENTS << EC_MASK_BITS) | 28) // TRENDY_SAYING -#define EC_WORD_KTHX_BYE (EC_GROUP_TRENDY_SAYING << 9) | 0x0 -#define EC_WORD_YES_SIR_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x1 -#define EC_WORD_AVANT_GARDE (EC_GROUP_TRENDY_SAYING << 9) | 0x2 -#define EC_WORD_COUPLE (EC_GROUP_TRENDY_SAYING << 9) | 0x3 -#define EC_WORD_MUCH_OBLIGED (EC_GROUP_TRENDY_SAYING << 9) | 0x4 -#define EC_WORD_YEEHAW_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x5 -#define EC_WORD_MEGA (EC_GROUP_TRENDY_SAYING << 9) | 0x6 -#define EC_WORD_1_HIT_KO_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x7 -#define EC_WORD_DESTINY (EC_GROUP_TRENDY_SAYING << 9) | 0x8 -#define EC_WORD_CANCEL (EC_GROUP_TRENDY_SAYING << 9) | 0x9 -#define EC_WORD_NEW (EC_GROUP_TRENDY_SAYING << 9) | 0xa -#define EC_WORD_FLATTEN (EC_GROUP_TRENDY_SAYING << 9) | 0xb -#define EC_WORD_KIDDING (EC_GROUP_TRENDY_SAYING << 9) | 0xc -#define EC_WORD_LOSER (EC_GROUP_TRENDY_SAYING << 9) | 0xd -#define EC_WORD_LOSING (EC_GROUP_TRENDY_SAYING << 9) | 0xe -#define EC_WORD_HAPPENING (EC_GROUP_TRENDY_SAYING << 9) | 0xf -#define EC_WORD_HIP_AND (EC_GROUP_TRENDY_SAYING << 9) | 0x10 -#define EC_WORD_SHAKE (EC_GROUP_TRENDY_SAYING << 9) | 0x11 -#define EC_WORD_SHADY (EC_GROUP_TRENDY_SAYING << 9) | 0x12 -#define EC_WORD_UPBEAT (EC_GROUP_TRENDY_SAYING << 9) | 0x13 -#define EC_WORD_MODERN (EC_GROUP_TRENDY_SAYING << 9) | 0x14 -#define EC_WORD_SMELL_YA (EC_GROUP_TRENDY_SAYING << 9) | 0x15 -#define EC_WORD_BANG (EC_GROUP_TRENDY_SAYING << 9) | 0x16 -#define EC_WORD_KNOCKOUT (EC_GROUP_TRENDY_SAYING << 9) | 0x17 -#define EC_WORD_HASSLE (EC_GROUP_TRENDY_SAYING << 9) | 0x18 -#define EC_WORD_WINNER (EC_GROUP_TRENDY_SAYING << 9) | 0x19 -#define EC_WORD_FEVER (EC_GROUP_TRENDY_SAYING << 9) | 0x1a -#define EC_WORD_WANNABE (EC_GROUP_TRENDY_SAYING << 9) | 0x1b -#define EC_WORD_BABY (EC_GROUP_TRENDY_SAYING << 9) | 0x1c -#define EC_WORD_HEART (EC_GROUP_TRENDY_SAYING << 9) | 0x1d -#define EC_WORD_OLD (EC_GROUP_TRENDY_SAYING << 9) | 0x1e -#define EC_WORD_YOUNG (EC_GROUP_TRENDY_SAYING << 9) | 0x1f -#define EC_WORD_UGLY (EC_GROUP_TRENDY_SAYING << 9) | 0x20 +#define EC_WORD_KTHX_BYE ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 0) +#define EC_WORD_YES_SIR_EXCL ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 1) +#define EC_WORD_AVANT_GARDE ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 2) +#define EC_WORD_COUPLE ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 3) +#define EC_WORD_MUCH_OBLIGED ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 4) +#define EC_WORD_YEEHAW_EXCL ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 5) +#define EC_WORD_MEGA ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 6) +#define EC_WORD_1_HIT_KO_EXCL ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 7) +#define EC_WORD_DESTINY ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 8) +#define EC_WORD_CANCEL ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 9) +#define EC_WORD_NEW ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 10) +#define EC_WORD_FLATTEN ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 11) +#define EC_WORD_KIDDING ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 12) +#define EC_WORD_LOSER ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 13) +#define EC_WORD_LOSING ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 14) +#define EC_WORD_HAPPENING ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 15) +#define EC_WORD_HIP_AND ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 16) +#define EC_WORD_SHAKE ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 17) +#define EC_WORD_SHADY ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 18) +#define EC_WORD_UPBEAT ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 19) +#define EC_WORD_MODERN ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 20) +#define EC_WORD_SMELL_YA ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 21) +#define EC_WORD_BANG ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 22) +#define EC_WORD_KNOCKOUT ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 23) +#define EC_WORD_HASSLE ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 24) +#define EC_WORD_WINNER ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 25) +#define EC_WORD_FEVER ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 26) +#define EC_WORD_WANNABE ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 27) +#define EC_WORD_BABY ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 28) +#define EC_WORD_HEART ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 29) +#define EC_WORD_OLD ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 30) +#define EC_WORD_YOUNG ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 31) +#define EC_WORD_UGLY ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 32) #define NUM_ADDITIONAL_PHRASES 33 // Special Berry Masters Wife phrases @@ -1109,17 +1109,22 @@ #define EC_MAX_WORDS_IN_GROUP 270 // The closest is words by letter S, at 262 -#define EC_MASK_GROUP 0x7F -#define EC_MASK_INDEX 0x1FF +// If the Pokémon or Move group tables have an ID higher than 511, the word will be seen as +// invalid due to the index looping back to the beginning and not matching the proper value. +// To allow for higher values on those tables, increase the value of EC_MASK_BITS and the max value +// will increase to (2 ^ EC_MASK_BITS). Keep in mind that existing saved words will be shifted. +#define EC_MASK_BITS 9 +#define EC_MASK_GROUP ((1 << (16 - EC_MASK_BITS)) - 1) +#define EC_MASK_INDEX ((1 << EC_MASK_BITS) - 1) -#define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon) -#define EC_POKEMON_NATIONAL(mon) ((EC_GROUP_POKEMON_NATIONAL << 9) | SPECIES_##mon) -#define EC_MOVE(move) ((EC_GROUP_MOVE_1 << 9) | MOVE_##move) -#define EC_MOVE2(move) ((EC_GROUP_MOVE_2 << 9) | MOVE_##move) +#define EC_POKEMON(mon) ((EC_GROUP_POKEMON << EC_MASK_BITS) | SPECIES_##mon) +#define EC_POKEMON_NATIONAL(mon) ((EC_GROUP_POKEMON_NATIONAL << EC_MASK_BITS) | SPECIES_##mon) +#define EC_MOVE(move) ((EC_GROUP_MOVE_1 << EC_MASK_BITS) | MOVE_##move) +#define EC_MOVE2(move) ((EC_GROUP_MOVE_2 << EC_MASK_BITS) | MOVE_##move) -#define EC_GROUP(word) ((word) >> 9) +#define EC_GROUP(word) ((word) >> EC_MASK_BITS) #define EC_INDEX(word) ((word) & EC_MASK_INDEX) -#define EC_WORD(group, index) ((((group) & EC_MASK_GROUP) << 9) | ((index) & EC_MASK_INDEX)) +#define EC_WORD(group, index) ((((group) & EC_MASK_GROUP) << EC_MASK_BITS) | ((index) & EC_MASK_INDEX)) #define EC_EMPTY_WORD 0xFFFF diff --git a/include/constants/game_stat.h b/include/constants/game_stat.h index 2acdfd8a3..053e4a8f9 100644 --- a/include/constants/game_stat.h +++ b/include/constants/game_stat.h @@ -1,60 +1,60 @@ #ifndef GUARD_CONSTANTS_GAME_STAT_H #define GUARD_CONSTANTS_GAME_STAT_H -#define GAME_STAT_SAVED_GAME 0 -#define GAME_STAT_FIRST_HOF_PLAY_TIME 1 -#define GAME_STAT_STARTED_TRENDS 2 -#define GAME_STAT_PLANTED_BERRIES 3 -#define GAME_STAT_TRADED_BIKES 4 -#define GAME_STAT_STEPS 5 -#define GAME_STAT_GOT_INTERVIEWED 6 -#define GAME_STAT_TOTAL_BATTLES 7 -#define GAME_STAT_WILD_BATTLES 8 -#define GAME_STAT_TRAINER_BATTLES 9 -#define GAME_STAT_ENTERED_HOF 10 -#define GAME_STAT_POKEMON_CAPTURES 11 -#define GAME_STAT_FISHING_CAPTURES 12 -#define GAME_STAT_HATCHED_EGGS 13 -#define GAME_STAT_EVOLVED_POKEMON 14 -#define GAME_STAT_USED_POKECENTER 15 -#define GAME_STAT_RESTED_AT_HOME 16 -#define GAME_STAT_ENTERED_SAFARI_ZONE 17 -#define GAME_STAT_USED_CUT 18 -#define GAME_STAT_USED_ROCK_SMASH 19 -#define GAME_STAT_MOVED_SECRET_BASE 20 -#define GAME_STAT_POKEMON_TRADES 21 -#define GAME_STAT_UNKNOWN_22 22 -#define GAME_STAT_LINK_BATTLE_WINS 23 -#define GAME_STAT_LINK_BATTLE_LOSSES 24 -#define GAME_STAT_LINK_BATTLE_DRAWS 25 -#define GAME_STAT_USED_SPLASH 26 -#define GAME_STAT_USED_STRUGGLE 27 -#define GAME_STAT_SLOT_JACKPOTS 28 -#define GAME_STAT_CONSECUTIVE_ROULETTE_WINS 29 -#define GAME_STAT_ENTERED_BATTLE_TOWER 30 -#define GAME_STAT_UNKNOWN_31 31 -#define GAME_STAT_BATTLE_TOWER_BEST_STREAK 32 -#define GAME_STAT_POKEBLOCKS 33 -#define GAME_STAT_POKEBLOCKS_WITH_FRIENDS 34 -#define GAME_STAT_WON_LINK_CONTEST 35 -#define GAME_STAT_ENTERED_CONTEST 36 -#define GAME_STAT_WON_CONTEST 37 -#define GAME_STAT_SHOPPED 38 -#define GAME_STAT_USED_ITEMFINDER 39 -#define GAME_STAT_GOT_RAINED_ON 40 -#define GAME_STAT_CHECKED_POKEDEX 41 -#define GAME_STAT_RECEIVED_RIBBONS 42 -#define GAME_STAT_JUMPED_DOWN_LEDGES 43 -#define GAME_STAT_WATCHED_TV 44 -#define GAME_STAT_CHECKED_CLOCK 45 -#define GAME_STAT_WON_POKEMON_LOTTERY 46 -#define GAME_STAT_USED_DAYCARE 47 -#define GAME_STAT_RODE_CABLE_CAR 48 -#define GAME_STAT_ENTERED_HOT_SPRINGS 49 -#define GAME_STAT_NUM_UNION_ROOM_BATTLES 50 -#define GAME_STAT_PLAYED_BERRY_CRUSH 51 +#define GAME_STAT_SAVED_GAME 0 +#define GAME_STAT_FIRST_HOF_PLAY_TIME 1 +#define GAME_STAT_STARTED_TRENDS 2 +#define GAME_STAT_PLANTED_BERRIES 3 +#define GAME_STAT_TRADED_BIKES 4 +#define GAME_STAT_STEPS 5 +#define GAME_STAT_GOT_INTERVIEWED 6 +#define GAME_STAT_TOTAL_BATTLES 7 +#define GAME_STAT_WILD_BATTLES 8 +#define GAME_STAT_TRAINER_BATTLES 9 +#define GAME_STAT_ENTERED_HOF 10 +#define GAME_STAT_POKEMON_CAPTURES 11 +#define GAME_STAT_FISHING_CAPTURES 12 +#define GAME_STAT_HATCHED_EGGS 13 +#define GAME_STAT_EVOLVED_POKEMON 14 +#define GAME_STAT_USED_POKECENTER 15 +#define GAME_STAT_RESTED_AT_HOME 16 +#define GAME_STAT_ENTERED_SAFARI_ZONE 17 +#define GAME_STAT_USED_CUT 18 +#define GAME_STAT_USED_ROCK_SMASH 19 +#define GAME_STAT_MOVED_SECRET_BASE 20 +#define GAME_STAT_POKEMON_TRADES 21 +#define GAME_STAT_UNKNOWN_22 22 +#define GAME_STAT_LINK_BATTLE_WINS 23 +#define GAME_STAT_LINK_BATTLE_LOSSES 24 +#define GAME_STAT_LINK_BATTLE_DRAWS 25 +#define GAME_STAT_USED_SPLASH 26 +#define GAME_STAT_USED_STRUGGLE 27 +#define GAME_STAT_SLOT_JACKPOTS 28 +#define GAME_STAT_CONSECUTIVE_ROULETTE_WINS 29 +#define GAME_STAT_ENTERED_BATTLE_TOWER 30 +#define GAME_STAT_UNKNOWN_31 31 +#define GAME_STAT_BATTLE_TOWER_SINGLES_STREAK 32 +#define GAME_STAT_POKEBLOCKS 33 +#define GAME_STAT_POKEBLOCKS_WITH_FRIENDS 34 +#define GAME_STAT_WON_LINK_CONTEST 35 +#define GAME_STAT_ENTERED_CONTEST 36 +#define GAME_STAT_WON_CONTEST 37 +#define GAME_STAT_SHOPPED 38 +#define GAME_STAT_USED_ITEMFINDER 39 +#define GAME_STAT_GOT_RAINED_ON 40 +#define GAME_STAT_CHECKED_POKEDEX 41 +#define GAME_STAT_RECEIVED_RIBBONS 42 +#define GAME_STAT_JUMPED_DOWN_LEDGES 43 +#define GAME_STAT_WATCHED_TV 44 +#define GAME_STAT_CHECKED_CLOCK 45 +#define GAME_STAT_WON_POKEMON_LOTTERY 46 +#define GAME_STAT_USED_DAYCARE 47 +#define GAME_STAT_RODE_CABLE_CAR 48 +#define GAME_STAT_ENTERED_HOT_SPRINGS 49 +#define GAME_STAT_NUM_UNION_ROOM_BATTLES 50 +#define GAME_STAT_PLAYED_BERRY_CRUSH 51 -#define NUM_USED_GAME_STATS 52 -#define NUM_GAME_STATS 64 +#define NUM_USED_GAME_STATS 52 +#define NUM_GAME_STATS 64 #endif // GUARD_CONSTANTS_GAME_STAT_H diff --git a/include/constants/hold_effects.h b/include/constants/hold_effects.h index e0361795d..cd4256632 100644 --- a/include/constants/hold_effects.h +++ b/include/constants/hold_effects.h @@ -152,6 +152,14 @@ #define HOLD_EFFECT_HEAVY_DUTY_BOOTS 173 #define HOLD_EFFECT_THROAT_SPRAY 174 +// Gen9 hold effects +#define HOLD_EFFECT_ABILITY_SHIELD 175 +#define HOLD_EFFECT_CLEAR_AMULET 176 +#define HOLD_EFFECT_MIRROR_HERB 177 // Not implemented. +#define HOLD_EFFECT_PUNCHING_GLOVE 178 +#define HOLD_EFFECT_COVERT_CLOAK 179 +#define HOLD_EFFECT_LOADED_DICE 180 + #define HOLD_EFFECT_CHOICE(holdEffect)((holdEffect == HOLD_EFFECT_CHOICE_BAND || holdEffect == HOLD_EFFECT_CHOICE_SCARF || holdEffect == HOLD_EFFECT_CHOICE_SPECS)) // Terrain seed params diff --git a/include/constants/items.h b/include/constants/items.h index 9f931686e..1cb2803f3 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -928,7 +928,13 @@ #define ITEM_RUBY 756 #define ITEM_SAPPHIRE 757 -#define ITEMS_COUNT 758 +#define ITEM_ABILITY_SHIELD 758 +#define ITEM_CLEAR_AMULET 759 +#define ITEM_PUNCHING_GLOVE 760 +#define ITEM_COVERT_CLOAK 761 +#define ITEM_LOADED_DICE 762 + +#define ITEMS_COUNT 763 #define ITEM_FIELD_ARROW ITEMS_COUNT // A special item id associated with "Cancel"/"Exit" etc. in a list of items or decorations diff --git a/include/constants/maps.h b/include/constants/maps.h index 626054b43..1bf11fa5c 100644 --- a/include/constants/maps.h +++ b/include/constants/maps.h @@ -14,8 +14,8 @@ // IDs for dynamic warps. Both are used in the dest_warp_id field for warp events, but they // are never read in practice. A dest_map of MAP_DYNAMIC is used to indicate that a -// dynamic warp should be used, at which point the warp id is ignored. It can be passed to -// SetDynamicWarp/SetDynamicWarpWithCoords as the first argument, but this argument is unused. +// dynamic warp should be used, at which point the warp id is ignored. They can be passed +// as the argument to SetWarpDestinationToDynamicWarp, but this argument is unused. // As only one dynamic warp is saved at a time there's no need to distinguish between them. #define WARP_ID_SECRET_BASE 0x7E #define WARP_ID_DYNAMIC 0x7F diff --git a/include/constants/metatile_behaviors.h b/include/constants/metatile_behaviors.h index 86f35ce50..1f6d4e87c 100755 --- a/include/constants/metatile_behaviors.h +++ b/include/constants/metatile_behaviors.h @@ -18,7 +18,7 @@ #define MB_MOSSDEEP_GYM_WARP 0x0E #define MB_MT_PYRE_HOLE 0x0F #define MB_POND_WATER 0x10 -#define MB_SEMI_DEEP_WATER 0x11 +#define MB_INTERIOR_DEEP_WATER 0x11 // Used by interior maps; functionally the same as MB_DEEP_WATER #define MB_DEEP_WATER 0x12 #define MB_WATERFALL 0x13 #define MB_SOOTOPOLIS_DEEP_WATER 0x14 diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h index ff10f52ee..71aac2308 100644 --- a/include/constants/metatile_labels.h +++ b/include/constants/metatile_labels.h @@ -684,8 +684,6 @@ #define METATILE_SecretBase_BigPlant_TopRight 0x2E6 #define METATILE_SecretBase_BigPlant_BaseLeft1 0x2EC #define METATILE_SecretBase_BigPlant_BaseRight1 0x2ED -#define METATILE_SecretBase_BigPlant_TopLeftWall 0x2E5 -#define METATILE_SecretBase_BigPlant_TopRightWall 0x2E6 #define METATILE_SecretBase_BigPlant_BaseLeft2 0x2EE #define METATILE_SecretBase_BigPlant_BaseRight2 0x2EF #define METATILE_SecretBase_GorgeousPlant_TopLeft 0x2F0 diff --git a/include/constants/mystery_gift.h b/include/constants/mystery_gift.h index 8ff71c3aa..13eb7f103 100644 --- a/include/constants/mystery_gift.h +++ b/include/constants/mystery_gift.h @@ -44,4 +44,12 @@ #define WONDER_CARD_FLAG_OFFSET 1000 +#define NEWS_REWARD_NONE 0 +#define NEWS_REWARD_RECV_SMALL 1 +#define NEWS_REWARD_RECV_BIG 2 +#define NEWS_REWARD_WAITING 3 +#define NEWS_REWARD_SENT_SMALL 4 +#define NEWS_REWARD_SENT_BIG 5 +#define NEWS_REWARD_AT_MAX 6 + #endif //GUARD_CONSTANTS_MYSTERY_GIFT_H diff --git a/include/constants/vars.h b/include/constants/vars.h index be32c7498..e0b08f447 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -60,7 +60,7 @@ #define VAR_POISON_STEP_COUNTER 0x402B #define VAR_RESET_RTC_ENABLE 0x402C #define VAR_ENIGMA_BERRY_AVAILABLE 0x402D -#define VAR_WONDER_NEWS_COUNTER 0x402E +#define VAR_WONDER_NEWS_STEP_COUNTER 0x402E #define VAR_FRONTIER_MANIAC_FACILITY 0x402F #define VAR_FRONTIER_GAMBLER_CHALLENGE 0x4030 diff --git a/include/gba/defines.h b/include/gba/defines.h index 6d96e9a9e..82caf56e6 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -78,4 +78,10 @@ #define TOTAL_OBJ_TILE_COUNT 1024 +#define PLTT_SIZEOF(n) ((n) * sizeof(u16)) +#define PLTT_SIZE_4BPP PLTT_SIZEOF(16) +#define PLTT_SIZE_8BPP PLTT_SIZEOF(256) + +#define PLTT_OFFSET_4BPP(n) ((n) * PLTT_SIZE_4BPP) + #endif // GUARD_GBA_DEFINES_H diff --git a/include/gba/multiboot.h b/include/gba/multiboot.h index 14b6594b2..64a860284 100644 --- a/include/gba/multiboot.h +++ b/include/gba/multiboot.h @@ -10,7 +10,7 @@ struct MultiBootParam { u32 system_work[5]; // 00 u8 handshake_data; // 14 - u8 padding; // 15 + //u8 padding; // 15 u16 handshake_timeout; // 16 u8 probe_count; // 18 u8 client_data[MULTIBOOT_NCHILD]; // 19 diff --git a/include/global.berry.h b/include/global.berry.h index 8d1aa369d..29f1cfe14 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -40,6 +40,7 @@ struct Berry2 u8 bitter; u8 sour; u8 smoothness; + //u8 padding; }; struct EnigmaBerry diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 4da3154e2..26e5c44bf 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -41,7 +41,7 @@ struct Tileset /*0x01*/ bool8 isSecondary; /*0x04*/ const u32 *tiles; /*0x08*/ const u16 (*palettes)[16]; - /*0x0c*/ const u16 *metatiles; + /*0x0C*/ const u16 *metatiles; /*0x10*/ const u16 *metatileAttributes; /*0x14*/ TilesetCB callback; }; @@ -51,7 +51,7 @@ struct MapLayout /*0x00*/ s32 width; /*0x04*/ s32 height; /*0x08*/ u16 *border; - /*0x0c*/ u16 *map; + /*0x0C*/ u16 *map; /*0x10*/ struct Tileset *primaryTileset; /*0x14*/ struct Tileset *secondaryTileset; }; @@ -68,16 +68,19 @@ struct ObjectEventTemplate /*0x00*/ u8 localId; /*0x01*/ u8 graphicsId; /*0x02*/ u8 inConnection; // Leftover from FRLG + /*0x03*/ //u8 padding1; /*0x04*/ s16 x; /*0x06*/ s16 y; /*0x08*/ u8 elevation; /*0x09*/ u8 movementType; /*0x0A*/ u16 movementRangeX:4; u16 movementRangeY:4; + //u16 padding2:8; /*0x0C*/ u16 trainerType; /*0x0E*/ u16 trainerRange_berryTreeId; /*0x10*/ const u8 *script; /*0x14*/ u16 flagId; + /*0x16*/ //u8 padding3[2]; }; struct WarpEvent @@ -192,6 +195,7 @@ struct ObjectEvent u32 disableJumpLandingGroundEffect:1; u32 fixedPriority:1; u32 hideReflection:1; + //u32 padding:4; /*0x04*/ u8 spriteId; /*0x05*/ u8 graphicsId; /*0x06*/ u8 movementType; @@ -217,6 +221,7 @@ struct ObjectEvent /*0x20*/ u8 previousMovementDirection; /*0x21*/ u8 directionSequenceIndex; /*0x22*/ u8 playerCopyableMovement; // COPY_MOVE_* + /*0x23*/ //u8 padding2; /*size = 0x24*/ }; diff --git a/include/global.h b/include/global.h index 2f5a5c871..7324335d2 100644 --- a/include/global.h +++ b/include/global.h @@ -139,6 +139,14 @@ #define NUM_FLAG_BYTES ROUND_BITS_TO_BYTES(FLAGS_COUNT) #define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES) +// Calls m0/m1/.../m8 depending on how many arguments are passed. +#define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__) +#define NARG_8(...) NARG_8_(_, ##__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0) +#define NARG_8_(_, a, b, c, d, e, f, g, h, N, ...) N + +#define CAT(a, b) CAT_(a, b) +#define CAT_(a, b) a ## b + // This produces an error at compile-time if expr is zero. // It looks like file.c:line: size of array `id' is negative #define STATIC_ASSERT(expr, id) typedef char id[(expr) ? 1 : -1]; @@ -249,9 +257,11 @@ struct ApprenticeMon struct Apprentice { u8 id:5; - u8 lvlMode:2; // + 1 + u8 lvlMode:2; + //u8 padding1:1; u8 numQuestions; u8 number; + //u8 padding2; struct ApprenticeMon party[MULTI_PARTY_SIZE]; u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; u8 playerId[TRAINER_ID_LENGTH]; @@ -299,6 +309,7 @@ struct EmeraldBattleTowerRecord /*0x28*/ u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x34*/ struct BattleTowerPokemon party[MAX_FRONTIER_PARTY_SIZE]; /*0xE4*/ u8 language; + /*0xE7*/ //u8 padding[3]; /*0xE8*/ u32 checksum; }; @@ -331,14 +342,17 @@ struct DomeMonData u16 moves[MAX_MON_MOVES]; u8 evs[NUM_STATS]; u8 nature; + //u8 padding; }; struct RentalMon { u16 monId; + //u8 padding1[2]; u32 personality; u8 ivs; u8 abilityNum; + //u8 padding2[2]; }; struct BattleDomeTrainer @@ -360,8 +374,9 @@ struct BattleFrontier /*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer; /*0xCA8*/ u8 challengeStatus; /*0xCA9*/ u8 lvlMode:2; - /*0xCA9*/ u8 challengePaused:1; - /*0xCA9*/ u8 disableRecordBattle:1; + u8 challengePaused:1; + u8 disableRecordBattle:1; + //u8 padding1:4; /*0xCAA*/ u16 selectedPartyMons[MAX_FRONTIER_PARTY_SIZE]; /*0xCB2*/ u16 curChallengeBattleNum; // Battle number / room number (Pike) / floor number (Pyramid) /*0xCB4*/ u16 trainerIds[20]; @@ -405,16 +420,19 @@ struct BattleFrontier /*0xE08*/ u16 pikeRecordStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE0C*/ u16 pikeTotalStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE10*/ u8 pikeHintedRoomIndex:3; - /*0xE10*/ u8 pikeHintedRoomType:4; - /*0xE10*/ u8 pikeHealingRoomsDisabled:1; + u8 pikeHintedRoomType:4; + u8 pikeHealingRoomsDisabled:1; + /*0xE11*/ //u8 padding2; /*0xE12*/ u16 pikeHeldItemsBackup[FRONTIER_PARTY_SIZE]; /*0xE18*/ u16 pyramidPrize; /*0xE1A*/ u16 pyramidWinStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE1E*/ u16 pyramidRecordStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE22*/ u16 pyramidRandoms[4]; /*0xE2A*/ u8 pyramidTrainerFlags; // 1 bit for each trainer (MAX_PYRAMID_TRAINERS) + /*0xE2B*/ //u8 padding3; /*0xE2C*/ struct PyramidBag pyramidBag; /*0xE68*/ u8 pyramidLightRadius; + /*0xE69*/ //u8 padding4; /*0xE6A*/ u16 verdanturfTentPrize; /*0xE6C*/ u16 fallarborTentPrize; /*0xE6E*/ u16 slateportTentPrize; @@ -439,6 +457,7 @@ struct ApprenticeQuestion u8 monId:2; u8 moveSlot:2; u8 suggestedChange:2; // TRUE if told to use held item or second move, FALSE if told to use no item or first move + //u8 padding; u16 data; // used both as an itemId and a moveId }; @@ -449,9 +468,11 @@ struct PlayersApprentice /*0xB1*/ u8 questionsAnswered:4; /*0xB1*/ u8 leadMonId:2; /*0xB2*/ u8 party:3; - /*0xB2*/ u8 saveId:2; + u8 saveId:2; + //u8 padding1:3; /*0xB3*/ u8 unused; /*0xB4*/ u8 speciesIds[MULTI_PARTY_SIZE]; + /*0xB7*/ //u8 padding2; /*0xB8*/ struct ApprenticeQuestion questions[APPRENTICE_MAX_QUESTIONS]; }; @@ -461,6 +482,7 @@ struct RankingHall1P u16 winStreak; u8 name[PLAYER_NAME_LENGTH + 1]; u8 language; + //u8 padding; }; struct RankingHall2P @@ -471,6 +493,7 @@ struct RankingHall2P u8 name1[PLAYER_NAME_LENGTH + 1]; u8 name2[PLAYER_NAME_LENGTH + 1]; u8 language; + //u8 padding; }; struct SaveBlock2 @@ -490,6 +513,8 @@ struct SaveBlock2 u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] u16 optionsBattleSceneOff:1; // whether battle animations are disabled u16 regionMapZoom:1; // whether the map is zoomed in + //u16 padding1:4; + //u16 padding2; /*0x18*/ struct Pokedex pokedex; /*0x90*/ u8 filler_90[0x8]; /*0x98*/ struct Time localTimeOffset; @@ -534,6 +559,7 @@ struct SecretBase /*0x1AAD*/ u8 unused; /*0x1AAE*/ u8 decorations[DECOR_MAX_SECRET_BASE]; /*0x1ABE*/ u8 decorationPositions[DECOR_MAX_SECRET_BASE]; + /*0x1ACE*/ //u8 padding[2]; /*0x1AD0*/ struct SecretBaseParty party; }; @@ -548,6 +574,7 @@ struct WarpData s8 mapGroup; s8 mapNum; s8 warpId; + //u8 padding; s16 x, y; }; @@ -592,6 +619,7 @@ struct RamScriptData u8 mapNum; u8 objectId; u8 script[995]; + //u8 padding; }; struct RamScript @@ -606,6 +634,7 @@ struct DewfordTrend u16 trendiness:7; u16 maxTrendiness:7; u16 gainingTrendiness:1; + //u16 padding:1; u16 rand; u16 words[2]; }; /*size = 0x8*/ @@ -618,6 +647,7 @@ struct MauvilleManCommon struct MauvilleManBard { /*0x00*/ u8 id; + /*0x01*/ //u8 padding1; /*0x02*/ u16 songLyrics[BARD_SONG_LENGTH]; /*0x0E*/ u16 temporaryLyrics[BARD_SONG_LENGTH]; /*0x1A*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; @@ -625,6 +655,7 @@ struct MauvilleManBard /*0x25*/ u8 playerTrainerId[TRAINER_ID_LENGTH]; /*0x29*/ bool8 hasChangedSong; /*0x2A*/ u8 language; + /*0x2B*/ //u8 padding2; }; /*size = 0x2C*/ struct MauvilleManStoryteller @@ -643,9 +674,11 @@ struct MauvilleManGiddy /*0x00*/ u8 id; /*0x01*/ u8 taleCounter; /*0x02*/ u8 questionNum; + /*0x03*/ //u8 padding1; /*0x04*/ u16 randomWords[GIDDY_MAX_TALES]; /*0x18*/ u8 questionList[GIDDY_MAX_QUESTIONS]; /*0x20*/ u8 language; + /*0x21*/ //u8 padding2; }; /*size = 0x2C*/ struct MauvilleManHipster @@ -690,6 +723,7 @@ struct LinkBattleRecords { struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT]; u8 languages[LINK_B_RECORDS_COUNT]; + //u8 padding; }; struct RecordMixingGiftData @@ -715,6 +749,7 @@ struct ContestWinner u8 monName[POKEMON_NAME_LENGTH + 1]; u8 trainerName[PLAYER_NAME_LENGTH + 1]; u8 contestRank; + //u8 padding; }; struct Mail @@ -747,6 +782,7 @@ struct DayCare struct DaycareMon mons[DAYCARE_MON_COUNT]; u32 offspringPersonality; u8 stepCounter; + //u8 padding[3]; }; struct LilycoveLadyQuiz @@ -759,10 +795,10 @@ struct LilycoveLadyQuiz /*0x018*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x020*/ u16 playerTrainerId[TRAINER_ID_LENGTH]; /*0x028*/ u16 prize; - /*0x02a*/ bool8 waitingForChallenger; - /*0x02b*/ u8 questionId; - /*0x02c*/ u8 prevQuestionId; - /*0x02d*/ u8 language; + /*0x02A*/ bool8 waitingForChallenger; + /*0x02B*/ u8 questionId; + /*0x02C*/ u8 prevQuestionId; + /*0x02D*/ u8 language; }; struct LilycoveLadyFavor @@ -772,10 +808,12 @@ struct LilycoveLadyFavor /*0x002*/ bool8 likedItem; /*0x003*/ u8 numItemsGiven; /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x00c*/ u8 favorId; - /*0x00e*/ u16 itemId; + /*0x00C*/ u8 favorId; + /*0x00D*/ //u8 padding1; + /*0x00E*/ u16 itemId; /*0x010*/ u16 bestItem; /*0x012*/ u8 language; + /*0x013*/ //u8 padding2; }; struct LilycoveLadyContest @@ -785,9 +823,9 @@ struct LilycoveLadyContest /*0x002*/ u8 numGoodPokeblocksGiven; /*0x003*/ u8 numOtherPokeblocksGiven; /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x00c*/ u8 maxSheen; - /*0x00d*/ u8 category; - /*0x00e*/ u8 language; + /*0x00C*/ u8 maxSheen; + /*0x00D*/ u8 category; + /*0x00E*/ u8 language; }; typedef union // 3b58 @@ -796,7 +834,7 @@ typedef union // 3b58 struct LilycoveLadyFavor favor; struct LilycoveLadyContest contest; u8 id; - u8 pad[0x40]; + u8 filler[0x40]; } LilycoveLady; struct WaldaPhrase @@ -806,6 +844,7 @@ struct WaldaPhrase u8 iconId; u8 patternId; bool8 patternUnlocked; + //u8 padding; }; struct TrainerNameRecord @@ -821,20 +860,22 @@ struct TrainerHillSave /*0x3D6C*/ u8 unk_3D6C; /*0x3D6D*/ u8 unused; /*0x3D6E*/ u16 receivedPrize:1; - /*0x3D6E*/ u16 checkedFinalTime:1; - /*0x3D6E*/ u16 spokeToOwner:1; - /*0x3D6E*/ u16 hasLost:1; - /*0x3D6E*/ u16 maybeECardScanDuringChallenge:1; - /*0x3D6E*/ u16 field_3D6E_0f:1; - /*0x3D6E*/ u16 mode:2; // HILL_MODE_* + u16 checkedFinalTime:1; + u16 spokeToOwner:1; + u16 hasLost:1; + u16 maybeECardScanDuringChallenge:1; + u16 field_3D6E_0f:1; + u16 mode:2; // HILL_MODE_* + //u16 padding:8; }; struct WonderNewsMetadata { u8 newsType:2; - u8 sentCounter:3; - u8 getCounter:3; - u8 rand; + u8 sentRewardCounter:3; + u8 rewardCounter:3; + u8 berry; + //u8 padding[2]; }; struct WonderNews @@ -860,6 +901,7 @@ struct WonderCard u8 bodyText[WONDER_CARD_BODY_TEXT_LINES][WONDER_CARD_TEXT_LENGTH]; u8 footerLine1Text[WONDER_CARD_TEXT_LENGTH]; u8 footerLine2Text[WONDER_CARD_TEXT_LENGTH]; + //u8 padding[2]; }; struct WonderCardMetadata @@ -906,7 +948,7 @@ struct ExternalEventFlags { u8 usedBoxRS:1; // Set by Pokémon Box: Ruby & Sapphire; denotes whether this save has connected to it and triggered the free False Swipe Swablu Egg giveaway. u8 boxRSEggsUnlocked:2; // Set by Pokémon Box: Ruby & Sapphire; denotes the number of Eggs unlocked from deposits; 1 for ExtremeSpeed Zigzagoon (at 100 deposited), 2 for Pay Day Skitty (at 500 deposited), 3 for Surf Pichu (at 1499 deposited) - u8 padding:5; + //u8 padding:5; u8 unknownFlag1; u8 receivedGCNJirachi; // Both the US Colosseum Bonus Disc and PAL/AUS Pokémon Channel use this field. One cannot receive a WISHMKR Jirachi and CHANNEL Jirachi with the same savefile. u8 unknownFlag3; @@ -942,9 +984,11 @@ struct SaveBlock1 /*0x2E*/ u8 weather; /*0x2F*/ u8 weatherCycleStage; /*0x30*/ u8 flashLevel; + /*0x31*/ //u8 padding1; /*0x32*/ u16 mapLayoutId; /*0x34*/ u16 mapView[0x100]; /*0x234*/ u8 playerPartyCount; + /*0x235*/ //u8 padding2[3]; /*0x238*/ struct Pokemon playerParty[PARTY_SIZE]; /*0x490*/ u32 money; /*0x494*/ u16 coins; @@ -961,6 +1005,7 @@ struct SaveBlock1 /*0x9C2*/ u8 unused_9C2[6]; /*0x9C8*/ u16 trainerRematchStepCounter; /*0x9CA*/ u8 trainerRematches[MAX_REMATCH_ENTRIES]; + /*0xA2E*/ //u8 padding3[2]; /*0xA30*/ struct ObjectEvent objectEvents[OBJECT_EVENTS_COUNT]; /*0xC70*/ struct ObjectEventTemplate objectEventTemplates[OBJECT_EVENT_TEMPLATES_COUNT]; /*0x1270*/ u8 flags[NUM_FLAG_BYTES]; @@ -978,6 +1023,7 @@ struct SaveBlock1 /*0x278E*/ u8 decorationPosters[10]; /*0x2798*/ u8 decorationDolls[40]; /*0x27C0*/ u8 decorationCushions[10]; + /*0x27CA*/ //u8 padding4[2]; /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT]; /*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT]; /*0x2B90*/ u16 outbreakPokemonSpecies; @@ -997,6 +1043,7 @@ struct SaveBlock1 /*0x2BD4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x2BE0*/ struct Mail mail[MAIL_COUNT]; /*0x2E20*/ u8 additionalPhrases[NUM_ADDITIONAL_PHRASE_BYTES]; // bitfield for 33 additional phrases in easy chat system + /*0x2E25*/ //u8 padding5[3]; /*0x2E28*/ OldMan oldMan; /*0x2e64*/ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT]; /*0x2e90*/ struct ContestWinner contestWinners[NUM_CONTEST_WINNERS]; // see CONTEST_WINNER_* diff --git a/include/global.tv.h b/include/global.tv.h index 1fb1b8a33..3729562cd 100644 --- a/include/global.tv.h +++ b/include/global.tv.h @@ -36,6 +36,7 @@ typedef union // size = 0x24 /*0x04*/ u16 words[6]; /*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x18*/ u8 language; + /*0x19*/ //u8 padding; } fanclubLetter; // TVSHOW_RECENT_HAPPENINGS @@ -46,6 +47,7 @@ typedef union // size = 0x24 /*0x04*/ u16 words[6]; /*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x18*/ u8 language; + /*0x19*/ //u8 padding; } recentHappenings; // TVSHOW_PKMN_FAN_CLUB_OPINIONS @@ -54,7 +56,7 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u16 species; /*0x04*/ u8 friendshipHighNybble:4; - /*0x04*/ u8 questionAsked:4; + u8 questionAsked:4; /*0x05*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x0D*/ u8 language; /*0x0E*/ u8 pokemonNameLanguage; @@ -70,8 +72,8 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u16 words[2]; /*0x06*/ u16 species; - /*0x08*/ u8 pad_08[3]; - /*0x0b*/ u8 name[12]; + /*0x08*/ u8 filler_08[3]; + /*0x0B*/ u8 name[12]; /*0x17*/ u8 language; } dummy; @@ -98,8 +100,9 @@ typedef union // size = 0x24 /*0x04*/ u16 words[2]; /*0x08*/ u8 pokemonNickname[POKEMON_NAME_LENGTH + 1]; /*0x13*/ u8 contestCategory:3; - /*0x13*/ u8 contestRank:2; - /*0x13*/ u8 contestResult:2; + u8 contestRank:2; + u8 contestResult:2; + //u8 padding:1; /*0x14*/ u16 move; /*0x16*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x1E*/ u8 language; @@ -121,6 +124,7 @@ typedef union // size = 0x24 /*0x1C*/ bool8 wonTheChallenge; /*0x1D*/ u8 language; /*0x1E*/ u8 pokemonNameLanguage; + /*0x1F*/ //u8 padding; } bravoTrainerTower; // TVSHOW_CONTEST_LIVE_UPDATES @@ -131,14 +135,15 @@ typedef union // size = 0x24 /*0x04*/ u8 losingTrainerName[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 loserAppealFlag; /*0x0D*/ u8 round1Placing; - /*0x0e*/ u8 round2Placing; - /*0x0f*/ u8 winnerAppealFlag; + /*0x0E*/ u8 round2Placing; + /*0x0F*/ u8 winnerAppealFlag; /*0x10*/ u16 move; /*0x12*/ u16 winningSpecies; /*0x14*/ u8 winningTrainerName[PLAYER_NAME_LENGTH + 1]; /*0x1C*/ u8 category; /*0x1D*/ u8 winningTrainerLanguage; /*0x1E*/ u8 losingTrainerLanguage; + /*0x1F*/ //u8 padding; } contestLiveUpdates; // TVSHOW_3_CHEERS_FOR_POKEBLOCKS @@ -147,7 +152,8 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u8 sheen; /*0x03*/ u8 flavor:3; - /*0x03*/ u8 color:2; + u8 color:2; + //u8 padding:3; /*0x04*/ u8 worstBlenderName[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x14*/ u8 language; @@ -166,6 +172,7 @@ typedef union // size = 0x24 /*0x18*/ u8 battleType; /*0x19*/ u8 language; /*0x1A*/ u8 linkOpponentLanguage; + /*0x1B*/ //u8 padding; } battleUpdate; // TVSHOW_FAN_CLUB_SPECIAL @@ -173,13 +180,14 @@ typedef union // size = 0x24 /*0x00*/ u8 kind; /*0x01*/ bool8 active; /*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x0a*/ u8 idLo; - /*0x0b*/ u8 idHi; - /*0x0c*/ u8 idolName[PLAYER_NAME_LENGTH + 1]; + /*0x0A*/ u8 idLo; + /*0x0B*/ u8 idHi; + /*0x0C*/ u8 idolName[PLAYER_NAME_LENGTH + 1]; /*0x14*/ u16 words[1]; /*0x16*/ u8 score; /*0x17*/ u8 language; /*0x18*/ u8 idolNameLanguage; + /*0x19*/ //u8 padding; } fanClubSpecial; // TVSHOW_LILYCOVE_CONTEST_LADY @@ -187,8 +195,8 @@ typedef union // size = 0x24 /*0x00*/ u8 kind; /*0x01*/ bool8 active; /*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x0a*/ u8 contestCategory; - /*0x0b*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0A*/ u8 contestCategory; + /*0x0B*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; /*0x16*/ u8 pokeblockState; /*0x17*/ u8 language; /*0x18*/ u8 pokemonNameLanguage; @@ -206,6 +214,7 @@ typedef union // size = 0x24 /*0x10*/ u16 species; /*0x12*/ u8 nBallsUsed; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } pokemonToday; // TVSHOW_SMART_SHOPPER @@ -214,11 +223,12 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u8 priceReduced; /*0x03*/ u8 language; - /*0x04*/ u8 pad04[2]; + /*0x04*/ u8 filler_04[2]; /*0x06*/ u16 itemIds[SMARTSHOPPER_NUM_ITEMS]; /*0x0C*/ u16 itemAmounts[SMARTSHOPPER_NUM_ITEMS]; /*0x12*/ u8 shopLocation; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } smartshopperShow; // TVSHOW_POKEMON_TODAY_FAILED @@ -226,13 +236,14 @@ typedef union // size = 0x24 /*0x00*/ u8 kind; /*0x01*/ bool8 active; /*0x02*/ u8 language; - /*0x03*/ u8 pad03[9]; - /*0x0c*/ u16 species; - /*0x0e*/ u16 species2; + /*0x03*/ u8 filler_03[9]; + /*0x0C*/ u16 species; + /*0x0E*/ u16 species2; /*0x10*/ u8 nBallsUsed; /*0x11*/ u8 outcome; /*0x12*/ u8 location; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } pokemonTodayFailed; // TVSHOW_FISHING_ADVICE @@ -243,8 +254,9 @@ typedef union // size = 0x24 /*0x03*/ u8 nFails; /*0x04*/ u16 species; /*0x06*/ u8 language; - /*0x07*/ u8 pad07[12]; + /*0x07*/ u8 filler_07[12]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } pokemonAngler; // TVSHOW_WORLD_OF_MASTERS @@ -255,10 +267,11 @@ typedef union // size = 0x24 /*0x04*/ u16 caughtPoke; /*0x06*/ u16 steps; /*0x08*/ u16 species; - /*0x0a*/ u8 location; - /*0x0b*/ u8 language; - /*0x0c*/ u8 pad0c[7]; + /*0x0A*/ u8 location; + /*0x0B*/ u8 language; + /*0x0C*/ u8 filler_0C[7]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding2; } worldOfMasters; // TVSHOW_TODAYS_RIVAL_TRAINER @@ -271,10 +284,11 @@ typedef union // size = 0x24 /*0x06*/ u8 nGoldSymbols; /*0x07*/ u8 location; /*0x08*/ u16 battlePoints; - /*0x0a*/ u16 mapLayoutId; - /*0x0c*/ u8 language; - /*0x0d*/ u8 filler_0d[6]; + /*0x0A*/ u16 mapLayoutId; + /*0x0C*/ u8 language; + /*0x0D*/ u8 filler_0D[6]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding2; } rivalTrainer; // TVSHOW_TREND_WATCHER @@ -285,8 +299,9 @@ typedef union // size = 0x24 /*0x04*/ u16 words[2]; /*0x08*/ u8 gender; /*0x09*/ u8 language; - /*0x0a*/ u8 filler_0a[9]; + /*0x0A*/ u8 filler_0a[9]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } trendWatcher; // TVSHOW_TREASURE_INVESTIGATORS @@ -299,6 +314,7 @@ typedef union // size = 0x24 /*0x06*/ u16 mapLayoutId; /*0x08*/ u8 filler_08[11]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } treasureInvestigators; // TVSHOW_FIND_THAT_GAMER @@ -312,6 +328,7 @@ typedef union // size = 0x24 /*0x08*/ u8 language; /*0x09*/ u8 filler_09[10]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } findThatGamer; // TVSHOW_BREAKING_NEWS @@ -323,11 +340,12 @@ typedef union // size = 0x24 /*0x05*/ u8 outcome; /*0x06*/ u16 caughtMonBall; /*0x08*/ u16 balls; - /*0x0a*/ u16 poke1Species; - /*0x0c*/ u16 lastUsedMove; - /*0x0e*/ u8 language; - /*0x0f*/ u8 filler_0f[4]; + /*0x0A*/ u16 poke1Species; + /*0x0C*/ u16 lastUsedMove; + /*0x0E*/ u8 language; + /*0x0F*/ u8 filler_0f[4]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } breakingNews; // TVSHOW_SECRET_BASE_VISIT @@ -338,10 +356,11 @@ typedef union // size = 0x24 /*0x03*/ u8 numDecorations; /*0x04*/ u8 decorations[4]; /*0x08*/ u16 species; - /*0x0a*/ u16 move; - /*0x0c*/ u8 language; - /*0x0d*/ u8 filler_0d[6]; + /*0x0A*/ u16 move; + /*0x0C*/ u8 language; + /*0x0D*/ u8 filler_0d[6]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } secretBaseVisit; // TVSHOW_LOTTO_WINNER @@ -353,6 +372,7 @@ typedef union // size = 0x24 /*0x05*/ u8 language; /*0x06*/ u8 filler_06[13]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } lottoWinner; // TVSHOW_BATTLE_SEMINAR @@ -363,11 +383,12 @@ typedef union // size = 0x24 /*0x04*/ u16 foeSpecies; /*0x06*/ u16 species; /*0x08*/ u16 otherMoves[3]; - /*0x0e*/ u16 betterMove; + /*0x0E*/ u16 betterMove; /*0x10*/ u8 nOtherMoves; /*0x11*/ u8 language; /*0x12*/ u8 filler_12[1]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } battleSeminar; // TVSHOW_TRAINER_FAN_CLUB @@ -379,6 +400,7 @@ typedef union // size = 0x24 /*0x08*/ u8 language; /*0x09*/ u8 filler_09[10]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } trainerFanClub; // TVSHOW_CUTIES @@ -388,7 +410,7 @@ typedef union // size = 0x24 /*0x02*/ u8 nRibbons; /*0x03*/ u8 selectedRibbon; /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; - /*0x0f*/ u8 language; + /*0x0F*/ u8 language; /*0x10*/ u8 pokemonNameLanguage; /*0x11*/ u8 filler_12[2]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; @@ -402,11 +424,12 @@ typedef union // size = 0x24 /*0x04*/ u16 species1; /*0x06*/ u16 species2; /*0x08*/ u16 species3; - /*0x0a*/ u16 species4; - /*0x0c*/ u8 language; - /*0x0d*/ u8 facilityAndMode; - /*0x0e*/ u8 filler_0e[5]; + /*0x0A*/ u16 species4; + /*0x0C*/ u8 language; + /*0x0D*/ u8 facilityAndMode; + /*0x0E*/ u8 filler_0e[5]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } frontier; // TVSHOW_NUMBER_ONE @@ -418,6 +441,7 @@ typedef union // size = 0x24 /*0x05*/ u8 language; /*0x06*/ u8 filler_06[13]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } numberOne; // TVSHOW_SECRET_BASE_SECRETS @@ -426,12 +450,13 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u16 stepsInBase; /*0x04*/ u8 baseOwnersName[PLAYER_NAME_LENGTH + 1]; - /*0x0c*/ u32 flags; + /*0x0C*/ u32 flags; /*0x10*/ u16 item; /*0x12*/ u8 savedState; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x1b*/ u8 language; - /*0x1c*/ u8 baseOwnersNameLanguage; + /*0x1B*/ u8 language; + /*0x1C*/ u8 baseOwnersNameLanguage; + /*0x1D*/ //u8 padding[3]; } secretBaseSecrets; // TVSHOW_SAFARI_FAN_CLUB @@ -463,6 +488,7 @@ typedef union // size = 0x24 /*0x15*/ u8 unused5; /*0x16*/ u16 daysLeft; /*0x18*/ u8 language; + /*0x19*/ //u8 padding; } massOutbreak; } TVShow; @@ -475,23 +501,23 @@ typedef struct struct GabbyAndTyData { - /*2ba4*/ u16 mon1; - /*2ba6*/ u16 mon2; - /*2ba8*/ u16 lastMove; - /*2baa*/ u16 quote[1]; - /*2bac*/ u8 mapnum; - /*2bad*/ u8 battleNum; - /*2bae*/ u8 battleTookMoreThanOneTurn:1; - /*2bae*/ u8 playerLostAMon:1; - /*2bae*/ u8 playerUsedHealingItem:1; - /*2bae*/ u8 playerThrewABall:1; - /*2bae*/ u8 onAir:1; - /*2bae*/ u8 valA_5:3; - /*2baf*/ u8 battleTookMoreThanOneTurn2:1; - /*2baf*/ u8 playerLostAMon2:1; - /*2baf*/ u8 playerUsedHealingItem2:1; - /*2baf*/ u8 playerThrewABall2:1; - /*2baf*/ u8 valB_4:4; + /*2BA4*/ u16 mon1; + /*2BA6*/ u16 mon2; + /*2BA8*/ u16 lastMove; + /*2BAA*/ u16 quote[1]; + /*2BAC*/ u8 mapnum; + /*2BAD*/ u8 battleNum; + /*2BAE*/ u8 battleTookMoreThanOneTurn:1; + u8 playerLostAMon:1; + u8 playerUsedHealingItem:1; + u8 playerThrewABall:1; + u8 onAir:1; + u8 valA_5:3; + /*2BAF*/ u8 battleTookMoreThanOneTurn2:1; + u8 playerLostAMon2:1; + u8 playerUsedHealingItem2:1; + u8 playerThrewABall2:1; + u8 valB_4:4; }; #endif //GUARD_GLOBAL_TV_H diff --git a/include/graphics.h b/include/graphics.h index 78074a9d3..e5a47ca88 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -491,7 +491,6 @@ extern const u32 gMonFrontPic_Burmy[]; extern const u32 gMonFrontPic_Wormadam[]; extern const u32 gMonFrontPic_Mothim[]; extern const u32 gMonFrontPic_Combee[]; -extern const u32 gMonFrontPic_CombeeF[]; extern const u32 gMonFrontPic_Vespiquen[]; extern const u32 gMonFrontPic_Pachirisu[]; extern const u32 gMonFrontPic_Buizel[]; @@ -526,7 +525,6 @@ extern const u32 gMonFrontPic_Munchlax[]; extern const u32 gMonFrontPic_Riolu[]; extern const u32 gMonFrontPic_Lucario[]; extern const u32 gMonFrontPic_Hippopotas[]; -extern const u32 gMonFrontPic_HippopotasF[]; extern const u32 gMonFrontPic_Hippowdon[]; extern const u32 gMonFrontPic_Skorupi[]; extern const u32 gMonFrontPic_Drapion[]; @@ -1741,9 +1739,7 @@ extern const u32 gMonBackPic_Munchlax[]; extern const u32 gMonBackPic_Riolu[]; extern const u32 gMonBackPic_Lucario[]; extern const u32 gMonBackPic_Hippopotas[]; -extern const u32 gMonBackPic_HippopotasF[]; extern const u32 gMonBackPic_Hippowdon[]; -extern const u32 gMonBackPic_HippowdonF[]; extern const u32 gMonBackPic_Skorupi[]; extern const u32 gMonBackPic_Drapion[]; extern const u32 gMonBackPic_Croagunk[]; @@ -2913,6 +2909,7 @@ extern const u32 gMonPalette_Burmy[]; extern const u32 gMonPalette_Wormadam[]; extern const u32 gMonPalette_Mothim[]; extern const u32 gMonPalette_Combee[]; +extern const u32 gMonPalette_CombeeF[]; extern const u32 gMonPalette_Vespiquen[]; extern const u32 gMonPalette_Pachirisu[]; extern const u32 gMonPalette_Buizel[]; @@ -3175,7 +3172,6 @@ extern const u32 gMonPalette_Spewpa[]; extern const u32 gMonPalette_Vivillon[]; extern const u32 gMonPalette_Litleo[]; extern const u32 gMonPalette_Pyroar[]; -extern const u32 gMonPalette_PyroarF[]; extern const u32 gMonPalette_Flabebe[]; extern const u32 gMonPalette_Floette[]; extern const u32 gMonPalette_Florges[]; @@ -4146,6 +4142,7 @@ extern const u32 gMonShinyPalette_Burmy[]; extern const u32 gMonShinyPalette_Wormadam[]; extern const u32 gMonShinyPalette_Mothim[]; extern const u32 gMonShinyPalette_Combee[]; +extern const u32 gMonShinyPalette_CombeeF[]; extern const u32 gMonShinyPalette_Vespiquen[]; extern const u32 gMonShinyPalette_Pachirisu[]; extern const u32 gMonShinyPalette_Buizel[]; @@ -4183,7 +4180,6 @@ extern const u32 gMonShinyPalette_Hippopotas[]; extern const u32 gMonShinyPalette_HippopotasF[]; extern const u32 gMonShinyPalette_Hippowdon[]; extern const u32 gMonShinyPalette_HippowdonF[]; -extern const u32 gMonShinyPalette_Hippowdon[]; extern const u32 gMonShinyPalette_Skorupi[]; extern const u32 gMonShinyPalette_Drapion[]; extern const u32 gMonShinyPalette_Croagunk[]; @@ -4409,7 +4405,6 @@ extern const u32 gMonShinyPalette_Spewpa[]; extern const u32 gMonShinyPalette_Vivillon[]; extern const u32 gMonShinyPalette_Litleo[]; extern const u32 gMonShinyPalette_Pyroar[]; -extern const u32 gMonShinyPalette_PyroarF[]; extern const u32 gMonShinyPalette_Flabebe[]; extern const u32 gMonShinyPalette_Floette[]; extern const u32 gMonShinyPalette_Florges[]; @@ -5407,6 +5402,10 @@ extern const u8 gMonIcon_Riolu[]; extern const u8 gMonIcon_Lucario[]; extern const u8 gMonIcon_Hippopotas[]; extern const u8 gMonIcon_Hippowdon[]; +#if P_HIPPO_GENDER_DIFF_ICONS == TRUE +extern const u8 gMonIcon_HippopotasF[]; +extern const u8 gMonIcon_HippowdonF[]; +#endif extern const u8 gMonIcon_Skorupi[]; extern const u8 gMonIcon_Drapion[]; extern const u8 gMonIcon_Croagunk[]; @@ -10316,9 +10315,9 @@ extern const u16 gContestResultsTitle_Tough_Tilemap[]; extern const u16 gContestResultsTitle_Tilemap[]; // Trainer Card. -extern const u16 gHoennTrainerCard0Star_Pal[]; +extern const u16 gHoennTrainerCardGreen_Pal[]; extern const u32 gHoennTrainerCard_Gfx[]; -extern const u16 gKantoTrainerCard0Star_Pal[]; +extern const u16 gKantoTrainerCardBlue_Pal[]; extern const u32 gKantoTrainerCard_Gfx[]; extern const u32 gKantoTrainerCardBg_Tilemap[]; extern const u32 gHoennTrainerCardBack_Tilemap[]; diff --git a/include/link.h b/include/link.h index 7fa5e3fae..f27cddc62 100644 --- a/include/link.h +++ b/include/link.h @@ -100,8 +100,8 @@ #define LINKTYPE_BERRY_BLENDER_SETUP 0x4411 #define LINKTYPE_BERRY_BLENDER 0x4422 #define LINKTYPE_MYSTERY_EVENT 0x5501 -#define LINKTYPE_UNUSED_EREADER 0x5502 // Unused, inferred from gap -#define LINKTYPE_EREADER 0x5503 +#define LINKTYPE_EREADER_FRLG 0x5502 +#define LINKTYPE_EREADER_EM 0x5503 #define LINKTYPE_CONTEST_GMODE 0x6601 #define LINKTYPE_CONTEST_EMODE 0x6602 diff --git a/include/link_rfu.h b/include/link_rfu.h index c576d04a1..cf4bb2ca7 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -109,7 +109,7 @@ struct __attribute__((packed, aligned(2))) RfuGameData u8 playerGender:1; u8 tradeLevel:7; u8 tradeType:6; - u8 padding:2; + u8 filler:2; }; // Constants for getting/setting information in 'partnerInfo' of RfuGameData. diff --git a/include/main.h b/include/main.h index 5ccb20df8..eba04cbaa 100644 --- a/include/main.h +++ b/include/main.h @@ -57,6 +57,7 @@ extern u32 IntrMain_Buffer[]; extern s8 gPcmDmaCounter; void AgbMain(void); +void AgbMainLoop(void); void SetMainCallback2(MainCallback callback); void InitKeys(void); void SetVBlankCallback(IntrCallback callback); diff --git a/include/palette.h b/include/palette.h index 736fde96b..29723ef6c 100644 --- a/include/palette.h +++ b/include/palette.h @@ -18,6 +18,13 @@ #define PALETTES_OBJECTS 0xFFFF0000 #define PALETTES_ALL (PALETTES_BG | PALETTES_OBJECTS) +#define PLTT_ID(n) ((n) * 16) +#define BG_PLTT_OFFSET 0x000 +#define OBJ_PLTT_OFFSET 0x100 +#define BG_PLTT_ID(n) (BG_PLTT_OFFSET + PLTT_ID(n)) +#define OBJ_PLTT_ID(n) (OBJ_PLTT_OFFSET + PLTT_ID(n)) +#define OBJ_PLTT_ID2(n) (PLTT_ID((n) + 16)) + enum { FAST_FADE_IN_FROM_WHITE, @@ -74,4 +81,14 @@ void TintPalette_GrayScale2(u16 *palette, u16 count); void TintPalette_SepiaTone(u16 *palette, u16 count); void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone); +static inline void SetBackdropFromColor(u16 color) +{ + FillPalette(color, 0, PLTT_SIZEOF(1)); +} + +static inline void SetBackdropFromPalette(const u16 *palette) +{ + LoadPalette(palette, 0, PLTT_SIZEOF(1)); +} + #endif // GUARD_PALETTE_H diff --git a/include/pokemon.h b/include/pokemon.h index f70fda91a..89910d6ee 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -291,6 +291,7 @@ struct BattlePokemon /*0x4D*/ u32 status1; /*0x51*/ u32 status2; /*0x55*/ u32 otId; + /*0x59*/ u8 metLevel; }; struct SpeciesInfo @@ -301,8 +302,7 @@ struct SpeciesInfo /* 0x03 */ u8 baseSpeed; /* 0x04 */ u8 baseSpAttack; /* 0x05 */ u8 baseSpDefense; - /* 0x06 */ u8 type1; - /* 0x07 */ u8 type2; + /* 0x06 */ u8 types[2]; /* 0x08 */ u8 catchRate; /* 0x09 */ u16 expYield; /* 0x0A */ u16 evYield_HP:2; @@ -317,13 +317,12 @@ struct SpeciesInfo /* 0x11 */ u8 eggCycles; /* 0x12 */ u8 friendship; /* 0x13 */ u8 growthRate; - /* 0x14 */ u8 eggGroup1; - /* 0x15 */ u8 eggGroup2; + /* 0x14 */ u8 eggGroups[2]; /* 0x16 */ u16 abilities[NUM_ABILITY_SLOTS]; - u8 safariZoneFleeRate; - u8 bodyColor : 7; + /* 0x19 */ u8 safariZoneFleeRate; + /* 0x1A */ u8 bodyColor : 7; u8 noFlip : 1; - u16 flags; + /* 0x1B */ u16 flags; }; struct BattleMove @@ -564,5 +563,6 @@ u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove); bool32 ShouldShowFemaleDifferences(u16 species, u32 personality); void TryToSetBattleFormChangeMoves(struct Pokemon *mon); u32 GetMonFriendshipScore(struct Pokemon *pokemon); +void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality); #endif // GUARD_POKEMON_H diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 9b8939403..fbe14a656 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -1,6 +1,51 @@ #ifndef GUARD_RECORDED_BATTLE_H #define GUARD_RECORDED_BATTLE_H +#include "constants/battle.h" + +#define BATTLER_RECORD_SIZE 664 + +struct RecordedBattleSave +{ + struct Pokemon playerParty[PARTY_SIZE]; + struct Pokemon opponentParty[PARTY_SIZE]; + u8 playersName[MAX_BATTLERS_COUNT][PLAYER_NAME_LENGTH + 1]; + u8 playersGender[MAX_BATTLERS_COUNT]; + u32 playersTrainerId[MAX_BATTLERS_COUNT]; + u8 playersLanguage[MAX_BATTLERS_COUNT]; + u32 rngSeed; + u32 battleFlags; + u8 playersBattlers[MAX_BATTLERS_COUNT]; + u16 opponentA; + u16 opponentB; + u16 partnerId; + u16 multiplayerId; + u8 lvlMode; + u8 frontierFacility; + u8 frontierBrainSymbol; + u8 battleScene:1; + u8 textSpeed:3; + u32 AI_scripts; + u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1]; + u8 recordMixFriendClass; + u8 apprenticeId; + u16 easyChatSpeech[EASY_CHAT_BATTLE_WORDS_COUNT]; + u8 recordMixFriendLanguage; + u8 apprenticeLanguage; + u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; + u32 checksum; +}; + +enum +{ + RECORDED_BYTE, // Generic. + RECORDED_ACTION_TYPE, + RECORDED_MOVE_SLOT, + RECORDED_MOVE_TARGET, + RECORDED_PARTY_INDEX, + RECORDED_BATTLE_PALACE_ACTION, +}; + extern u32 gRecordedBattleRngSeed; extern u32 gBattlePalaceMoveSelectionRngValue; extern u8 gRecordedBattleMultiplayerId; @@ -12,11 +57,12 @@ void RecordedBattle_Init(u8 mode); void RecordedBattle_SetTrainerInfo(void); void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action); void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear); -u8 RecordedBattle_GetBattlerAction(u8 battlerId); +u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId); u8 RecordedBattle_BufferNewBattlerData(u8 *dst); void RecordedBattle_RecordAllBattlerData(u8 *data); bool32 CanCopyRecordedBattleSaveData(void); bool32 MoveRecordedBattleToSaveData(void); +void SetVariablesForRecordedBattle(struct RecordedBattleSave *); void PlayRecordedBattle(void (*CB2_After)(void)); u8 GetRecordedBattleFrontierFacility(void); u8 GetRecordedBattleFronterBrainSymbol(void); diff --git a/include/starter_choose.h b/include/starter_choose.h index 7a4f6e967..1bee42a2e 100644 --- a/include/starter_choose.h +++ b/include/starter_choose.h @@ -1,10 +1,10 @@ #ifndef GUARD_STARTER_CHOOSE_H #define GUARD_STARTER_CHOOSE_H -extern const u16 gBirchBagGrassPal[2][16]; +extern const u16 gBirchBagGrass_Pal[]; extern const u32 gBirchBagTilemap[]; extern const u32 gBirchGrassTilemap[]; -extern const u32 gBirchHelpGfx[]; +extern const u32 gBirchBagGrass_Gfx[]; extern const u32 gPokeballSelection_Gfx[]; u16 GetStarterPokemon(u16 chosenStarterId); diff --git a/include/test_runner.h b/include/test_runner.h new file mode 100644 index 000000000..2fc0a55e3 --- /dev/null +++ b/include/test_runner.h @@ -0,0 +1,17 @@ +#ifndef GUARD_TEST_RUNNER_H +#define GUARD_TEST_RUNNER_H + +extern const bool8 gTestRunnerEnabled; +extern const bool8 gTestRunnerHeadless; +extern const bool8 gTestRunnerSkipIsFail; + +void TestRunner_Battle_RecordAbilityPopUp(u32 battlerId, u32 ability); +void TestRunner_Battle_RecordAnimation(u32 animType, u32 animId); +void TestRunner_Battle_RecordHP(u32 battlerId, u32 oldHP, u32 newHP); +void TestRunner_Battle_RecordMessage(const u8 *message); +void TestRunner_Battle_RecordStatus1(u32 battlerId, u32 status1); +void TestRunner_Battle_AfterLastTurn(void); + +void BattleTest_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType); + +#endif diff --git a/include/wonder_news.h b/include/wonder_news.h index 68fd59e4c..f499709df 100755 --- a/include/wonder_news.h +++ b/include/wonder_news.h @@ -8,8 +8,7 @@ enum { WONDER_NEWS_SENT, }; - -void InitSavedWonderNews(void); -void GenerateRandomWonderNews(u32 newsType); +void WonderNews_Reset(void); +void WonderNews_SetReward(u32 newsType); #endif //GUARD_WONDER_NEWS_H diff --git a/ld_script.txt b/ld_script.txt index 629649adf..4c3085f59 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -2,6 +2,7 @@ ENTRY(Start) gNumMusicPlayers = 4; gMaxLines = 0; +gInitialMainCB2 = CB2_InitCopyrightScreenAfterBootup; SECTIONS { . = 0x2000000; diff --git a/ld_script_modern.txt b/ld_script_modern.txt index dd4eeed6a..082d69429 100644 --- a/ld_script_modern.txt +++ b/ld_script_modern.txt @@ -2,6 +2,7 @@ ENTRY(Start) gNumMusicPlayers = 4; gMaxLines = 0; +gInitialMainCB2 = CB2_InitCopyrightScreenAfterBootup; SECTIONS { . = 0x2000000; diff --git a/ld_script_test.txt b/ld_script_test.txt new file mode 100644 index 000000000..3fcac51d4 --- /dev/null +++ b/ld_script_test.txt @@ -0,0 +1,140 @@ +ENTRY(Start) + +gNumMusicPlayers = 4; +gMaxLines = 0; +gInitialMainCB2 = CB2_TestRunner; + +SECTIONS { + . = 0x2000000; + + ewram (NOLOAD) : + ALIGN(4) + { + gHeap = .; + + . = 0x1C000; + + src/*.o(ewram_data); + gflib/*.o(ewram_data); + test/*.o(ewram_data); + + . = 0x40000; + } + + . = 0x3000000; + + iwram (NOLOAD) : + ALIGN(4) + { + /* .bss starts at 0x3000000 */ + src/*.o(.bss); + gflib/*.o(.bss); + data/*.o(.bss); + test/*.o(.bss); + *libc.a:*.o(.bss*); + *libgcc.a:*.o(.bss*); + *libnosys.a:*.o(.bss*); + + /* .bss.code starts at 0x3001AA8 */ + src/m4a.o(.bss.code); + + /* COMMON starts at 0x30022A8 */ + src/*.o(COMMON); + gflib/*.o(COMMON); + data/*.o(COMMON); + test/*.o(COMMON); + *libc.a:sbrkr.o(COMMON); + end = .; + . = 0x8000; + } + + . = 0x8000000; + + .text : + ALIGN(4) + { + src/rom_header.o(.text); + src/rom_header_gf.o(.text.*); + src/*.o(.text); + gflib/*.o(.text); + } =0 + + script_data : + ALIGN(4) + { + data/*.o(script_data); + } =0 + + lib_text : + ALIGN(4) + { + *libagbsyscall.a:*.o(.text*); + *libgcc.a:*.o(.text*); + *libc.a:*.o(.text*); + *libnosys.a:*.o(.text*); + } =0 + + .rodata : + ALIGN(4) + { + src/*.o(.rodata); + gflib/*.o(.rodata); + data/*.o(.rodata); + } =0 + + song_data : + ALIGN(4) + { + sound/songs/*.o(.rodata); + } =0 + + lib_rodata : + SUBALIGN(4) + { + *libgcc.a:*.o(.rodata*); + *libc.a:*.o(.rodata*); + *libc.a:*.o(.data*); + src/libisagbprn.o(.rodata); + } =0 + + tests : + ALIGN(4) + { + __start_tests = .; + test/*.o(.tests); + __stop_tests = .; + test/*.o(.text); + test/*.o(.rodata); + } =0 + + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + + /* Discard everything not specifically mentioned above. */ + /DISCARD/ : + { + *(*); + } +} diff --git a/make_tools.mk b/make_tools.mk index 697897a69..36dbe8c90 100644 --- a/make_tools.mk +++ b/make_tools.mk @@ -1,7 +1,7 @@ MAKEFLAGS += --no-print-directory -TOOLDIRS := $(filter-out tools/agbcc tools/binutils,$(wildcard tools/*)) +TOOLDIRS := $(filter-out tools/mgba tools/agbcc tools/binutils,$(wildcard tools/*)) .PHONY: all $(TOOLDIRS) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 2f9690250..a59f57d37 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2142,12 +2142,14 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_SKILL_SWAP: if (AI_DATA->abilities[battlerAtk] == ABILITY_NONE || AI_DATA->abilities[battlerDef] == ABILITY_NONE - || IsSkillSwapBannedAbility(AI_DATA->abilities[battlerAtk]) || IsSkillSwapBannedAbility(AI_DATA->abilities[battlerDef])) + || IsSkillSwapBannedAbility(AI_DATA->abilities[battlerAtk]) || IsSkillSwapBannedAbility(AI_DATA->abilities[battlerDef]) + || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) score -= 10; break; case EFFECT_WORRY_SEED: if (AI_DATA->abilities[battlerDef] == ABILITY_INSOMNIA - || IsWorrySeedBannedAbility(AI_DATA->abilities[battlerDef])) + || IsWorrySeedBannedAbility(AI_DATA->abilities[battlerDef]) + || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) score -= 10; break; case EFFECT_GASTRO_ACID: @@ -2158,14 +2160,16 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_ENTRAINMENT: if (AI_DATA->abilities[battlerAtk] == ABILITY_NONE || IsEntrainmentBannedAbilityAttacker(AI_DATA->abilities[battlerAtk]) - || IsEntrainmentTargetOrSimpleBeamBannedAbility(AI_DATA->abilities[battlerDef])) + || IsEntrainmentTargetOrSimpleBeamBannedAbility(AI_DATA->abilities[battlerDef]) + || AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_ABILITY_SHIELD) score -= 10; break; case EFFECT_CORE_ENFORCER: break; case EFFECT_SIMPLE_BEAM: if (AI_DATA->abilities[battlerDef] == ABILITY_SIMPLE - || IsEntrainmentTargetOrSimpleBeamBannedAbility(AI_DATA->abilities[battlerDef])) + || IsEntrainmentTargetOrSimpleBeamBannedAbility(AI_DATA->abilities[battlerDef]) + || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) score -= 10; break; case EFFECT_SNATCH: diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index e7657cc4e..5bcd17716 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -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 = gSpeciesInfo[species].type1; - u8 defType2 = gSpeciesInfo[species].type2; + u8 defType1 = gSpeciesInfo[species].types[0]; + u8 defType2 = gSpeciesInfo[species].types[1]; typeEffectiveness *= GetTypeModifier(atkType1, defType1); if (atkType2 != atkType1) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index ef97ab9a1..531a4aa6b 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1634,7 +1634,8 @@ bool32 ShouldLowerStat(u8 battler, u16 battlerAbility, u8 stat) if ((gBattleMons[battler].statStages[stat] > MIN_STAT_STAGE && battlerAbility != ABILITY_CONTRARY) || (battlerAbility == ABILITY_CONTRARY && gBattleMons[battler].statStages[stat] < MAX_STAT_STAGE)) { - if (battlerAbility == ABILITY_CLEAR_BODY + if (AI_DATA->holdEffects[battler] == HOLD_EFFECT_CLEAR_AMULET + || battlerAbility == ABILITY_CLEAR_BODY || battlerAbility == ABILITY_WHITE_SMOKE || battlerAbility == ABILITY_FULL_METAL_BODY) return FALSE; @@ -1711,7 +1712,8 @@ bool32 ShouldLowerAttack(u8 battlerAtk, u8 battlerDef, u16 defAbility) && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY - && defAbility != ABILITY_HYPER_CUTTER) + && defAbility != ABILITY_HYPER_CUTTER + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } @@ -1727,7 +1729,8 @@ bool32 ShouldLowerDefense(u8 battlerAtk, u8 battlerDef, u16 defAbility) && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY - && defAbility != ABILITY_BIG_PECKS) + && defAbility != ABILITY_BIG_PECKS + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } @@ -1741,7 +1744,8 @@ bool32 ShouldLowerSpeed(u8 battlerAtk, u8 battlerDef, u16 defAbility) && defAbility != ABILITY_CONTRARY && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_FULL_METAL_BODY - && defAbility != ABILITY_WHITE_SMOKE) + && defAbility != ABILITY_WHITE_SMOKE + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } @@ -1756,7 +1760,8 @@ bool32 ShouldLowerSpAtk(u8 battlerAtk, u8 battlerDef, u16 defAbility) && defAbility != ABILITY_CONTRARY && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_FULL_METAL_BODY - && defAbility != ABILITY_WHITE_SMOKE) + && defAbility != ABILITY_WHITE_SMOKE + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } @@ -1771,7 +1776,8 @@ bool32 ShouldLowerSpDef(u8 battlerAtk, u8 battlerDef, u16 defAbility) && defAbility != ABILITY_CONTRARY && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_FULL_METAL_BODY - && defAbility != ABILITY_WHITE_SMOKE) + && defAbility != ABILITY_WHITE_SMOKE + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } @@ -1785,7 +1791,8 @@ bool32 ShouldLowerAccuracy(u8 battlerAtk, u8 battlerDef, u16 defAbility) && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY - && defAbility != ABILITY_KEEN_EYE) + && defAbility != ABILITY_KEEN_EYE + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } @@ -1799,7 +1806,8 @@ bool32 ShouldLowerEvasion(u8 battlerAtk, u8 battlerDef, u16 defAbility) && defAbility != ABILITY_CONTRARY && defAbility != ABILITY_CLEAR_BODY && defAbility != ABILITY_FULL_METAL_BODY - && defAbility != ABILITY_WHITE_SMOKE) + && defAbility != ABILITY_WHITE_SMOKE + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; } @@ -2433,8 +2441,8 @@ static bool32 PartyBattlerShouldAvoidHazards(u8 currBattler, u8 switchBattler) u16 species = GetMonData(mon, MON_DATA_SPECIES); u32 flags = gSideStatuses[GetBattlerSide(currBattler)] & (SIDE_STATUS_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES); s32 hazardDamage = 0; - u8 type1 = gSpeciesInfo[species].type1; - u8 type2 = gSpeciesInfo[species].type2; + u8 type1 = gSpeciesInfo[species].types[0]; + u8 type2 = gSpeciesInfo[species].types[1]; u32 maxHp = GetMonData(mon, MON_DATA_MAX_HP); if (flags == 0) diff --git a/src/battle_anim.c b/src/battle_anim.c index f949065f2..610c24321 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -16,6 +16,7 @@ #include "sound.h" #include "sprite.h" #include "task.h" +#include "test_runner.h" #include "constants/battle_anim.h" #include "constants/moves.h" @@ -27,7 +28,10 @@ #define ANIM_SPRITE_INDEX_COUNT 8 extern const u16 gMovesWithQuietBGM[]; +extern const u8 *const gBattleAnims_General[]; extern const u8 *const gBattleAnims_Moves[]; +extern const u8 *const gBattleAnims_Special[]; +extern const u8 *const gBattleAnims_StatusConditions[]; static void Cmd_loadspritegfx(void); static void Cmd_unloadspritegfx(void); @@ -211,17 +215,50 @@ void DoMoveAnim(u16 move) gBattleAnimTarget = 0; } } - LaunchBattleAnimation(gBattleAnims_Moves, move, TRUE); + LaunchBattleAnimation(ANIM_TYPE_MOVE, move); } -void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim) +static void Nop(void) +{ +} + +void LaunchBattleAnimation(u32 animType, u32 animId) { s32 i; - bool32 hideHpBoxes = (tableId == MOVE_TRANSFORM) ? FALSE : TRUE; + const u8 *const *animsTable; + bool32 hideHpBoxes; - if (!isMoveAnim) + if (gTestRunnerEnabled) { - switch (tableId) + TestRunner_Battle_RecordAnimation(animType, animId); + if (gTestRunnerHeadless) + { + gAnimScriptCallback = Nop; + gAnimScriptActive = FALSE; + return; + } + } + + switch (animType) + { + case ANIM_TYPE_GENERAL: + animsTable = gBattleAnims_General; + break; + case ANIM_TYPE_MOVE: + animsTable = gBattleAnims_Moves; + break; + case ANIM_TYPE_STATUS: + animsTable = gBattleAnims_StatusConditions; + break; + case ANIM_TYPE_SPECIAL: + animsTable = gBattleAnims_Special; + break; + } + + hideHpBoxes = !(animType == ANIM_TYPE_MOVE && animId == MOVE_TRANSFORM); + if (animType != ANIM_TYPE_MOVE) + { + switch (animId) { case B_ANIM_TURN_TRAP: case B_ANIM_LEECH_SEED_DRAIN: @@ -258,17 +295,17 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo gAnimBattlerSpecies[i] = gContestResources->moveAnim->species; } - if (!isMoveAnim) + if (animType != ANIM_TYPE_MOVE) gAnimMoveIndex = 0; else - gAnimMoveIndex = tableId; + gAnimMoveIndex = animId; for (i = 0; i < ANIM_ARGS_COUNT; i++) gBattleAnimArgs[i] = 0; sMonAnimTaskIdArray[0] = TASK_NONE; sMonAnimTaskIdArray[1] = TASK_NONE; - sBattleAnimScriptPtr = animsTable[tableId]; + sBattleAnimScriptPtr = animsTable[animId]; gAnimScriptActive = TRUE; sAnimFramesToWait = 0; gAnimScriptCallback = RunAnimScriptCommand; @@ -276,11 +313,11 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++) sAnimSpriteIndexArray[i] = 0xFFFF; - if (isMoveAnim) + if (animType == ANIM_TYPE_MOVE) { for (i = 0; gMovesWithQuietBGM[i] != 0xFFFF; i++) { - if (tableId == gMovesWithQuietBGM[i]) + if (animId == gMovesWithQuietBGM[i]) { m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 128); break; @@ -749,8 +786,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible) SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); - LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], animBg.paletteId * 16, 0x20); - CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void *)(BG_PLTT + animBg.paletteId * 32), 0x20); + LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(animBg.paletteId)), PLTT_SIZE_4BPP); if (IsContest()) battlerPosition = 0; @@ -784,8 +821,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible) SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); - LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], 0x90, 0x20); - CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void *)(BG_PLTT + 0x120), 0x20); + LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], BG_PLTT_ID(9), PLTT_SIZE_4BPP); + CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(9)), PLTT_SIZE_4BPP); DrawBattlerOnBg(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset); } @@ -1251,13 +1288,13 @@ void LoadMoveBg(u16 bgId) dmaDest = (void *)BG_SCREEN_ADDR(26); DmaCopy32(3, dmaSrc, dmaDest, 0x800); LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)BG_SCREEN_ADDR(4)); - LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, GetBattleBgPaletteNum() * 16, 32); + LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, BG_PLTT_ID(GetBattleBgPaletteNum()), PLTT_SIZE_4BPP); } else { LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)BG_SCREEN_ADDR(26)); LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)BG_CHAR_ADDR(2)); - LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32); + LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, BG_PLTT_ID(2), PLTT_SIZE_4BPP); } } diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index 75e4107e9..2400c22aa 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -508,7 +508,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) GetBattleAnimBg1Data(&animBg); task->data[10] = gBattle_BG1_Y; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); - FillPalette(RGB_BLACK, animBg.paletteId * 16, 32); + FillPalette(RGB_BLACK, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); scanlineParams.dmaDest = ®_BG1VOFS; var0 = WINOUT_WIN01_BG1; if (!IsContest()) @@ -518,7 +518,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) { task->data[10] = gBattle_BG2_Y; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); - FillPalette(RGB_BLACK, 144, 32); + FillPalette(RGB_BLACK, BG_PLTT_ID(9), PLTT_SIZE_4BPP); scanlineParams.dmaDest = ®_BG2VOFS; var0 = WINOUT_WIN01_BG2; if (!IsContest()) @@ -648,12 +648,12 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) { GetBattleAnimBg1Data(&animBg); task->data[10] = gBattle_BG1_Y; - FillPalette(RGB_BLACK, animBg.paletteId * 16, 32); + FillPalette(RGB_BLACK, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); } else { task->data[10] = gBattle_BG2_Y; - FillPalette(RGB_BLACK, 9 * 16, 32); + FillPalette(RGB_BLACK, BG_PLTT_ID(9), PLTT_SIZE_4BPP); } SetAllBattlersSpritePriority(3); @@ -945,7 +945,7 @@ void AnimTask_MetallicShine(u8 taskId) GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap); AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset); - LoadCompressedPalette(gMetalShinePalette, animBg.paletteId * 16, 32); + LoadCompressedPalette(gMetalShinePalette, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gBattle_BG1_X = -gSprites[spriteId].x + 96; gBattle_BG1_Y = -gSprites[spriteId].y + 32; @@ -954,7 +954,7 @@ void AnimTask_MetallicShine(u8 taskId) if (gBattleAnimArgs[1] == 0) SetGrayscaleOrOriginalPalette(paletteNum, FALSE); else - BlendPalette(paletteNum * 16, 16, 11, gBattleAnimArgs[2]); + BlendPalette(BG_PLTT_ID(paletteNum), 16, 11, gBattleAnimArgs[2]); gTasks[taskId].data[0] = newSpriteId; gTasks[taskId].data[1] = gBattleAnimArgs[0]; @@ -1025,19 +1025,19 @@ void AnimTask_SetGrayscaleOrOriginalPal(u8 taskId) case ANIM_DEF_PARTNER: spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); break; - case 4: + case ANIM_PLAYER_LEFT: position = B_POSITION_PLAYER_LEFT; calcSpriteId = TRUE; break; - case 5: + case ANIM_PLAYER_RIGHT: position = B_POSITION_PLAYER_RIGHT; calcSpriteId = TRUE; break; - case 6: + case ANIM_OPPONENT_LEFT: position = B_POSITION_OPPONENT_LEFT; calcSpriteId = TRUE; break; - case 7: + case ANIM_OPPONENT_RIGHT: position = B_POSITION_OPPONENT_RIGHT; calcSpriteId = TRUE; break; diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index ea36b2eac..761a1886c 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -4780,8 +4780,8 @@ void AnimTask_CycleMagicalLeafPal(u8 taskId) switch (task->data[0]) { case 0: - task->data[8] = IndexOfSpritePaletteTag(ANIM_TAG_LEAF) * 16 + 256; - task->data[12] = IndexOfSpritePaletteTag(ANIM_TAG_RAZOR_LEAF) * 16 + 256; + task->data[8] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(ANIM_TAG_LEAF)); + task->data[12] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(ANIM_TAG_RAZOR_LEAF)); task->data[0]++; break; case 1: @@ -5488,7 +5488,7 @@ static void AnimLockOnTarget_Step4(struct Sprite *sprite) int pal; sprite->data[2]++; pal = sprite->oam.paletteNum; - LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); + LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(pal) + 8], OBJ_PLTT_ID(pal) + 1, PLTT_SIZEOF(2)); PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); } else if (sprite->data[1] == 0) @@ -6312,8 +6312,8 @@ void AnimTask_DoubleTeam(u8 taskId) struct Task *task = &gTasks[taskId]; task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER); task->data[1] = AllocSpritePalette(ANIM_TAG_BENT_SPOON); - r3 = (task->data[1] * 16) + 0x100; - r4 = (gSprites[task->data[0]].oam.paletteNum + 16) << 4; + r3 = OBJ_PLTT_ID(task->data[1]); + r4 = OBJ_PLTT_ID2(gSprites[task->data[0]].oam.paletteNum); for (i = 1; i < 16; i++) gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i]; diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 489c5c747..8aaab10a5 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -2714,7 +2714,7 @@ void AnimUproarRing(struct Sprite *sprite) u8 index = IndexOfSpritePaletteTag(ANIM_TAG_THIN_RING); if (index != 0xFF) { - BlendPalette(((index << 20) + 0x1010000) >> 16, 15, gBattleAnimArgs[5], gBattleAnimArgs[4]); + BlendPalette((OBJ_PLTT_ID(index) + 1), 15, gBattleAnimArgs[5], gBattleAnimArgs[4]); } StartSpriteAffineAnim(sprite, 1); @@ -3062,7 +3062,7 @@ void AnimTask_LoadMusicNotesPals(u8 taskId) gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000); LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->buffer); for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) - LoadPalette(&gMonSpritesGfxPtr->buffer[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32); + LoadPalette(&gMonSpritesGfxPtr->buffer[i * 32], (u16)(OBJ_PLTT_ID(paletteNums[i])), PLTT_SIZE_4BPP); FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer); DestroyAnimVisualTask(taskId); @@ -3295,7 +3295,7 @@ void AnimTask_HeartsBackground(u8 taskId) GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Attract, animBg.tilesOffset); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Attract, FALSE); - LoadCompressedPalette(gBattleAnimBgPalette_Attract, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimBgPalette_Attract, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].func = AnimTask_HeartsBackground_Step; } @@ -3379,7 +3379,7 @@ void AnimTask_ScaryFace(u8 taskId) AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, FALSE); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_ScaryFace, animBg.tilesOffset); - LoadCompressedPalette(gBattleAnimBgPalette_ScaryFace, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimBgPalette_ScaryFace, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].func = AnimTask_ScaryFace_Step; } diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 552fcf517..ff5f04446 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -2364,7 +2364,7 @@ void AnimTask_TransformMon(u8 taskId) } break; case 2: - HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gBattleAnimArgs[1]); + HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gBattleAnimArgs[1], TRUE); GetBgDataForTransform(&animBg, gBattleAnimAttacker); if (IsContest()) @@ -2451,7 +2451,7 @@ void AnimTask_IsMonInvisible(u8 taskId) void AnimTask_CastformGfxDataChange(u8 taskId) { - HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, TRUE, FALSE); + HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, TRUE, FALSE, FALSE); DestroyAnimVisualTask(taskId); } @@ -2487,7 +2487,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) } AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimMaskImage_LightBeam, animBg.tilesOffset); - LoadCompressedPalette(gBattleAnimMaskPalette_LightBeam, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimMaskPalette_LightBeam, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].data[10] = gBattle_BG1_X; gTasks[taskId].data[11] = gBattle_BG1_Y; @@ -2683,7 +2683,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) } AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimMaskImage_LightBeam, animBg.tilesOffset); - LoadCompressedPalette(gBattleAnimMaskPalette_LightBeam, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimMaskPalette_LightBeam, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].data[10] = gBattle_BG1_X; gTasks[taskId].data[11] = gBattle_BG1_Y; gTasks[taskId].data[0]++; @@ -3334,7 +3334,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId) gSprites[spriteId].oam.priority = priority; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; - FillPalette(RGB_WHITE, (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32); + FillPalette(RGB_WHITE, OBJ_PLTT_ID(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); gSprites[spriteId].oam.priority = priority; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); @@ -3962,7 +3962,7 @@ void AnimTask_FacadeColorBlend(u8 taskId) gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = gBattleAnimArgs[1]; spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - gTasks[taskId].data[2] = 0x100 + gSprites[spriteId].oam.paletteNum * 16; + gTasks[taskId].data[2] = OBJ_PLTT_ID(gSprites[spriteId].oam.paletteNum); gTasks[taskId].func = AnimTask_FacadeColorBlend_Step; } @@ -5238,7 +5238,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) spriteId2 = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker); if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE) - BlendPalette((gSprites[spriteId2].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE); + BlendPalette(OBJ_PLTT_ID(gSprites[spriteId2].oam.paletteNum), 16, 6, RGB_WHITE); gTasks[taskId].data[15] = spriteId2; gTasks[taskId].data[0]++; diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index bc411f6e5..9a68f929b 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -2,6 +2,7 @@ #include "battle_anim.h" #include "constants/rgb.h" #include "constants/songs.h" +#include "palette.h" #include "sound.h" #include "util.h" #include "task.h" @@ -1411,7 +1412,7 @@ void AnimTask_BlendBackground(u8 taskId) { struct BattleAnimBgData animBg; GetBattleAnimBg1Data(&animBg); - BlendPalette(animBg.paletteId * 16, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); + BlendPalette(BG_PLTT_ID(animBg.paletteId), 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index f21654e3e..bf2c6a42b 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -708,8 +708,8 @@ static void AnimTask_SpiteTargetShadow_Step1(u8 taskId) } break; case 1: - task->data[14] = (task->data[14] + 16) * 16; - CpuCopy32(&gPlttBufferUnfaded[task->data[4]], &gPlttBufferFaded[task->data[14]], 32); + task->data[14] = OBJ_PLTT_ID2(task->data[14]); + CpuCopy32(&gPlttBufferUnfaded[task->data[4]], &gPlttBufferFaded[task->data[14]], PLTT_SIZE_4BPP); BlendPalette(task->data[4], 16, 10, RGB(13, 0, 15)); task->data[15]++; break; diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index e3b4e59d1..3712fb727 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -1088,7 +1088,7 @@ void AnimTask_HazeScrollingFog(u8 taskId) GetBattleAnimBg1Data(&animBg); LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE); - LoadPalette(&gFogPalette, animBg.paletteId * 16, 32); + LoadPalette(&gFogPalette, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].func = AnimTask_HazeScrollingFog_Step; } @@ -1193,7 +1193,7 @@ void AnimTask_MistBallFog(u8 taskId) GetBattleAnimBg1Data(&animBg); LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE); - LoadPalette(&gFogPalette, animBg.paletteId * 16, 32); + LoadPalette(&gFogPalette, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].data[15] = -1; gTasks[taskId].func = AnimTask_MistBallFog_Step; diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index aa8e4e2ac..5f52d6cd6 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -165,20 +165,20 @@ void AnimTask_ShakeMon2(u8 taskId) if (spriteId == SPRITE_NONE) abort = TRUE; } - else if (gBattleAnimArgs[0] != 8) + else if (gBattleAnimArgs[0] != ANIM_ATTACKER_FORCE) { switch (gBattleAnimArgs[0]) { - case 4: + case ANIM_PLAYER_LEFT: battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); break; - case 5: + case ANIM_PLAYER_RIGHT: battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); break; - case 6: + case ANIM_OPPONENT_LEFT: battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); break; - case 7: + case ANIM_OPPONENT_RIGHT: default: battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); break; diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index dfe2666a6..c512b67df 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -1763,7 +1763,7 @@ void AnimTask_BlendMonInAndOut(u8 task) DestroyAnimVisualTask(task); return; } - gTasks[task].data[0] = (gSprites[spriteId].oam.paletteNum * 0x10) + 0x101; + gTasks[task].data[0] = OBJ_PLTT_ID(gSprites[spriteId].oam.paletteNum) + 1; AnimTask_BlendPalInAndOutSetup(&gTasks[task]); } @@ -2141,7 +2141,7 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000); if (!isBackpic) { - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); LoadSpecialPokePic(gMonSpritesGfxPtr->buffer, species, personality, @@ -2149,7 +2149,7 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 } else { - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); LoadSpecialPokePic(gMonSpritesGfxPtr->buffer, species, personality, @@ -2434,8 +2434,8 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) task->tPaletteNum = AllocSpritePalette(ANIM_TAG_BENT_SPOON); task->tNumTracesActive = 0; - dest = (task->tPaletteNum + 16) * 16; - src = (gSprites[task->tBattlerSpriteId].oam.paletteNum + 0x10) * 0x10; + dest = OBJ_PLTT_ID2(task->tPaletteNum); + src = OBJ_PLTT_ID2(gSprites[task->tBattlerSpriteId].oam.paletteNum); // Set trace's priority based on battler's subpriority task->tPriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); @@ -2444,7 +2444,7 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) else task->tPriority = 3; - CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20); + CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], PLTT_SIZE_4BPP); BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]); task->func = AnimTask_AttackerPunchWithTrace_Step; } diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 0a65deb28..b3502fcb9 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -7857,7 +7857,7 @@ static void SpriteCB_TwinkleOnBattler(struct Sprite *sprite) void AnimTask_PrimalReversion(u8 taskId) { - if (gBattleMons[gBattleAnimAttacker].item == ITEM_RED_ORB) + if (gBattleMons[gBattleAnimAttacker].item == ITEM_RED_ORB || gBattleMons[gBattleAnimAttacker].item == ITEM_BLUE_ORB) gBattleAnimArgs[0] = gBattleMons[gBattleAnimAttacker].item; else gBattleAnimArgs[0] = 0; diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index b1ccc9a58..2257f9c04 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -506,7 +506,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId) GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Sandstorm, animBg.tilesOffset); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, FALSE); - LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) var0 = 1; diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index fb2f97956..0111b4d6d 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -13,7 +13,6 @@ extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; -extern const u8 *const gBattleAnims_StatusConditions[]; extern const struct OamData gOamData_AffineOff_ObjNormal_8x8; extern const struct OamData gOamData_AffineOff_ObjBlend_64x64; @@ -316,7 +315,7 @@ static void Task_UpdateFlashingCircleImpacts(u8 taskId) if (gTasks[taskId].data[2] == 2) { gTasks[taskId].data[2] = 0; - BlendPalette(0x100 + gTasks[taskId].data[0] * 16, 16, gTasks[taskId].data[4], gTasks[taskId].data[1]); + BlendPalette(OBJ_PLTT_ID(gTasks[taskId].data[0]), 16, gTasks[taskId].data[4], gTasks[taskId].data[1]); if (gTasks[taskId].data[5] == 0) { gTasks[taskId].data[4]++; @@ -568,7 +567,7 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId) gBattleAnimAttacker = battlerId; gBattleAnimTarget = battlerId; - LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, FALSE); + LaunchBattleAnimation(ANIM_TYPE_STATUS, statusAnimId); taskId = CreateTask(Task_DoStatusAnimation, 10); gTasks[taskId].data[0] = battlerId; } diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index e3e8f9ac1..a3197d447 100755 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -689,7 +689,7 @@ void AnimTask_UnusedLevelUpHealthBox(u8 taskId) GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, UnusedLevelupAnimationTilemap); AnimLoadCompressedBgGfx(animBgData.bgId, UnusedLevelupAnimationGfx, animBgData.tilesOffset); - LoadCompressedPalette(gCureBubblesPal, animBgData.paletteId << 4, 32); + LoadCompressedPalette(gCureBubblesPal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); gBattle_BG1_X = -gSprites[spriteId3].x + 32; gBattle_BG1_Y = -gSprites[spriteId3].y - 32; @@ -771,10 +771,10 @@ static void LoadHealthboxPalsForLevelUp(u8 *paletteId1, u8 *paletteId2, u8 battl *paletteId1 = AllocSpritePalette(TAG_HEALTHBOX_PALS_1); *paletteId2 = AllocSpritePalette(TAG_HEALTHBOX_PALS_2); - offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100; - offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100; - LoadPalette(&gPlttBufferUnfaded[offset1], *paletteId1 * 16 + 0x100, 0x20); - LoadPalette(&gPlttBufferUnfaded[offset2], *paletteId2 * 16 + 0x100, 0x20); + offset1 = OBJ_PLTT_ID(gSprites[healthBoxSpriteId].oam.paletteNum); + offset2 = OBJ_PLTT_ID(gSprites[spriteId2].oam.paletteNum); + LoadPalette(&gPlttBufferUnfaded[offset1], OBJ_PLTT_ID(*paletteId1), PLTT_SIZE_4BPP); + LoadPalette(&gPlttBufferUnfaded[offset2], OBJ_PLTT_ID(*paletteId2), PLTT_SIZE_4BPP); gSprites[healthBoxSpriteId].oam.paletteNum = *paletteId1; gSprites[spriteId1].oam.paletteNum = *paletteId1; @@ -838,7 +838,7 @@ static void AnimTask_FlashHealthboxOnLevelUp_Step(u8 taskId) if (gTasks[taskId].data[2] > 16) gTasks[taskId].data[2] = 16; - paletteOffset = paletteNum * 16 + 0x100; + paletteOffset = OBJ_PLTT_ID(paletteNum); BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31)); if (gTasks[taskId].data[2] == 16) gTasks[taskId].data[1]++; @@ -848,7 +848,7 @@ static void AnimTask_FlashHealthboxOnLevelUp_Step(u8 taskId) if (gTasks[taskId].data[2] < 0) gTasks[taskId].data[2] = 0; - paletteOffset = paletteNum * 16 + 0x100; + paletteOffset = OBJ_PLTT_ID(paletteNum); BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31)); if (gTasks[taskId].data[2] == 0) DestroyAnimVisualTask(taskId); @@ -2295,12 +2295,12 @@ u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 spritePalNum, u32 selectedPalette if (!unfadeLater) { - BlendPalette(spritePalNum * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); + BlendPalette(OBJ_PLTT_ID(spritePalNum), 16, 0, gBallOpenFadeColors[ballId]); gTasks[taskId].tdCoeff = 1; } else { - BlendPalette(spritePalNum * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); + BlendPalette(OBJ_PLTT_ID(spritePalNum), 16, 16, gBallOpenFadeColors[ballId]); gTasks[taskId].tCoeff = 16; gTasks[taskId].tdCoeff = -1; gTasks[taskId].func = Task_FadeMon_ToNormal; @@ -2316,7 +2316,7 @@ static void Task_FadeMon_ToBallColor(u8 taskId) if (gTasks[taskId].tTimer <= 16) { - BlendPalette(gTasks[taskId].tPalOffset * 16 + 0x100, 16, gTasks[taskId].tCoeff, gBallOpenFadeColors[ballId]); + BlendPalette(OBJ_PLTT_ID(gTasks[taskId].tPalOffset), 16, gTasks[taskId].tCoeff, gBallOpenFadeColors[ballId]); gTasks[taskId].tCoeff += gTasks[taskId].tdCoeff; gTasks[taskId].tTimer++; } @@ -2344,7 +2344,7 @@ static void Task_FadeMon_ToNormal_Step(u8 taskId) if (gTasks[taskId].tTimer <= 16) { - BlendPalette(gTasks[taskId].tPalOffset * 16 + 0x100, 16, gTasks[taskId].tCoeff, gBallOpenFadeColors[ballId]); + BlendPalette(OBJ_PLTT_ID(gTasks[taskId].tPalOffset), 16, gTasks[taskId].tCoeff, gBallOpenFadeColors[ballId]); gTasks[taskId].tCoeff += gTasks[taskId].tdCoeff; gTasks[taskId].tTimer++; } diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 096912c3b..c569d54e8 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -167,7 +167,7 @@ void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes) static void AnimTask_BlendSpriteColor_Step2(u8 taskId) { u32 selectedPalettes; - u16 singlePaletteMask = 0; + u16 singlePaletteOffset = 0; if (gTasks[taskId].data[9] == gTasks[taskId].data[2]) { @@ -176,8 +176,8 @@ static void AnimTask_BlendSpriteColor_Step2(u8 taskId) while (selectedPalettes != 0) { if (selectedPalettes & 1) - BlendPalette(singlePaletteMask, 16, gTasks[taskId].data[10], gTasks[taskId].data[5]); - singlePaletteMask += 0x10; + BlendPalette(singlePaletteOffset, 16, gTasks[taskId].data[10], gTasks[taskId].data[5]); + singlePaletteOffset += 16; selectedPalettes >>= 1; } @@ -334,7 +334,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleAnimMaskTilemap_Curse, FALSE); AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnimMaskImage_Curse, animBgData.tilesOffset); - LoadPalette(sCurseLinesPalette, animBgData.paletteId * 16 + 1, 2); + LoadPalette(sCurseLinesPalette, BG_PLTT_ID(animBgData.paletteId) + 1, PLTT_SIZEOF(1)); gBattle_BG1_X = -gSprites[spriteId].x + 32; gBattle_BG1_Y = -gSprites[spriteId].y + 32; @@ -479,28 +479,28 @@ static void StatsChangeAnimation_Step2(u8 taskId) switch (sAnimStatsChangeData->data[1]) { case 0: - LoadCompressedPalette(gBattleStatMask2_Pal, animBgData.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask2_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case 1: - LoadCompressedPalette(gBattleStatMask1_Pal, animBgData.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask1_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case 2: - LoadCompressedPalette(gBattleStatMask3_Pal, animBgData.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask3_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case 3: - LoadCompressedPalette(gBattleStatMask4_Pal, animBgData.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask4_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case 4: - LoadCompressedPalette(gBattleStatMask6_Pal, animBgData.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask6_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case 5: - LoadCompressedPalette(gBattleStatMask7_Pal, animBgData.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask7_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; case 6: - LoadCompressedPalette(gBattleStatMask8_Pal, animBgData.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask8_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; default: - LoadCompressedPalette(gBattleStatMask5_Pal, animBgData.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask5_Pal, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); break; } @@ -640,16 +640,10 @@ static void AnimTask_Flash_Step(u8 taskId) for (i = 0; i < 16; i++) { if ((task->data[15] >> i) & 1) - { - u16 paletteOffset = i * 16; - BlendPalette(paletteOffset, 16, task->data[2], 0xFFFF); - } + BlendPalette(BG_PLTT_ID(i), 16, task->data[2], 0xFFFF); if ((task->data[14] >> i) & 1) - { - u16 paletteOffset = i * 16 + 0x100; - BlendPalette(paletteOffset, 16, task->data[2], 0); - } + BlendPalette(OBJ_PLTT_ID(i), 16, task->data[2], 0); } if (task->data[2] == 0) @@ -823,7 +817,7 @@ void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler, GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, FALSE); AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset); - LoadCompressedPalette(palette, animBgData.paletteId * 16, 32); + LoadCompressedPalette(palette, BG_PLTT_ID(animBgData.paletteId), PLTT_SIZE_4BPP); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c index 48d1dc6d6..a82398ce2 100644 --- a/src/battle_anim_water.c +++ b/src/battle_anim_water.c @@ -1009,15 +1009,15 @@ void AnimTask_CreateSurfWave(u8 taskId) case ANIM_SURF_PAL_SURF: default: if (B_NEW_SURF_PARTICLE_PALETTE == TRUE) - LoadCompressedPalette(gBattleAnimSpritePal_NewSurf, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimSpritePal_NewSurf, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); else - LoadCompressedPalette(gBattleAnimBgPalette_Surf, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimBgPalette_Surf, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); break; case ANIM_SURF_PAL_MUDDY_WATER: - LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); break; case ANIM_SURF_PAL_SLUDGE_WAVE: - LoadCompressedPalette(gBattleAnimBgPalette_SludgeWave, animBg.paletteId * 16, 32); + LoadCompressedPalette(gBattleAnimBgPalette_SludgeWave, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); break; } diff --git a/src/battle_arena.c b/src/battle_arena.c index 7fb8b6e59..de34b423f 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -165,7 +165,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, RGB_BLACK); SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_ALL & ~WININ_WIN0_BG0) | WININ_WIN1_ALL); LoadCompressedSpriteSheet(sBattleArenaJudgmentSymbolsSpriteSheet); - LoadCompressedPalette(gBattleArenaJudgmentSymbolsPalette, 0x1F0, 0x20); + LoadCompressedPalette(gBattleArenaJudgmentSymbolsPalette, OBJ_PLTT_ID(15), PLTT_SIZE_4BPP); gBattle_WIN0H = 0xFF; gBattle_WIN0V = 0x70; (*state)++; diff --git a/src/battle_bg.c b/src/battle_bg.c index c2c17d9fa..e56884b55 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -735,17 +735,17 @@ void InitBattleBgsVideo(void) void LoadBattleMenuWindowGfx(void) { - LoadUserWindowBorderGfx(2, 0x12, 0x10); - LoadUserWindowBorderGfx(2, 0x22, 0x10); - LoadCompressedPalette(gBattleWindowTextPalette, 0x50, 0x20); + LoadUserWindowBorderGfx(2, 0x12, BG_PLTT_ID(1)); + LoadUserWindowBorderGfx(2, 0x22, BG_PLTT_ID(1)); + LoadCompressedPalette(gBattleWindowTextPalette, BG_PLTT_ID(5), PLTT_SIZE_4BPP); if (gBattleTypeFlags & BATTLE_TYPE_ARENA) { // Load graphics for the Battle Arena referee's mid-battle messages. - Menu_LoadStdPalAt(0x70); - LoadMessageBoxGfx(0, 0x30, 0x70); - gPlttBufferUnfaded[0x76] = 0; - CpuCopy16(&gPlttBufferUnfaded[0x76], &gPlttBufferFaded[0x76], 2); + Menu_LoadStdPalAt(BG_PLTT_ID(7)); + LoadMessageBoxGfx(0, 0x30, BG_PLTT_ID(7)); + gPlttBufferUnfaded[BG_PLTT_ID(7) + 6] = 0; + CpuCopy16(&gPlttBufferUnfaded[BG_PLTT_ID(7) + 6], &gPlttBufferFaded[BG_PLTT_ID(7) + 6], PLTT_SIZEOF(1)); } } @@ -755,25 +755,25 @@ void DrawMainBattleBackground(void) { LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) { LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE) { LZDecompressVram(gBattleTerrainTiles_Water, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA) { LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else { @@ -784,14 +784,14 @@ void DrawMainBattleBackground(void) { LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); return; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); return; } } @@ -802,47 +802,47 @@ void DrawMainBattleBackground(void) case MAP_BATTLE_SCENE_NORMAL: LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(sBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60); + LoadCompressedPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GYM: LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_MAGMA: LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_AQUA: LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_SIDNEY: LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_PHOEBE: LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GLACIA: LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_DRAKE: LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_FRONTIER: LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } @@ -853,7 +853,7 @@ void LoadBattleTextboxAndBackground(void) LZDecompressVram(gBattleTextboxTiles, (void *)(BG_CHAR_ADDR(0))); CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0); CopyBgTilemapBufferToVram(0); - LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40); + LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadBattleMenuWindowGfx(); #if B_TERRAIN_BG_CHANGE == TRUE DrawTerrainTypeBattleBackground(); @@ -1123,7 +1123,7 @@ void DrawBattleEntryBackground(void) { LZDecompressVram(gBattleVSFrame_Gfx, (void *)(BG_CHAR_ADDR(1))); LZDecompressVram(gVsLettersGfx, (void *)OBJ_VRAM0); - LoadCompressedPalette(gBattleVSFrame_Pal, 0x60, 0x20); + LoadCompressedPalette(gBattleVSFrame_Pal, BG_PLTT_ID(6), PLTT_SIZE_4BPP); SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1); SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04); CopyToBgTilemapBuffer(1, gBattleVSFrame_Tilemap, 0, 0); @@ -1216,7 +1216,7 @@ bool8 LoadChosenBattleElement(u8 caseId) CopyBgTilemapBufferToVram(0); break; case 2: - LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40); + LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); break; case 3: if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER)) @@ -1342,14 +1342,14 @@ bool8 LoadChosenBattleElement(u8 caseId) case 5: if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER)) { - LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) { if (gGameVersion == VERSION_RUBY) - LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); else - LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else { @@ -1358,12 +1358,12 @@ bool8 LoadChosenBattleElement(u8 caseId) u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass; if (trainerClass == TRAINER_CLASS_LEADER) { - LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { - LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } @@ -1372,31 +1372,31 @@ bool8 LoadChosenBattleElement(u8 caseId) { default: case MAP_BATTLE_SCENE_NORMAL: - LoadCompressedPalette(sBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60); + LoadCompressedPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GYM: - LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_MAGMA: - LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_AQUA: - LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_SIDNEY: - LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_PHOEBE: - LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GLACIA: - LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_DRAKE: - LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_FRONTIER: - LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index e95b13944..97fc21df9 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -595,6 +595,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst) battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF); battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM); battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID); + battleMon.metLevel = GetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL); GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname); StringCopy_Nickname(battleMon.nickname, nickname); GetMonData(&gEnemyParty[monId], MON_DATA_OT_NAME, battleMon.otName); diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index da1599a90..1ef5d6355 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -489,6 +489,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst) battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + battleMon.metLevel = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); StringCopy_Nickname(battleMon.nickname, nickname); GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); @@ -1552,7 +1553,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void) trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender; } - LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32); + LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 3e168828d..0a9626a13 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -612,6 +612,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst) battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF); battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM); battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID); + battleMon.metLevel = GetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL); GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname); StringCopy_Nickname(battleMon.nickname, nickname); GetMonData(&gEnemyParty[monId], MON_DATA_OT_NAME, battleMon.otName); @@ -1164,7 +1165,7 @@ static void OpponentHandleLoadMonSprite(void) static void OpponentHandleSwitchInAnim(void) { - *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6; + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; gBattlerPartyIndexes[gActiveBattler] = gBattleResources->bufferA[gActiveBattler][1]; StartSendOutAnim(gActiveBattler, gBattleResources->bufferA[gActiveBattler][2]); gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnim; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index d2d0cecd8..a57bd2995 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1866,6 +1866,7 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst) battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + battleMon.metLevel = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); StringCopy_Nickname(battleMon.nickname, nickname); GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); @@ -3195,7 +3196,7 @@ static void PlayerHandleIntroTrainerBallThrow(void) StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); paletteNum = AllocSpritePalette(0xD6F8); - LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32); + LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; taskId = CreateTask(Task_StartSendOutAnim, 5); diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 712f1562d..88bc4f974 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -675,6 +675,7 @@ static u32 CopyPlayerPartnerMonData(u8 monId, u8 *dst) battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + battleMon.metLevel = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); StringCopy_Nickname(battleMon.nickname, nickname); GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); @@ -1550,12 +1551,12 @@ static void PlayerPartnerHandleChoosePokemon(void) { s32 chosenMonId = GetMostSuitableMonToSwitchInto(); - if (chosenMonId == 6) // just switch to the next mon + if (chosenMonId == PARTY_SIZE) // just switch to the next mon { u8 playerMonIdentity = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); u8 selfIdentity = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); - for (chosenMonId = 3; chosenMonId < 6; chosenMonId++) + for (chosenMonId = PARTY_SIZE / 2; chosenMonId < PARTY_SIZE; chosenMonId++) { if (GetMonData(&gPlayerParty[chosenMonId], MON_DATA_HP) != 0 && chosenMonId != gBattlerPartyIndexes[playerMonIdentity] @@ -1804,7 +1805,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void) if (gPartnerTrainerId == TRAINER_STEVEN_PARTNER) { u8 spriteId = TRAINER_BACK_PIC_STEVEN; - LoadCompressedPalette(gTrainerBackPicPaletteTable[spriteId].data, 0x100 + paletteNum * 16, 32); + LoadCompressedPalette(gTrainerBackPicPaletteTable[spriteId].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); } else if (gPartnerTrainerId >= TRAINER_CUSTOM_PARTNER) { @@ -1814,7 +1815,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void) else { u8 spriteId = GetFrontierTrainerFrontSpriteId(gPartnerTrainerId); - LoadCompressedPalette(gTrainerFrontPicPaletteTable[spriteId].data, 0x100 + paletteNum * 16, 32); + LoadCompressedPalette(gTrainerFrontPicPaletteTable[spriteId].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); } diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 9f3631a37..2e93d625d 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -22,6 +22,7 @@ #include "sound.h" #include "string_util.h" #include "task.h" +#include "test_runner.h" #include "text.h" #include "util.h" #include "window.h" @@ -581,6 +582,7 @@ static u32 CopyRecordedOpponentMonData(u8 monId, u8 *dst) battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF); battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM); battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID); + battleMon.metLevel = GetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL); GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname); StringCopy_Nickname(battleMon.nickname, nickname); GetMonData(&gEnemyParty[monId], MON_DATA_OT_NAME, battleMon.otName); @@ -1385,6 +1387,17 @@ static void RecordedOpponentHandlePrintString(void) gBattle_BG0_Y = 0; stringId = (u16 *)(&gBattleResources->bufferA[gActiveBattler][2]); BufferStringBattle(*stringId); + + if (gTestRunnerEnabled) + { + TestRunner_Battle_RecordMessage(gDisplayedStringBattle); + if (gTestRunnerHeadless) + { + RecordedOpponentBufferExecCompleted(); + return; + } + } + BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG); gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; } @@ -1396,7 +1409,7 @@ static void RecordedOpponentHandlePrintSelectionString(void) static void RecordedOpponentHandleChooseAction(void) { - BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0); + BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(RECORDED_ACTION_TYPE, gActiveBattler), 0); RecordedOpponentBufferExecCompleted(); } @@ -1413,8 +1426,8 @@ static void RecordedOpponentHandleChooseMove(void) } else { - u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler); - u8 target = RecordedBattle_GetBattlerAction(gActiveBattler); + u8 moveId = RecordedBattle_GetBattlerAction(RECORDED_MOVE_SLOT, gActiveBattler); + u8 target = RecordedBattle_GetBattlerAction(RECORDED_MOVE_TARGET, gActiveBattler); BtlController_EmitTwoReturnValues(BUFFER_B, 10, moveId | (target << 8)); } @@ -1428,7 +1441,7 @@ static void RecordedOpponentHandleChooseItem(void) static void RecordedOpponentHandleChoosePokemon(void) { - *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler); + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(RECORDED_PARTY_INDEX, gActiveBattler); BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL); RecordedOpponentBufferExecCompleted(); } @@ -1441,22 +1454,23 @@ static void RecordedOpponentHandleCmd23(void) static void RecordedOpponentHandleHealthBarUpdate(void) { s16 hpVal; + s32 maxHP, curHP; LoadBattleBarGfx(0); hpVal = gBattleResources->bufferA[gActiveBattler][2] | (gBattleResources->bufferA[gActiveBattler][3] << 8); + maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + curHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); + if (hpVal != INSTANT_HP_BAR_DROP) { - u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); - u32 curHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); - SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + TestRunner_Battle_RecordHP(gActiveBattler, curHP, min(maxHP, max(0, curHP - hpVal))); } else { - u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); - SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); + TestRunner_Battle_RecordHP(gActiveBattler, curHP, 0); } gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; @@ -1477,6 +1491,9 @@ static void RecordedOpponentHandleStatusIconUpdate(void) battlerId = gActiveBattler; gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0; gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + + if (gTestRunnerEnabled) + TestRunner_Battle_RecordStatus1(battlerId, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS)); } } diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index ecc8e09de..1906df8a8 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -19,6 +19,7 @@ #include "sound.h" #include "string_util.h" #include "task.h" +#include "test_runner.h" #include "text.h" #include "util.h" #include "window.h" @@ -562,6 +563,7 @@ static u32 CopyRecordedPlayerMonData(u8 monId, u8 *dst) battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + battleMon.metLevel = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); StringCopy_Nickname(battleMon.nickname, nickname); GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); @@ -1393,6 +1395,17 @@ static void RecordedPlayerHandlePrintString(void) gBattle_BG0_Y = 0; stringId = (u16 *)(&gBattleResources->bufferA[gActiveBattler][2]); BufferStringBattle(*stringId); + + if (gTestRunnerEnabled) + { + TestRunner_Battle_RecordMessage(gDisplayedStringBattle); + if (gTestRunnerHeadless) + { + RecordedPlayerBufferExecCompleted(); + return; + } + } + BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG); gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; } @@ -1406,7 +1419,7 @@ static void ChooseActionInBattlePalace(void) { if (gBattleCommunication[4] >= gBattlersCount / 2) { - BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0); + BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(RECORDED_BATTLE_PALACE_ACTION, gActiveBattler), 0); RecordedPlayerBufferExecCompleted(); } } @@ -1419,7 +1432,7 @@ static void RecordedPlayerHandleChooseAction(void) } else { - BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0); + BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(RECORDED_ACTION_TYPE, gActiveBattler), 0); RecordedPlayerBufferExecCompleted(); } } @@ -1437,8 +1450,8 @@ static void RecordedPlayerHandleChooseMove(void) } else { - u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler); - u8 target = RecordedBattle_GetBattlerAction(gActiveBattler); + u8 moveId = RecordedBattle_GetBattlerAction(RECORDED_MOVE_SLOT, gActiveBattler); + u8 target = RecordedBattle_GetBattlerAction(RECORDED_MOVE_TARGET, gActiveBattler); BtlController_EmitTwoReturnValues(BUFFER_B, 10, moveId | (target << 8)); } @@ -1452,7 +1465,7 @@ static void RecordedPlayerHandleChooseItem(void) static void RecordedPlayerHandleChoosePokemon(void) { - *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler); + *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(RECORDED_PARTY_INDEX, gActiveBattler); BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL); RecordedPlayerBufferExecCompleted(); } @@ -1465,23 +1478,24 @@ static void RecordedPlayerHandleCmd23(void) static void RecordedPlayerHandleHealthBarUpdate(void) { s16 hpVal; + s32 maxHP, curHP; LoadBattleBarGfx(0); hpVal = gBattleResources->bufferA[gActiveBattler][2] | (gBattleResources->bufferA[gActiveBattler][3] << 8); + maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); + if (hpVal != INSTANT_HP_BAR_DROP) { - u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); - u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); - SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + TestRunner_Battle_RecordHP(gActiveBattler, curHP, min(maxHP, max(0, curHP - hpVal))); } else { - u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); - SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, 0, maxHP); + TestRunner_Battle_RecordHP(gActiveBattler, curHP, 0); } gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; @@ -1502,6 +1516,9 @@ static void RecordedPlayerHandleStatusIconUpdate(void) battlerId = gActiveBattler; gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0; gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; + + if (gTestRunnerEnabled) + TestRunner_Battle_RecordStatus1(battlerId, GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS)); } } @@ -1670,7 +1687,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void) else trainerPicId = gSaveBlock2Ptr->playerGender; - LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32); + LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index 4f4f2eb6f..ae20c54ec 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -491,6 +491,7 @@ static u32 CopyWallyMonData(u8 monId, u8 *dst) battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + battleMon.metLevel = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); StringCopy_Nickname(battleMon.nickname, nickname); GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); @@ -1438,7 +1439,7 @@ static void WallyHandleIntroTrainerBallThrow(void) StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); paletteNum = AllocSpritePalette(0xD6F8); - LoadCompressedPalette(gTrainerBackPicPaletteTable[TRAINER_BACK_PIC_WALLY].data, 0x100 + paletteNum * 16, 32); + LoadCompressedPalette(gTrainerBackPicPaletteTable[TRAINER_BACK_PIC_WALLY].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; taskId = CreateTask(Task_StartSendOutAnim, 5); diff --git a/src/battle_debug.c b/src/battle_debug.c index 1fd2d9b00..027be03a4 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -1107,7 +1107,7 @@ static void Task_DebugMenuProcessInput(u8 taskId) struct BattleDebugMenu *data = GetStructPtr(taskId); // Exit the menu. - if (JOY_NEW(SELECT_BUTTON)) + if (JOY_NEW(SELECT_BUTTON) || ((JOY_NEW(B_BUTTON)) && data->activeWindow == ACTIVE_WIN_MAIN)) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_DebugMenuFadeOut; diff --git a/src/battle_dome.c b/src/battle_dome.c index 7005890d8..a5f73316e 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[gSpeciesInfo[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type1]; - monTypesBits |= gBitTable[gSpeciesInfo[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type2]; + monTypesBits |= gBitTable[gSpeciesInfo[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].types[0]]; + monTypesBits |= gBitTable[gSpeciesInfo[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].types[1]]; } // 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[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; - monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; + monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].types[0]]; + monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].types[1]]; } for (monTypesCount = 0, j = 0; j < 32; j++) @@ -2750,8 +2750,8 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || IS_MOVE_STATUS(move)) return 0; - defType1 = gSpeciesInfo[targetSpecies].type1; - defType2 = gSpeciesInfo[targetSpecies].type2; + defType1 = gSpeciesInfo[targetSpecies].types[0]; + defType2 = gSpeciesInfo[targetSpecies].types[1]; defAbility = gSpeciesInfo[targetSpecies].abilities[0]; moveType = gBattleMoves[move].type; @@ -3031,12 +3031,12 @@ static void Task_ShowTourneyInfoCard(u8 taskId) DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyInfoCard_Tilemap, 0x2000, 0, 1); DecompressAndLoadBgGfxUsingHeap(3, gDomeTourneyInfoCardBg_Tilemap, 0x800, 0, 1); LoadCompressedSpriteSheet(sTourneyTreeButtonsSpriteSheet); - LoadCompressedPalette(gDomeTourneyTree_Pal, 0, 0x200); - LoadCompressedPalette(gDomeTourneyTreeButtons_Pal, 0x100, 0x200); - LoadCompressedPalette(gBattleWindowTextPalette, 0xF0, 0x20); + LoadCompressedPalette(gDomeTourneyTree_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); + LoadCompressedPalette(gDomeTourneyTreeButtons_Pal, OBJ_PLTT_OFFSET, OBJ_PLTT_SIZE); + LoadCompressedPalette(gBattleWindowTextPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); if (mode == INFOCARD_MATCH) - LoadCompressedPalette(gDomeTourneyMatchCardBg_Pal, 0x50, 0x20); // Changes the moving info card bg to orange when in match card mode - CpuFill32(0, gPlttBufferFaded, 0x400); + LoadCompressedPalette(gDomeTourneyMatchCardBg_Pal, BG_PLTT_ID(5), PLTT_SIZE_4BPP); // Changes the moving info card bg to orange when in match card mode + CpuFill32(0, gPlttBufferFaded, PLTT_SIZE); ShowBg(0); ShowBg(1); ShowBg(2); @@ -4237,7 +4237,7 @@ static u8 Task_GetInfoCardInput(u8 taskId) #undef tUsingAlternateSlot // allocatedArray below needs to be large enough to hold stat totals for each mon, or totals of each type of move points -#define ALLOC_ARRAY_SIZE (NUM_STATS * FRONTIER_PARTY_SIZE >= NUM_MOVE_POINT_TYPES ? (NUM_STATS * FRONTIER_PARTY_SIZE) : NUM_MOVE_POINT_TYPES) +#define ALLOC_ARRAY_SIZE max(NUM_STATS * FRONTIER_PARTY_SIZE, NUM_MOVE_POINT_TYPES) static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) { @@ -5309,10 +5309,10 @@ static void Task_ShowTourneyTree(u8 taskId) DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyLine_Gfx, 0x2000, 0, 0); DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyLineDown_Tilemap, 0x2000, 0, 1); DecompressAndLoadBgGfxUsingHeap(3, gDomeTourneyLineUp_Tilemap, 0x2000, 0, 1); - LoadCompressedPalette(gDomeTourneyTree_Pal, 0, 0x200); - LoadCompressedPalette(gDomeTourneyTreeButtons_Pal, 0x100, 0x200); - LoadCompressedPalette(gBattleWindowTextPalette, 0xF0, 0x20); - CpuFill32(0, gPlttBufferFaded, 0x400); + LoadCompressedPalette(gDomeTourneyTree_Pal, BG_PLTT_OFFSET, BG_PLTT_SIZE); + LoadCompressedPalette(gDomeTourneyTreeButtons_Pal, OBJ_PLTT_OFFSET, OBJ_PLTT_SIZE); + LoadCompressedPalette(gBattleWindowTextPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); + CpuFill32(0, gPlttBufferFaded, PLTT_SIZE); ShowBg(0); ShowBg(1); ShowBg(2); @@ -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[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; - monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; + monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].types[0]]; + monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].types[1]]; } // Because GF hates temporary vars, trainerId acts like monTypesCount here. diff --git a/src/battle_factory.c b/src/battle_factory.c index 77f501387..667b6c606 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[gSpeciesInfo[species].type1]++; - if (gSpeciesInfo[species].type1 != gSpeciesInfo[species].type2) - typeCounts[gSpeciesInfo[species].type2]++; + typeCounts[gSpeciesInfo[species].types[0]]++; + if (gSpeciesInfo[species].types[0] != gSpeciesInfo[species].types[1]) + typeCounts[gSpeciesInfo[species].types[1]]++; } // Determine which are the two most-common types. diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index 6f9a2efb3..15f74831c 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -1175,16 +1175,16 @@ static void CB2_InitSelectScreen(void) LoadBgTiles(3, sSelectMonPicBgTilesetBuffer, 0x60, 0); CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSelectMenuTilemapBuffer, BG_SCREEN_SIZE); LoadBgTilemap(1, sSelectMenuTilemapBuffer, BG_SCREEN_SIZE, 0); - LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40); - LoadPalette(sSelectText_Pal, 0xF0, 8); - LoadPalette(sSelectText_Pal, 0xE0, 10); + LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 2 * PLTT_SIZE_4BPP); + LoadPalette(sSelectText_Pal, BG_PLTT_ID(15), PLTT_SIZEOF(4)); + LoadPalette(sSelectText_Pal, BG_PLTT_ID(14), PLTT_SIZEOF(5)); #ifdef UBFIX if (sFactorySelectScreen && sFactorySelectScreen->fromSummaryScreen) #else if (sFactorySelectScreen->fromSummaryScreen == TRUE) #endif gPlttBufferUnfaded[228] = sFactorySelectScreen->speciesNameColorBackup; - LoadPalette(sMonPicBg_Pal, 0x20, 4); + LoadPalette(sMonPicBg_Pal, BG_PLTT_ID(2), PLTT_SIZEOF(2)); gMain.state++; break; case 3: @@ -2748,7 +2748,7 @@ static void Swap_Task_FadeOutSpeciesName(u8 taskId) gTasks[taskId].tState++; break; case 1: - LoadPalette(&gPlttBufferUnfaded[0xF0], 0xE0, 0xA); + LoadPalette(&gPlttBufferUnfaded[BG_PLTT_ID(15)], BG_PLTT_ID(14), PLTT_SIZEOF(5)); gTasks[taskId].tState++; break; case 2: @@ -2994,7 +2994,7 @@ static void Swap_Task_ScreenInfoTransitionOut(u8 taskId) switch (gTasks[taskId].tState) { case 0: - LoadPalette(sSwapText_Pal, 0xE0, sizeof(sSwapText_Pal)); + LoadPalette(sSwapText_Pal, BG_PLTT_ID(14), sizeof(sSwapText_Pal)); Swap_PrintActionStrings(); PutWindowTilemap(SWAP_WIN_ACTION_FADE); gTasks[taskId].tState++; @@ -3309,10 +3309,10 @@ static void CB2_InitSwapScreen(void) LoadBgTiles(3, sSwapMonPicBgTilesetBuffer, 0x60, 0); CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSwapMenuTilemapBuffer, BG_SCREEN_SIZE); LoadBgTilemap(1, sSwapMenuTilemapBuffer, BG_SCREEN_SIZE, 0); - LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40); - LoadPalette(sSwapText_Pal, 0xF0, sizeof(sSwapText_Pal)); - LoadPalette(sSwapText_Pal, 0xE0, sizeof(sSwapText_Pal)); - LoadPalette(sMonPicBg_Pal, 0x20, 4); + LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 2 * PLTT_SIZE_4BPP); + LoadPalette(sSwapText_Pal, BG_PLTT_ID(15), sizeof(sSwapText_Pal)); + LoadPalette(sSwapText_Pal, BG_PLTT_ID(14), sizeof(sSwapText_Pal)); + LoadPalette(sMonPicBg_Pal, BG_PLTT_ID(2), PLTT_SIZEOF(2)); gMain.state++; break; case 3: @@ -3867,7 +3867,7 @@ static void Swap_PrintMonSpeciesAtFade(void) pal[4] = gPlttBufferFaded[228]; else pal[4] = sFactorySwapScreen->speciesNameColorBackup; - LoadPalette(pal, 0xF0, sizeof(sSwapText_Pal)); + LoadPalette(pal, BG_PLTT_ID(15), sizeof(sSwapText_Pal)); PutWindowTilemap(SWAP_WIN_SPECIES_AT_FADE); FillWindowPixelBuffer(SWAP_WIN_SPECIES_AT_FADE, PIXEL_FILL(0)); @@ -3895,8 +3895,8 @@ static void Swap_PrintMonSpeciesForTransition(void) u16 species; u8 x; - LoadPalette(sSwapText_Pal, 0xE0, sizeof(sSwapText_Pal)); - CpuCopy16(&gPlttBufferUnfaded[240], &gPlttBufferFaded[224], 10); + LoadPalette(sSwapText_Pal, BG_PLTT_ID(14), sizeof(sSwapText_Pal)); + CpuCopy16(&gPlttBufferUnfaded[BG_PLTT_ID(15)], &gPlttBufferFaded[BG_PLTT_ID(14)], PLTT_SIZEOF(5)); if (sFactorySwapScreen->cursorPos >= FRONTIER_PARTY_SIZE) { diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 0c26fdfda..193452613 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -27,8 +27,6 @@ #include "constants/battle_palace.h" extern const u8 gBattlePalaceNatureToMoveTarget[]; -extern const u8 *const gBattleAnims_General[]; -extern const u8 *const gBattleAnims_Special[]; extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; @@ -465,7 +463,7 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de gBattleAnimAttacker = atkBattler; gBattleAnimTarget = defBattler; gBattleSpritesDataPtr->animationData->animArg = argument; - LaunchBattleAnimation(gBattleAnims_General, tableId, FALSE); + LaunchBattleAnimation(ANIM_TYPE_GENERAL, tableId); taskId = CreateTask(Task_ClearBitWhenBattleTableAnimDone, 10); gTasks[taskId].tBattlerId = activeBattler; gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 1; @@ -509,7 +507,7 @@ void InitAndLaunchSpecialAnimation(u8 activeBattler, u8 atkBattler, u8 defBattle gBattleAnimAttacker = atkBattler; gBattleAnimTarget = defBattler; - LaunchBattleAnimation(gBattleAnims_Special, tableId, FALSE); + LaunchBattleAnimation(ANIM_TYPE_SPECIAL, tableId); taskId = CreateTask(Task_ClearBitWhenSpecialAnimDone, 10); gTasks[taskId].tBattlerId = activeBattler; gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 1; @@ -586,7 +584,7 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op species, currentPersonality); } - paletteOffset = 0x100 + battlerId * 16; + paletteOffset = OBJ_PLTT_ID(battlerId); if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) lzPaletteData = GetMonFrontSpritePal(mon); @@ -594,21 +592,21 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality); LZDecompressWram(lzPaletteData, gDecompressionBuffer); - LoadPalette(gDecompressionBuffer, paletteOffset, 0x20); - LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20); + LoadPalette(gDecompressionBuffer, paletteOffset, PLTT_SIZE_4BPP); + LoadPalette(gDecompressionBuffer, BG_PLTT_ID(8) + BG_PLTT_ID(battlerId), PLTT_SIZE_4BPP); if (species == SPECIES_CASTFORM || species == SPECIES_CHERRIM) { - paletteOffset = 0x100 + battlerId * 16; + paletteOffset = OBJ_PLTT_ID(battlerId); LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); - LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); + LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, PLTT_SIZE_4BPP); } // transform's pink color if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE) { BlendPalette(paletteOffset, 16, 6, RGB_WHITE); - CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); } } @@ -642,7 +640,7 @@ void DecompressTrainerBackPic(u16 backPicId, u8 battlerId) gMonSpritesGfxPtr->sprites.ptr[position], SPECIES_NONE); LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data, - 0x100 + 16 * battlerId, 0x20); + OBJ_PLTT_ID(battlerId), PLTT_SIZE_4BPP); } void BattleGfxSfxDummy3(u8 gender) @@ -849,7 +847,7 @@ void CopyBattleSpriteInvisibility(u8 battlerId) gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible; } -void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bool32 megaEvo) +void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bool32 megaEvo, bool8 trackEnemyPersonality) { u32 personalityValue, otId, position, paletteOffset, targetSpecies; const void *lzPaletteData, *src; @@ -878,7 +876,10 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) { - personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + if (trackEnemyPersonality) + personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + else + personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); HandleLoadSpecialPokePic(FALSE, @@ -888,7 +889,10 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo } else { - personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + if (trackEnemyPersonality) + personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); + else + personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); HandleLoadSpecialPokePic(TRUE, @@ -901,15 +905,15 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo if (castform) { StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg); - paletteOffset = 0x100 + battlerAtk * 16; + paletteOffset = OBJ_PLTT_ID(battlerAtk); lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue); LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); - LoadPalette(gBattleStruct->castformPalette[gBattleSpritesDataPtr->animationData->animArg], paletteOffset, 32); + LoadPalette(gBattleStruct->castformPalette[gBattleSpritesDataPtr->animationData->animArg], paletteOffset, PLTT_SIZE_4BPP); gBattleMonForms[battlerAtk] = gBattleSpritesDataPtr->animationData->animArg; if (gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies != SPECIES_NONE) { BlendPalette(paletteOffset, 16, 6, RGB_WHITE); - CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); } gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk); } @@ -918,22 +922,22 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo src = gMonSpritesGfxPtr->sprites.ptr[position]; dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32); DmaCopy32(3, src, dst, MON_PIC_SIZE); - paletteOffset = 0x100 + battlerAtk * 16; + paletteOffset = OBJ_PLTT_ID(battlerAtk); lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue); LZDecompressWram(lzPaletteData, gDecompressionBuffer); - LoadPalette(gDecompressionBuffer, paletteOffset, 32); + LoadPalette(gDecompressionBuffer, paletteOffset, PLTT_SIZE_4BPP); if (targetSpecies == SPECIES_CASTFORM || targetSpecies == SPECIES_CHERRIM) { gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies]; LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); - LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, 32); + LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, PLTT_SIZE_4BPP); } if (!megaEvo) { BlendPalette(paletteOffset, 16, 6, RGB_WHITE); - CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); } if (!IsContest() && !megaEvo) @@ -970,8 +974,8 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite) Dma3CopyLarge32_(gMonSpritesGfxPtr->sprites.ptr[position], &gMonSpritesGfxPtr->sprites.byte[position][MON_PIC_SIZE * i], MON_PIC_SIZE); } - palOffset = (battlerId * 16) + 0x100; - LoadCompressedPalette(gSubstituteDollPal, palOffset, 32); + palOffset = OBJ_PLTT_ID(battlerId); + LoadCompressedPalette(gSubstituteDollPal, palOffset, PLTT_SIZE_4BPP); } else { diff --git a/src/battle_interface.c b/src/battle_interface.c index e8bc31608..9c0db8b07 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -28,6 +28,7 @@ #include "item.h" #include "item_icon.h" #include "item_use.h" +#include "test_runner.h" #include "constants/battle_anim.h" #include "constants/rgb.h" #include "constants/songs.h" @@ -2249,11 +2250,11 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) return; } - pltAdder = gSprites[healthboxSpriteId].oam.paletteNum * 16; + pltAdder = PLTT_ID(gSprites[healthboxSpriteId].oam.paletteNum); pltAdder += battlerId + 12; - FillPalette(sStatusIconColors[statusPalId], pltAdder + 0x100, 2); - CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void *)(OBJ_PLTT + pltAdder * 2), 2); + FillPalette(sStatusIconColors[statusPalId], OBJ_PLTT_OFFSET + pltAdder, PLTT_SIZEOF(1)); + CpuCopy16(gPlttBufferUnfaded + OBJ_PLTT_OFFSET + pltAdder, (u16 *)OBJ_PLTT + pltAdder, PLTT_SIZEOF(1)); CpuCopy32(statusGfxPtr, (void *)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96); if (WhichBattleCoords(battlerId) == 1 || GetBattlerSide(battlerId) == B_SIDE_OPPONENT) { @@ -2801,66 +2802,25 @@ static const struct SpritePalette sSpritePalette_AbilityPopUp = static const struct OamData sOamData_AbilityPopUp = { - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = ST_OAM_H_RECTANGLE, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .shape = SPRITE_SHAPE(64x32), + .size = SPRITE_SIZE(64x32), .priority = 0, - .paletteNum = 0, - .affineParam = 0, }; -static const union AnimCmd sSpriteAnim_AbilityPopUp1[] = -{ - ANIMCMD_FRAME(0, 0), - ANIMCMD_END -}; - -static const union AnimCmd *const sSpriteAnimTable_AbilityPopUp1[] = -{ - sSpriteAnim_AbilityPopUp1 -}; - -static const struct SpriteTemplate sSpriteTemplate_AbilityPopUp1 = +static const struct SpriteTemplate sSpriteTemplate_AbilityPopUp = { .tileTag = ABILITY_POP_UP_TAG, .paletteTag = ABILITY_POP_UP_TAG, .oam = &sOamData_AbilityPopUp, - .anims = sSpriteAnimTable_AbilityPopUp1, + .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCb_AbilityPopUp }; -static const union AnimCmd sSpriteAnim_AbilityPopUp2[] = -{ - ANIMCMD_FRAME(32, 0), - ANIMCMD_END -}; - -static const union AnimCmd *const sSpriteAnimTable_AbilityPopUp2[] = -{ - sSpriteAnim_AbilityPopUp2 -}; - -static const struct SpriteTemplate sSpriteTemplate_AbilityPopUp2 = -{ - .tileTag = ABILITY_POP_UP_TAG, - .paletteTag = ABILITY_POP_UP_TAG, - .oam = &sOamData_AbilityPopUp, - .anims = sSpriteAnimTable_AbilityPopUp2, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCb_AbilityPopUp -}; - -#define ABILITY_POP_UP_POS_X_DIFF 64 +#define ABILITY_POP_UP_POS_X_DIFF (64 - 7) // Hide second sprite underneath to gain proper letter spacing #define ABILITY_POP_UP_POS_X_SLIDE 68 static const s16 sAbilityPopUpCoordsDoubles[MAX_BATTLERS_COUNT][2] = @@ -2877,24 +2837,27 @@ static const s16 sAbilityPopUpCoordsSingles[MAX_BATTLERS_COUNT][2] = {186, 57}, // opponent }; +#define POPUP_WINDOW_WIDTH 8 +#define MAX_POPUP_STRING_WIDTH (POPUP_WINDOW_WIDTH * 8) + static u8* AddTextPrinterAndCreateWindowOnAbilityPopUp(const u8 *str, u32 x, u32 y, u32 color1, u32 color2, u32 color3, u32 *windowId) { u8 color[3] = {color1, color2, color3}; struct WindowTemplate winTemplate = {0}; - winTemplate.width = 8; + winTemplate.width = POPUP_WINDOW_WIDTH; winTemplate.height = 2; *windowId = AddWindow(&winTemplate); FillWindowPixelBuffer(*windowId, PIXEL_FILL(color1)); - AddTextPrinterParameterized4(*windowId, 0, x, y, 0, 0, color, -1, str); + AddTextPrinterParameterized4(*windowId, FONT_SMALL, x, y, 0, 0, color, TEXT_SKIP_DRAW, str); return (u8 *)(GetWindowAttribute(*windowId, WINDOW_TILE_DATA)); } -static void TextIntoAbilityPopUp(void *dest, u8 *windowTileData, s32 arg2, bool32 arg3) +static void TextIntoAbilityPopUp(void *dest, u8 *windowTileData, s32 xTileAmount, bool32 arg3) { - CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32); - if (arg2 > 0) + CpuCopy32(windowTileData + 256, dest + 256, xTileAmount * 32); + if (xTileAmount > 0) { do { @@ -2903,52 +2866,26 @@ static void TextIntoAbilityPopUp(void *dest, u8 *windowTileData, s32 arg2, bool3 else CpuCopy32(windowTileData + 20, dest + 20, 12); dest += 32, windowTileData += 32; - arg2--; - } while (arg2 != 0); + xTileAmount--; + } while (xTileAmount != 0); } } -#define MAX_CHARS_PRINTED 12 - -static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTileData2, u32 x1, u32 x2, u32 y, u32 color1, u32 color2, u32 color3, bool32 alignAbilityChars) +static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTileData2, u32 x1, u32 x2, u32 y, u32 color1, u32 color2, u32 color3) { - u32 windowId, i; + u32 windowId; u8 *windowTileData; - u8 text1[MAX_CHARS_PRINTED]; - u8 text2[MAX_CHARS_PRINTED]; + u16 width; - for (i = 0; i < MAX_CHARS_PRINTED; i++) - { - text1[i] = str[i]; - if (text1[i] == EOS) - break; - } - text1[i] = EOS; - - // Because there are two Windows, we need to align the strings, so that the first char in the second window starts right after the last char in the first window. - // Windows are 64 pixels in width. - if (alignAbilityChars && i == MAX_CHARS_PRINTED) - { - u32 width = GetStringWidth(FONT_SMALL, text1, 0); - if (x1 + width < 64) - x1 += 64 - (x1 + width); - } - - windowTileData = AddTextPrinterAndCreateWindowOnAbilityPopUp(text1, x1, y, color1, color2, color3, &windowId); + windowTileData = AddTextPrinterAndCreateWindowOnAbilityPopUp(str, x1, y, color1, color2, color3, &windowId); TextIntoAbilityPopUp(spriteTileData1, windowTileData, 8, (y == 0)); RemoveWindow(windowId); - if (i == MAX_CHARS_PRINTED) - { - for (i = 0; i < MAX_CHARS_PRINTED; i++) - { - text2[i] = str[MAX_CHARS_PRINTED + i]; - if (text2[i] == EOS) - break; - } - text2[i] = EOS; + width = GetStringWidth(FONT_SMALL, str, 0); - windowTileData = AddTextPrinterAndCreateWindowOnAbilityPopUp(text2, x2, y, color1, color2, color3, &windowId); + if (width > MAX_POPUP_STRING_WIDTH - 5) + { + windowTileData = AddTextPrinterAndCreateWindowOnAbilityPopUp(str, x2 - MAX_POPUP_STRING_WIDTH, y, color1, color2, color3, &windowId); TextIntoAbilityPopUp(spriteTileData2, windowTileData, 3, (y == 0)); RemoveWindow(windowId); } @@ -2960,48 +2897,51 @@ static void ClearAbilityName(u8 spriteId1, u8 spriteId2) PrintOnAbilityPopUp(sText_Space16, (void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32) + 256, (void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32) + 256, - 6, 1, + 5, 12, 4, - 7, 9, 1, - FALSE); + 7, 9, 1); } static void PrintBattlerOnAbilityPopUp(u8 battlerId, u8 spriteId1, u8 spriteId2) { int i; u8 lastChar; - u8* name; + u8* textPtr; u8 monName[POKEMON_NAME_LENGTH + 3] = {0}; - u8* nick = gBattleMons[battlerId].nickname; + u8* nick = gBattleMons[battlerId].nickname; // This needs to be updated for Illusion support for (i = 0; i < POKEMON_NAME_LENGTH; ++i) { monName[i] = nick[i]; - if (nick[i] == EOS || i + 1 == POKEMON_NAME_LENGTH) + + if (nick[i] == EOS || i + 1 == POKEMON_NAME_LENGTH) // End of string break; } - name = monName + i + 1; - if (*(name - 1) == EOS) - name--; + textPtr = monName + i + 1; - lastChar = *(name - 1); - name[0] = CHAR_SGL_QUOTE_RIGHT; // apostraphe - name++; + if (*(textPtr - 1) == EOS) + textPtr--; + + lastChar = *(textPtr - 1); + + // Make the string say "[NAME]'s" instead of "[NAME]" + textPtr[0] = CHAR_SGL_QUOTE_RIGHT; // apostraphe + textPtr++; if (lastChar != CHAR_S && lastChar != CHAR_s) { - name[0] = CHAR_s; - name++; + textPtr[0] = CHAR_s; + textPtr++; } - name[0] = EOS; + textPtr[0] = EOS; + PrintOnAbilityPopUp((const u8 *)monName, (void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32), (void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32), - 7, 0, + 5, 12, 0, - 2, 7, 1, - FALSE); + 2, 7, 1); } static void PrintAbilityOnAbilityPopUp(u32 ability, u8 spriteId1, u8 spriteId2) @@ -3009,10 +2949,9 @@ static void PrintAbilityOnAbilityPopUp(u32 ability, u8 spriteId1, u8 spriteId2) PrintOnAbilityPopUp(gAbilityNames[ability], (void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32) + 256, (void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32) + 256, - 6, 0, + 5, 12, 4, - 7, 9, 1, - TRUE); + 7, 9, 1); } #define PIXEL_COORDS_TO_OFFSET(x, y)( \ @@ -3076,15 +3015,12 @@ static const u16 sOverwrittenPixelsTable[][2] = {PIXEL_COORDS_TO_OFFSET(0, 45), 8}, {PIXEL_COORDS_TO_OFFSET(0, 46), 8}, {PIXEL_COORDS_TO_OFFSET(0, 47), 8}, - //{PIXEL_COORDS_TO_OFFSET(0, 48), 8}, // cuts off the top of the 'G' in Neutralizing Gas {PIXEL_COORDS_TO_OFFSET(8, 45), 8}, {PIXEL_COORDS_TO_OFFSET(8, 46), 8}, {PIXEL_COORDS_TO_OFFSET(8, 47), 8}, - {PIXEL_COORDS_TO_OFFSET(8, 48), 8}, {PIXEL_COORDS_TO_OFFSET(16, 45), 8}, {PIXEL_COORDS_TO_OFFSET(16, 46), 8}, {PIXEL_COORDS_TO_OFFSET(16, 47), 8}, - {PIXEL_COORDS_TO_OFFSET(16, 48), 8}, }; static inline void CopyPixels(u8 *dest, const u8 *src, u32 pixelCount) @@ -3137,6 +3073,13 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) const s16 (*coords)[2]; u8 spriteId1, spriteId2, battlerPosition, taskId; + if (gTestRunnerEnabled) + { + TestRunner_Battle_RecordAbilityPopUp(battlerId, ability); + if (gTestRunnerHeadless) + return; + } + if (gBattleScripting.abilityPopupOverwrite != 0) ability = gBattleScripting.abilityPopupOverwrite; @@ -3155,35 +3098,33 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) if ((battlerPosition & BIT_SIDE) == B_SIDE_PLAYER) { - spriteId1 = CreateSprite(&sSpriteTemplate_AbilityPopUp1, + spriteId1 = CreateSprite(&sSpriteTemplate_AbilityPopUp, coords[battlerPosition][0] - ABILITY_POP_UP_POS_X_SLIDE, coords[battlerPosition][1], 0); - spriteId2 = CreateSprite(&sSpriteTemplate_AbilityPopUp2, + spriteId2 = CreateSprite(&sSpriteTemplate_AbilityPopUp, coords[battlerPosition][0] - ABILITY_POP_UP_POS_X_SLIDE + ABILITY_POP_UP_POS_X_DIFF, - coords[battlerPosition][1], 0); - - gSprites[spriteId1].tOriginalX = coords[battlerPosition][0]; - gSprites[spriteId2].tOriginalX = coords[battlerPosition][0] + ABILITY_POP_UP_POS_X_DIFF; + coords[battlerPosition][1], 1); //Appears below gSprites[spriteId1].tRightToLeft = TRUE; gSprites[spriteId2].tRightToLeft = TRUE; } else { - spriteId1 = CreateSprite(&sSpriteTemplate_AbilityPopUp1, + spriteId1 = CreateSprite(&sSpriteTemplate_AbilityPopUp, coords[battlerPosition][0] + ABILITY_POP_UP_POS_X_SLIDE, coords[battlerPosition][1], 0); - spriteId2 = CreateSprite(&sSpriteTemplate_AbilityPopUp2, + spriteId2 = CreateSprite(&sSpriteTemplate_AbilityPopUp, coords[battlerPosition][0] + ABILITY_POP_UP_POS_X_SLIDE + ABILITY_POP_UP_POS_X_DIFF, - coords[battlerPosition][1], 0); - - gSprites[spriteId1].tOriginalX = coords[battlerPosition][0]; - gSprites[spriteId2].tOriginalX = coords[battlerPosition][0] + ABILITY_POP_UP_POS_X_DIFF; + coords[battlerPosition][1], 1); //Appears below gSprites[spriteId1].tRightToLeft = FALSE; gSprites[spriteId2].tRightToLeft = FALSE; } + gSprites[spriteId1].tOriginalX = coords[battlerPosition][0]; + gSprites[spriteId2].tOriginalX = coords[battlerPosition][0] + ABILITY_POP_UP_POS_X_DIFF; + gSprites[spriteId2].oam.tileNum += (8 * 4); //Second half of pop up + gBattleStruct->abilityPopUpSpriteIds[battlerId][0] = spriteId1; gBattleStruct->abilityPopUpSpriteIds[battlerId][1] = spriteId2; @@ -3254,9 +3195,12 @@ static void SpriteCb_AbilityPopUp(struct Sprite *sprite) void DestroyAbilityPopUp(u8 battlerId) { - gSprites[gBattleStruct->abilityPopUpSpriteIds[battlerId][0]].tFrames = 0; - gSprites[gBattleStruct->abilityPopUpSpriteIds[battlerId][1]].tFrames = 0; - gBattleScripting.fixedPopup = FALSE; + if (gBattleStruct->activeAbilityPopUps & gBitTable[battlerId]) + { + gSprites[gBattleStruct->abilityPopUpSpriteIds[battlerId][0]].tFrames = 0; + gSprites[gBattleStruct->abilityPopUpSpriteIds[battlerId][1]].tFrames = 0; + gBattleScripting.fixedPopup = FALSE; + } } static void Task_FreeAbilityPopUpGfx(u8 taskId) diff --git a/src/battle_main.c b/src/battle_main.c index 56b009cbb..f316846c6 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -45,6 +45,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" +#include "test_runner.h" #include "text.h" #include "trig.h" #include "tv.h" @@ -474,7 +475,8 @@ const u8 *const gStatusConditionStringsTable[][2] = void CB2_InitBattle(void) { - MoveSaveBlocks_ResetHeap(); + if (!gTestRunnerEnabled) + MoveSaveBlocks_ResetHeap(); AllocateBattleResources(); AllocateBattleSpritesData(); AllocateMonSpritesGfx(); @@ -1805,6 +1807,8 @@ void CB2_QuitRecordedBattle(void) { m4aMPlayStop(&gMPlayInfo_SE1); m4aMPlayStop(&gMPlayInfo_SE2); + if (gTestRunnerEnabled) + TestRunner_Battle_AfterLastTurn(); FreeRestoreBattleData(); FreeAllWindowBuffers(); SetMainCallback2(gMain.savedCallback); @@ -2137,7 +2141,7 @@ void CB2_InitEndLinkBattle(void) gBattle_BG3_Y = 0; InitBattleBgsVideo(); - LoadCompressedPalette(gBattleTextboxPalette, 0, 64); + LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadBattleMenuWindowGfx(); ResetSpriteData(); ResetTasks(); @@ -3047,6 +3051,8 @@ static void BattleStartClearSetData(void) gBattleStruct->usedHeldItems[i][B_SIDE_OPPONENT] = 0; gBattleStruct->itemStolen[i].originalItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); gPartyCriticalHits[i] = 0; + gBattleStruct->allowedToChangeFormInWeather[i][B_SIDE_PLAYER] = FALSE; + gBattleStruct->allowedToChangeFormInWeather[i][B_SIDE_OPPONENT] = FALSE; } gBattleStruct->swapDamageCategory = FALSE; // Photon Geyser, Shell Side Arm, Light That Burns the Sky @@ -3198,6 +3204,7 @@ void FaintClearSetData(void) gProtectStructs[gActiveBattler].banefulBunkered = FALSE; gProtectStructs[gActiveBattler].quash = FALSE; gProtectStructs[gActiveBattler].obstructed = FALSE; + gProtectStructs[gActiveBattler].silkTrapped = FALSE; gProtectStructs[gActiveBattler].endured = FALSE; gProtectStructs[gActiveBattler].noValidMoves = FALSE; gProtectStructs[gActiveBattler].helpingHand = FALSE; @@ -3255,8 +3262,8 @@ void FaintClearSetData(void) gBattleResources->flags->flags[gActiveBattler] = 0; - gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type1; - gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0]; + gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1]; gBattleMons[gActiveBattler].type3 = TYPE_MYSTERY; Ai_UpdateFaintData(gActiveBattler); @@ -3358,8 +3365,8 @@ static void DoBattleIntro(void) else { memcpy(&gBattleMons[gActiveBattler], &gBattleResources->bufferB[gActiveBattler][4], sizeof(struct BattlePokemon)); - gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type1; - gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0]; + gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1]; gBattleMons[gActiveBattler].type3 = TYPE_MYSTERY; gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum); gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)] = gBattleMons[gActiveBattler].hp; @@ -4002,7 +4009,8 @@ static void HandleTurnActionSelectionState(void) } else if (WILD_DOUBLE_BATTLE && position == B_POSITION_PLAYER_RIGHT - && (gBattleStruct->throwingPokeBall || gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] == B_ACTION_RUN)) + && (gBattleStruct->throwingPokeBall || gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] == B_ACTION_RUN) + && gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] != B_ACTION_NOTHING_FAINTED) { gBattleStruct->throwingPokeBall = FALSE; gChosenActionByBattler[gActiveBattler] = B_ACTION_NOTHING_FAINTED; // Not fainted, but it cannot move, because of the throwing ball. @@ -4416,10 +4424,13 @@ static void HandleTurnActionSelectionState(void) { RecordedBattle_CheckMovesetChanges(B_RECORD_MODE_RECORDING); - if (WILD_DOUBLE_BATTLE && gBattleStruct->throwingPokeBall) { + if (WILD_DOUBLE_BATTLE + && gBattleStruct->throwingPokeBall + && gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)] != B_ACTION_NOTHING_FAINTED) + { // if we choose to throw a ball with our second mon, skip the action of the first // (if we have chosen throw ball with first, second's is already skipped) - gChosenActionByBattler[B_POSITION_PLAYER_LEFT] = B_ACTION_NOTHING_FAINTED; + gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] = B_ACTION_NOTHING_FAINTED; } gBattleMainFunc = SetActionsAndBattlersTurnOrder; @@ -4876,9 +4887,14 @@ static void CheckMegaEvolutionBeforeTurn(void) if (gBattleStruct->mega.toEvolve & gBitTable[gActiveBattler] && !(gProtectStructs[gActiveBattler].noValidMoves)) { + struct Pokemon *mon; + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) + mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; + else + mon = &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]; gBattleStruct->mega.toEvolve &= ~(gBitTable[gActiveBattler]); gLastUsedItem = gBattleMons[gActiveBattler].item; - if (gBattleStruct->mega.isWishMegaEvo == TRUE) + if (GetWishMegaEvolutionSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_MOVE1), GetMonData(mon, MON_DATA_MOVE2), GetMonData(mon, MON_DATA_MOVE3), GetMonData(mon, MON_DATA_MOVE4))) BattleScriptExecute(BattleScript_WishMegaEvolution); else BattleScriptExecute(BattleScript_MegaEvolution); @@ -5221,6 +5237,8 @@ static void HandleEndTurn_FinishBattle(void) } RecordedBattle_SetPlaybackFinished(); + if (gTestRunnerEnabled) + TestRunner_Battle_AfterLastTurn(); BeginFastPaletteFade(3); FadeOutMapMusic(5); #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE diff --git a/src/battle_message.c b/src/battle_message.c index 1189cf3e1..34542e58d 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -209,8 +209,8 @@ static const u8 sText_PkmnFellIntoNightmare[] = _("{B_DEF_NAME_WITH_PREFIX} fell static const u8 sText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!"); static const u8 sText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnAfflictedByCurse[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!"); -static const u8 sText_SpikesScattered[] = _("SPIKES were scattered all around\nthe opponent's side!"); -static const u8 sText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!"); +static const u8 sText_SpikesScattered[] = _("Spikes were scattered all around\nthe opponent's side!"); +static const u8 sText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby spikes!"); static const u8 sText_PkmnIdentified[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnPerishCountFell[] = _("{B_ATK_NAME_WITH_PREFIX}'s PERISH count\nfell to {B_BUFF1}!"); static const u8 sText_PkmnBracedItself[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!"); @@ -220,7 +220,7 @@ static const u8 sText_PkmnCutHPMaxedAttack[] = _("{B_ATK_NAME_WITH_PREFIX} cut i static const u8 sText_PkmnCopiedStatChanges[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}'s stat changes!"); static const u8 sText_PkmnGotFree[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); static const u8 sText_PkmnShedLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!"); -static const u8 sText_PkmnBlewAwaySpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!"); +static const u8 sText_PkmnBlewAwaySpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nspikes!"); static const u8 sText_PkmnFledFromBattle[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!"); static const u8 sText_PkmnForesawAttack[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!"); static const u8 sText_PkmnTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!"); @@ -230,7 +230,7 @@ static const u8 sText_PkmnCenterAttention[] = _("{B_DEF_NAME_WITH_PREFIX} became static const u8 sText_PkmnChargingPower[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!"); static const u8 sText_NaturePowerTurnedInto[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!"); static const u8 sText_PkmnStatusNormal[] = _("{B_ATK_NAME_WITH_PREFIX}'s status\nreturned to normal!"); -static const u8 sText_PkmnSubjectedToTorment[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!"); +static const u8 sText_PkmnSubjectedToTorment[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto torment!"); static const u8 sText_PkmnTighteningFocus[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!"); static const u8 sText_PkmnFellForTaunt[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe Taunt!"); static const u8 sText_PkmnReadyToHelp[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!"); @@ -433,13 +433,19 @@ static const u8 sText_ExclamationMark2[] = _("!"); static const u8 sText_ExclamationMark3[] = _("!"); static const u8 sText_ExclamationMark4[] = _("!"); static const u8 sText_ExclamationMark5[] = _("!"); +static const u8 sText_HP[] = _("HP"); +static const u8 sText_Attack[] = _("attack"); +static const u8 sText_Defense[] = _("defense"); +static const u8 sText_Speed[] = _("speed"); +static const u8 sText_SpAttack[] = _("sp. attack"); +static const u8 sText_SpDefense[] = _("sp. defense"); static const u8 sText_Accuracy[] = _("accuracy"); static const u8 sText_Evasiveness[] = _("evasiveness"); const u8 *const gStatNamesTable[NUM_BATTLE_STATS] = { - gText_HP3, gText_Attack, gText_Defense, - gText_Speed, gText_SpAtk, gText_SpDef, + sText_HP, sText_Attack, sText_Defense, + sText_Speed, sText_SpAttack, sText_SpDefense, sText_Accuracy, sText_Evasiveness }; @@ -515,14 +521,14 @@ static const u8 sText_TwoInGameTrainersDefeated[]; static const u8 sText_Trainer2LoseText[]; // New battle strings. -static const s8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} Endured\nthe hit using {B_DEF_ABILITY}!"); +static const s8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} endured\nthe hit using {B_DEF_ABILITY}!"); static const s8 sText_PowerHerbActivation[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its {B_LAST_ITEM}!"); static const s8 sText_HurtByItem[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt\nby its {B_LAST_ITEM}!"); -static const s8 sText_BadlyPoisonedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was badly \npoisoned by the {B_LAST_ITEM}!"); +static const s8 sText_BadlyPoisonedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was badly\npoisoned by the {B_LAST_ITEM}!"); static const s8 sText_BurnedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was burned\nby the {B_LAST_ITEM}!"); static const s8 sText_TargetAbilityActivates[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} activates!"); static const u8 sText_GravityIntensified[] = _("Gravity intensified!"); -static const u8 sText_TargetIdentified[] = _("{B_DEF_NAME_WITH_PREFIX} was \nidentified!"); +static const u8 sText_TargetIdentified[] = _("{B_DEF_NAME_WITH_PREFIX} was\nidentified!"); static const u8 sText_TargetWokeUp[] = _("{B_DEF_NAME_WITH_PREFIX} woke up!"); static const u8 sText_PkmnStoleAndAteItem[] = _("{B_ATK_NAME_WITH_PREFIX} stole and\nate {B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); static const u8 sText_TailWindBlew[] = _("The tailwind blew from\nbehind {B_ATK_TEAM2} team!"); @@ -591,7 +597,7 @@ static const u8 sText_TargetsStatWasMaxedOut[] = _("{B_DEF_NAME_WITH_PREFIX}'s { static const u8 sText_PoisonHealHpUp[] = _("The poisoning healed {B_ATK_NAME_WITH_PREFIX}\na little bit!"); static const u8 sText_BadDreamsDmg[] = _("{B_DEF_NAME_WITH_PREFIX} is tormented!"); static const u8 sText_MoldBreakerEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} breaks the mold!"); -static const u8 sText_TeravoltEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating \na bursting aura!"); +static const u8 sText_TeravoltEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na bursting aura!"); static const u8 sText_TurboblazeEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na blazing aura!"); static const u8 sText_SlowStartEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can't get it going!"); static const u8 sText_SlowStartEnd[] = _("{B_ATK_NAME_WITH_PREFIX} finally got\nits act together!"); @@ -636,7 +642,7 @@ static const u8 sText_TargetElectrified[] = _("The {B_DEF_NAME_WITH_PREFIX}'s mo static const u8 sText_AssaultVestDoesntAllow[] = _("{B_LAST_ITEM}'s effects prevent\nstatus moves from being used!\p"); static const u8 sText_GravityPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} can't use {B_CURRENT_MOVE}\nbecause of gravity!\p"); static const u8 sText_HealBlockPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} was\nprevented from healing!\p"); -static const u8 sText_MegaEvoReacting[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ITEM} is \nreacting to {B_ATK_TRAINER_NAME}'s Mega Ring!"); +static const u8 sText_MegaEvoReacting[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ITEM} is\nreacting to {B_ATK_TRAINER_NAME}'s Mega Ring!"); static const u8 sText_FerventWishReached[] = _("{B_ATK_TRAINER_NAME}'s fervent wish\nhas reached {B_ATK_NAME_WITH_PREFIX}!"); static const u8 sText_MegaEvoEvolved[] = _("{B_ATK_NAME_WITH_PREFIX} has Mega Evolved into\nMega {B_BUFF1}!"); static const u8 sText_drastically[] = _("drastically "); @@ -740,7 +746,7 @@ static const u8 sText_AbilityAllowsOnlyMove[] = _("{B_ATK_ABILITY} allows the\nu static const u8 sText_SwappedAbilities[] = _("{B_DEF_NAME_WITH_PREFIX} swapped Abilities\nwith its target!"); static const u8 sText_PastelVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is protected\nby a pastel veil!"); static const u8 sText_PastelVeilEnters[] = _("{B_DEF_NAME_WITH_PREFIX} was cured\nof its poisoning!"); -static const u8 sText_BattlerTypeChangedTo[] = _("{B_BUFF1}'s type\nchanged to {B_BUFF2}!"); +static const u8 sText_BattlerTypeChangedTo[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s type\nchanged to {B_BUFF1}!"); static const u8 sText_BothCanNoLongerEscape[] = _("Neither Pokémon can run away!"); static const u8 sText_CantEscapeDueToUsedMove[] = _("{B_ATK_NAME_WITH_PREFIX} can no longer escape\nbecause it used {B_CURRENT_MOVE}!"); static const u8 sText_PkmnBecameWeakerToFire[] = _("{B_DEF_NAME_WITH_PREFIX} became\nweaker to fire!"); @@ -762,9 +768,9 @@ static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!"); static const u8 sText_AttackerSwitchedStatWithTarget[] = _("{B_ATK_NAME_WITH_PREFIX} switched {B_BUFF1}\nwith its target!"); static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_ATK_NAME_WITH_PREFIX} with power!"); -static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}!"); -static const u8 sText_StatWasHeightened[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!"); -static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}!"); +static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); +static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!"); +static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p"); static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!"); diff --git a/src/battle_pike.c b/src/battle_pike.c index dd3028923..9751d565d 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -834,7 +834,7 @@ static bool8 DoesAbilityPreventStatus(struct Pokemon *mon, u32 status) ret = TRUE; break; case STATUS1_TOXIC_POISON: - if (ability == ABILITY_IMMUNITY) + if (ability == ABILITY_IMMUNITY || ability == ABILITY_PASTEL_VEIL) ret = TRUE; break; } @@ -848,24 +848,24 @@ static bool8 DoesTypePreventStatus(u16 species, u32 status) switch (status) { case STATUS1_TOXIC_POISON: - if (gSpeciesInfo[species].type1 == TYPE_STEEL || gSpeciesInfo[species].type1 == TYPE_POISON - || gSpeciesInfo[species].type2 == TYPE_STEEL || gSpeciesInfo[species].type2 == TYPE_POISON) + if (gSpeciesInfo[species].types[0] == TYPE_STEEL || gSpeciesInfo[species].types[0] == TYPE_POISON + || gSpeciesInfo[species].types[1] == TYPE_STEEL || gSpeciesInfo[species].types[1] == TYPE_POISON) ret = TRUE; break; case STATUS1_FREEZE: - if (gSpeciesInfo[species].type1 == TYPE_ICE || gSpeciesInfo[species].type2 == TYPE_ICE) + if (gSpeciesInfo[species].types[0] == TYPE_ICE || gSpeciesInfo[species].types[1] == TYPE_ICE) ret = TRUE; break; case STATUS1_PARALYSIS: - if (gSpeciesInfo[species].type1 == TYPE_GROUND || gSpeciesInfo[species].type2 == TYPE_GROUND + if (gSpeciesInfo[species].types[0] == TYPE_GROUND || gSpeciesInfo[species].types[1] == TYPE_GROUND #if B_PARALYZE_ELECTRIC >= GEN_6 - || gSpeciesInfo[species].type1 == TYPE_ELECTRIC || gSpeciesInfo[species].type2 == TYPE_ELECTRIC + || gSpeciesInfo[species].types[0] == TYPE_ELECTRIC || gSpeciesInfo[species].types[1] == TYPE_ELECTRIC #endif ) ret = TRUE; break; case STATUS1_BURN: - if (gSpeciesInfo[species].type1 == TYPE_FIRE || gSpeciesInfo[species].type2 == TYPE_FIRE) + if (gSpeciesInfo[species].types[0] == TYPE_FIRE || gSpeciesInfo[species].types[1] == TYPE_FIRE) ret = TRUE; break; case STATUS1_SLEEP: diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 4f72a7463..d580cf680 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -578,7 +578,7 @@ static bool8 LoadPyramidBagGfx(void) } break; case 2: - LoadCompressedPalette(gBattlePyramidBagInterface_Pal, 0, 32); + LoadCompressedPalette(gBattlePyramidBagInterface_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); gPyramidBagMenu->state++; break; case 3: @@ -1439,9 +1439,9 @@ static void InitPyramidBagWindows(void) InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 0x1, 0xE0); - LoadMessageBoxGfx(0, 0xA, 0xD0); - LoadPalette(gStandardMenuPalette, 0xF0, 0x20); + LoadUserWindowBorderGfx(0, 0x1, BG_PLTT_ID(14)); + LoadMessageBoxGfx(0, 0xA, BG_PLTT_ID(13)); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); for (i = 0; i < ARRAY_COUNT(sWindowTemplates); i++) FillWindowPixelBuffer(i, PIXEL_FILL(0)); @@ -1537,10 +1537,10 @@ static void FreeItemIconSprite(u8 spriteArrId) static void LoadPyramidBagPalette(void) { struct SpritePalette spritePalette; - u16 *palPtr = Alloc(0x40); + u16 *palPtr = Alloc(2 * PLTT_SIZE_4BPP); LZDecompressWram(gBattlePyramidBag_Pal, palPtr); - spritePalette.data = palPtr + (gSaveBlock2Ptr->frontier.lvlMode * 16); + spritePalette.data = palPtr + PLTT_ID(gSaveBlock2Ptr->frontier.lvlMode); spritePalette.tag = TAG_PYRAMID_BAG; LoadSpritePalette(&spritePalette); Free(palPtr); diff --git a/src/battle_records.c b/src/battle_records.c index 6cab28d21..4463a9ebf 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -444,7 +444,7 @@ static void LoadTrainerHillRecordsWindowGfx(u8 bgId) { LoadBgTiles(bgId, sTrainerHillWindowTileset, sizeof(sTrainerHillWindowTileset), 0); CopyToBgTilemapBufferRect(bgId, sTrainerHillWindowTilemap, 0, 0, 0x20, 0x20); - LoadPalette(sTrainerHillWindowPalette, 0, 0x20); + LoadPalette(sTrainerHillWindowPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); } static void VblankCB_TrainerHillRecords(void) @@ -491,7 +491,7 @@ static void CB2_ShowTrainerHillRecords(void) break; case 3: LoadTrainerHillRecordsWindowGfx(3); - LoadPalette(GetTextWindowPalette(0), 0xF0, 0x20); + LoadPalette(GetTextWindowPalette(0), BG_PLTT_ID(15), PLTT_SIZE_4BPP); gMain.state++; break; case 4: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 74e5f31ef..a534fd274 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1808,7 +1808,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u if (atkHoldEffect == HOLD_EFFECT_WIDE_LENS) calc = (calc * (100 + atkParam)) / 100; - else if (atkHoldEffect == HOLD_EFFECT_ZOOM_LENS && GetBattlerTurnOrderNum(battlerAtk) > GetBattlerTurnOrderNum(battlerDef)); + else if (atkHoldEffect == HOLD_EFFECT_ZOOM_LENS && GetBattlerTurnOrderNum(battlerAtk) > GetBattlerTurnOrderNum(battlerDef)) calc = (calc * (100 + atkParam)) / 100; if (gProtectStructs[battlerAtk].usedMicleBerry) @@ -2830,13 +2830,22 @@ void SetMoveEffect(bool32 primary, u32 certain) // Just in case this flag is still set gBattleScripting.moveEffect &= ~MOVE_EFFECT_CERTAIN; - - if (battlerAbility == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) - && !primary && gBattleScripting.moveEffect <= 9) + + if ((battlerAbility == ABILITY_SHIELD_DUST + || GetBattlerHoldEffect(gEffectBattler, TRUE) == HOLD_EFFECT_COVERT_CLOAK) + && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && !primary + && (gBattleScripting.moveEffect <= MOVE_EFFECT_TRI_ATTACK || gBattleScripting.moveEffect >= MOVE_EFFECT_SMACK_DOWN)) // Exclude stat lowering effects + { + if (battlerAbility == ABILITY_SHIELD_DUST) + RecordAbilityBattle(gEffectBattler, battlerAbility); + else + RecordItemEffectBattle(gEffectBattler, HOLD_EFFECT_COVERT_CLOAK); INCREMENT_RESET_RETURN + } if (gSideStatuses[GET_BATTLER_SIDE(gEffectBattler)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) - && !primary && gBattleScripting.moveEffect <= 7) + && !primary && gBattleScripting.moveEffect <= MOVE_EFFECT_CONFUSION) INCREMENT_RESET_RETURN if (TestSheerForceFlag(gBattlerAttacker, gCurrentMove) && affectsUser != MOVE_EFFECT_AFFECTS_USER) @@ -2877,11 +2886,11 @@ void SetMoveEffect(bool32 primary, u32 certain) statusChanged = TRUE; break; case STATUS1_POISON: - if (battlerAbility == ABILITY_IMMUNITY + if ((battlerAbility == ABILITY_IMMUNITY || battlerAbility == ABILITY_PASTEL_VEIL) && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { - gLastUsedAbility = ABILITY_IMMUNITY; - RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY); + gLastUsedAbility = battlerAbility; + RecordAbilityBattle(gEffectBattler, battlerAbility); BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; @@ -3001,10 +3010,11 @@ void SetMoveEffect(bool32 primary, u32 certain) statusChanged = TRUE; break; case STATUS1_TOXIC_POISON: - if (battlerAbility == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) + if ((battlerAbility == ABILITY_IMMUNITY || battlerAbility == ABILITY_PASTEL_VEIL) + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { - gLastUsedAbility = ABILITY_IMMUNITY; - RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY); + gLastUsedAbility = battlerAbility; + RecordAbilityBattle(gEffectBattler, battlerAbility); BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; @@ -3482,7 +3492,9 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; case MOVE_EFFECT_FLAME_BURST: - if (IsBattlerAlive(BATTLE_PARTNER(gBattlerTarget)) && GetBattlerAbility(BATTLE_PARTNER(gBattlerTarget)) != ABILITY_MAGIC_GUARD) + if (IsBattlerAlive(BATTLE_PARTNER(gBattlerTarget)) + && !(gStatuses3[BATTLE_PARTNER(gBattlerTarget)] & STATUS3_SEMI_INVULNERABLE) + && GetBattlerAbility(BATTLE_PARTNER(gBattlerTarget)) != ABILITY_MAGIC_GUARD) { gBattleScripting.savedBattler = BATTLE_PARTNER(gBattlerTarget); gBattleMoveDamage = gBattleMons[BATTLE_PARTNER(gBattlerTarget)].hp / 16; @@ -3503,6 +3515,7 @@ void SetMoveEffect(bool32 primary, u32 certain) gProtectStructs[gBattlerTarget].kingsShielded = FALSE; gProtectStructs[gBattlerTarget].banefulBunkered = FALSE; gProtectStructs[gBattlerTarget].obstructed = FALSE; + gProtectStructs[gBattlerTarget].silkTrapped = FALSE; BattleScriptPush(gBattlescriptCurrInstr + 1); if (gCurrentMove == MOVE_HYPERSPACE_FURY) gBattlescriptCurrInstr = BattleScript_HyperspaceFuryRemoveProtect; @@ -5047,6 +5060,7 @@ static void Cmd_playstatchangeanimation(void) } } else if (!gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer + && GetBattlerHoldEffect(gActiveBattler, TRUE) != HOLD_EFFECT_CLEAR_AMULET && ability != ABILITY_CLEAR_BODY && ability != ABILITY_FULL_METAL_BODY && ability != ABILITY_WHITE_SMOKE @@ -5248,6 +5262,17 @@ static void Cmd_moveend(void) gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; effect = 1; } + else if (gProtectStructs[gBattlerTarget].silkTrapped) + { + gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; + i = gBattlerAttacker; + gBattlerAttacker = gBattlerTarget; + gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable + gBattleScripting.moveEffect = MOVE_EFFECT_SPD_MINUS_1; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; + effect = 1; + } // Not strictly a protect effect, but works the same way else if (gProtectStructs[gBattlerTarget].beakBlastCharge && CanBeBurned(gBattlerAttacker) @@ -5284,8 +5309,12 @@ static void Cmd_moveend(void) && gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget && gSpecialStatuses[gBattlerTarget].specialDmg - && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && (moveType == TYPE_FIRE || gBattleMoves[gCurrentMove].effect == EFFECT_SCALD)) + && (moveType == TYPE_FIRE + #if B_BURN_HIT_THAW >= GEN_6 + || gBattleMoves[gCurrentMove].effect == EFFECT_BURN_HIT + #endif + ) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FREEZE; gActiveBattler = gBattlerTarget; @@ -5412,7 +5441,7 @@ static void Cmd_moveend(void) gStatuses3[gBattlerTarget] |= STATUS3_SMACKED_DOWN; gStatuses3[gBattlerTarget] &= ~(STATUS3_MAGNET_RISE | STATUS3_TELEKINESIS | STATUS3_ON_AIR); effect = TRUE; - BattleScriptPush(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr); gBattlescriptCurrInstr = BattleScript_MoveEffectSmackDown; } break; @@ -5425,7 +5454,7 @@ static void Cmd_moveend(void) BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); effect = TRUE; - BattleScriptPush(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr); switch (gBattleMoves[gCurrentMove].argument) { case STATUS1_PARALYSIS: @@ -5922,6 +5951,7 @@ static void Cmd_moveend(void) if (gBattleResources->flags->flags[i] & RESOURCE_FLAG_EMERGENCY_EXIT) { gBattleResources->flags->flags[i] &= ~RESOURCE_FLAG_EMERGENCY_EXIT; + gSpecialStatuses[i].emergencyExited = TRUE; gBattlerTarget = gBattlerAbility = i; BattleScriptPushCursor(); if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || GetBattlerSide(i) == B_SIDE_PLAYER) @@ -6086,8 +6116,8 @@ static void Cmd_switchindataupdate(void) for (i = 0; i < sizeof(struct BattlePokemon); i++) monData[i] = gBattleResources->bufferB[gActiveBattler][4 + i]; - gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type1; - gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0]; + gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1]; gBattleMons[gActiveBattler].type3 = TYPE_MYSTERY; gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum); @@ -6764,6 +6794,7 @@ static void Cmd_switchineffects(void) if (!(gBattleMons[gActiveBattler].status1 & STATUS1_ANY) && !IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL) && GetBattlerAbility(gActiveBattler) != ABILITY_IMMUNITY + && !IsAbilityOnSide(gActiveBattler, ABILITY_PASTEL_VEIL) && !(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SAFEGUARD) && !(gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN)) { @@ -6813,9 +6844,10 @@ static void Cmd_switchineffects(void) gDisableStructs[gActiveBattler].truantSwitchInHack = 0; if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0) - || ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE) - || AbilityBattleEffects(ABILITYEFFECT_TRACE2, 0, 0, 0, 0) - || AbilityBattleEffects(ABILITYEFFECT_WEATHER_FORM, 0, 0, 0, 0)) + || (gBattleWeather & B_WEATHER_ANY && WEATHER_HAS_EFFECT && AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, gActiveBattler, 0, 0, 0)) + || (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY && AbilityBattleEffects(ABILITYEFFECT_ON_TERRAIN, gActiveBattler, 0, 0, 0)) + || ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE) + || AbilityBattleEffects(ABILITYEFFECT_TRACE2, 0, 0, 0, 0)) return; gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED); @@ -7665,7 +7697,7 @@ static void InitLevelUpBanner(void) gBattle_BG2_Y = 0; gBattle_BG2_X = LEVEL_UP_BANNER_START; - LoadPalette(sLevelUpBanner_Pal, 0x60, 0x20); + LoadPalette(sLevelUpBanner_Pal, BG_PLTT_ID(6), PLTT_SIZE_4BPP); CopyToWindowPixelBuffer(B_WIN_LEVEL_UP_BANNER, sLevelUpBanner_Gfx, 0, 0); PutWindowTilemap(B_WIN_LEVEL_UP_BANNER); CopyWindowToVram(B_WIN_LEVEL_UP_BANNER, COPYWIN_FULL); @@ -8124,8 +8156,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 = gSpeciesInfo[gBattleMons[battler].species].type1; - gBattleMons[battler].type2 = gSpeciesInfo[gBattleMons[battler].species].type2; + gBattleMons[battler].type1 = gSpeciesInfo[gBattleMons[battler].species].types[0]; + gBattleMons[battler].type2 = gSpeciesInfo[gBattleMons[battler].species].types[1]; } u32 GetHighestStatId(u32 battlerId) @@ -8799,7 +8831,8 @@ static void Cmd_various(void) gBattlerAbility = BATTLE_PARTNER(gActiveBattler); i = GetBattlerAbility(gBattlerAbility); if (IsBattlerAlive(gBattlerAbility) - && (i == ABILITY_RECEIVER || i == ABILITY_POWER_OF_ALCHEMY)) + && (i == ABILITY_RECEIVER || i == ABILITY_POWER_OF_ALCHEMY) + && GetBattlerHoldEffect(gActiveBattler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD) { switch (gBattleMons[gActiveBattler].ability) { // Can't copy these abilities. @@ -8905,6 +8938,12 @@ static void Cmd_various(void) if (IsEntrainmentTargetOrSimpleBeamBannedAbility(gBattleMons[gBattlerTarget].ability) || gBattleMons[gBattlerTarget].ability == ABILITY_SIMPLE) { + RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + } + else if (GetBattlerHoldEffect(gBattlerTarget, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) + { + RecordItemEffectBattle(gBattlerTarget, HOLD_EFFECT_ABILITY_SHIELD); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); } else @@ -8920,18 +8959,25 @@ static void Cmd_various(void) if (IsEntrainmentBannedAbilityAttacker(gBattleMons[gBattlerAttacker].ability) || IsEntrainmentTargetOrSimpleBeamBannedAbility(gBattleMons[gBattlerTarget].ability)) { + RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); - return; } - - if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability) + else if (GetBattlerHoldEffect(gBattlerTarget, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) { + RecordItemEffectBattle(gBattlerTarget, HOLD_EFFECT_ABILITY_SHIELD); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); } else { - gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gBattleMons[gBattlerAttacker].ability; - gBattlescriptCurrInstr += 7; + if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + } + else + { + gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gBattleMons[gBattlerAttacker].ability; + gBattlescriptCurrInstr += 7; + } } return; case VARIOUS_SET_LAST_USED_ABILITY: @@ -9332,25 +9378,27 @@ static void Cmd_various(void) gBattlescriptCurrInstr += 4; return; case VARIOUS_PSYCHO_SHIFT: - { - if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS && !CanBeParalyzed(gBattlerTarget)) - || (gBattleMons[gBattlerAttacker].status1 & STATUS1_PSN_ANY && !CanBePoisoned(gBattlerAttacker, gBattlerTarget)) - || (gBattleMons[gBattlerAttacker].status1 & STATUS1_BURN && !CanBeBurned(gBattlerTarget)) - || (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && !CanSleep(gBattlerTarget))) - { - // fails - gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); - } - else - { // Psycho shift works + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_POISON) && CanBePoisoned(gBattlerAttacker, gBattlerTarget)) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_TOXIC_POISON) && CanBePoisoned(gBattlerAttacker, gBattlerTarget)) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_BURN) && CanBeBurned(gBattlerTarget)) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && CanBeParalyzed(gBattlerTarget)) + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) && CanSleep(gBattlerTarget)) + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + return; + } gBattleMons[gBattlerTarget].status1 = gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY; gActiveBattler = gBattlerTarget; BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 7; - } - } return; case VARIOUS_CURE_STATUS: gBattleMons[gActiveBattler].status1 = 0; @@ -9680,7 +9728,6 @@ static void Cmd_various(void) break; } gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; // remove the terrain - TryToRevertMimicry(); // restore the types of Pokémon with Mimicry break; case VARIOUS_JUMP_IF_UNDER_200: // If the Pokemon is less than 200 kg, or weighing less than 441 lbs, then Sky Drop will work. Otherwise, it will fail. @@ -10029,21 +10076,6 @@ static void Cmd_various(void) else gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); return; - case VARIOUS_TRY_TO_APPLY_MIMICRY: - { - bool8 isMimicryDone = FALSE; - - if (GetBattlerAbility(gActiveBattler) == ABILITY_MIMICRY) - { - TryToApplyMimicry(gActiveBattler, TRUE); - isMimicryDone = TRUE; - } - if (!isMimicryDone) - gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); - else - gBattlescriptCurrInstr += 7; - return; - } case VARIOUS_JUMP_IF_CANT_FLING: if (!CanFling(gActiveBattler)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); @@ -10102,9 +10134,9 @@ static void Cmd_various(void) return; case VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY: if (ItemId_GetPocket(gLastUsedItem) == POCKET_BERRIES) - gBattlescriptCurrInstr += 7; - else gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; return; case VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT: if (ItemId_GetHoldEffect(gLastUsedItem) == gBattlescriptCurrInstr[3]) @@ -10187,6 +10219,8 @@ static void Cmd_various(void) break; } PREPARE_STAT_BUFFER(gBattleTextBuff1, statId); + gBattlescriptCurrInstr += 4; + return; } break; case VARIOUS_TEATIME_TARGETS: @@ -10253,6 +10287,27 @@ static void Cmd_various(void) gBattlescriptCurrInstr += 3; AbilityBattleEffects(ABILITYEFFECT_ON_TERRAIN, gActiveBattler, 0, 0, 0); return; + case VARIOUS_JUMP_IF_NO_VALID_TARGETS: + { + u32 count = 0; + + for (i = 0; i < gBattlersCount; i++) + { + if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) + count++; + } + if (count == 0) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; + } + return; + case VARIOUS_JUMP_IF_EMERGENCY_EXITED: + if (gSpecialStatuses[gActiveBattler].emergencyExited) + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); + else + gBattlescriptCurrInstr += 7; + return; } // End of switch (gBattlescriptCurrInstr[2]) gBattlescriptCurrInstr += 3; @@ -10303,6 +10358,11 @@ static void Cmd_setprotectlike(void) gProtectStructs[gBattlerAttacker].obstructed = TRUE; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } + else if (gCurrentMove == MOVE_SILK_TRAP) + { + gProtectStructs[gBattlerAttacker].silkTrapped = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } gDisableStructs[gBattlerAttacker].protectUses++; fail = FALSE; @@ -10928,11 +10988,17 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattlescriptCurrInstr = BattleScript_ButItFailed; return STAT_CHANGE_DIDNT_WORK; } - else if ((activeBattlerAbility == ABILITY_CLEAR_BODY + else if ((GetBattlerHoldEffect(gActiveBattler, TRUE) == HOLD_EFFECT_CLEAR_AMULET + || activeBattlerAbility == ABILITY_CLEAR_BODY || activeBattlerAbility == ABILITY_FULL_METAL_BODY || activeBattlerAbility == ABILITY_WHITE_SMOKE) && !affectsUser && !certain && gCurrentMove != MOVE_CURSE) { + if (GetBattlerHoldEffect(gActiveBattler, TRUE) == HOLD_EFFECT_CLEAR_AMULET) + { + RecordItemEffectBattle(gActiveBattler, HOLD_EFFECT_CLEAR_AMULET); + } + if (flags == STAT_CHANGE_ALLOW_PTR) { if (gSpecialStatuses[gActiveBattler].statLowered) @@ -11003,6 +11069,12 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr } else if (activeBattlerAbility == ABILITY_SHIELD_DUST && flags == 0) { + RecordAbilityBattle(gActiveBattler, ABILITY_SHIELD_DUST); + return STAT_CHANGE_DIDNT_WORK; + } + else if (flags == 0 && GetBattlerHoldEffect(gActiveBattler, TRUE) == HOLD_EFFECT_COVERT_CLOAK) + { + RecordItemEffectBattle(gActiveBattler, HOLD_EFFECT_COVERT_CLOAK); return STAT_CHANGE_DIDNT_WORK; } else // try to decrease @@ -12080,7 +12152,9 @@ static void Cmd_trysetencore(void) break; } - if (gLastMoves[gBattlerTarget] == MOVE_STRUGGLE + if (gLastMoves[gBattlerTarget] == MOVE_NONE + || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE + || gLastMoves[gBattlerTarget] == MOVE_STRUGGLE || gLastMoves[gBattlerTarget] == MOVE_ENCORE || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE || gLastMoves[gBattlerTarget] == MOVE_SHELL_TRAP) @@ -13552,21 +13626,28 @@ static void Cmd_tryswapabilities(void) if (IsSkillSwapBannedAbility(gBattleMons[gBattlerAttacker].ability) || IsSkillSwapBannedAbility(gBattleMons[gBattlerTarget].ability)) { + RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); - return; } - - if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + else if (GetBattlerHoldEffect(gBattlerTarget, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) { + RecordItemEffectBattle(gBattlerTarget, HOLD_EFFECT_ABILITY_SHIELD); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } else { - u16 abilityAtk = gBattleMons[gBattlerAttacker].ability; - gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; - gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = abilityAtk; + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + u16 abilityAtk = gBattleMons[gBattlerAttacker].ability; + gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; + gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = abilityAtk; - gBattlescriptCurrInstr += 5; + gBattlescriptCurrInstr += 5; + } } } @@ -14905,6 +14986,12 @@ static void Cmd_tryworryseed(void) { if (IsWorrySeedBannedAbility(gBattleMons[gBattlerTarget].ability)) { + RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else if (GetBattlerHoldEffect(gBattlerTarget, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) + { + RecordItemEffectBattle(gBattlerTarget, HOLD_EFFECT_ABILITY_SHIELD); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } else @@ -14959,6 +15046,23 @@ void BS_CalcMetalBurstDmg(void) } } +void BS_JumpIfHoldEffect(void) +{ + u8 battler = gBattlescriptCurrInstr[5]; + u16 holdEffect = T1_READ_16(gBattlescriptCurrInstr + 6); + + if (GetBattlerHoldEffect(battler, TRUE) == holdEffect) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 8); + } + else + { + RecordItemEffectBattle(battler, holdEffect); + gLastUsedItem = gBattleMons[battler].item; // For B_LAST_USED_ITEM + gBattlescriptCurrInstr += 12; + } +} + static bool32 CriticalCapture(u32 odds) { #if B_CRITICAL_CAPTURE == TRUE diff --git a/src/battle_transition.c b/src/battle_transition.c index 3675421ee..4066f72e5 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1406,7 +1406,7 @@ static bool8 Aqua_Init(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); CpuFill16(0, tilemap, BG_SCREEN_SIZE); LZ77UnCompVram(sTeamAqua_Tileset, tileset); - LoadPalette(sEvilTeam_Palette, 0xF0, sizeof(sEvilTeam_Palette)); + LoadPalette(sEvilTeam_Palette, BG_PLTT_ID(15), sizeof(sEvilTeam_Palette)); task->tState++; return FALSE; @@ -1421,7 +1421,7 @@ static bool8 Magma_Init(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); CpuFill16(0, tilemap, BG_SCREEN_SIZE); LZ77UnCompVram(sTeamMagma_Tileset, tileset); - LoadPalette(sEvilTeam_Palette, 0xF0, sizeof(sEvilTeam_Palette)); + LoadPalette(sEvilTeam_Palette, BG_PLTT_ID(15), sizeof(sEvilTeam_Palette)); task->tState++; return FALSE; @@ -1449,7 +1449,7 @@ static bool8 BigPokeball_Init(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); CpuFill16(0, tilemap, BG_SCREEN_SIZE); CpuCopy16(sBigPokeball_Tileset, tileset, sizeof(sBigPokeball_Tileset)); - LoadPalette(sFieldEffectPal_Pokeball, 0xF0, sizeof(sFieldEffectPal_Pokeball)); + LoadPalette(sFieldEffectPal_Pokeball, BG_PLTT_ID(15), sizeof(sFieldEffectPal_Pokeball)); task->tState++; return FALSE; @@ -1504,7 +1504,7 @@ static bool8 Regice_SetGfx(struct Task *task) u16 *tilemap, *tileset; GetBg0TilesDst(&tilemap, &tileset); - LoadPalette(sRegice_Palette, 0xF0, sizeof(sRegice_Palette)); + LoadPalette(sRegice_Palette, BG_PLTT_ID(15), sizeof(sRegice_Palette)); CpuCopy16(sRegice_Tilemap, tilemap, 0x500); SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); @@ -1517,7 +1517,7 @@ static bool8 Registeel_SetGfx(struct Task *task) u16 *tilemap, *tileset; GetBg0TilesDst(&tilemap, &tileset); - LoadPalette(sRegisteel_Palette, 0xF0, sizeof(sRegisteel_Palette)); + LoadPalette(sRegisteel_Palette, BG_PLTT_ID(15), sizeof(sRegisteel_Palette)); CpuCopy16(sRegisteel_Tilemap, tilemap, 0x500); SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); @@ -1530,7 +1530,7 @@ static bool8 Regirock_SetGfx(struct Task *task) u16 *tilemap, *tileset; GetBg0TilesDst(&tilemap, &tileset); - LoadPalette(sRegirock_Palette, 0xF0, sizeof(sRegirock_Palette)); + LoadPalette(sRegirock_Palette, BG_PLTT_ID(15), sizeof(sRegirock_Palette)); CpuCopy16(sRegirock_Tilemap, tilemap, 0x500); SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); @@ -1559,7 +1559,7 @@ static bool8 Kyogre_PaletteFlash(struct Task *task) { u16 offset = task->tTimer % 30; offset /= 3; - LoadPalette(&sKyogre1_Palette[offset * 16], 0xF0, 0x20); + LoadPalette(&sKyogre1_Palette[offset * 16], BG_PLTT_ID(15), PLTT_SIZE_4BPP); } if (++task->tTimer > 58) { @@ -1575,7 +1575,7 @@ static bool8 Kyogre_PaletteBrighten(struct Task *task) if (task->tTimer % 5 == 0) { s16 offset = task->tTimer / 5; - LoadPalette(&sKyogre2_Palette[offset * 16], 0xF0, 0x20); + LoadPalette(&sKyogre2_Palette[offset * 16], BG_PLTT_ID(15), PLTT_SIZE_4BPP); } if (++task->tTimer > 68) { @@ -1776,7 +1776,7 @@ static bool8 PokeballsTrail_Init(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); CpuSet(sPokeballTrail_Tileset, tileset, 0x20); CpuFill32(0, tilemap, BG_SCREEN_SIZE); - LoadPalette(sFieldEffectPal_Pokeball, 0xF0, sizeof(sFieldEffectPal_Pokeball)); + LoadPalette(sFieldEffectPal_Pokeball, BG_PLTT_ID(15), sizeof(sFieldEffectPal_Pokeball)); task->tState++; return FALSE; @@ -2328,8 +2328,8 @@ static bool8 Mugshot_SetGfx(struct Task *task) mugshotsMap = sMugshotsTilemap; GetBg0TilesDst(&tilemap, &tileset); CpuSet(sEliteFour_Tileset, tileset, 0xF0); - LoadPalette(sOpponentMugshotsPals[task->tMugshotId], 0xF0, 0x20); - LoadPalette(sPlayerMugshotsPals[gSaveBlock2Ptr->playerGender], 0xFA, 0xC); + LoadPalette(sOpponentMugshotsPals[task->tMugshotId], BG_PLTT_ID(15), PLTT_SIZE_4BPP); + LoadPalette(sPlayerMugshotsPals[gSaveBlock2Ptr->playerGender], BG_PLTT_ID(15) + 10, PLTT_SIZEOF(6)); for (i = 0; i < 20; i++) { @@ -3193,7 +3193,7 @@ static bool8 RectangularSpiral_Init(struct Task *task) CpuCopy16(sShrinkingBoxTileset, tileset, 0x20); CpuCopy16(&sShrinkingBoxTileset[0x70], &tileset[0x20], 0x20); CpuFill16(0xF0 << 8, tilemap, BG_SCREEN_SIZE); - LoadPalette(sFieldEffectPal_Pokeball, 0xF0, sizeof(sFieldEffectPal_Pokeball)); + LoadPalette(sFieldEffectPal_Pokeball, BG_PLTT_ID(15), sizeof(sFieldEffectPal_Pokeball)); task->data[3] = 1; task->tState++; @@ -3389,7 +3389,7 @@ static bool8 Groudon_PaletteFlash(struct Task *task) if (task->tTimer % 3 == 0) { u16 offset = (task->tTimer % 30) / 3; - LoadPalette(&sGroudon1_Palette[offset * 16], 0xF0, 0x20); + LoadPalette(&sGroudon1_Palette[offset * 16], BG_PLTT_ID(15), PLTT_SIZE_4BPP); } if (++task->tTimer > 58) { @@ -3405,7 +3405,7 @@ static bool8 Groudon_PaletteBrighten(struct Task *task) if (task->tTimer % 5 == 0) { s16 offset = task->tTimer / 5; - LoadPalette(&sGroudon2_Palette[offset * 16], 0xF0, 0x20); + LoadPalette(&sGroudon2_Palette[offset * 16], BG_PLTT_ID(15), PLTT_SIZE_4BPP); } if (++task->tTimer > 68) { @@ -3448,7 +3448,7 @@ static bool8 Rayquaza_Init(struct Task *task) sTransitionData->counter = 0; task->tState++; - LoadPalette(&sRayquaza_Palette[0x50], 0xF0, 0x20); + LoadPalette(&sRayquaza_Palette[80], BG_PLTT_ID(15), PLTT_SIZE_4BPP); for (i = 0; i < DISPLAY_HEIGHT; i++) { @@ -3476,7 +3476,7 @@ static bool8 Rayquaza_PaletteFlash(struct Task *task) { u16 value = task->tTimer / 4; const u16 *palPtr = &sRayquaza_Palette[(value + 5) * 16]; - LoadPalette(palPtr, 0xF0, 0x20); + LoadPalette(palPtr, BG_PLTT_ID(15), PLTT_SIZE_4BPP); } if (++task->tTimer > 40) { @@ -3524,7 +3524,7 @@ static bool8 Rayquaza_TriRing(struct Task *task) { u16 value = task->tTimer / 3; const u16 *palPtr = &sRayquaza_Palette[(value + 0) * 16]; - LoadPalette(palPtr, 0xF0, 0x20); + LoadPalette(palPtr, BG_PLTT_ID(15), PLTT_SIZE_4BPP); } if (++task->tTimer >= 40) { @@ -3775,7 +3775,7 @@ static bool8 GridSquares_Init(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); CpuSet(sShrinkingBoxTileset, tileset, 16); CpuFill16(0xF0 << 8, tilemap, BG_SCREEN_SIZE); - LoadPalette(sFieldEffectPal_Pokeball, 0xF0, sizeof(sFieldEffectPal_Pokeball)); + LoadPalette(sFieldEffectPal_Pokeball, BG_PLTT_ID(15), sizeof(sFieldEffectPal_Pokeball)); task->tState++; return FALSE; @@ -4242,7 +4242,7 @@ static bool8 FrontierLogoWiggle_Init(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); CpuFill16(0, tilemap, BG_SCREEN_SIZE); LZ77UnCompVram(sFrontierLogo_Tileset, tileset); - LoadPalette(sFrontierLogo_Palette, 0xF0, sizeof(sFrontierLogo_Palette)); + LoadPalette(sFrontierLogo_Palette, BG_PLTT_ID(15), sizeof(sFrontierLogo_Palette)); task->tState++; return FALSE; @@ -4304,7 +4304,7 @@ static bool8 FrontierLogoWave_Init(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); CpuFill16(0, tilemap, BG_SCREEN_SIZE); LZ77UnCompVram(sFrontierLogo_Tileset, tileset); - LoadPalette(sFrontierLogo_Palette, 0xF0, sizeof(sFrontierLogo_Palette)); + LoadPalette(sFrontierLogo_Palette, BG_PLTT_ID(15), sizeof(sFrontierLogo_Palette)); sTransitionData->cameraY = 0; task->tState++; @@ -4454,7 +4454,7 @@ static bool8 FrontierSquares_Init(struct Task *task) FillBgTilemapBufferRect(0, 1, 0, 0, MARGIN_SIZE, 32, 15); FillBgTilemapBufferRect(0, 1, 30 - MARGIN_SIZE, 0, MARGIN_SIZE, 32, 15); CopyBgTilemapBufferToVram(0); - LoadPalette(sFrontierSquares_Palette, 0xF0, sizeof(sFrontierSquares_Palette)); + LoadPalette(sFrontierSquares_Palette, BG_PLTT_ID(15), sizeof(sFrontierSquares_Palette)); task->tPosX = MARGIN_SIZE; task->tPosY = 0; @@ -4549,9 +4549,9 @@ static bool8 FrontierSquaresSpiral_Init(struct Task *task) FillBgTilemapBufferRect(0, 1, 0, 0, MARGIN_SIZE, 32, 15); FillBgTilemapBufferRect(0, 1, 30 - MARGIN_SIZE, 0, MARGIN_SIZE, 32, 15); CopyBgTilemapBufferToVram(0); - LoadPalette(sFrontierSquares_Palette, 0xE0, sizeof(sFrontierSquares_Palette)); - LoadPalette(sFrontierSquares_Palette, 0xF0, sizeof(sFrontierSquares_Palette)); - BlendPalette(0xE0, 16, 8, RGB_BLACK); + LoadPalette(sFrontierSquares_Palette, BG_PLTT_ID(14), sizeof(sFrontierSquares_Palette)); + LoadPalette(sFrontierSquares_Palette, BG_PLTT_ID(15), sizeof(sFrontierSquares_Palette)); + BlendPalette(BG_PLTT_ID(14), 16, 8, RGB_BLACK); task->tSquareNum = NUM_SQUARES - 1; task->tFadeFlag = 0; @@ -4581,7 +4581,7 @@ static bool8 FrontierSquaresSpiral_Outward(struct Task *task) // set it to black so it's not revealed when the squares are removed. static bool8 FrontierSquaresSpiral_SetBlack(struct Task *task) { - BlendPalette(0xE0, 16, 3, RGB_BLACK); + BlendPalette(BG_PLTT_ID(14), 16, 3, RGB_BLACK); BlendPalettes(PALETTES_ALL & ~(1 << 15 | 1 << 14), 16, RGB_BLACK); task->tSquareNum = 0; @@ -4664,7 +4664,7 @@ static bool8 FrontierSquaresScroll_Init(struct Task *task) LZ77UnCompVram(sFrontierSquares_FilledBg_Tileset, tileset); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); CopyBgTilemapBufferToVram(0); - LoadPalette(sFrontierSquares_Palette, 0xF0, sizeof(sFrontierSquares_Palette)); + LoadPalette(sFrontierSquares_Palette, BG_PLTT_ID(15), sizeof(sFrontierSquares_Palette)); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; diff --git a/src/battle_transition_frontier.c b/src/battle_transition_frontier.c index 088865dba..252721129 100644 --- a/src/battle_transition_frontier.c +++ b/src/battle_transition_frontier.c @@ -226,7 +226,7 @@ static void LoadLogoGfx(void) GetBg0TilesDst(&tilemap, &tileset); LZ77UnCompVram(sLogoCenter_Gfx, tileset); LZ77UnCompVram(sLogoCenter_Tilemap, tilemap); - LoadPalette(sLogo_Pal, 0xF0, sizeof(sLogo_Pal)); + LoadPalette(sLogo_Pal, BG_PLTT_ID(15), sizeof(sLogo_Pal)); LoadCompressedSpriteSheet(&sSpriteSheet_LogoCircles); LoadSpritePalette(&sSpritePalette_LogoCircles); } diff --git a/src/battle_tv.c b/src/battle_tv.c index 33483da06..10c2144cc 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -367,7 +367,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_QUIVER_DANCE] = 0, // TODO: Assign points [EFFECT_COIL] = 0, // TODO: Assign points [EFFECT_ELECTRIFY] = 0, // TODO: Assign points - [EFFECT_SCALD] = 0, // TODO: Assign points [EFFECT_REFLECT_TYPE] = 0, // TODO: Assign points [EFFECT_SOAK] = 0, // TODO: Assign points [EFFECT_GROWTH] = 0, // TODO: Assign points diff --git a/src/battle_util.c b/src/battle_util.c index f80edef68..03a642625 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -515,9 +515,11 @@ void HandleAction_UseMove(void) if (gBattleTypeFlags & BATTLE_TYPE_ARENA) BattleArena_AddMindPoints(gBattlerAttacker); - // Record HP of each battler for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { gBattleStruct->hpBefore[i] = gBattleMons[i].hp; + gSpecialStatuses[i].emergencyExited = FALSE; + } gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; } @@ -2048,57 +2050,6 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move) return imprisonedMoves; } -void RestoreBattlerOriginalTypes(u8 battlerId) -{ - gBattleMons[battlerId].type1 = gSpeciesInfo[gBattleMons[battlerId].species].type1; - gBattleMons[battlerId].type2 = gSpeciesInfo[gBattleMons[battlerId].species].type2; -} - -void TryToApplyMimicry(u8 battlerId, bool8 various) -{ - u32 moveType, move; - - GET_MOVE_TYPE(move, moveType); - switch (gFieldStatuses) - { - case STATUS_FIELD_ELECTRIC_TERRAIN: - moveType = TYPE_ELECTRIC; - break; - case STATUS_FIELD_MISTY_TERRAIN: - moveType = TYPE_FAIRY; - break; - case STATUS_FIELD_GRASSY_TERRAIN: - moveType = TYPE_GRASS; - break; - case STATUS_FIELD_PSYCHIC_TERRAIN: - moveType = TYPE_PSYCHIC; - break; - default: - moveType = 0; - break; - } - - if (moveType != 0 && !IS_BATTLER_OF_TYPE(battlerId, moveType)) - { - SET_BATTLER_TYPE(battlerId, moveType); - PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, battlerId, gBattlerPartyIndexes[battlerId]) - PREPARE_TYPE_BUFFER(gBattleTextBuff2, moveType); - if (!various) - BattleScriptPushCursorAndCallback(BattleScript_MimicryActivatesEnd3); - } -} - -void TryToRevertMimicry(void) -{ - s32 i; - - for (i = 0; i < MAX_BATTLERS_COUNT; i++) - { - if (GetBattlerAbility(i) == ABILITY_MIMICRY) - RestoreBattlerOriginalTypes(i); - } -} - u32 GetBattlerFriendshipScore(u8 battlerId) { u8 side = GetBattlerSide(battlerId); @@ -2118,6 +2069,17 @@ u32 GetBattlerFriendshipScore(u8 battlerId) return GetMonFriendshipScore(&party[gBattlerPartyIndexes[battlerId]]); } +static void TryToRevertMimicry(void) +{ + u32 i; + + for (i = 0; i < gBattlersCount; i++) + { + if (GetBattlerAbility(i) == ABILITY_MIMICRY) + RESTORE_BATTLER_TYPE(i); + } +} + enum { ENDTURN_ORDER, @@ -2596,7 +2558,7 @@ u8 DoFieldEndTurnEffects(void) gBattleStruct->turnCountersTracker++; break; case ENDTURN_WEATHER_FORM: - AbilityBattleEffects(ABILITYEFFECT_WEATHER_FORM, 0, 0, 0, 0); + AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, 0, 0, 0, 0); gBattleStruct->turnCountersTracker++; break; case ENDTURN_STATUS_HEAL: @@ -2741,7 +2703,7 @@ u8 DoBattlerEndTurnEffects(void) gBattleStruct->turnEffectsTracker++; break; case ENDTURN_ORBS: - if (ItemBattleEffects(ITEMEFFECT_ORBS, gActiveBattler, FALSE)) + if (IsBattlerAlive(gActiveBattler) && ItemBattleEffects(ITEMEFFECT_ORBS, gActiveBattler, FALSE)) effect++; gBattleStruct->turnEffectsTracker++; break; @@ -2922,7 +2884,8 @@ u8 DoBattlerEndTurnEffects(void) { u16 battlerAbility = GetBattlerAbility(gActiveBattler); if (gDisableStructs[gActiveBattler].octolock - && !(battlerAbility == ABILITY_CLEAR_BODY + && !(GetBattlerHoldEffect(gActiveBattler, TRUE) == HOLD_EFFECT_CLEAR_AMULET + || battlerAbility == ABILITY_CLEAR_BODY || battlerAbility == ABILITY_FULL_METAL_BODY || battlerAbility == ABILITY_WHITE_SMOKE)) { @@ -3851,6 +3814,7 @@ u8 AtkCanceller_UnableToUseMove(void) { SetRandomMultiHitCounter(); } + PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) } else if (gBattleMoves[gCurrentMove].flags & FLAG_TWO_STRIKES) @@ -4181,6 +4145,21 @@ static const u16 sWeatherFlagsInfo[][3] = [ENUM_WEATHER_STRONG_WINDS] = {B_WEATHER_STRONG_WINDS, B_WEATHER_STRONG_WINDS, HOLD_EFFECT_NONE}, }; +static void ShouldChangeFormInWeather(u8 battler) +{ + int i; + int side = GetBattlerSide(battler); + struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_EISCUE_NOICE_FACE) + gBattleStruct->allowedToChangeFormInWeather[i][side] = TRUE; + else + gBattleStruct->allowedToChangeFormInWeather[i][side] = FALSE; + } +} + bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility) { u16 battlerAbility = GetBattlerAbility(battler); @@ -4196,6 +4175,7 @@ bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility) else if (viaAbility && !(gBattleWeather & sWeatherFlagsInfo[weatherEnumId][1])) { gBattleWeather = (sWeatherFlagsInfo[weatherEnumId][0] | sWeatherFlagsInfo[weatherEnumId][1]); + ShouldChangeFormInWeather(battler); return TRUE; } #endif @@ -4206,7 +4186,7 @@ bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility) gWishFutureKnock.weatherDuration = 8; else gWishFutureKnock.weatherDuration = 5; - + ShouldChangeFormInWeather(battler); return TRUE; } @@ -4335,6 +4315,26 @@ static u8 ForewarnChooseMove(u32 battler) Free(data); } +bool8 ChangeTypeBasedOnTerrain(u8 battlerId) +{ + u8 battlerType; + + if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN) + battlerType = TYPE_ELECTRIC; + else if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN) + battlerType = TYPE_GRASS; + else if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN) + battlerType = TYPE_FAIRY; + else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN) + battlerType = TYPE_PSYCHIC; + else // failsafe + return FALSE; + + SET_BATTLER_TYPE(battlerId, battlerType); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, battlerType); + return TRUE; +} + u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 moveArg) { u8 effect = 0; @@ -4835,31 +4835,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; - case ABILITY_MIMICRY: - if (gBattleMons[battler].hp != 0 && gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) - { - TryToApplyMimicry(battler, FALSE); - effect++; - } - break; - case ABILITY_PROTOSYNTHESIS: - if (!gSpecialStatuses[battler].switchInAbilityDone && gBattleWeather & B_WEATHER_SUN) - { - gSpecialStatuses[battler].switchInAbilityDone = TRUE; - PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); - BattleScriptPushCursorAndCallback(BattleScript_ProtosynthesisActivates); - effect++; - } - break; - case ABILITY_QUARK_DRIVE: - if (!gSpecialStatuses[battler].switchInAbilityDone && gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN) - { - gSpecialStatuses[battler].switchInAbilityDone = TRUE; - PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); - BattleScriptPushCursorAndCallback(BattleScript_QuarkDriveActivates); - effect++; - } - break; case ABILITY_VESSEL_OF_RUIN: if (!gSpecialStatuses[battler].switchInAbilityDone) { @@ -5181,6 +5156,15 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move gBattlescriptCurrInstr = BattleScript_GoodAsGoldActivates; effect = 1; } + else if (gLastUsedAbility == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(move) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE) + { + gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE_FACE; + if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) + gHitMarker |= HITMARKER_NO_PPDEDUCT; + gBattleScripting.battler = gBattlerTarget; // For STRINGID_PKMNTRANSFORMED + gBattlescriptCurrInstr = BattleScript_IceFaceNullsDamage; + effect = 1; + } break; } case ABILITYEFFECT_ABSORBING: // 3 @@ -5461,6 +5445,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_STANCE_CHANGE: break; default: + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) + { + RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD); + break; + } + gLastUsedAbility = gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MummyActivates; @@ -5492,6 +5482,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_ZEN_MODE: break; default: + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) + { + RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD); + break; + } + gLastUsedAbility = gBattleMons[gBattlerAttacker].ability; gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gLastUsedAbility; @@ -5629,7 +5625,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED - && CanBePoisoned(gBattlerAttacker, gBattlerTarget) + && CanBePoisoned(gBattlerTarget, gBattlerAttacker) && IsMoveMakingContact(move, gBattlerAttacker) && (Random() % 3) == 0) { @@ -5868,7 +5864,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && IS_MOVE_PHYSICAL(gCurrentMove) && TARGET_TURN_DAMAGED - && !(gSideStatuses[gBattlerAttacker] & SIDE_STATUS_TOXIC_SPIKES) + && !(gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_TOXIC_SPIKES) && IsBattlerAlive(gBattlerTarget)) { gBattlerTarget = gBattlerAttacker; @@ -5960,6 +5956,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move switch (GetBattlerAbility(battler)) { case ABILITY_IMMUNITY: + case ABILITY_PASTEL_VEIL: if (gBattleMons[battler].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON | STATUS1_TOXIC_COUNTER)) { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); @@ -6044,31 +6041,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } } break; - case ABILITYEFFECT_WEATHER_FORM: // 6 - for (battler = 0; battler < gBattlersCount; battler++) - { - switch (gBattleMons[battler].species) - { - case SPECIES_CASTFORM: - case SPECIES_CHERRIM: -#ifdef POKEMON_EXPANSION - case SPECIES_CASTFORM_RAINY: - case SPECIES_CASTFORM_SNOWY: - case SPECIES_CASTFORM_SUNNY: - case SPECIES_CHERRIM_SUNSHINE: -#endif - effect = TryWeatherFormChange(battler); - if (effect != 0) - { - BattleScriptPushCursorAndCallback(BattleScript_WeatherFormChange); - gBattleScripting.battler = battler; - gBattleStruct->formToChangeInto = effect - 1; - return effect; - } - break; - } - } - break; case ABILITYEFFECT_SYNCHRONIZE: if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { @@ -6209,8 +6181,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITYEFFECT_ON_WEATHER: // For ability effects that activate when the battle weather changes. - battler = gBattlerAbility = gBattlerAttacker = gBattleScripting.battler; - switch (GetBattlerAbility(battler)) + battler = gBattlerAbility = gBattleScripting.battler; + gLastUsedAbility = GetBattlerAbility(battler); + switch (gLastUsedAbility) { case ABILITY_FORECAST: #if B_WEATHER_FORMS >= GEN_5 @@ -6225,9 +6198,22 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move *(&gBattleStruct->formToChangeInto) = effect - 1; } break; - case ABILITY_PROTOSYNTHESIS: - if (IsBattlerWeatherAffected(battler, B_WEATHER_SUN)) + case ABILITY_ICE_FACE: + if (IsBattlerWeatherAffected(battler, B_WEATHER_HAIL) + && gBattleMons[battler].species == SPECIES_EISCUE_NOICE_FACE + && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) + && gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)]) { + gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)] = FALSE; + gBattleMons[battler].species = SPECIES_EISCUE; + BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3); + effect++; + } + break; + case ABILITY_PROTOSYNTHESIS: + if (!gSpecialStatuses[battler].weatherAbilityDone && IsBattlerWeatherAffected(battler, B_WEATHER_SUN)) + { + gSpecialStatuses[battler].weatherAbilityDone = TRUE; PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); BattleScriptPushCursorAndCallback(BattleScript_ProtosynthesisActivates); effect++; @@ -6236,12 +6222,23 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITYEFFECT_ON_TERRAIN: // For ability effects that activate when the field terrain changes. - battler = gBattlerAbility = gBattlerAttacker = gBattleScripting.battler; - switch (GetBattlerAbility(battler)) + battler = gBattlerAbility = gBattleScripting.battler; + gLastUsedAbility = GetBattlerAbility(battler); + switch (gLastUsedAbility) { - case ABILITY_QUARK_DRIVE: - if (IsBattlerTerrainAffected(battler, STATUS_FIELD_ELECTRIC_TERRAIN)) + case ABILITY_MIMICRY: + if (!gSpecialStatuses[battler].terrainAbilityDone && ChangeTypeBasedOnTerrain(battler)) { + gSpecialStatuses[battler].terrainAbilityDone = TRUE; + ChangeTypeBasedOnTerrain(battler); + BattleScriptPushCursorAndCallback(BattleScript_MimicryActivates_End3); + effect++; + } + break; + case ABILITY_QUARK_DRIVE: + if (!gSpecialStatuses[battler].terrainAbilityDone && IsBattlerTerrainAffected(battler, STATUS_FIELD_ELECTRIC_TERRAIN)) + { + gSpecialStatuses[battler].terrainAbilityDone = TRUE; PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); BattleScriptPushCursorAndCallback(BattleScript_QuarkDriveActivates); effect++; @@ -7861,7 +7858,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) switch (battlerHoldEffect) { case HOLD_EFFECT_TOXIC_ORB: - if (IsBattlerAlive(battlerId) && CanBePoisoned(battlerId, battlerId)) + if (CanBePoisoned(battlerId, battlerId)) { effect = ITEM_STATUS_CHANGE; gBattleMons[battlerId].status1 = STATUS1_TOXIC_POISON; @@ -7870,7 +7867,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_FLAME_ORB: - if (IsBattlerAlive(battlerId) && CanBeBurned(battlerId)) + if (CanBeBurned(battlerId)) { effect = ITEM_STATUS_CHANGE; gBattleMons[battlerId].status1 = STATUS1_BURN; @@ -8038,6 +8035,7 @@ u8 IsMonDisobedient(void) s32 rnd; s32 calc; u8 obedienceLevel = 0; + u8 levelReferenced; if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) return 0; @@ -8052,8 +8050,10 @@ u8 IsMonDisobedient(void) return 0; if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) return 0; + #if B_OBEDIENCE_MECHANICS < GEN_8 if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) return 0; + #endif if (FlagGet(FLAG_BADGE08_GET)) return 0; @@ -8067,10 +8067,19 @@ u8 IsMonDisobedient(void) obedienceLevel = 70; } +#if B_OBEDIENCE_MECHANICS >= GEN_8 + if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) + levelReferenced = gBattleMons[gBattlerAttacker].metLevel; + else +#else if (gBattleMons[gBattlerAttacker].level <= obedienceLevel) +#endif + levelReferenced = gBattleMons[gBattlerAttacker].level; + + if (levelReferenced <= obedienceLevel) return 0; rnd = (Random() & 255); - calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8; + calc = (levelReferenced + obedienceLevel) * rnd >> 8; if (calc < obedienceLevel) return 0; @@ -8084,7 +8093,7 @@ u8 IsMonDisobedient(void) } rnd = (Random() & 255); - calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8; + calc = (levelReferenced + obedienceLevel) * rnd >> 8; if (calc < obedienceLevel) { calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], MOVE_LIMITATIONS_ALL); @@ -8112,7 +8121,7 @@ u8 IsMonDisobedient(void) } else { - obedienceLevel = gBattleMons[gBattlerAttacker].level - obedienceLevel; + obedienceLevel = levelReferenced - obedienceLevel; calc = (Random() & 255); if (calc < obedienceLevel && CanSleep(gBattlerAttacker)) @@ -8194,6 +8203,8 @@ u32 GetBattlerHoldEffectParam(u8 battlerId) bool32 IsMoveMakingContact(u16 move, u8 battlerAtk) { + u16 atkHoldEffect = GetBattlerHoldEffect(battlerAtk, TRUE); + if (!(gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) { if (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory) @@ -8201,11 +8212,9 @@ bool32 IsMoveMakingContact(u16 move, u8 battlerAtk) else return FALSE; } - else if (GetBattlerAbility(battlerAtk) == ABILITY_LONG_REACH) - { - return FALSE; - } - else if (GetBattlerHoldEffect(battlerAtk, TRUE) == HOLD_EFFECT_PROTECTIVE_PADS) + else if ((atkHoldEffect == HOLD_EFFECT_PUNCHING_GLOVE && (gBattleMoves[move].flags & FLAG_IRON_FIST_BOOST)) + || atkHoldEffect == HOLD_EFFECT_PROTECTIVE_PADS + || GetBattlerAbility(battlerAtk) == ABILITY_LONG_REACH) { return FALSE; } @@ -8247,7 +8256,7 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move) return TRUE; else if (gProtectStructs[battlerId].banefulBunkered) return TRUE; - else if (gProtectStructs[battlerId].obstructed && !IS_MOVE_STATUS(move)) + else if ((gProtectStructs[battlerId].obstructed || gProtectStructs[battlerId].silkTrapped) && !IS_MOVE_STATUS(move)) return TRUE; else if (gProtectStructs[battlerId].spikyShielded) return TRUE; @@ -9084,6 +9093,10 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe if (moveType == ItemId_GetSecondaryId(gBattleMons[battlerAtk].item)) MulModifier(&modifier, holdEffectModifier); break; + case HOLD_EFFECT_PUNCHING_GLOVE: + if (gBattleMoves[move].flags & FLAG_IRON_FIST_BOOST) + MulModifier(&modifier, UQ_4_12(1.1)); + break; } // move effect @@ -9536,7 +9549,11 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move // check multiple targets in double battle if (GetMoveTargetCount(move, battlerAtk, battlerDef) >= 2) + #if B_MULTIPLE_TARGETS_DMG >= GEN_4 MulModifier(&finalModifier, UQ_4_12(0.75)); + #else + MulModifier(&finalModifier, UQ_4_12(0.5)); + #endif // take type effectiveness MulModifier(&finalModifier, typeEffectivenessModifier); @@ -9897,9 +9914,9 @@ u16 CalcPartyMonTypeEffectivenessMultiplier(u16 move, u16 speciesDef, u16 abilit if (move != MOVE_STRUGGLE && moveType != TYPE_MYSTERY) { - 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); + MulByTypeEffectiveness(&modifier, move, moveType, 0, gSpeciesInfo[speciesDef].types[0], 0, FALSE); + if (gSpeciesInfo[speciesDef].types[1] != gSpeciesInfo[speciesDef].types[0]) + MulByTypeEffectiveness(&modifier, move, moveType, 0, gSpeciesInfo[speciesDef].types[1], 0, FALSE); if (moveType == TYPE_GROUND && abilityDef == ABILITY_LEVITATE && !(gFieldStatuses & STATUS_FIELD_GRAVITY)) modifier = UQ_4_12(0.0); @@ -10096,18 +10113,12 @@ bool32 CanMegaEvolve(u8 battlerId) // Can Mega Evolve via Mega Stone. if (holdEffect == HOLD_EFFECT_MEGA_STONE) - { - gBattleStruct->mega.isWishMegaEvo = FALSE; return TRUE; - } } // Check if there is an entry in the evolution table for Wish Mega Evolution. if (GetWishMegaEvolutionSpecies(species, GetMonData(mon, MON_DATA_MOVE1), GetMonData(mon, MON_DATA_MOVE2), GetMonData(mon, MON_DATA_MOVE3), GetMonData(mon, MON_DATA_MOVE4))) - { - gBattleStruct->mega.isWishMegaEvo = TRUE; return TRUE; - } // No checks passed, the mon CAN'T mega evolve. return FALSE; @@ -10145,6 +10156,7 @@ void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut) static const u16 species[][3] = { // Changed Form ID Default Form ID Should change on switch + {SPECIES_EISCUE_NOICE_FACE, SPECIES_EISCUE, TRUE}, {SPECIES_MIMIKYU_BUSTED, SPECIES_MIMIKYU, FALSE}, {SPECIES_GRENINJA_ASH, SPECIES_GRENINJA_BATTLE_BOND, FALSE}, {SPECIES_MELOETTA_PIROUETTE, SPECIES_MELOETTA, FALSE}, @@ -10871,4 +10883,10 @@ static void SetRandomMultiHitCounter() else gMultiHitCounter += 2; #endif + + if (gMultiHitCounter < 4 && GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_LOADED_DICE) + { + // If roll 4 or 5 Loaded Dice doesn't do anything. Otherwise it rolls the number of hits as 5 minus a random integer from 0 to 1 inclusive. + gMultiHitCounter = 5 - (Random() & 1); + } } diff --git a/src/berry_blender.c b/src/berry_blender.c index 52daa1721..f4c3c1677 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -959,7 +959,7 @@ static bool8 LoadBerryBlenderGfx(void) case 1: CopyToBgTilemapBuffer(2, sBlenderCenter_Tilemap, 0x400, 0); CopyBgTilemapBufferToVram(2); - LoadPalette(sBlenderCenter_Pal, 0, 0x100); + LoadPalette(sBlenderCenter_Pal, BG_PLTT_ID(0), 8 * PLTT_SIZE_4BPP); sBerryBlender->loadGfxState++; break; case 2: @@ -984,7 +984,7 @@ static bool8 LoadBerryBlenderGfx(void) sBerryBlender->loadGfxState++; break; case 7: - LoadPalette(sBlenderOuter_Pal, 0x80, 0x20); + LoadPalette(sBlenderOuter_Pal, BG_PLTT_ID(8), PLTT_SIZE_4BPP); sBerryBlender->loadGfxState++; break; case 8: @@ -1065,8 +1065,8 @@ static void CB2_LoadBerryBlender(void) InitBgsFromTemplates(1, sBgTemplates, ARRAY_COUNT(sBgTemplates)); SetBgTilemapBuffer(1, sBerryBlender->tilemapBuffers[0]); SetBgTilemapBuffer(2, sBerryBlender->tilemapBuffers[1]); - LoadUserWindowBorderGfx(0, 1, 0xD0); - LoadMessageBoxGfx(0, 0x14, 0xF0); + LoadUserWindowBorderGfx(0, 1, BG_PLTT_ID(13)); + LoadMessageBoxGfx(0, 0x14, BG_PLTT_ID(15)); InitBerryBlenderWindows(); sBerryBlender->mainState++; @@ -1502,8 +1502,8 @@ static void InitBlenderBgs(void) SetBgTilemapBuffer(1, sBerryBlender->tilemapBuffers[0]); SetBgTilemapBuffer(2, sBerryBlender->tilemapBuffers[1]); - LoadUserWindowBorderGfx(0, 1, 0xD0); - LoadMessageBoxGfx(0, 0x14, 0xF0); + LoadUserWindowBorderGfx(0, 1, BG_PLTT_ID(13)); + LoadMessageBoxGfx(0, 0x14, BG_PLTT_ID(15)); InitBerryBlenderWindows(); sBerryBlender->unk0 = 0; diff --git a/src/berry_crush.c b/src/berry_crush.c index cea63751c..c0a72713a 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1235,7 +1235,7 @@ static s32 ShowGameDisplay(void) gPaletteFade.bufferTransferDisabled = TRUE; break; case 7: - LoadPalette(gBerryCrush_Crusher_Pal, 0, 0x180); + LoadPalette(gBerryCrush_Crusher_Pal, BG_PLTT_ID(0), 12 * PLTT_SIZE_4BPP); CopyToBgTilemapBuffer(1, sCrusherTop_Tilemap, 0, 0); CopyToBgTilemapBuffer(2, sContainerCap_Tilemap, 0, 0); CopyToBgTilemapBuffer(3, sBg_Tilemap, 0, 0); @@ -1751,7 +1751,7 @@ static bool32 OpenResultsWindow(struct BerryCrushGame *game, struct BerryCrushGa FillWindowPixelBuffer(gfx->resultsWindowId, PIXEL_FILL(0)); break; case 2: - LoadUserWindowBorderGfx_(gfx->resultsWindowId, 541, 208); + LoadUserWindowBorderGfx_(gfx->resultsWindowId, 541, BG_PLTT_ID(13)); DrawStdFrameWithCustomTileAndPalette(gfx->resultsWindowId, FALSE, 541, 13); break; case 3: @@ -1809,7 +1809,7 @@ static void Task_ShowRankings(u8 taskId) tWindowId = AddWindow(&sWindowTemplate_Rankings); PutWindowTilemap(tWindowId); FillWindowPixelBuffer(tWindowId, PIXEL_FILL(0)); - LoadUserWindowBorderGfx_(tWindowId, 541, 208); + LoadUserWindowBorderGfx_(tWindowId, 541, BG_PLTT_ID(13)); DrawStdFrameWithCustomTileAndPalette(tWindowId, FALSE, 541, 13); break; case 1: diff --git a/src/berry_powder.c b/src/berry_powder.c index 96f14d6e4..7066f9d95 100755 --- a/src/berry_powder.c +++ b/src/berry_powder.c @@ -4,6 +4,7 @@ #include "event_data.h" #include "load_save.h" #include "menu.h" +#include "palette.h" #include "string_util.h" #include "strings.h" #include "text.h" @@ -228,7 +229,7 @@ void DisplayBerryPowderVendorMenu(void) sBerryPowderVendorWindowId = AddWindow(&template); FillWindowPixelBuffer(sBerryPowderVendorWindowId, PIXEL_FILL(0)); PutWindowTilemap(sBerryPowderVendorWindowId); - LoadUserWindowBorderGfx_(sBerryPowderVendorWindowId, 0x21D, 0xD0); + LoadUserWindowBorderGfx_(sBerryPowderVendorWindowId, 0x21D, BG_PLTT_ID(13)); DrawPlayerPowderAmount(sBerryPowderVendorWindowId, 0x21D, 13, GetBerryPowder()); } diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index d359a0fc1..862a466e0 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -346,7 +346,7 @@ static bool8 LoadBerryTagGfx(void) sBerryTag->gfxState++; break; case 4: - LoadCompressedPalette(gBerryCheck_Pal, 0, 0xC0); + LoadCompressedPalette(gBerryCheck_Pal, BG_PLTT_ID(0), 6 * PLTT_SIZE_4BPP); sBerryTag->gfxState++; break; case 5: @@ -367,7 +367,7 @@ static void HandleInitWindows(void) InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); - LoadPalette(sFontPalette, 0xF0, 0x20); + LoadPalette(sFontPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); for (i = 0; i < ARRAY_COUNT(sWindowTemplates) - 1; i++) PutWindowTilemap(i); ScheduleBgCopyTilemapToVram(0); diff --git a/src/cable_car.c b/src/cable_car.c index dd1da3176..4eb4c3080 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -307,7 +307,7 @@ static void CB2_LoadCableCar(void) case 3: if (!FreeTempTileDataBuffersIfPossible()) { - LoadPalette(gCableCarBg_Pal, 0, 0x80); + LoadPalette(gCableCarBg_Pal, BG_PLTT_ID(0), 4 * PLTT_SIZE_4BPP); gMain.state++; } break; diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index ed5461d91..39f9e1a0f 100644 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -204,6 +204,6 @@ static void InitClearSaveDataScreenWindows(void) InitWindows(sClearSaveTextWindow); DeactivateAllTextPrinters(); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - LoadWindowGfx(0, 0, 2, 224); - LoadPalette(gStandardMenuPalette, 0xF0, 0x20); + LoadWindowGfx(0, 0, 2, BG_PLTT_ID(14)); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); } diff --git a/src/contest.c b/src/contest.c index b9ec9add6..6771f47d6 100644 --- a/src/contest.c +++ b/src/contest.c @@ -736,7 +736,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 0, .width = 12, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x200 }, [WIN_CONTESTANT1_NAME] = { @@ -745,7 +745,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 5, .width = 12, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x218 }, [WIN_CONTESTANT2_NAME] = { @@ -754,7 +754,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 10, .width = 12, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x230 }, [WIN_CONTESTANT3_NAME] = { @@ -763,7 +763,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 15, .width = 12, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x248 }, [WIN_GENERAL_TEXT] = { @@ -772,7 +772,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 15, .width = 17, .height = 4, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x260 }, [WIN_MOVE0] = { @@ -781,7 +781,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 31, .width = 9, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x2A4 }, [WIN_MOVE1] = { @@ -790,7 +790,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 33, .width = 9, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x2B6 }, [WIN_MOVE2] = { @@ -799,7 +799,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 35, .width = 9, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x2C8 }, [WIN_MOVE3] = { @@ -808,7 +808,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 37, .width = 9, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x2DA }, [WIN_SLASH] = { @@ -817,7 +817,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 31, .width = 1, .height = 2, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x2EC }, [WIN_MOVE_DESCRIPTION] = { @@ -826,7 +826,7 @@ static const struct WindowTemplate sContestWindowTemplates[] = .tilemapTop = 35, .width = 18, .height = 4, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x2EE }, DUMMY_WIN_TEMPLATE @@ -1035,13 +1035,13 @@ void LoadContestBgAfterMoveAnim(void) LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4))); CopyToBgTilemapBuffer(3, gContestAudienceTilemap, 0, 0); CopyBgTilemapBufferToVram(3); - LoadCompressedPalette(gContestInterfaceAudiencePalette, 0, 0x200); + LoadCompressedPalette(gContestInterfaceAudiencePalette, BG_PLTT_OFFSET, BG_PLTT_SIZE); LoadContestPalettes(); for (i = 0; i < CONTESTANT_COUNT; i++) { u32 contestantWindowId = 5 + i; - LoadPalette(eContestTempSave.cachedWindowPalettes[contestantWindowId], 16 * (5 + gContestantTurnOrder[i]), sizeof((eContestTempSave.cachedWindowPalettes[contestantWindowId]))); + LoadPalette(eContestTempSave.cachedWindowPalettes[contestantWindowId], BG_PLTT_ID(5 + gContestantTurnOrder[i]), sizeof((eContestTempSave.cachedWindowPalettes[contestantWindowId]))); } } @@ -1076,11 +1076,11 @@ static void LoadContestPalettes(void) { s32 i; - LoadPalette(sText_Pal, 0xf0, 0x20); - FillPalette(RGB_BLACK, 0, 2); + LoadPalette(sText_Pal, BG_PLTT_ID(15), PLTT_SIZE_4BPP); + SetBackdropFromColor(RGB_BLACK); for (i = 10; i < 14; i++) - LoadPalette(gPlttBufferUnfaded + 241, 240 + i, 2); - FillPalette(RGB(31, 17, 31), 0xF3, 2); + LoadPalette(gPlttBufferUnfaded + BG_PLTT_ID(15) + 1, BG_PLTT_ID(15) + i, PLTT_SIZEOF(1)); + FillPalette(RGB(31, 17, 31), BG_PLTT_ID(15) + 3, PLTT_SIZEOF(1)); } static void InitContestResources(void) @@ -1330,11 +1330,11 @@ static bool8 SetupContestGraphics(u8 *stateVar) DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eContestTempSave.savedJunk, sizeof(eContestTempSave.savedJunk)); break; case 5: - LoadCompressedPalette(gContestInterfaceAudiencePalette, 0, 0x200); - CpuCopy32(gPlttBufferUnfaded + 128, tempPalette1, 16 * sizeof(u16)); - CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, tempPalette2, 16 * sizeof(u16)); - CpuCopy32(tempPalette2, gPlttBufferUnfaded + 128, 16 * sizeof(u16)); - CpuCopy32(tempPalette1, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16)); + LoadCompressedPalette(gContestInterfaceAudiencePalette, BG_PLTT_OFFSET, BG_PLTT_SIZE); + CpuCopy32(gPlttBufferUnfaded + BG_PLTT_ID(8), tempPalette1, PLTT_SIZE_4BPP); + CpuCopy32(gPlttBufferUnfaded + BG_PLTT_ID(5 + gContestPlayerMonIndex), tempPalette2, PLTT_SIZE_4BPP); + CpuCopy32(tempPalette2, gPlttBufferUnfaded + BG_PLTT_ID(8), PLTT_SIZE_4BPP); + CpuCopy32(tempPalette1, gPlttBufferUnfaded + BG_PLTT_ID(5 + gContestPlayerMonIndex), PLTT_SIZE_4BPP); DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedWindowPalettes, sizeof(eContestTempSave.cachedWindowPalettes)); LoadContestPalettes(); break; @@ -3100,7 +3100,7 @@ static u8 CreateJudgeSprite(void) u8 spriteId; LoadCompressedSpriteSheet(&sSpriteSheet_Judge); - LoadCompressedPalette(gContest2Pal, 0x110, 32); + LoadCompressedPalette(gContest2Pal, OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); spriteId = CreateSprite(&sSpriteTemplate_Judge, 112, 36, 30); gSprites[spriteId].oam.paletteNum = 1; gSprites[spriteId].callback = SpriteCallbackDummy; @@ -3126,7 +3126,7 @@ static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 ind HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], species, personality); - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_PLAYER_LEFT); spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30); @@ -3997,7 +3997,7 @@ static void Task_StopFlashJudgeAttentionEye(u8 taskId) { gTasks[eContest.judgeAttentionTaskId].data[contestant * 4 + 0] = 0xFF; gTasks[eContest.judgeAttentionTaskId].data[contestant * 4 + 1] = 0; - BlendPalette((eContest.prevTurnOrder[contestant] + 5) * 16 + 6, 2, 0, RGB(31, 31, 18)); + BlendPalette(BG_PLTT_ID(5 + eContest.prevTurnOrder[contestant]) + 6, 2, 0, RGB(31, 31, 18)); DestroyTask(taskId); } } @@ -4021,7 +4021,7 @@ static void Task_FlashJudgeAttentionEye(u8 taskId) || gTasks[taskId].data[offset + 0] == 0) gTasks[taskId].data[offset + 1] ^= 1; - BlendPalette((eContest.prevTurnOrder[i] + 5) * 16 + 6, 2, gTasks[taskId].data[offset + 0], RGB(31, 31, 18)); + BlendPalette(BG_PLTT_ID(5 + eContest.prevTurnOrder[i]) + 6, 2, gTasks[taskId].data[offset + 0], RGB(31, 31, 18)); } } } @@ -4100,8 +4100,8 @@ static void Task_UnusedBlend(u8 taskId) || gTasks[taskId].data[idx] == 0) gTasks[taskId].data[idx + 1] ^= 1; - BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[idx + 0], RGB(31, 31, 18)); - BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[idx + 0], RGB(31, 31, 18)); + BlendPalette(BG_PLTT_ID(5 + i) + 10, 1, gTasks[taskId].data[idx + 0], RGB(31, 31, 18)); + BlendPalette(BG_PLTT_ID(5 + i) + 12 + i, 1, gTasks[taskId].data[idx + 0], RGB(31, 31, 18)); } } } @@ -4414,7 +4414,7 @@ static void DrawContestantWindows(void) for (i = 0; i < CONTESTANT_COUNT; i++) { s32 windowId = i + 5; - LoadPalette(eContestTempSave.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + 5) * 16, sizeof(eContestTempSave.cachedWindowPalettes[0])); + LoadPalette(eContestTempSave.cachedWindowPalettes[windowId], BG_PLTT_ID(5 + gContestantTurnOrder[i]), sizeof(eContestTempSave.cachedWindowPalettes[0])); } DrawContestantWindowText(); } @@ -4769,7 +4769,7 @@ static void Task_ApplauseOverflowAnimation(u8 taskId) else gTasks[taskId].data[4]--; - BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], RGB_WHITE); + BlendPalette(OBJ_PLTT_ID(gTasks[taskId].data[2]) + 8, 1, gTasks[taskId].data[4], RGB_WHITE); // At the maximum or minimum blending, switch directions. if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16) @@ -4779,7 +4779,7 @@ static void Task_ApplauseOverflowAnimation(u8 taskId) // Continue the animation until the applause meter is cleared. if (eContest.applauseLevel < 5) { - BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, RGB_RED); + BlendPalette(OBJ_PLTT_ID(gTasks[taskId].data[2]) + 8, 1, 0, RGB_RED); DestroyTask(taskId); } } @@ -4992,8 +4992,8 @@ static void Task_BlendAudienceBackground(u8 taskId) else gTasks[taskId].tBlendCoeff--; - BlendPalette(17, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor); - BlendPalette(26, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor); + BlendPalette(BG_PLTT_ID(1) + 1, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor); + BlendPalette(BG_PLTT_ID(1) + 10, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor); if (gTasks[taskId].tBlendCoeff == gTasks[taskId].tTargetBlendCoeff) { @@ -5317,7 +5317,7 @@ static void SetMoveSpecificAnimData(u8 contestant) switch (move) { case MOVE_CURSE: - if (gSpeciesInfo[species].type1 == TYPE_GHOST || gSpeciesInfo[species].type2 == TYPE_GHOST) + if (gSpeciesInfo[species].types[0] == TYPE_GHOST || gSpeciesInfo[species].types[1] == TYPE_GHOST) gAnimMoveTurn = 0; else gAnimMoveTurn = 1; diff --git a/src/contest_painting.c b/src/contest_painting.c index f891946d6..40bad724e 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -223,7 +223,7 @@ static void ShowContestPainting(void) break; case 4: PrintContestPaintingCaption(gCurContestWinnerSaveIdx, gCurContestWinnerIsForArtist); - LoadPalette(sBgPalette, 0, 1 * 2); + SetBackdropFromPalette(sBgPalette); DmaClear32(3, PLTT, PLTT_SIZE); BeginFastPaletteFade(2); SetVBlankCallback(VBlankCB_ContestPainting); @@ -418,7 +418,7 @@ static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 isForArtist) { u8 x, y; - LoadPalette(sPictureFramePalettes, 0, 0x100); + LoadPalette(sPictureFramePalettes, BG_PLTT_ID(0), 8 * PLTT_SIZE_4BPP); if (isForArtist == TRUE) { // Load Artist's frame @@ -584,7 +584,7 @@ static void DoContestPaintingImageProcessing(u8 imageEffect) ApplyImageProcessingEffects(&gImageProcessingContext); ApplyImageProcessingQuantization(&gImageProcessingContext); ConvertImageProcessingToGBA(&gImageProcessingContext); - LoadPalette(gContestPaintingMonPalette, 0x100, 0x200); + LoadPalette(gContestPaintingMonPalette, OBJ_PLTT_ID(0), 16 * PLTT_SIZE_4BPP); } static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 isForArtist) diff --git a/src/contest_util.c b/src/contest_util.c index 1adb0d28b..07bced414 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -455,8 +455,8 @@ static void LoadContestResultsBgGfx(void) CopyToBgTilemapBuffer(2, gContestResults_Interface_Tilemap, 0, 0); CopyToBgTilemapBuffer(0, gContestResults_WinnerBanner_Tilemap, 0, 0); LoadContestResultsTitleBarTilemaps(); - LoadCompressedPalette(gContestResults_Pal, 0, 0x200); - LoadPalette(sResultsTextWindow_Pal, 0xF0, sizeof(sResultsTextWindow_Pal)); + LoadCompressedPalette(gContestResults_Pal, BG_PLTT_ID(0), 16 * PLTT_SIZE_4BPP); + LoadPalette(sResultsTextWindow_Pal, BG_PLTT_ID(15), sizeof(sResultsTextWindow_Pal)); for (i = 0; i < CONTESTANT_COUNT; i++) { @@ -1080,9 +1080,9 @@ static void Task_FlashStarsAndHearts(u8 taskId) else if (gTasks[taskId].tCoeff == 0) gTasks[taskId].tDecreasing = FALSE; - BlendPalette(0x6B, 1, gTasks[taskId].tCoeff, RGB(30, 22, 11)); - BlendPalette(0x68, 1, gTasks[taskId].tCoeff, RGB_WHITE); - BlendPalette(0x6E, 1, gTasks[taskId].tCoeff, RGB(30, 29, 29)); + BlendPalette(BG_PLTT_ID(6) + 11, 1, gTasks[taskId].tCoeff, RGB(30, 22, 11)); + BlendPalette(BG_PLTT_ID(6) + 8, 1, gTasks[taskId].tCoeff, RGB_WHITE); + BlendPalette(BG_PLTT_ID(6) + 14, 1, gTasks[taskId].tCoeff, RGB(30, 29, 29)); } if (gTasks[taskId].tCoeff == 0) @@ -1126,7 +1126,7 @@ static void LoadAllContestMonIconPalettes(void) for (i = 0; i < CONTESTANT_COUNT; i++) { species = gContestMons[i].species; - LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[GetIconSpecies(species, 0)]], i * 0x10 + 0xA0, 0x20); + LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[GetIconSpecies(species, 0)]], BG_PLTT_ID(10 + i), PLTT_SIZE_4BPP); } } @@ -1544,7 +1544,7 @@ static void Task_HighlightWinnersBox(u8 taskId) if (++gTasks[taskId].data[11] == 1) { gTasks[taskId].data[11] = 0; - BlendPalette(0x91, 1, gTasks[taskId].data[12], RGB(13, 28, 27)); + BlendPalette(BG_PLTT_ID(9) + 1, 1, gTasks[taskId].data[12], RGB(13, 28, 27)); if (gTasks[taskId].data[13] == 0) { if (++gTasks[taskId].data[12] == 16) @@ -2508,16 +2508,16 @@ void LoadLinkContestPlayerPalettes(void) if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPal_RubySapphireBrendan, 0x160 + i * 0x10, 0x20); + LoadPalette(gObjectEventPal_RubySapphireBrendan, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); else - LoadPalette(gObjectEventPal_RubySapphireMay, 0x160 + i * 0x10, 0x20); + LoadPalette(gObjectEventPal_RubySapphireMay, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); } else { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPal_Brendan, 0x160 + i * 0x10, 0x20); + LoadPalette(gObjectEventPal_Brendan, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); else - LoadPalette(gObjectEventPal_May, 0x160 + i * 0x10, 0x20); + LoadPalette(gObjectEventPal_May, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); } } } diff --git a/src/credits.c b/src/credits.c index a857e0580..e88773c2e 100644 --- a/src/credits.c +++ b/src/credits.c @@ -366,7 +366,7 @@ static void InitCreditsBgsAndWindows(void) ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sBackgroundTemplates, ARRAY_COUNT(sBackgroundTemplates)); SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE)); - LoadPalette(sCredits_Pal, 0x80, 64); + LoadPalette(sCredits_Pal, BG_PLTT_ID(8), 2 * PLTT_SIZE_4BPP); InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); PutWindowTilemap(0); @@ -548,9 +548,9 @@ static void Task_LoadShowMons(u8 taskId) ResetAllPicSprites(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; - LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM); + LZ77UnCompVram(gBirchBagGrass_Gfx, (void *)VRAM); LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(7))); - LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2); + LoadPalette(gBirchBagGrass_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(2 * 16 - 1)); for (i = 0; i < MON_PIC_SIZE; i++) gDecompressionBuffer[i] = 0x11; @@ -625,7 +625,7 @@ static void Task_CreditsTheEnd3(u8 taskId) { ResetGpuAndVram(); ResetPaletteFade(); - LoadTheEndScreen(0, 0x3800, 0); + LoadTheEndScreen(0, 0x3800, BG_PLTT_ID(0)); ResetSpriteData(); FreeAllSpritePalettes(); BeginNormalPaletteFade(PALETTES_ALL, 8, 16, 0, RGB_BLACK); diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 354c4dc11..552b0a28d 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -8150,7 +8150,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_WOOD_HAMMER] = { - .effect = EFFECT_RECOIL_25, + .effect = EFFECT_RECOIL_33, .power = 120, .type = TYPE_GRASS, .accuracy = 100, @@ -9026,11 +9026,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SCALD] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 - .effect = EFFECT_SCALD, - #else - .effect = EFFECT_BURN_HIT, - #endif + .effect = EFFECT_BURN_HIT, .power = 80, .type = TYPE_WATER, .accuracy = 100, @@ -10546,7 +10542,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_STEAM_ERUPTION] = { - .effect = EFFECT_SCALD, + .effect = EFFECT_BURN_HIT, .power = 110, .type = TYPE_WATER, .accuracy = 95, @@ -13075,7 +13071,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SCORCHING_SANDS] = { - .effect = EFFECT_SCALD, + .effect = EFFECT_BURN_HIT, .power = 70, .type = TYPE_GROUND, .accuracy = 100, @@ -13729,7 +13725,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SILK_TRAP] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_PROTECT with extra checks + .effect = EFFECT_PROTECT, .power = 0, .type = TYPE_BUG, .accuracy = 0, diff --git a/src/data/easy_chat/easy_chat_group_actions.h b/src/data/easy_chat/easy_chat_group_actions.h index 06a8e7303..6ad297efc 100755 --- a/src/data/easy_chat/easy_chat_group_actions.h +++ b/src/data/easy_chat/easy_chat_group_actions.h @@ -78,391 +78,469 @@ const u8 gEasyChatWord_Faint[] = _("FAINT"); const u8 gEasyChatWord_Fainted[] = _("FAINTED"); const struct EasyChatWordInfo gEasyChatGroup_Actions[] = { + [EC_INDEX(EC_WORD_MEETS)] = { .text = gEasyChatWord_Meets, .alphabeticalOrder = 72, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CONCEDE)] = { .text = gEasyChatWord_Concede, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GIVE)] = { .text = gEasyChatWord_Give, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GIVES)] = { .text = gEasyChatWord_Gives, .alphabeticalOrder = 75, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PLAYED)] = { .text = gEasyChatWord_Played, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PLAYS)] = { .text = gEasyChatWord_Plays, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COLLECT)] = { .text = gEasyChatWord_Collect, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WALKING)] = { .text = gEasyChatWord_Walking, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WALKS)] = { .text = gEasyChatWord_Walks, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SAYS)] = { .text = gEasyChatWord_Says, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WENT)] = { .text = gEasyChatWord_Went, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SAID)] = { .text = gEasyChatWord_Said, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WAKE_UP)] = { .text = gEasyChatWord_WakeUp, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WAKES_UP)] = { .text = gEasyChatWord_WakesUp, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ANGERS)] = { .text = gEasyChatWord_Angers, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TEACH)] = { .text = gEasyChatWord_Teach, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TEACHES)] = { .text = gEasyChatWord_Teaches, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PLEASE)] = { .text = gEasyChatWord_Please, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LEARN)] = { .text = gEasyChatWord_Learn, .alphabeticalOrder = 76, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHANGE)] = { .text = gEasyChatWord_Change, .alphabeticalOrder = 77, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STORY)] = { .text = gEasyChatWord_Story, .alphabeticalOrder = 73, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRUST)] = { .text = gEasyChatWord_Trust, .alphabeticalOrder = 74, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LAVISH)] = { .text = gEasyChatWord_Lavish, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LISTENS)] = { .text = gEasyChatWord_Listens, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEARING)] = { .text = gEasyChatWord_Hearing, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRAINS)] = { .text = gEasyChatWord_Trains, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHOOSE)] = { .text = gEasyChatWord_Choose, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COME)] = { .text = gEasyChatWord_Come, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CAME)] = { .text = gEasyChatWord_Came, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SEARCH)] = { .text = gEasyChatWord_Search, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MAKE)] = { .text = gEasyChatWord_Make, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CAUSE)] = { .text = gEasyChatWord_Cause, .alphabeticalOrder = 67, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_KNOW)] = { .text = gEasyChatWord_Know, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_KNOWS)] = { .text = gEasyChatWord_Knows, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_REFUSE)] = { .text = gEasyChatWord_Refuse, .alphabeticalOrder = 65, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STORES)] = { .text = gEasyChatWord_Stores, .alphabeticalOrder = 70, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BRAG)] = { .text = gEasyChatWord_Brag, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IGNORANT)] = { .text = gEasyChatWord_Ignorant, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THINKS)] = { .text = gEasyChatWord_Thinks, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BELIEVE)] = { .text = gEasyChatWord_Believe, .alphabeticalOrder = 64, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SLIDE)] = { .text = gEasyChatWord_Slide, .alphabeticalOrder = 63, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EATS)] = { .text = gEasyChatWord_Eats, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_USE)] = { .text = gEasyChatWord_Use, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_USES)] = { .text = gEasyChatWord_Uses, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_USING)] = { .text = gEasyChatWord_Using, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COULDN_T)] = { .text = gEasyChatWord_Couldnt, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CAPABLE)] = { .text = gEasyChatWord_Capable, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DISAPPEAR)] = { .text = gEasyChatWord_Disappear, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_APPEAR)] = { .text = gEasyChatWord_Appear, .alphabeticalOrder = 69, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THROW)] = { .text = gEasyChatWord_Throw, .alphabeticalOrder = 68, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WORRY)] = { .text = gEasyChatWord_Worry, .alphabeticalOrder = 66, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SLEPT)] = { .text = gEasyChatWord_Slept, .alphabeticalOrder = 61, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SLEEP)] = { .text = gEasyChatWord_Sleep, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RELEASE)] = { .text = gEasyChatWord_Release, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DRINKS)] = { .text = gEasyChatWord_Drinks, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RUNS)] = { .text = gEasyChatWord_Runs, .alphabeticalOrder = 62, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RUN)] = { .text = gEasyChatWord_Run, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WORKS)] = { .text = gEasyChatWord_Works, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WORKING)] = { .text = gEasyChatWord_Working, .alphabeticalOrder = 71, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TALKING)] = { .text = gEasyChatWord_Talking, .alphabeticalOrder = 60, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TALK)] = { .text = gEasyChatWord_Talk, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SINK)] = { .text = gEasyChatWord_Sink, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SMACK)] = { .text = gEasyChatWord_Smack, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PRETEND)] = { .text = gEasyChatWord_Pretend, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PRAISE)] = { .text = gEasyChatWord_Praise, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OVERDO)] = { .text = gEasyChatWord_Overdo, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHOW)] = { .text = gEasyChatWord_Show, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOOKS)] = { .text = gEasyChatWord_Looks, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SEES)] = { .text = gEasyChatWord_Sees, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SEEK)] = { .text = gEasyChatWord_Seek, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OWN)] = { .text = gEasyChatWord_Own, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TAKE)] = { .text = gEasyChatWord_Take, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALLOW)] = { .text = gEasyChatWord_Allow, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FORGET)] = { .text = gEasyChatWord_Forget, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FORGETS)] = { .text = gEasyChatWord_Forgets, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_APPEARS)] = { .text = gEasyChatWord_Appears, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FAINT)] = { .text = gEasyChatWord_Faint, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FAINTED)] = { .text = gEasyChatWord_Fainted, .alphabeticalOrder = 50, diff --git a/src/data/easy_chat/easy_chat_group_adjectives.h b/src/data/easy_chat/easy_chat_group_adjectives.h index 1c7474118..619dff621 100755 --- a/src/data/easy_chat/easy_chat_group_adjectives.h +++ b/src/data/easy_chat/easy_chat_group_adjectives.h @@ -36,181 +36,217 @@ const u8 gEasyChatWord_Happily[] = _("HAPPILY"); const u8 gEasyChatWord_Anticipation[] = _("ANTICIPATION"); const struct EasyChatWordInfo gEasyChatGroup_Adjectives[] = { + [EC_INDEX(EC_WORD_WANDERING)] = { .text = gEasyChatWord_Wandering, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RICKETY)] = { .text = gEasyChatWord_Rickety, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ROCK_SOLID)] = { .text = gEasyChatWord_RockSolid, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HUNGRY)] = { .text = gEasyChatWord_Hungry, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TIGHT)] = { .text = gEasyChatWord_Tight, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TICKLISH)] = { .text = gEasyChatWord_Ticklish, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TWIRLING)] = { .text = gEasyChatWord_Twirling, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SPIRALING)] = { .text = gEasyChatWord_Spiraling, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THIRSTY)] = { .text = gEasyChatWord_Thirsty, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOLLING)] = { .text = gEasyChatWord_Lolling, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SILKY)] = { .text = gEasyChatWord_Silky, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SADLY)] = { .text = gEasyChatWord_Sadly, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOPELESS)] = { .text = gEasyChatWord_Hopeless, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_USELESS)] = { .text = gEasyChatWord_Useless, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DROOLING)] = { .text = gEasyChatWord_Drooling, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXCITING)] = { .text = gEasyChatWord_Exciting, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THICK)] = { .text = gEasyChatWord_Thick, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SMOOTH)] = { .text = gEasyChatWord_Smooth, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SLIMY)] = { .text = gEasyChatWord_Slimy, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THIN)] = { .text = gEasyChatWord_Thin, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BREAK)] = { .text = gEasyChatWord_Break, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VORACIOUS)] = { .text = gEasyChatWord_Voracious, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SCATTER)] = { .text = gEasyChatWord_Scatter, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AWESOME)] = { .text = gEasyChatWord_Awesome, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WIMPY)] = { .text = gEasyChatWord_Wimpy, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WOBBLY)] = { .text = gEasyChatWord_Wobbly, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHAKY)] = { .text = gEasyChatWord_Shaky, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RIPPED)] = { .text = gEasyChatWord_Ripped, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHREDDED)] = { .text = gEasyChatWord_Shredded, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INCREASING)] = { .text = gEasyChatWord_Increasing, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YET)] = { .text = gEasyChatWord_Yet, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DESTROYED)] = { .text = gEasyChatWord_Destroyed, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FIERY)] = { .text = gEasyChatWord_Fiery, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOVEY_DOVEY)] = { .text = gEasyChatWord_LoveyDovey, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAPPILY)] = { .text = gEasyChatWord_Happily, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ANTICIPATION)] = { .text = gEasyChatWord_Anticipation, .alphabeticalOrder = 30, diff --git a/src/data/easy_chat/easy_chat_group_battle.h b/src/data/easy_chat/easy_chat_group_battle.h index 0f97f50c9..2a2420b2f 100755 --- a/src/data/easy_chat/easy_chat_group_battle.h +++ b/src/data/easy_chat/easy_chat_group_battle.h @@ -63,316 +63,379 @@ const u8 gEasyChatWord_Rule[] = _("RULE"); const u8 gEasyChatWord_Move[] = _("MOVE"); const struct EasyChatWordInfo gEasyChatGroup_Battle[] = { + [EC_INDEX(EC_WORD_MATCH_UP)] = { .text = gEasyChatWord_MatchUp, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GO)] = { .text = gEasyChatWord_Go, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NO_1)] = { .text = gEasyChatWord_No1, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DECIDE)] = { .text = gEasyChatWord_Decide, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LET_ME_WIN)] = { .text = gEasyChatWord_LetMeWin, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WINS)] = { .text = gEasyChatWord_Wins, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WIN)] = { .text = gEasyChatWord_Win, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WON)] = { .text = gEasyChatWord_Won, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IF_I_WIN)] = { .text = gEasyChatWord_IfIWin, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHEN_I_WIN)] = { .text = gEasyChatWord_WhenIWin, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CAN_T_WIN)] = { .text = gEasyChatWord_CantWin, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CAN_WIN)] = { .text = gEasyChatWord_CanWin, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NO_MATCH)] = { .text = gEasyChatWord_NoMatch, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SPIRIT)] = { .text = gEasyChatWord_Spirit, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DECIDED)] = { .text = gEasyChatWord_Decided, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRUMP_CARD)] = { .text = gEasyChatWord_TrumpCard, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TAKE_THAT)] = { .text = gEasyChatWord_TakeThat, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COME_ON)] = { .text = gEasyChatWord_ComeOn, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ATTACK)] = { .text = gEasyChatWord_Attack, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SURRENDER)] = { .text = gEasyChatWord_Surrender, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GUTSY)] = { .text = gEasyChatWord_Gutsy, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TALENT)] = { .text = gEasyChatWord_Talent, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STRATEGY)] = { .text = gEasyChatWord_Strategy, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SMITE)] = { .text = gEasyChatWord_Smite, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MATCH)] = { .text = gEasyChatWord_Match, .alphabeticalOrder = 60, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VICTORY)] = { .text = gEasyChatWord_Victory, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OFFENSIVE)] = { .text = gEasyChatWord_Offensive, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SENSE)] = { .text = gEasyChatWord_Sense, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VERSUS)] = { .text = gEasyChatWord_Versus, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FIGHTS)] = { .text = gEasyChatWord_Fights, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POWER)] = { .text = gEasyChatWord_Power, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHALLENGE)] = { .text = gEasyChatWord_Challenge, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STRONG)] = { .text = gEasyChatWord_Strong, .alphabeticalOrder = 62, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOO_STRONG)] = { .text = gEasyChatWord_TooStrong, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GO_EASY)] = { .text = gEasyChatWord_GoEasy, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FOE)] = { .text = gEasyChatWord_Foe, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GENIUS)] = { .text = gEasyChatWord_Genius, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LEGEND)] = { .text = gEasyChatWord_Legend, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ESCAPE)] = { .text = gEasyChatWord_Escape, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AIM)] = { .text = gEasyChatWord_Aim, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BATTLE)] = { .text = gEasyChatWord_Battle, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FIGHT)] = { .text = gEasyChatWord_Fight, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RESUSCITATE)] = { .text = gEasyChatWord_Resuscitate, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POINTS)] = { .text = gEasyChatWord_Points, .alphabeticalOrder = 61, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SERIOUS)] = { .text = gEasyChatWord_Serious, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GIVE_UP)] = { .text = gEasyChatWord_GiveUp, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOSS)] = { .text = gEasyChatWord_Loss, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IF_I_LOSE)] = { .text = gEasyChatWord_IfILose, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOST)] = { .text = gEasyChatWord_Lost, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOSE)] = { .text = gEasyChatWord_Lose, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GUARD)] = { .text = gEasyChatWord_Guard, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PARTNER)] = { .text = gEasyChatWord_Partner, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_REJECT)] = { .text = gEasyChatWord_Reject, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ACCEPT)] = { .text = gEasyChatWord_Accept, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INVINCIBLE)] = { .text = gEasyChatWord_Invincible, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RECEIVED)] = { .text = gEasyChatWord_Received, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EASY)] = { .text = gEasyChatWord_Easy, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WEAK)] = { .text = gEasyChatWord_Weak, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOO_WEAK)] = { .text = gEasyChatWord_TooWeak, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PUSHOVER)] = { .text = gEasyChatWord_Pushover, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LEADER)] = { .text = gEasyChatWord_Leader, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RULE)] = { .text = gEasyChatWord_Rule, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MOVE)] = { .text = gEasyChatWord_Move, .alphabeticalOrder = 7, diff --git a/src/data/easy_chat/easy_chat_group_conditions.h b/src/data/easy_chat/easy_chat_group_conditions.h index a8d8ee874..d0636f162 100755 --- a/src/data/easy_chat/easy_chat_group_conditions.h +++ b/src/data/easy_chat/easy_chat_group_conditions.h @@ -69,346 +69,415 @@ const u8 gEasyChatWord_Seems[] = _("SEEMS"); const u8 gEasyChatWord_Badly[] = _("BADLY"); const struct EasyChatWordInfo gEasyChatGroup_Conditions[] = { + [EC_INDEX(EC_WORD_HOT)] = { .text = gEasyChatWord_Hot, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXISTS)] = { .text = gEasyChatWord_Exists, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXCESS)] = { .text = gEasyChatWord_Excess, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_APPROVED)] = { .text = gEasyChatWord_Approved, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAS)] = { .text = gEasyChatWord_Has, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GOOD)] = { .text = gEasyChatWord_Good, .alphabeticalOrder = 68, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LESS)] = { .text = gEasyChatWord_Less, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MOMENTUM)] = { .text = gEasyChatWord_Momentum, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GOING)] = { .text = gEasyChatWord_Going, .alphabeticalOrder = 60, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WEIRD)] = { .text = gEasyChatWord_Weird, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BUSY)] = { .text = gEasyChatWord_Busy, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOGETHER)] = { .text = gEasyChatWord_Together, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FULL)] = { .text = gEasyChatWord_Full, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ABSENT)] = { .text = gEasyChatWord_Absent, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BEING)] = { .text = gEasyChatWord_Being, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NEED)] = { .text = gEasyChatWord_Need, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TASTY)] = { .text = gEasyChatWord_Tasty, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SKILLED)] = { .text = gEasyChatWord_Skilled, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NOISY)] = { .text = gEasyChatWord_Noisy, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BIG)] = { .text = gEasyChatWord_Big, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LATE)] = { .text = gEasyChatWord_Late, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CLOSE)] = { .text = gEasyChatWord_Close, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DOCILE)] = { .text = gEasyChatWord_Docile, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AMUSING)] = { .text = gEasyChatWord_Amusing, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ENTERTAINING)] = { .text = gEasyChatWord_Entertaining, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PERFECTION)] = { .text = gEasyChatWord_Perfection, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PRETTY)] = { .text = gEasyChatWord_Pretty, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEALTHY)] = { .text = gEasyChatWord_Healthy, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXCELLENT)] = { .text = gEasyChatWord_Excellent, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UPSIDE_DOWN)] = { .text = gEasyChatWord_UpsideDown, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COLD)] = { .text = gEasyChatWord_Cold, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_REFRESHING)] = { .text = gEasyChatWord_Refreshing, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UNAVOIDABLE)] = { .text = gEasyChatWord_Unavoidable, .alphabeticalOrder = 63, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MUCH)] = { .text = gEasyChatWord_Much, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OVERWHELMING)] = { .text = gEasyChatWord_Overwhelming, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FABULOUS)] = { .text = gEasyChatWord_Fabulous, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ELSE)] = { .text = gEasyChatWord_Else, .alphabeticalOrder = 61, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXPENSIVE)] = { .text = gEasyChatWord_Expensive, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CORRECT)] = { .text = gEasyChatWord_Correct, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IMPOSSIBLE)] = { .text = gEasyChatWord_Impossible, .alphabeticalOrder = 62, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SMALL)] = { .text = gEasyChatWord_Small, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DIFFERENT)] = { .text = gEasyChatWord_Different, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TIRED)] = { .text = gEasyChatWord_Tired, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SKILL)] = { .text = gEasyChatWord_Skill, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOP)] = { .text = gEasyChatWord_Top, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NON_STOP)] = { .text = gEasyChatWord_NonStop, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PREPOSTEROUS)] = { .text = gEasyChatWord_Preposterous, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NONE)] = { .text = gEasyChatWord_None, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NOTHING)] = { .text = gEasyChatWord_Nothing, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NATURAL)] = { .text = gEasyChatWord_Natural, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BECOMES)] = { .text = gEasyChatWord_Becomes, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LUKEWARM)] = { .text = gEasyChatWord_Lukewarm, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FAST)] = { .text = gEasyChatWord_Fast, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOW)] = { .text = gEasyChatWord_Low, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AWFUL)] = { .text = gEasyChatWord_Awful, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALONE)] = { .text = gEasyChatWord_Alone, .alphabeticalOrder = 67, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BORED)] = { .text = gEasyChatWord_Bored, .alphabeticalOrder = 66, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SECRET)] = { .text = gEasyChatWord_Secret, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MYSTERY)] = { .text = gEasyChatWord_Mystery, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LACKS)] = { .text = gEasyChatWord_Lacks, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BEST)] = { .text = gEasyChatWord_Best, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOUSY)] = { .text = gEasyChatWord_Lousy, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MISTAKE)] = { .text = gEasyChatWord_Mistake, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_KIND)] = { .text = gEasyChatWord_Kind, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WELL)] = { .text = gEasyChatWord_Well, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WEAKENED)] = { .text = gEasyChatWord_Weakened, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SIMPLE)] = { .text = gEasyChatWord_Simple, .alphabeticalOrder = 65, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SEEMS)] = { .text = gEasyChatWord_Seems, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BADLY)] = { .text = gEasyChatWord_Badly, .alphabeticalOrder = 64, diff --git a/src/data/easy_chat/easy_chat_group_endings.h b/src/data/easy_chat/easy_chat_group_endings.h index afaea48cb..ffa5108a9 100755 --- a/src/data/easy_chat/easy_chat_group_endings.h +++ b/src/data/easy_chat/easy_chat_group_endings.h @@ -69,346 +69,415 @@ const u8 gEasyChatWord_Once[] = _("ONCE"); const u8 gEasyChatWord_Anywhere[] = _("ANYWHERE"); const struct EasyChatWordInfo gEasyChatGroup_Endings[] = { + [EC_INDEX(EC_WORD_WILL)] = { .text = gEasyChatWord_Will, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WILL_BE_HERE)] = { .text = gEasyChatWord_WillBeHere, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OR)] = { .text = gEasyChatWord_Or, .alphabeticalOrder = 63, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TIMES)] = { .text = gEasyChatWord_Times, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WONDER)] = { .text = gEasyChatWord_Wonder, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IS_IT_QUES)] = { .text = gEasyChatWord_IsItQues, .alphabeticalOrder = 68, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BE)] = { .text = gEasyChatWord_Be, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GIMME)] = { .text = gEasyChatWord_Gimme, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COULD)] = { .text = gEasyChatWord_Could, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIKELY_TO)] = { .text = gEasyChatWord_LikelyTo, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WOULD)] = { .text = gEasyChatWord_Would, .alphabeticalOrder = 64, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IS)] = { .text = gEasyChatWord_Is, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ISN_T_IT_QUES)] = { .text = gEasyChatWord_IsntItQues, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LET_S)] = { .text = gEasyChatWord_Lets, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OTHER)] = { .text = gEasyChatWord_Other, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ARE)] = { .text = gEasyChatWord_Are, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WAS)] = { .text = gEasyChatWord_Was, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WERE)] = { .text = gEasyChatWord_Were, .alphabeticalOrder = 60, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THOSE)] = { .text = gEasyChatWord_Those, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ISN_T)] = { .text = gEasyChatWord_Isnt, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WON_T)] = { .text = gEasyChatWord_Wont, .alphabeticalOrder = 61, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CAN_T)] = { .text = gEasyChatWord_Cant, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CAN)] = { .text = gEasyChatWord_Can, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DON_T)] = { .text = gEasyChatWord_Dont, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DO)] = { .text = gEasyChatWord_Do, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DOES)] = { .text = gEasyChatWord_Does, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHOM)] = { .text = gEasyChatWord_Whom, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHICH)] = { .text = gEasyChatWord_Which, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WASN_T)] = { .text = gEasyChatWord_Wasnt, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WEREN_T)] = { .text = gEasyChatWord_Werent, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAVE)] = { .text = gEasyChatWord_Have, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAVEN_T)] = { .text = gEasyChatWord_Havent, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_A)] = { .text = gEasyChatWord_A, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AN)] = { .text = gEasyChatWord_An, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NOT)] = { .text = gEasyChatWord_Not, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THERE)] = { .text = gEasyChatWord_There, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OK_QUES)] = { .text = gEasyChatWord_OkQues, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SO)] = { .text = gEasyChatWord_So, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MAYBE)] = { .text = gEasyChatWord_Maybe, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ABOUT)] = { .text = gEasyChatWord_About, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OVER)] = { .text = gEasyChatWord_Over, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IT)] = { .text = gEasyChatWord_It, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALL)] = { .text = gEasyChatWord_All, .alphabeticalOrder = 67, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FOR)] = { .text = gEasyChatWord_For, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ON)] = { .text = gEasyChatWord_On, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OFF)] = { .text = gEasyChatWord_Off, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AS)] = { .text = gEasyChatWord_As, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TO)] = { .text = gEasyChatWord_To, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WITH)] = { .text = gEasyChatWord_With, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BETTER)] = { .text = gEasyChatWord_Better, .alphabeticalOrder = 66, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EVER)] = { .text = gEasyChatWord_Ever, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SINCE)] = { .text = gEasyChatWord_Since, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OF)] = { .text = gEasyChatWord_Of, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BELONGS_TO)] = { .text = gEasyChatWord_BelongsTo, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AT)] = { .text = gEasyChatWord_At, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IN)] = { .text = gEasyChatWord_In, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OUT)] = { .text = gEasyChatWord_Out, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOO)] = { .text = gEasyChatWord_Too, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIKE)] = { .text = gEasyChatWord_Like, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DID)] = { .text = gEasyChatWord_Did, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DIDN_T)] = { .text = gEasyChatWord_Didnt, .alphabeticalOrder = 65, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DOESN_T)] = { .text = gEasyChatWord_Doesnt, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WITHOUT)] = { .text = gEasyChatWord_Without, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AFTER)] = { .text = gEasyChatWord_After, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BEFORE)] = { .text = gEasyChatWord_Before, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHILE)] = { .text = gEasyChatWord_While, .alphabeticalOrder = 62, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THAN)] = { .text = gEasyChatWord_Than, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ONCE)] = { .text = gEasyChatWord_Once, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ANYWHERE)] = { .text = gEasyChatWord_Anywhere, .alphabeticalOrder = 10, diff --git a/src/data/easy_chat/easy_chat_group_events.h b/src/data/easy_chat/easy_chat_group_events.h index 8d9cf7e24..0fbbcc4a7 100755 --- a/src/data/easy_chat/easy_chat_group_events.h +++ b/src/data/easy_chat/easy_chat_group_events.h @@ -29,146 +29,175 @@ const u8 gEasyChatWord_Wireless[] = _("WIRELESS"); const u8 gEasyChatWord_Frontier[] = _("FRONTIER"); const struct EasyChatWordInfo gEasyChatGroup_Events[] = { + [EC_INDEX(EC_WORD_APPEAL)] = { .text = gEasyChatWord_Appeal, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EVENTS)] = { .text = gEasyChatWord_Events, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STAY_AT_HOME)] = { .text = gEasyChatWord_StayAtHome, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BERRY)] = { .text = gEasyChatWord_Berry, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CONTEST)] = { .text = gEasyChatWord_Contest, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MC)] = { .text = gEasyChatWord_Mc, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_JUDGE)] = { .text = gEasyChatWord_Judge, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SUPER)] = { .text = gEasyChatWord_Super, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STAGE)] = { .text = gEasyChatWord_Stage, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HALL_OF_FAME)] = { .text = gEasyChatWord_HallOfFame, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EVOLUTION)] = { .text = gEasyChatWord_Evolution, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HYPER)] = { .text = gEasyChatWord_Hyper, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BATTLE_TOWER)] = { .text = gEasyChatWord_BattleTower, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LEADERS)] = { .text = gEasyChatWord_Leaders, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BATTLE_ROOM)] = { .text = gEasyChatWord_BattleRoom, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HIDDEN)] = { .text = gEasyChatWord_Hidden, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SECRET_BASE)] = { .text = gEasyChatWord_SecretBase, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BLEND)] = { .text = gEasyChatWord_Blend, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POKEBLOCK)] = { .text = gEasyChatWord_POKEBLOCK, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MASTER)] = { .text = gEasyChatWord_Master, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RANK)] = { .text = gEasyChatWord_Rank, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RIBBON)] = { .text = gEasyChatWord_Ribbon, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CRUSH)] = { .text = gEasyChatWord_Crush, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DIRECT)] = { .text = gEasyChatWord_Direct, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOWER)] = { .text = gEasyChatWord_Tower, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UNION)] = { .text = gEasyChatWord_Union, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ROOM)] = { .text = gEasyChatWord_Room, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WIRELESS)] = { .text = gEasyChatWord_Wireless, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FRONTIER)] = { .text = gEasyChatWord_Frontier, .alphabeticalOrder = 27, diff --git a/src/data/easy_chat/easy_chat_group_feelings.h b/src/data/easy_chat/easy_chat_group_feelings.h index 2dda71808..55fe9d00c 100755 --- a/src/data/easy_chat/easy_chat_group_feelings.h +++ b/src/data/easy_chat/easy_chat_group_feelings.h @@ -69,346 +69,415 @@ const u8 gEasyChatWord_Understand[] = _("UNDERSTAND"); const u8 gEasyChatWord_Understands[] = _("UNDERSTANDS"); const struct EasyChatWordInfo gEasyChatGroup_Feelings[] = { + [EC_INDEX(EC_WORD_MEET)] = { .text = gEasyChatWord_Meet, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PLAY)] = { .text = gEasyChatWord_Play, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HURRIED)] = { .text = gEasyChatWord_Hurried, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GOES)] = { .text = gEasyChatWord_Goes, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GIDDY)] = { .text = gEasyChatWord_Giddy, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAPPY)] = { .text = gEasyChatWord_Happy, .alphabeticalOrder = 63, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAPPINESS)] = { .text = gEasyChatWord_Happiness, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXCITE)] = { .text = gEasyChatWord_Excite, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IMPORTANT)] = { .text = gEasyChatWord_Important, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FUNNY)] = { .text = gEasyChatWord_Funny, .alphabeticalOrder = 61, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GOT)] = { .text = gEasyChatWord_Got, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GO_HOME)] = { .text = gEasyChatWord_GoHome, .alphabeticalOrder = 62, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DISAPPOINTED)] = { .text = gEasyChatWord_Disappointed, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DISAPPOINTS)] = { .text = gEasyChatWord_Disappoints, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SAD)] = { .text = gEasyChatWord_Sad, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRY)] = { .text = gEasyChatWord_Try, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRIES)] = { .text = gEasyChatWord_Tries, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEARS)] = { .text = gEasyChatWord_Hears, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THINK)] = { .text = gEasyChatWord_Think, .alphabeticalOrder = 60, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEAR)] = { .text = gEasyChatWord_Hear, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WANTS)] = { .text = gEasyChatWord_Wants, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MISHEARD)] = { .text = gEasyChatWord_Misheard, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DISLIKE)] = { .text = gEasyChatWord_Dislike, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ANGRY)] = { .text = gEasyChatWord_Angry, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ANGER)] = { .text = gEasyChatWord_Anger, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SCARY)] = { .text = gEasyChatWord_Scary, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LONESOME)] = { .text = gEasyChatWord_Lonesome, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DISAPPOINT)] = { .text = gEasyChatWord_Disappoint, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_JOY)] = { .text = gEasyChatWord_Joy, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GETS)] = { .text = gEasyChatWord_Gets, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NEVER)] = { .text = gEasyChatWord_Never, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DARN)] = { .text = gEasyChatWord_Darn, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DOWNCAST)] = { .text = gEasyChatWord_Downcast, .alphabeticalOrder = 64, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INCREDIBLE)] = { .text = gEasyChatWord_Incredible, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIKES)] = { .text = gEasyChatWord_Likes, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DISLIKES)] = { .text = gEasyChatWord_Dislikes, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BORING)] = { .text = gEasyChatWord_Boring, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CARE)] = { .text = gEasyChatWord_Care, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CARES)] = { .text = gEasyChatWord_Cares, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALL_RIGHT)] = { .text = gEasyChatWord_AllRight, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ADORE)] = { .text = gEasyChatWord_Adore, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DISASTER)] = { .text = gEasyChatWord_Disaster, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ENJOY)] = { .text = gEasyChatWord_Enjoy, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ENJOYS)] = { .text = gEasyChatWord_Enjoys, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EAT)] = { .text = gEasyChatWord_Eat, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LACKING)] = { .text = gEasyChatWord_Lacking, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BAD)] = { .text = gEasyChatWord_Bad, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HARD)] = { .text = gEasyChatWord_Hard, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TERRIBLE)] = { .text = gEasyChatWord_Terrible, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHOULD)] = { .text = gEasyChatWord_Should, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NICE)] = { .text = gEasyChatWord_Nice, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DRINK)] = { .text = gEasyChatWord_Drink, .alphabeticalOrder = 66, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SURPRISE)] = { .text = gEasyChatWord_Surprise, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FEAR)] = { .text = gEasyChatWord_Fear, .alphabeticalOrder = 65, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WANT)] = { .text = gEasyChatWord_Want, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WAIT)] = { .text = gEasyChatWord_Wait, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SATISFIED)] = { .text = gEasyChatWord_Satisfied, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SEE)] = { .text = gEasyChatWord_See, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RARE)] = { .text = gEasyChatWord_Rare, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NEGATIVE)] = { .text = gEasyChatWord_Negative, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DONE)] = { .text = gEasyChatWord_Done, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DANGER)] = { .text = gEasyChatWord_Danger, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DEFEATED)] = { .text = gEasyChatWord_Defeated, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BEAT)] = { .text = gEasyChatWord_Beat, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GREAT)] = { .text = gEasyChatWord_Great, .alphabeticalOrder = 67, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ROMANTIC)] = { .text = gEasyChatWord_Romantic, .alphabeticalOrder = 68, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_QUESTION)] = { .text = gEasyChatWord_Question, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UNDERSTAND)] = { .text = gEasyChatWord_Understand, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UNDERSTANDS)] = { .text = gEasyChatWord_Understands, .alphabeticalOrder = 20, diff --git a/src/data/easy_chat/easy_chat_group_greetings.h b/src/data/easy_chat/easy_chat_group_greetings.h index 4df08bf7d..fb95f7939 100755 --- a/src/data/easy_chat/easy_chat_group_greetings.h +++ b/src/data/easy_chat/easy_chat_group_greetings.h @@ -42,211 +42,253 @@ const u8 gEasyChatWord_ComeOver[] = _("COME OVER"); const u8 gEasyChatWord_CountOn[] = _("COUNT ON"); const struct EasyChatWordInfo gEasyChatGroup_Greetings[] = { + [EC_INDEX(EC_WORD_THANKS)] = { .text = gEasyChatWord_Thanks, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YES)] = { .text = gEasyChatWord_Yes, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HERE_GOES)] = { .text = gEasyChatWord_HereGoes, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HERE_I_COME)] = { .text = gEasyChatWord_HereICome, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HERE_IT_IS)] = { .text = gEasyChatWord_HereItIs, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YEAH)] = { .text = gEasyChatWord_Yeah, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WELCOME)] = { .text = gEasyChatWord_Welcome, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OI)] = { .text = gEasyChatWord_Oi, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOW_DO)] = { .text = gEasyChatWord_HowDo, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CONGRATS)] = { .text = gEasyChatWord_Congrats, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GIVE_ME)] = { .text = gEasyChatWord_GiveMe, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SORRY)] = { .text = gEasyChatWord_Sorry, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_APOLOGIZE)] = { .text = gEasyChatWord_Apologize, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FORGIVE)] = { .text = gEasyChatWord_Forgive, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEY_THERE)] = { .text = gEasyChatWord_HeyThere, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HELLO)] = { .text = gEasyChatWord_Hello, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GOOD_BYE)] = { .text = gEasyChatWord_GoodBye, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THANK_YOU)] = { .text = gEasyChatWord_ThankYou, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_I_VE_ARRIVED)] = { .text = gEasyChatWord_IveArrived, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PARDON)] = { .text = gEasyChatWord_Pardon, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXCUSE)] = { .text = gEasyChatWord_Excuse, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SEE_YA)] = { .text = gEasyChatWord_SeeYa, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXCUSE_ME)] = { .text = gEasyChatWord_ExcuseMe, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WELL_THEN)] = { .text = gEasyChatWord_WellThen, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GO_AHEAD)] = { .text = gEasyChatWord_GoAhead, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_APPRECIATE)] = { .text = gEasyChatWord_Appreciate, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEY_QUES)] = { .text = gEasyChatWord_HeyQues, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHAT_S_UP_QUES)] = { .text = gEasyChatWord_WhatsUpQues, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HUH_QUES)] = { .text = gEasyChatWord_HuhQues, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NO)] = { .text = gEasyChatWord_No, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HI)] = { .text = gEasyChatWord_Hi, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YEAH_YEAH)] = { .text = gEasyChatWord_YeahYeah, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BYE_BYE)] = { .text = gEasyChatWord_ByeBye, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MEET_YOU)] = { .text = gEasyChatWord_MeetYou, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEY)] = { .text = gEasyChatWord_Hey, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SMELL)] = { .text = gEasyChatWord_Smell, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LISTENING)] = { .text = gEasyChatWord_Listening, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOO_HAH)] = { .text = gEasyChatWord_HooHah, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YAHOO)] = { .text = gEasyChatWord_Yahoo, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YO)] = { .text = gEasyChatWord_Yo, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COME_OVER)] = { .text = gEasyChatWord_ComeOver, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COUNT_ON)] = { .text = gEasyChatWord_CountOn, .alphabeticalOrder = 39, diff --git a/src/data/easy_chat/easy_chat_group_hobbies.h b/src/data/easy_chat/easy_chat_group_hobbies.h index fcd73d017..dd507e21b 100755 --- a/src/data/easy_chat/easy_chat_group_hobbies.h +++ b/src/data/easy_chat/easy_chat_group_hobbies.h @@ -54,271 +54,325 @@ const u8 gEasyChatWord_Vacation[] = _("VACATION"); const u8 gEasyChatWord_Look[] = _("LOOK"); const struct EasyChatWordInfo gEasyChatGroup_Hobbies[] = { + [EC_INDEX(EC_WORD_IDOL)] = { .text = gEasyChatWord_Idol, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ANIME)] = { .text = gEasyChatWord_Anime, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SONG)] = { .text = gEasyChatWord_Song, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MOVIE)] = { .text = gEasyChatWord_Movie, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SWEETS)] = { .text = gEasyChatWord_Sweets, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHAT)] = { .text = gEasyChatWord_Chat, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHILD_S_PLAY)] = { .text = gEasyChatWord_ChildsPlay, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOYS)] = { .text = gEasyChatWord_Toys, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MUSIC)] = { .text = gEasyChatWord_Music, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CARDS)] = { .text = gEasyChatWord_Cards, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHOPPING)] = { .text = gEasyChatWord_Shopping, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CAMERA)] = { .text = gEasyChatWord_Camera, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VIEWING)] = { .text = gEasyChatWord_Viewing, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SPECTATOR)] = { .text = gEasyChatWord_Spectator, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GOURMET)] = { .text = gEasyChatWord_Gourmet, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GAME)] = { .text = gEasyChatWord_Game, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RPG)] = { .text = gEasyChatWord_Rpg, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COLLECTION)] = { .text = gEasyChatWord_Collection, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COMPLETE)] = { .text = gEasyChatWord_Complete, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MAGAZINE)] = { .text = gEasyChatWord_Magazine, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WALK)] = { .text = gEasyChatWord_Walk, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BIKE)] = { .text = gEasyChatWord_Bike, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOBBY)] = { .text = gEasyChatWord_Hobby, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SPORTS)] = { .text = gEasyChatWord_Sports, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SOFTWARE)] = { .text = gEasyChatWord_Software, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SONGS)] = { .text = gEasyChatWord_Songs, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DIET)] = { .text = gEasyChatWord_Diet, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TREASURE)] = { .text = gEasyChatWord_Treasure, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRAVEL)] = { .text = gEasyChatWord_Travel, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DANCE)] = { .text = gEasyChatWord_Dance, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHANNEL)] = { .text = gEasyChatWord_Channel, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MAKING)] = { .text = gEasyChatWord_Making, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FISHING)] = { .text = gEasyChatWord_Fishing, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DATE)] = { .text = gEasyChatWord_Date, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DESIGN)] = { .text = gEasyChatWord_Design, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOCOMOTIVE)] = { .text = gEasyChatWord_Locomotive, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PLUSH_DOLL)] = { .text = gEasyChatWord_PlushDoll, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PC)] = { .text = gEasyChatWord_Pc, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FLOWERS)] = { .text = gEasyChatWord_Flowers, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HERO)] = { .text = gEasyChatWord_Hero, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NAP)] = { .text = gEasyChatWord_Nap, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEROINE)] = { .text = gEasyChatWord_Heroine, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FASHION)] = { .text = gEasyChatWord_Fashion, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ADVENTURE)] = { .text = gEasyChatWord_Adventure, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BOARD)] = { .text = gEasyChatWord_Board, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BALL)] = { .text = gEasyChatWord_Ball, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BOOK)] = { .text = gEasyChatWord_Book, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FESTIVAL)] = { .text = gEasyChatWord_Festival, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COMICS)] = { .text = gEasyChatWord_Comics, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOLIDAY)] = { .text = gEasyChatWord_Holiday, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PLANS)] = { .text = gEasyChatWord_Plans, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRENDY)] = { .text = gEasyChatWord_Trendy, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VACATION)] = { .text = gEasyChatWord_Vacation, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOOK)] = { .text = gEasyChatWord_Look, .alphabeticalOrder = 20, diff --git a/src/data/easy_chat/easy_chat_group_lifestyle.h b/src/data/easy_chat/easy_chat_group_lifestyle.h index 9ed60025d..5819d0f2e 100755 --- a/src/data/easy_chat/easy_chat_group_lifestyle.h +++ b/src/data/easy_chat/easy_chat_group_lifestyle.h @@ -45,226 +45,271 @@ const u8 gEasyChatWord_Rental[] = _("RENTAL"); const u8 gEasyChatWord_World[] = _("WORLD"); const struct EasyChatWordInfo gEasyChatGroup_Lifestyle[] = { + [EC_INDEX(EC_WORD_CHORES)] = { .text = gEasyChatWord_Chores, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOME)] = { .text = gEasyChatWord_Home, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MONEY)] = { .text = gEasyChatWord_Money, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALLOWANCE)] = { .text = gEasyChatWord_Allowance, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BATH)] = { .text = gEasyChatWord_Bath, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CONVERSATION)] = { .text = gEasyChatWord_Conversation, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SCHOOL)] = { .text = gEasyChatWord_School, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COMMEMORATE)] = { .text = gEasyChatWord_Commemorate, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HABIT)] = { .text = gEasyChatWord_Habit, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GROUP)] = { .text = gEasyChatWord_Group, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WORD)] = { .text = gEasyChatWord_Word, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STORE)] = { .text = gEasyChatWord_Store, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SERVICE)] = { .text = gEasyChatWord_Service, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WORK)] = { .text = gEasyChatWord_Work, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SYSTEM)] = { .text = gEasyChatWord_System, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRAIN)] = { .text = gEasyChatWord_Train, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CLASS)] = { .text = gEasyChatWord_Class, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LESSONS)] = { .text = gEasyChatWord_Lessons, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INFORMATION)] = { .text = gEasyChatWord_Information, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIVING)] = { .text = gEasyChatWord_Living, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TEACHER)] = { .text = gEasyChatWord_Teacher, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOURNAMENT)] = { .text = gEasyChatWord_Tournament, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LETTER)] = { .text = gEasyChatWord_Letter, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EVENT)] = { .text = gEasyChatWord_Event, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DIGITAL)] = { .text = gEasyChatWord_Digital, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TEST)] = { .text = gEasyChatWord_Test, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DEPT_STORE)] = { .text = gEasyChatWord_DeptStore, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TELEVISION)] = { .text = gEasyChatWord_Television, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PHONE)] = { .text = gEasyChatWord_Phone, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ITEM)] = { .text = gEasyChatWord_Item, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NAME)] = { .text = gEasyChatWord_Name, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NEWS)] = { .text = gEasyChatWord_News, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POPULAR)] = { .text = gEasyChatWord_Popular, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PARTY)] = { .text = gEasyChatWord_Party, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STUDY)] = { .text = gEasyChatWord_Study, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MACHINE)] = { .text = gEasyChatWord_Machine, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MAIL)] = { .text = gEasyChatWord_Mail, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MESSAGE)] = { .text = gEasyChatWord_Message, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PROMISE)] = { .text = gEasyChatWord_Promise, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DREAM)] = { .text = gEasyChatWord_Dream, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_KINDERGARTEN)] = { .text = gEasyChatWord_Kindergarten, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIFE)] = { .text = gEasyChatWord_Life, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RADIO)] = { .text = gEasyChatWord_Radio, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RENTAL)] = { .text = gEasyChatWord_Rental, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WORLD)] = { .text = gEasyChatWord_World, .alphabeticalOrder = 44, diff --git a/src/data/easy_chat/easy_chat_group_misc.h b/src/data/easy_chat/easy_chat_group_misc.h index fbc9a7069..aa8f84406 100755 --- a/src/data/easy_chat/easy_chat_group_misc.h +++ b/src/data/easy_chat/easy_chat_group_misc.h @@ -42,211 +42,253 @@ const u8 gEasyChatWord_Left[] = _("LEFT"); const u8 gEasyChatWord_Right[] = _("RIGHT"); const struct EasyChatWordInfo gEasyChatGroup_Misc[] = { + [EC_INDEX(EC_WORD_HIGHS)] = { .text = gEasyChatWord_Highs, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOWS)] = { .text = gEasyChatWord_Lows, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UM)] = { .text = gEasyChatWord_Um, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_REAR)] = { .text = gEasyChatWord_Rear, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THINGS)] = { .text = gEasyChatWord_Things, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THING)] = { .text = gEasyChatWord_Thing, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BELOW)] = { .text = gEasyChatWord_Below, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ABOVE)] = { .text = gEasyChatWord_Above, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BACK)] = { .text = gEasyChatWord_Back, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HIGH)] = { .text = gEasyChatWord_High, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HERE)] = { .text = gEasyChatWord_Here, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INSIDE)] = { .text = gEasyChatWord_Inside, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OUTSIDE)] = { .text = gEasyChatWord_Outside, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BESIDE)] = { .text = gEasyChatWord_Beside, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THIS_IS_IT_EXCL)] = { .text = gEasyChatWord_ThisIsItExcl, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THIS)] = { .text = gEasyChatWord_This, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EVERY)] = { .text = gEasyChatWord_Every, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THESE)] = { .text = gEasyChatWord_These, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THESE_WERE)] = { .text = gEasyChatWord_TheseWere, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DOWN)] = { .text = gEasyChatWord_Down, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THAT)] = { .text = gEasyChatWord_That, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THOSE_ARE)] = { .text = gEasyChatWord_ThoseAre, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THOSE_WERE)] = { .text = gEasyChatWord_ThoseWere, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THAT_S_IT_EXCL)] = { .text = gEasyChatWord_ThatsItExcl, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AM)] = { .text = gEasyChatWord_Am, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THAT_WAS)] = { .text = gEasyChatWord_ThatWas, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FRONT)] = { .text = gEasyChatWord_Front, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UP)] = { .text = gEasyChatWord_Up, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHOICE)] = { .text = gEasyChatWord_Choice, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FAR)] = { .text = gEasyChatWord_Far, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AWAY)] = { .text = gEasyChatWord_Away, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NEAR)] = { .text = gEasyChatWord_Near, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHERE)] = { .text = gEasyChatWord_Where, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHEN)] = { .text = gEasyChatWord_When, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHAT)] = { .text = gEasyChatWord_What, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DEEP)] = { .text = gEasyChatWord_Deep, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHALLOW)] = { .text = gEasyChatWord_Shallow, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHY)] = { .text = gEasyChatWord_Why, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CONFUSED)] = { .text = gEasyChatWord_Confused, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OPPOSITE)] = { .text = gEasyChatWord_Opposite, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LEFT)] = { .text = gEasyChatWord_Left, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RIGHT)] = { .text = gEasyChatWord_Right, .alphabeticalOrder = 37, diff --git a/src/data/easy_chat/easy_chat_group_people.h b/src/data/easy_chat/easy_chat_group_people.h index 17d2d5339..2ddd3c9d9 100755 --- a/src/data/easy_chat/easy_chat_group_people.h +++ b/src/data/easy_chat/easy_chat_group_people.h @@ -63,7 +63,7 @@ const u8 gEasyChatWord_We[] = _("WE"); const u8 gEasyChatWord_Been[] = _("BEEN"); const u8 gEasyChatWord_ToUs[] = _("TO US"); const u8 gEasyChatWord_Our[] = _("OUR"); -const u8 gEasyChatWord_WeAre[] = _("WE'RE"); +const u8 gEasyChatWord_WeRe[] = _("WE'RE"); const u8 gEasyChatWord_Rival[] = _("RIVAL"); const u8 gEasyChatWord_Weve[] = _("WE'VE"); const u8 gEasyChatWord_Woman[] = _("WOMAN"); @@ -75,376 +75,451 @@ const u8 gEasyChatWord_SheIs[] = _("SHE IS"); const u8 gEasyChatWord_Some[] = _("SOME"); const struct EasyChatWordInfo gEasyChatGroup_People[] = { + [EC_INDEX(EC_WORD_OPPONENT)] = { .text = gEasyChatWord_Opponent, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_I)] = { .text = gEasyChatWord_I, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YOU)] = { .text = gEasyChatWord_You, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YOURS)] = { .text = gEasyChatWord_Yours, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SON)] = { .text = gEasyChatWord_Son, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YOUR)] = { .text = gEasyChatWord_Your, .alphabeticalOrder = 62, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YOU_RE)] = { .text = gEasyChatWord_Youre, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YOU_VE)] = { .text = gEasyChatWord_Youve, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MOTHER)] = { .text = gEasyChatWord_Mother, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GRANDFATHER)] = { .text = gEasyChatWord_Grandfather, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UNCLE)] = { .text = gEasyChatWord_Uncle, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FATHER)] = { .text = gEasyChatWord_Father, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BOY)] = { .text = gEasyChatWord_Boy, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ADULT)] = { .text = gEasyChatWord_Adult, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BROTHER)] = { .text = gEasyChatWord_Brother, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SISTER)] = { .text = gEasyChatWord_Sister, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GRANDMOTHER)] = { .text = gEasyChatWord_Grandmother, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AUNT)] = { .text = gEasyChatWord_Aunt, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PARENT)] = { .text = gEasyChatWord_Parent, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MAN)] = { .text = gEasyChatWord_Man, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ME)] = { .text = gEasyChatWord_Me, .alphabeticalOrder = 72, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GIRL)] = { .text = gEasyChatWord_Girl, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BABE)] = { .text = gEasyChatWord_Babe, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FAMILY)] = { .text = gEasyChatWord_Family, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HER)] = { .text = gEasyChatWord_Her, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HIM)] = { .text = gEasyChatWord_Him, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HE)] = { .text = gEasyChatWord_He, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PLACE)] = { .text = gEasyChatWord_Place, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DAUGHTER)] = { .text = gEasyChatWord_Daughter, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HIS)] = { .text = gEasyChatWord_His, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HE_S)] = { .text = gEasyChatWord_Hes, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AREN_T)] = { .text = gEasyChatWord_Arent, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SIBLINGS)] = { .text = gEasyChatWord_Siblings, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_KID)] = { .text = gEasyChatWord_Kid, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHILDREN)] = { .text = gEasyChatWord_Children, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MR)] = { .text = gEasyChatWord_Mr, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MRS)] = { .text = gEasyChatWord_Mrs, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MYSELF)] = { .text = gEasyChatWord_Myself, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_I_WAS)] = { .text = gEasyChatWord_IWas, .alphabeticalOrder = 64, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TO_ME)] = { .text = gEasyChatWord_ToMe, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MY)] = { .text = gEasyChatWord_My, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_I_AM)] = { .text = gEasyChatWord_IAm, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_I_VE)] = { .text = gEasyChatWord_Ive, .alphabeticalOrder = 66, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHO)] = { .text = gEasyChatWord_Who, .alphabeticalOrder = 69, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SOMEONE)] = { .text = gEasyChatWord_Someone, .alphabeticalOrder = 73, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHO_WAS)] = { .text = gEasyChatWord_WhoWas, .alphabeticalOrder = 70, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TO_WHOM)] = { .text = gEasyChatWord_ToWhom, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHOSE)] = { .text = gEasyChatWord_Whose, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHO_IS)] = { .text = gEasyChatWord_WhoIs, .alphabeticalOrder = 74, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IT_S)] = { .text = gEasyChatWord_Its, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LADY)] = { .text = gEasyChatWord_Lady, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FRIEND)] = { .text = gEasyChatWord_Friend, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALLY)] = { .text = gEasyChatWord_Ally, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PERSON)] = { .text = gEasyChatWord_Person, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DUDE)] = { .text = gEasyChatWord_Dude, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THEY)] = { .text = gEasyChatWord_They, .alphabeticalOrder = 60, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THEY_WERE)] = { .text = gEasyChatWord_TheyWere, .alphabeticalOrder = 71, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TO_THEM)] = { .text = gEasyChatWord_ToThem, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THEIR)] = { .text = gEasyChatWord_Their, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THEY_RE)] = { .text = gEasyChatWord_Theyre, .alphabeticalOrder = 63, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THEY_VE)] = { .text = gEasyChatWord_Theyve, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WE)] = { .text = gEasyChatWord_We, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BEEN)] = { .text = gEasyChatWord_Been, .alphabeticalOrder = 61, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TO_US)] = { .text = gEasyChatWord_ToUs, .alphabeticalOrder = 65, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OUR)] = { .text = gEasyChatWord_Our, .alphabeticalOrder = 67, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WE_RE)] = { - .text = gEasyChatWord_WeAre, + .text = gEasyChatWord_WeRe, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RIVAL)] = { .text = gEasyChatWord_Rival, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WE_VE)] = { .text = gEasyChatWord_Weve, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WOMAN)] = { .text = gEasyChatWord_Woman, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHE)] = { .text = gEasyChatWord_She, .alphabeticalOrder = 68, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHE_WAS)] = { .text = gEasyChatWord_SheWas, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TO_HER)] = { .text = gEasyChatWord_ToHer, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HERS)] = { .text = gEasyChatWord_Hers, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHE_IS)] = { .text = gEasyChatWord_SheIs, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SOME)] = { .text = gEasyChatWord_Some, .alphabeticalOrder = 3, diff --git a/src/data/easy_chat/easy_chat_group_speech.h b/src/data/easy_chat/easy_chat_group_speech.h index 013b454c0..a0874a33a 100755 --- a/src/data/easy_chat/easy_chat_group_speech.h +++ b/src/data/easy_chat/easy_chat_group_speech.h @@ -60,301 +60,361 @@ const u8 gEasyChatWord_Instead[] = _("INSTEAD"); const u8 gEasyChatWord_Fantastic[] = _("FANTASTIC"); const struct EasyChatWordInfo gEasyChatGroup_Speech[] = { + [EC_INDEX(EC_WORD_LISTEN)] = { .text = gEasyChatWord_Listen, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NOT_VERY)] = { .text = gEasyChatWord_NotVery, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MEAN)] = { .text = gEasyChatWord_Mean, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIE)] = { .text = gEasyChatWord_Lie, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LAY)] = { .text = gEasyChatWord_Lay, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RECOMMEND)] = { .text = gEasyChatWord_Recommend, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NITWIT)] = { .text = gEasyChatWord_Nitwit, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_QUITE)] = { .text = gEasyChatWord_Quite, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FROM)] = { .text = gEasyChatWord_From, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FEELING)] = { .text = gEasyChatWord_Feeling, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BUT)] = { .text = gEasyChatWord_But, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOWEVER)] = { .text = gEasyChatWord_However, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CASE)] = { .text = gEasyChatWord_Case, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THE)] = { .text = gEasyChatWord_The, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MISS)] = { .text = gEasyChatWord_Miss, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOW)] = { .text = gEasyChatWord_How, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HIT)] = { .text = gEasyChatWord_Hit, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ENOUGH)] = { .text = gEasyChatWord_Enough, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_A_LOT)] = { .text = gEasyChatWord_ALot, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_A_LITTLE)] = { .text = gEasyChatWord_ALittle, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ABSOLUTELY)] = { .text = gEasyChatWord_Absolutely, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AND)] = { .text = gEasyChatWord_And, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ONLY)] = { .text = gEasyChatWord_Only, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AROUND)] = { .text = gEasyChatWord_Around, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PROBABLY)] = { .text = gEasyChatWord_Probably, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IF)] = { .text = gEasyChatWord_If, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VERY)] = { .text = gEasyChatWord_Very, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_A_TINY_BIT)] = { .text = gEasyChatWord_ATinyBit, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WILD)] = { .text = gEasyChatWord_Wild, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THAT_S)] = { .text = gEasyChatWord_Thats, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_JUST)] = { .text = gEasyChatWord_Just, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EVEN_SO)] = { .text = gEasyChatWord_EvenSo, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MUST_BE)] = { .text = gEasyChatWord_MustBe, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NATURALLY)] = { .text = gEasyChatWord_Naturally, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FOR_NOW)] = { .text = gEasyChatWord_ForNow, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UNDERSTOOD)] = { .text = gEasyChatWord_Understood, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_JOKING)] = { .text = gEasyChatWord_Joking, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_READY)] = { .text = gEasyChatWord_Ready, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SOMETHING)] = { .text = gEasyChatWord_Something, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SOMEHOW)] = { .text = gEasyChatWord_Somehow, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALTHOUGH)] = { .text = gEasyChatWord_Although, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALSO)] = { .text = gEasyChatWord_Also, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PERFECT)] = { .text = gEasyChatWord_Perfect, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AS_MUCH_AS)] = { .text = gEasyChatWord_AsMuchAs, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_REALLY)] = { .text = gEasyChatWord_Really, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRULY)] = { .text = gEasyChatWord_Truly, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SERIOUSLY)] = { .text = gEasyChatWord_Seriously, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOTALLY)] = { .text = gEasyChatWord_Totally, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UNTIL)] = { .text = gEasyChatWord_Until, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AS_IF)] = { .text = gEasyChatWord_AsIf, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MOOD)] = { .text = gEasyChatWord_Mood, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RATHER)] = { .text = gEasyChatWord_Rather, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AWFULLY)] = { .text = gEasyChatWord_Awfully, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MODE)] = { .text = gEasyChatWord_Mode, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MORE)] = { .text = gEasyChatWord_More, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOO_LATE)] = { .text = gEasyChatWord_TooLate, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FINALLY)] = { .text = gEasyChatWord_Finally, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ANY)] = { .text = gEasyChatWord_Any, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INSTEAD)] = { .text = gEasyChatWord_Instead, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FANTASTIC)] = { .text = gEasyChatWord_Fantastic, .alphabeticalOrder = 28, diff --git a/src/data/easy_chat/easy_chat_group_status.h b/src/data/easy_chat/easy_chat_group_status.h index d4958c3ad..af2292b44 100755 --- a/src/data/easy_chat/easy_chat_group_status.h +++ b/src/data/easy_chat/easy_chat_group_status.h @@ -109,546 +109,655 @@ const u8 gEasyChatWord_PurePower[] = _("PURE POWER"); const u8 gEasyChatWord_ShieldDust[] = _("SHIELD DUST"); const struct EasyChatWordInfo gEasyChatGroup_Status[] = { + [EC_INDEX(EC_WORD_DARK)] = { .text = gEasyChatWord_Dark, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STENCH)] = { .text = gEasyChatWord_Stench, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THICK_FAT)] = { .text = gEasyChatWord_ThickFat, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RAIN_DISH)] = { .text = gEasyChatWord_RainDish, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DRIZZLE)] = { .text = gEasyChatWord_Drizzle, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ARENA_TRAP)] = { .text = gEasyChatWord_ArenaTrap, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INTIMIDATE)] = { .text = gEasyChatWord_Intimidate, .alphabeticalOrder = 101, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ROCK_HEAD)] = { .text = gEasyChatWord_RockHead, .alphabeticalOrder = 97, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COLOR)] = { .text = gEasyChatWord_Color, .alphabeticalOrder = 106, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALT_COLOR)] = { .text = gEasyChatWord_AltColor, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ROCK)] = { .text = gEasyChatWord_Rock, .alphabeticalOrder = 68, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BEAUTIFUL)] = { .text = gEasyChatWord_Beautiful, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BEAUTY)] = { .text = gEasyChatWord_Beauty, .alphabeticalOrder = 86, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AIR_LOCK)] = { .text = gEasyChatWord_AirLock, .alphabeticalOrder = 78, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PSYCHIC)] = { .text = gEasyChatWord_Psychic, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HYPER_CUTTER)] = { .text = gEasyChatWord_HyperCutter, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FIGHTING)] = { .text = gEasyChatWord_Fighting, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHADOW_TAG)] = { .text = gEasyChatWord_ShadowTag, .alphabeticalOrder = 99, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SMART)] = { .text = gEasyChatWord_Smart, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SMARTNESS)] = { .text = gEasyChatWord_Smartness, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SPEED_BOOST)] = { .text = gEasyChatWord_SpeedBoost, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COOL)] = { .text = gEasyChatWord_Cool, .alphabeticalOrder = 62, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COOLNESS)] = { .text = gEasyChatWord_Coolness, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BATTLE_ARMOR)] = { .text = gEasyChatWord_BattleArmor, .alphabeticalOrder = 76, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CUTE)] = { .text = gEasyChatWord_Cute, .alphabeticalOrder = 72, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CUTENESS)] = { .text = gEasyChatWord_Cuteness, .alphabeticalOrder = 88, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STURDY)] = { .text = gEasyChatWord_Sturdy, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SUCTION_CUPS)] = { .text = gEasyChatWord_SuctionCups, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GRASS)] = { .text = gEasyChatWord_Grass, .alphabeticalOrder = 90, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CLEAR_BODY)] = { .text = gEasyChatWord_ClearBody, .alphabeticalOrder = 91, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TORRENT)] = { .text = gEasyChatWord_Torrent, .alphabeticalOrder = 104, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GHOST)] = { .text = gEasyChatWord_Ghost, .alphabeticalOrder = 75, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ICE)] = { .text = gEasyChatWord_Ice, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GUTS)] = { .text = gEasyChatWord_Guts, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ROUGH_SKIN)] = { .text = gEasyChatWord_RoughSkin, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHELL_ARMOR)] = { .text = gEasyChatWord_ShellArmor, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NATURAL_CURE)] = { .text = gEasyChatWord_NaturalCure, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DAMP)] = { .text = gEasyChatWord_Damp, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GROUND)] = { .text = gEasyChatWord_Ground, .alphabeticalOrder = 73, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIMBER)] = { .text = gEasyChatWord_Limber, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MAGNET_PULL)] = { .text = gEasyChatWord_MagnetPull, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHITE_SMOKE)] = { .text = gEasyChatWord_WhiteSmoke, .alphabeticalOrder = 71, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SYNCHRONIZE)] = { .text = gEasyChatWord_Synchronize, .alphabeticalOrder = 100, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OVERGROW)] = { .text = gEasyChatWord_Overgrow, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SWIFT_SWIM)] = { .text = gEasyChatWord_SwiftSwim, .alphabeticalOrder = 81, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SAND_STREAM)] = { .text = gEasyChatWord_SandStream, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SAND_VEIL)] = { .text = gEasyChatWord_SandVeil, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_KEEN_EYE)] = { .text = gEasyChatWord_KeenEye, .alphabeticalOrder = 82, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INNER_FOCUS)] = { .text = gEasyChatWord_InnerFocus, .alphabeticalOrder = 77, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STATIC)] = { .text = gEasyChatWord_Static, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TYPE)] = { .text = gEasyChatWord_Type, .alphabeticalOrder = 85, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOUGH)] = { .text = gEasyChatWord_Tough, .alphabeticalOrder = 94, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOUGHNESS)] = { .text = gEasyChatWord_Toughness, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHED_SKIN)] = { .text = gEasyChatWord_ShedSkin, .alphabeticalOrder = 79, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HUGE_POWER)] = { .text = gEasyChatWord_HugePower, .alphabeticalOrder = 92, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VOLT_ABSORB)] = { .text = gEasyChatWord_VoltAbsorb, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WATER_ABSORB)] = { .text = gEasyChatWord_WaterAbsorb, .alphabeticalOrder = 69, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ELECTRIC)] = { .text = gEasyChatWord_Electric, .alphabeticalOrder = 64, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FORECAST)] = { .text = gEasyChatWord_Forecast, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SERENE_GRACE)] = { .text = gEasyChatWord_SereneGrace, .alphabeticalOrder = 93, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POISON)] = { .text = gEasyChatWord_Poison, .alphabeticalOrder = 103, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POISON_POINT)] = { .text = gEasyChatWord_PoisonPoint, .alphabeticalOrder = 102, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DRAGON)] = { .text = gEasyChatWord_Dragon, .alphabeticalOrder = 89, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRACE)] = { .text = gEasyChatWord_Trace, .alphabeticalOrder = 83, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OBLIVIOUS)] = { .text = gEasyChatWord_Oblivious, .alphabeticalOrder = 60, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRUANT)] = { .text = gEasyChatWord_Truant, .alphabeticalOrder = 61, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RUN_AWAY)] = { .text = gEasyChatWord_RunAway, .alphabeticalOrder = 84, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STICKY_HOLD)] = { .text = gEasyChatWord_StickyHold, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CLOUD_NINE)] = { .text = gEasyChatWord_CloudNine, .alphabeticalOrder = 107, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NORMAL)] = { .text = gEasyChatWord_Normal, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STEEL)] = { .text = gEasyChatWord_Steel, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ILLUMINATE)] = { .text = gEasyChatWord_Illuminate, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EARLY_BIRD)] = { .text = gEasyChatWord_EarlyBird, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HUSTLE)] = { .text = gEasyChatWord_Hustle, .alphabeticalOrder = 66, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHINE)] = { .text = gEasyChatWord_Shine, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FLYING)] = { .text = gEasyChatWord_Flying, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DROUGHT)] = { .text = gEasyChatWord_Drought, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIGHTNINGROD)] = { .text = gEasyChatWord_Lightningrod, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COMPOUNDEYES)] = { .text = gEasyChatWord_Compoundeyes, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MARVEL_SCALE)] = { .text = gEasyChatWord_MarvelScale, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WONDER_GUARD)] = { .text = gEasyChatWord_WonderGuard, .alphabeticalOrder = 108, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_INSOMNIA)] = { .text = gEasyChatWord_Insomnia, .alphabeticalOrder = 74, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LEVITATE)] = { .text = gEasyChatWord_Levitate, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PLUS)] = { .text = gEasyChatWord_Plus, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PRESSURE)] = { .text = gEasyChatWord_Pressure, .alphabeticalOrder = 87, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LIQUID_OOZE)] = { .text = gEasyChatWord_LiquidOoze, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COLOR_CHANGE)] = { .text = gEasyChatWord_ColorChange, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SOUNDPROOF)] = { .text = gEasyChatWord_Soundproof, .alphabeticalOrder = 70, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EFFECT_SPORE)] = { .text = gEasyChatWord_EffectSpore, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PKRS)] = { .text = gEasyChatWord_Pkrs, .alphabeticalOrder = 67, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FIRE)] = { .text = gEasyChatWord_Fire, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FLAME_BODY)] = { .text = gEasyChatWord_FlameBody, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MINUS)] = { .text = gEasyChatWord_Minus, .alphabeticalOrder = 98, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OWN_TEMPO)] = { .text = gEasyChatWord_OwnTempo, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MAGMA_ARMOR)] = { .text = gEasyChatWord_MagmaArmor, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WATER)] = { .text = gEasyChatWord_Water, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WATER_VEIL)] = { .text = gEasyChatWord_WaterVeil, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BUG)] = { .text = gEasyChatWord_Bug, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SWARM)] = { .text = gEasyChatWord_Swarm, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CUTE_CHARM)] = { .text = gEasyChatWord_CuteCharm, .alphabeticalOrder = 63, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_IMMUNITY)] = { .text = gEasyChatWord_Immunity, .alphabeticalOrder = 65, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BLAZE)] = { .text = gEasyChatWord_Blaze, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PICKUP)] = { .text = gEasyChatWord_Pickup, .alphabeticalOrder = 105, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PATTERN)] = { .text = gEasyChatWord_Pattern, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FLASH_FIRE)] = { .text = gEasyChatWord_FlashFire, .alphabeticalOrder = 95, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VITAL_SPIRIT)] = { .text = gEasyChatWord_VitalSpirit, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CHLOROPHYLL)] = { .text = gEasyChatWord_Chlorophyll, .alphabeticalOrder = 96, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_PURE_POWER)] = { .text = gEasyChatWord_PurePower, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHIELD_DUST)] = { .text = gEasyChatWord_ShieldDust, .alphabeticalOrder = 80, diff --git a/src/data/easy_chat/easy_chat_group_time.h b/src/data/easy_chat/easy_chat_group_time.h index 691dde70c..061abffd4 100755 --- a/src/data/easy_chat/easy_chat_group_time.h +++ b/src/data/easy_chat/easy_chat_group_time.h @@ -45,226 +45,271 @@ const u8 gEasyChatWord_Night[] = _("NIGHT"); const u8 gEasyChatWord_Week[] = _("WEEK"); const struct EasyChatWordInfo gEasyChatGroup_Time[] = { + [EC_INDEX(EC_WORD_FALL)] = { .text = gEasyChatWord_Fall, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MORNING)] = { .text = gEasyChatWord_Morning, .alphabeticalOrder = 39, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TOMORROW)] = { .text = gEasyChatWord_Tomorrow, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LAST)] = { .text = gEasyChatWord_Last, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DAY)] = { .text = gEasyChatWord_Day, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SOMETIME)] = { .text = gEasyChatWord_Sometime, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALWAYS)] = { .text = gEasyChatWord_Always, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CURRENT)] = { .text = gEasyChatWord_Current, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FOREVER)] = { .text = gEasyChatWord_Forever, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DAYS)] = { .text = gEasyChatWord_Days, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_END)] = { .text = gEasyChatWord_End, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TUESDAY)] = { .text = gEasyChatWord_Tuesday, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YESTERDAY)] = { .text = gEasyChatWord_Yesterday, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TODAY)] = { .text = gEasyChatWord_Today, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FRIDAY)] = { .text = gEasyChatWord_Friday, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MONDAY)] = { .text = gEasyChatWord_Monday, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LATER)] = { .text = gEasyChatWord_Later, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EARLIER)] = { .text = gEasyChatWord_Earlier, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ANOTHER)] = { .text = gEasyChatWord_Another, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TIME)] = { .text = gEasyChatWord_Time, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FINISH)] = { .text = gEasyChatWord_Finish, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WEDNESDAY)] = { .text = gEasyChatWord_Wednesday, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SOON)] = { .text = gEasyChatWord_Soon, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_START)] = { .text = gEasyChatWord_Start, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MONTH)] = { .text = gEasyChatWord_Month, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_STOP)] = { .text = gEasyChatWord_Stop, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NOW)] = { .text = gEasyChatWord_Now, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FINAL)] = { .text = gEasyChatWord_Final, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NEXT)] = { .text = gEasyChatWord_Next, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AGE)] = { .text = gEasyChatWord_Age, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SATURDAY)] = { .text = gEasyChatWord_Saturday, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SUMMER)] = { .text = gEasyChatWord_Summer, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SUNDAY)] = { .text = gEasyChatWord_Sunday, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BEGINNING)] = { .text = gEasyChatWord_Beginning, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SPRING)] = { .text = gEasyChatWord_Spring, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DAYTIME)] = { .text = gEasyChatWord_Daytime, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WINTER)] = { .text = gEasyChatWord_Winter, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DAILY)] = { .text = gEasyChatWord_Daily, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OLDEN)] = { .text = gEasyChatWord_Olden, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ALMOST)] = { .text = gEasyChatWord_Almost, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NEARLY)] = { .text = gEasyChatWord_Nearly, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_THURSDAY)] = { .text = gEasyChatWord_Thursday, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NIGHTTIME)] = { .text = gEasyChatWord_Nighttime, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NIGHT)] = { .text = gEasyChatWord_Night, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WEEK)] = { .text = gEasyChatWord_Week, .alphabeticalOrder = 12, diff --git a/src/data/easy_chat/easy_chat_group_trainer.h b/src/data/easy_chat/easy_chat_group_trainer.h index a4e1ddfd6..87966c977 100755 --- a/src/data/easy_chat/easy_chat_group_trainer.h +++ b/src/data/easy_chat/easy_chat_group_trainer.h @@ -27,136 +27,163 @@ const u8 gEasyChatWord_Silver[] = _("SILVER"); const u8 gEasyChatWord_Emerald[] = _("EMERALD"); const struct EasyChatWordInfo gEasyChatGroup_Trainer[] = { + [EC_INDEX(EC_WORD_I_CHOOSE_YOU)] = { .text = gEasyChatWord_IChooseYou, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GOTCHA)] = { .text = gEasyChatWord_Gotcha, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRADE)] = { .text = gEasyChatWord_Trade, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SAPPHIRE)] = { .text = gEasyChatWord_Sapphire, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EVOLVE)] = { .text = gEasyChatWord_Evolve, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ENCYCLOPEDIA)] = { .text = gEasyChatWord_Encyclopedia, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NATURE)] = { .text = gEasyChatWord_Nature, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CENTER)] = { .text = gEasyChatWord_Center, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EGG)] = { .text = gEasyChatWord_Egg, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LINK)] = { .text = gEasyChatWord_Link, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SP_ABILITY)] = { .text = gEasyChatWord_SpAbility, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TRAINER)] = { .text = gEasyChatWord_Trainer, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_VERSION)] = { .text = gEasyChatWord_Version, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POKENAV)] = { .text = gEasyChatWord_Pokenav, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POKEMON)] = { .text = gEasyChatWord_Pokemon, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GET)] = { .text = gEasyChatWord_Get, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_POKEDEX)] = { .text = gEasyChatWord_Pokedex, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RUBY)] = { .text = gEasyChatWord_Ruby, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LEVEL)] = { .text = gEasyChatWord_Level, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_RED)] = { .text = gEasyChatWord_Red, .alphabeticalOrder = 19, .enabled = FALSE, }, + [EC_INDEX(EC_WORD_GREEN)] = { .text = gEasyChatWord_Green, .alphabeticalOrder = 17, .enabled = FALSE, }, + [EC_INDEX(EC_WORD_BAG)] = { .text = gEasyChatWord_Bag, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FLAME)] = { .text = gEasyChatWord_Flame, .alphabeticalOrder = 25, .enabled = FALSE, }, + [EC_INDEX(EC_WORD_GOLD)] = { .text = gEasyChatWord_Gold, .alphabeticalOrder = 10, .enabled = FALSE, }, + [EC_INDEX(EC_WORD_LEAF)] = { .text = gEasyChatWord_Leaf, .alphabeticalOrder = 2, .enabled = FALSE, }, + [EC_INDEX(EC_WORD_SILVER)] = { .text = gEasyChatWord_Silver, .alphabeticalOrder = 11, .enabled = FALSE, }, + [EC_INDEX(EC_WORD_EMERALD)] = { .text = gEasyChatWord_Emerald, .alphabeticalOrder = 12, diff --git a/src/data/easy_chat/easy_chat_group_trendy_saying.h b/src/data/easy_chat/easy_chat_group_trendy_saying.h index 46ce1201a..938073f7f 100755 --- a/src/data/easy_chat/easy_chat_group_trendy_saying.h +++ b/src/data/easy_chat/easy_chat_group_trendy_saying.h @@ -33,166 +33,199 @@ const u8 gEasyChatWord_Young[] = _("YOUNG"); const u8 gEasyChatWord_Ugly[] = _("UGLY"); const struct EasyChatWordInfo gEasyChatGroup_TrendySaying[] = { + [EC_INDEX(EC_WORD_KTHX_BYE)] = { .text = gEasyChatWord_KthxBye, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YES_SIR_EXCL)] = { .text = gEasyChatWord_YesSirExcl, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AVANT_GARDE)] = { .text = gEasyChatWord_AvantGarde, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_COUPLE)] = { .text = gEasyChatWord_Couple, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MUCH_OBLIGED)] = { .text = gEasyChatWord_MuchObliged, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YEEHAW_EXCL)] = { .text = gEasyChatWord_YeehawExcl, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MEGA)] = { .text = gEasyChatWord_Mega, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_1_HIT_KO_EXCL)] = { .text = gEasyChatWord_1HitKOExcl, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DESTINY)] = { .text = gEasyChatWord_Destiny, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CANCEL)] = { .text = gEasyChatWord_Cancel, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NEW)] = { .text = gEasyChatWord_New, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FLATTEN)] = { .text = gEasyChatWord_Flatten, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_KIDDING)] = { .text = gEasyChatWord_Kidding, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOSER)] = { .text = gEasyChatWord_Loser, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOSING)] = { .text = gEasyChatWord_Losing, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAPPENING)] = { .text = gEasyChatWord_Happening, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HIP_AND)] = { .text = gEasyChatWord_HipAnd, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHAKE)] = { .text = gEasyChatWord_Shake, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHADY)] = { .text = gEasyChatWord_Shady, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UPBEAT)] = { .text = gEasyChatWord_Upbeat, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MODERN)] = { .text = gEasyChatWord_Modern, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SMELL_YA)] = { .text = gEasyChatWord_SmellYa, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BANG)] = { .text = gEasyChatWord_Bang, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_KNOCKOUT)] = { .text = gEasyChatWord_Knockout, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HASSLE)] = { .text = gEasyChatWord_Hassle, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WINNER)] = { .text = gEasyChatWord_Winner, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FEVER)] = { .text = gEasyChatWord_Fever, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WANNABE)] = { .text = gEasyChatWord_Wannabe, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_BABY)] = { .text = gEasyChatWord_Baby, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEART)] = { .text = gEasyChatWord_Heart, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OLD)] = { .text = gEasyChatWord_Old, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YOUNG)] = { .text = gEasyChatWord_Young, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UGLY)] = { .text = gEasyChatWord_Ugly, .alphabeticalOrder = 31, diff --git a/src/data/easy_chat/easy_chat_group_voices.h b/src/data/easy_chat/easy_chat_group_voices.h index 6dad874ec..3ebbafd25 100755 --- a/src/data/easy_chat/easy_chat_group_voices.h +++ b/src/data/easy_chat/easy_chat_group_voices.h @@ -63,316 +63,379 @@ const u8 gEasyChatWord_Gwah[] = _("GWAH"); const u8 gEasyChatWord_Wahahaha[] = _("WAHAHAHA"); const struct EasyChatWordInfo gEasyChatGroup_Voices[] = { + [EC_INDEX(EC_WORD_EXCL)] = { .text = gEasyChatWord_Excl, .alphabeticalOrder = 0, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EXCL_EXCL)] = { .text = gEasyChatWord_ExclExcl, .alphabeticalOrder = 1, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_QUES_EXCL)] = { .text = gEasyChatWord_QuesExcl, .alphabeticalOrder = 7, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_QUES)] = { .text = gEasyChatWord_Ques, .alphabeticalOrder = 8, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ELLIPSIS)] = { .text = gEasyChatWord_Ellipsis, .alphabeticalOrder = 4, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ELLIPSIS_EXCL)] = { .text = gEasyChatWord_EllipsisExcl, .alphabeticalOrder = 5, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS)] = { .text = gEasyChatWord_EllipsisEllipsisEllipsis, .alphabeticalOrder = 6, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DASH)] = { .text = gEasyChatWord_Dash, .alphabeticalOrder = 3, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_DASH_DASH_DASH)] = { .text = gEasyChatWord_DashDashDash, .alphabeticalOrder = 2, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UH_OH)] = { .text = gEasyChatWord_UhOh, .alphabeticalOrder = 23, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WAAAH)] = { .text = gEasyChatWord_Waaah, .alphabeticalOrder = 11, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AHAHA)] = { .text = gEasyChatWord_Ahaha, .alphabeticalOrder = 41, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OH_QUES)] = { .text = gEasyChatWord_OhQues, .alphabeticalOrder = 52, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_NOPE)] = { .text = gEasyChatWord_Nope, .alphabeticalOrder = 59, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_URGH)] = { .text = gEasyChatWord_Urgh, .alphabeticalOrder = 22, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HMM)] = { .text = gEasyChatWord_Hmm, .alphabeticalOrder = 25, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WHOAH)] = { .text = gEasyChatWord_Whoah, .alphabeticalOrder = 32, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WROOOAAR_EXCL)] = { .text = gEasyChatWord_WroooaarExcl, .alphabeticalOrder = 24, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WOW)] = { .text = gEasyChatWord_Wow, .alphabeticalOrder = 26, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GIGGLE)] = { .text = gEasyChatWord_Giggle, .alphabeticalOrder = 43, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SIGH)] = { .text = gEasyChatWord_Sigh, .alphabeticalOrder = 19, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UNBELIEVABLE)] = { .text = gEasyChatWord_Unbelievable, .alphabeticalOrder = 33, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CRIES)] = { .text = gEasyChatWord_Cries, .alphabeticalOrder = 61, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AGREE)] = { .text = gEasyChatWord_Agree, .alphabeticalOrder = 34, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EH_QUES)] = { .text = gEasyChatWord_EhQues, .alphabeticalOrder = 38, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_CRY)] = { .text = gEasyChatWord_Cry, .alphabeticalOrder = 40, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EHEHE)] = { .text = gEasyChatWord_Ehehe, .alphabeticalOrder = 48, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OI_OI_OI)] = { .text = gEasyChatWord_OiOiOi, .alphabeticalOrder = 37, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OH_YEAH)] = { .text = gEasyChatWord_OhYeah, .alphabeticalOrder = 47, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OH)] = { .text = gEasyChatWord_Oh, .alphabeticalOrder = 42, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OOPS)] = { .text = gEasyChatWord_Oops, .alphabeticalOrder = 15, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SHOCKED)] = { .text = gEasyChatWord_Shocked, .alphabeticalOrder = 49, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_EEK)] = { .text = gEasyChatWord_Eek, .alphabeticalOrder = 46, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GRAAAH)] = { .text = gEasyChatWord_Graaah, .alphabeticalOrder = 57, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GWAHAHAHA)] = { .text = gEasyChatWord_Gwahahaha, .alphabeticalOrder = 44, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WAY)] = { .text = gEasyChatWord_Way, .alphabeticalOrder = 54, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_TCH)] = { .text = gEasyChatWord_Tch, .alphabeticalOrder = 53, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEHE)] = { .text = gEasyChatWord_Hehe, .alphabeticalOrder = 13, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAH)] = { .text = gEasyChatWord_Hah, .alphabeticalOrder = 29, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YUP)] = { .text = gEasyChatWord_Yup, .alphabeticalOrder = 51, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HAHAHA)] = { .text = gEasyChatWord_Hahaha, .alphabeticalOrder = 28, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AIYEEH)] = { .text = gEasyChatWord_Aiyeeh, .alphabeticalOrder = 55, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HIYAH)] = { .text = gEasyChatWord_Hiyah, .alphabeticalOrder = 12, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_FUFUFU)] = { .text = gEasyChatWord_Fufufu, .alphabeticalOrder = 27, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LOL)] = { .text = gEasyChatWord_Lol, .alphabeticalOrder = 56, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_SNORT)] = { .text = gEasyChatWord_Snort, .alphabeticalOrder = 30, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HUMPH)] = { .text = gEasyChatWord_Humph, .alphabeticalOrder = 31, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEHEHE)] = { .text = gEasyChatWord_Hehehe, .alphabeticalOrder = 20, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HEH)] = { .text = gEasyChatWord_Heh, .alphabeticalOrder = 45, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_HOHOHO)] = { .text = gEasyChatWord_Hohoho, .alphabeticalOrder = 36, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_UH_HUH)] = { .text = gEasyChatWord_UhHuh, .alphabeticalOrder = 50, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OH_DEAR)] = { .text = gEasyChatWord_OhDear, .alphabeticalOrder = 9, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_ARRGH)] = { .text = gEasyChatWord_Arrgh, .alphabeticalOrder = 21, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MUFUFU)] = { .text = gEasyChatWord_Mufufu, .alphabeticalOrder = 14, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_MMM)] = { .text = gEasyChatWord_Mmm, .alphabeticalOrder = 10, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OH_KAY)] = { .text = gEasyChatWord_OhKay, .alphabeticalOrder = 62, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_OKAY)] = { .text = gEasyChatWord_Okay, .alphabeticalOrder = 35, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_LALALA)] = { .text = gEasyChatWord_Lalala, .alphabeticalOrder = 16, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_YAY)] = { .text = gEasyChatWord_Yay, .alphabeticalOrder = 18, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_AWW)] = { .text = gEasyChatWord_Aww, .alphabeticalOrder = 60, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WOWEE)] = { .text = gEasyChatWord_Wowee, .alphabeticalOrder = 17, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_GWAH)] = { .text = gEasyChatWord_Gwah, .alphabeticalOrder = 58, .enabled = TRUE, }, + [EC_INDEX(EC_WORD_WAHAHAHA)] = { .text = gEasyChatWord_Wahahaha, .alphabeticalOrder = 39, diff --git a/src/data/easy_chat/easy_chat_groups.h b/src/data/easy_chat/easy_chat_groups.h index a89f228fe..32d98e806 100755 --- a/src/data/easy_chat/easy_chat_groups.h +++ b/src/data/easy_chat/easy_chat_groups.h @@ -24,111 +24,133 @@ #include "easy_chat_group_pokemon2.h" const struct EasyChatGroup gEasyChatGroups[] = { + [EC_GROUP_POKEMON] = { .wordData = {.valueList = gEasyChatGroup_Pokemon}, .numWords = ARRAY_COUNT(gEasyChatGroup_Pokemon), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Pokemon), }, + [EC_GROUP_TRAINER] = { .wordData = {.words = gEasyChatGroup_Trainer}, .numWords = ARRAY_COUNT(gEasyChatGroup_Trainer), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Trainer) - 6, // Excludes Red, Green, Flame, Gold, Leaf, and Silver }, + [EC_GROUP_STATUS] = { .wordData = {.words = gEasyChatGroup_Status}, .numWords = ARRAY_COUNT(gEasyChatGroup_Status), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Status), }, + [EC_GROUP_BATTLE] = { .wordData = {.words = gEasyChatGroup_Battle}, .numWords = ARRAY_COUNT(gEasyChatGroup_Battle), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Battle), }, + [EC_GROUP_GREETINGS] = { .wordData = {.words = gEasyChatGroup_Greetings}, .numWords = ARRAY_COUNT(gEasyChatGroup_Greetings), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Greetings), }, + [EC_GROUP_PEOPLE] = { .wordData = {.words = gEasyChatGroup_People}, .numWords = ARRAY_COUNT(gEasyChatGroup_People), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_People), }, + [EC_GROUP_VOICES] = { .wordData = {.words = gEasyChatGroup_Voices}, .numWords = ARRAY_COUNT(gEasyChatGroup_Voices), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Voices), }, + [EC_GROUP_SPEECH] = { .wordData = {.words = gEasyChatGroup_Speech}, .numWords = ARRAY_COUNT(gEasyChatGroup_Speech), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Speech), }, + [EC_GROUP_ENDINGS] = { .wordData = {.words = gEasyChatGroup_Endings}, .numWords = ARRAY_COUNT(gEasyChatGroup_Endings), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Endings), }, + [EC_GROUP_FEELINGS] = { .wordData = {.words = gEasyChatGroup_Feelings}, .numWords = ARRAY_COUNT(gEasyChatGroup_Feelings), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Feelings), }, + [EC_GROUP_CONDITIONS] = { .wordData = {.words = gEasyChatGroup_Conditions}, .numWords = ARRAY_COUNT(gEasyChatGroup_Conditions), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Conditions), }, + [EC_GROUP_ACTIONS] = { .wordData = {.words = gEasyChatGroup_Actions}, .numWords = ARRAY_COUNT(gEasyChatGroup_Actions), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Actions), }, + [EC_GROUP_LIFESTYLE] = { .wordData = {.words = gEasyChatGroup_Lifestyle}, .numWords = ARRAY_COUNT(gEasyChatGroup_Lifestyle), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Lifestyle), }, + [EC_GROUP_HOBBIES] = { .wordData = {.words = gEasyChatGroup_Hobbies}, .numWords = ARRAY_COUNT(gEasyChatGroup_Hobbies), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Hobbies), }, + [EC_GROUP_TIME] = { .wordData = {.words = gEasyChatGroup_Time}, .numWords = ARRAY_COUNT(gEasyChatGroup_Time), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Time), }, + [EC_GROUP_MISC] = { .wordData = {.words = gEasyChatGroup_Misc}, .numWords = ARRAY_COUNT(gEasyChatGroup_Misc), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Misc), }, + [EC_GROUP_ADJECTIVES] = { .wordData = {.words = gEasyChatGroup_Adjectives}, .numWords = ARRAY_COUNT(gEasyChatGroup_Adjectives), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Adjectives), }, + [EC_GROUP_EVENTS] = { .wordData = {.words = gEasyChatGroup_Events}, .numWords = ARRAY_COUNT(gEasyChatGroup_Events), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Events), }, + [EC_GROUP_MOVE_1] = { .wordData = {.valueList = gEasyChatGroup_Move1}, .numWords = ARRAY_COUNT(gEasyChatGroup_Move1), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Move1), }, + [EC_GROUP_MOVE_2] = { .wordData = {.valueList = gEasyChatGroup_Move2}, .numWords = ARRAY_COUNT(gEasyChatGroup_Move2), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Move2), }, + [EC_GROUP_TRENDY_SAYING] = { .wordData = {.words = gEasyChatGroup_TrendySaying}, .numWords = ARRAY_COUNT(gEasyChatGroup_TrendySaying), .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_TrendySaying), }, + [EC_GROUP_POKEMON_NATIONAL] = { .wordData = {.valueList = gEasyChatGroup_Pokemon2}, .numWords = ARRAY_COUNT(gEasyChatGroup_Pokemon2), diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h index a755c7e6f..35ce13db2 100644 --- a/src/data/graphics/items.h +++ b/src/data/graphics/items.h @@ -1930,3 +1930,18 @@ const u32 gItemIcon_Gem[] = INCBIN_U32("graphics/items/icons/gem.4bpp.lz"); const u32 gItemIconPalette_Ruby[] = INCBIN_U32("graphics/items/icon_palettes/ruby.gbapal.lz"); const u32 gItemIconPalette_Sapphire[] = INCBIN_U32("graphics/items/icon_palettes/sapphire.gbapal.lz"); + +//const u32 gItemIcon_AbilityShield[] = INCBIN_U32("graphics/items/icons/ability_shield.4bpp.lz"); +//const u32 gItemIconPalette_AbilityShield[] = INCBIN_U32("graphics/items/icon_palettes/ability_shield.gbapal.lz"); + +//const u32 gItemIcon_ClearAmulet[] = INCBIN_U32("graphics/items/icons/clear_amulet.4bpp.lz"); +//const u32 gItemIconPalette_ClearAmulet[] = INCBIN_U32("graphics/items/icon_palettes/clear_amulet.gbapal.lz"); + +//const u32 gItemIcon_PunchingGlove[] = INCBIN_U32("graphics/items/icons/punching_glove.4bpp.lz"); +//const u32 gItemIconPalette_PunchingGlove[] = INCBIN_U32("graphics/items/icon_palettes/punching_glove.gbapal.lz"); + +//const u32 gItemIcon_CovertCloak[] = INCBIN_U32("graphics/items/icons/covert_cloak.4bpp.lz"); +//const u32 gItemIconPalette_CovertCloak[] = INCBIN_U32("graphics/items/icon_palettes/covert_cloak.gbapal.lz"); + +//const u32 gItemIcon_LoadedDice[] = INCBIN_U32("graphics/items/icons/loaded_dice.4bpp.lz"); +//const u32 gItemIconPalette_LoadedDice[] = INCBIN_U32("graphics/items/icon_palettes/loaded_dice.gbapal.lz"); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index ec7f079f7..385460228 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -424,7 +424,6 @@ const u32 gMonFrontPic_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/anim_front.4 const u32 gMonFrontPic_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/anim_front.4bpp.lz"); const u32 gMonFrontPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/anim_front.4bpp.lz"); const u32 gMonFrontPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/anim_frontf.4bpp.lz"); const u32 gMonFrontPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/anim_front.4bpp.lz"); const u32 gMonFrontPic_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_front.4bpp.lz"); const u32 gMonFrontPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/anim_front.4bpp.lz"); @@ -459,7 +458,6 @@ const u32 gMonFrontPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/anim_f const u32 gMonFrontPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/anim_front.4bpp.lz"); const u32 gMonFrontPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/anim_front.4bpp.lz"); const u32 gMonFrontPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/anim_front.4bpp.lz"); -const u32 gMonFrontPic_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/anim_frontf.4bpp.lz"); const u32 gMonFrontPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/anim_front.4bpp.lz"); const u32 gMonFrontPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/anim_front.4bpp.lz"); @@ -1672,9 +1670,7 @@ const u32 gMonBackPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/back.4b const u32 gMonBackPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/back.4bpp.lz"); const u32 gMonBackPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/back.4bpp.lz"); const u32 gMonBackPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/back.4bpp.lz"); -const u32 gMonBackPic_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/backf.4bpp.lz"); const u32 gMonBackPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/back.4bpp.lz"); -const u32 gMonBackPic_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/backf.4bpp.lz"); const u32 gMonBackPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/back.4bpp.lz"); const u32 gMonBackPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/back.4bpp.lz"); const u32 gMonBackPic_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/back.4bpp.lz"); @@ -2844,6 +2840,7 @@ const u32 gMonPalette_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/normal.gbapal const u32 gMonPalette_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/normal.gbapal.lz"); const u32 gMonPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/normal.gbapal.lz"); const u32 gMonPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/normal.gbapal.lz"); +const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); const u32 gMonPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/normal.gbapal.lz"); const u32 gMonPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/normal.gbapal.lz"); const u32 gMonPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/normal.gbapal.lz"); @@ -3106,7 +3103,6 @@ const u32 gMonPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/normal.gbap const u32 gMonPalette_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/normal.gbapal.lz"); const u32 gMonPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/normal.gbapal.lz"); const u32 gMonPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/normal.gbapal.lz"); -const u32 gMonPalette_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/normalf.gbapal.lz"); const u32 gMonPalette_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); const u32 gMonPalette_Floette[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); const u32 gMonPalette_Florges[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); @@ -4077,6 +4073,7 @@ const u32 gMonShinyPalette_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gb const u32 gMonShinyPalette_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); const u32 gMonShinyPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/shiny.gbapal.lz"); const u32 gMonShinyPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); const u32 gMonShinyPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/shiny.gbapal.lz"); const u32 gMonShinyPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/shiny.gbapal.lz"); @@ -4339,7 +4336,6 @@ const u32 gMonShinyPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/shiny. const u32 gMonShinyPalette_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/shinyf.gbapal.lz"); const u32 gMonShinyPalette_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); const u32 gMonShinyPalette_Floette[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); const u32 gMonShinyPalette_Florges[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); @@ -5337,6 +5333,10 @@ const u8 gMonIcon_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/icon.4bpp"); const u8 gMonIcon_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/icon.4bpp"); const u8 gMonIcon_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/icon.4bpp"); const u8 gMonIcon_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/icon.4bpp"); +#if P_HIPPO_GENDER_DIFF_ICONS == TRUE +const u8 gMonIcon_HippopotasF[] = INCBIN_U8("graphics/pokemon/hippopotas/iconf.4bpp"); +const u8 gMonIcon_HippowdonF[] = INCBIN_U8("graphics/pokemon/hippowdon/iconf.4bpp"); +#endif const u8 gMonIcon_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/icon.4bpp"); const u8 gMonIcon_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/icon.4bpp"); const u8 gMonIcon_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/icon.4bpp"); diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h index 0a95b5dbf..0107b71ab 100644 --- a/src/data/item_icon_table.h +++ b/src/data/item_icon_table.h @@ -803,6 +803,11 @@ const u32 *const gItemIconTable[ITEMS_COUNT + 1][2] = [ITEM_TEA] = {gItemIcon_Tea, gItemIconPalette_Tea}, [ITEM_RUBY] = {gItemIcon_Gem, gItemIconPalette_Ruby}, [ITEM_SAPPHIRE] = {gItemIcon_Gem, gItemIconPalette_Sapphire}, + [ITEM_ABILITY_SHIELD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_AbilityShield, gItemIconPalette_AbilityShield}, + [ITEM_CLEAR_AMULET] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_ClearAmulet, gItemIconPalette_ClearAmulet}, + [ITEM_PUNCHING_GLOVE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_PunchingGlove, gItemIconPalette_PunchingGlove}, + [ITEM_COVERT_CLOAK] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_CovertCloak, gItemIconPalette_CovertCloak}, + [ITEM_LOADED_DICE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, // {gItemIcon_LoadedDice, gItemIconPalette_LoadedDice}, // Return to field arrow [ITEMS_COUNT] = {gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow}, }; diff --git a/src/data/items.h b/src/data/items.h index 513099d18..63446913e 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1385,7 +1385,7 @@ const struct Item gItems[] = .itemId = ITEM_EXP_CANDY_S, .price = 240, .holdEffectParam = EXP_800, - .description = sExpCandyXSDesc, + .description = sExpCandySDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_RareCandy, @@ -9852,4 +9852,70 @@ const struct Item gItems[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, }, + + [ITEM_ABILITY_SHIELD] = + { + .name = _("AbilityShield"), + .itemId = ITEM_ABILITY_SHIELD, + .price = 20000, + .holdEffect = HOLD_EFFECT_ABILITY_SHIELD, + .description = sAbilityShieldDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, + + [ITEM_CLEAR_AMULET] = + { + .name = _("Clear Amulet"), + .itemId = ITEM_CLEAR_AMULET, + .price = 30000, + .holdEffect = HOLD_EFFECT_CLEAR_AMULET, + .description = sClearAmuletDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, + + [ITEM_PUNCHING_GLOVE] = + { + .name = _("PunchingGlove"), + .itemId = ITEM_PUNCHING_GLOVE, + .price = 15000, + .holdEffect = HOLD_EFFECT_PUNCHING_GLOVE, + .description = sPunchingGloveDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, + + [ITEM_COVERT_CLOAK] = + { + .name = _("Covert Cloak"), + .itemId = ITEM_COVERT_CLOAK, + .price = 20000, + .holdEffect = HOLD_EFFECT_COVERT_CLOAK, + .description = sCovertCloakDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, + + [ITEM_LOADED_DICE] = + { + //YellwApricorn + .name = _("Loaded Dice"), + .itemId = ITEM_LOADED_DICE, + .price = 20000, + .holdEffect = HOLD_EFFECT_LOADED_DICE, + .description = sLoadedDiceDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 30, + }, }; diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 95ccf90aa..ee2230b94 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -23,8 +23,7 @@ .baseSpeed = 90, \ .baseSpAttack = 50, \ PIKACHU_BASE_DEFENSES, \ - .type1 = TYPE_ELECTRIC, \ - .type2 = TYPE_ELECTRIC, \ + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, \ .catchRate = 190, \ .expYield = 112, \ .evYield_Speed = 2, \ @@ -33,8 +32,7 @@ .eggCycles = 10, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FIELD, \ - .eggGroup2 = EGG_GROUP_FAIRY, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD},\ .bodyColor = BODY_COLOR_YELLOW, \ .noFlip = flip, \ @@ -51,8 +49,7 @@ .baseSpeed = 60, \ .baseSpAttack = 35, \ .baseSpDefense = 35, \ - .type1 = TYPE_ELECTRIC, \ - .type2 = TYPE_ELECTRIC, \ + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, \ .catchRate = 190, \ .expYield = 41, \ .evYield_Speed = 1, \ @@ -60,8 +57,7 @@ .eggCycles = 10, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD},\ .bodyColor = BODY_COLOR_YELLOW, \ .noFlip = flip, \ @@ -75,8 +71,7 @@ .baseSpeed = 48, \ .baseSpAttack = 72, \ .baseSpDefense = 48, \ - .type1 = TYPE_PSYCHIC, \ - .type2 = TYPE_PSYCHIC, \ + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, \ .catchRate = 225, \ .expYield = 118, \ .evYield_Attack = 1, \ @@ -85,8 +80,7 @@ .eggCycles = 40, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},\ .bodyColor = BODY_COLOR_BLACK, \ .noFlip = flip, \ @@ -100,8 +94,7 @@ .baseSpeed = 70, \ .baseSpAttack = 70, \ .baseSpDefense = 70, \ - .type1 = type, \ - .type2 = type, \ + .types = { type, type }, \ .catchRate = 45, \ .expYield = 147, \ .evYield_HP = 1, \ @@ -111,8 +104,7 @@ .eggCycles = 25, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FAIRY, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_FORECAST, ABILITY_NONE},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -126,8 +118,7 @@ .baseSpeed = 36, \ .baseSpAttack = 29, \ .baseSpDefense = 45, \ - .type1 = TYPE_BUG, \ - .type2 = TYPE_BUG, \ + .types = { TYPE_BUG, TYPE_BUG}, \ .catchRate = 120, \ .expYield = 45, \ .evYield_SpDefense = 1, \ @@ -135,8 +126,7 @@ .eggCycles = 15, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_BUG, \ - .eggGroup2 = EGG_GROUP_BUG, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, \ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_OVERCOAT},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -150,8 +140,7 @@ .baseSpeed = 85, \ .baseSpAttack = 87, \ .baseSpDefense = 78, \ - .type1 = TYPE_GRASS, \ - .type2 = TYPE_GRASS, \ + .types = { TYPE_GRASS, TYPE_GRASS}, \ .catchRate = 75, \ .expYield = 158, \ .evYield_SpAttack = 2, \ @@ -160,8 +149,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FAIRY, \ - .eggGroup2 = EGG_GROUP_GRASS, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, \ .abilities = {ABILITY_FLOWER_GIFT, ABILITY_NONE},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -175,8 +163,7 @@ .baseSpeed = 34, \ .baseSpAttack = 57, \ .baseSpDefense = 62, \ - .type1 = TYPE_WATER, \ - .type2 = TYPE_WATER, \ + .types = { TYPE_WATER, TYPE_WATER}, \ .catchRate = 190, \ .expYield = 65, \ .evYield_HP = 1, \ @@ -184,8 +171,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_WATER_1, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -199,8 +185,7 @@ .baseSpeed = 39, \ .baseSpAttack = 92, \ .baseSpDefense = 82, \ - .type1 = TYPE_WATER, \ - .type2 = TYPE_GROUND, \ + .types = { TYPE_WATER, TYPE_GROUND}, \ .catchRate = 75, \ .expYield = 166, \ .evYield_HP = 2, \ @@ -208,8 +193,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_WATER_1, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -223,8 +207,7 @@ .baseSpeed = 86, \ .baseSpAttack = 105, \ .baseSpDefense = 107, \ - .type1 = TYPE_ELECTRIC, \ - .type2 = type, \ + .types = { TYPE_ELECTRIC, type }, \ .catchRate = 45, \ .expYield = 182, \ .evYield_Speed = 1, \ @@ -233,8 +216,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_AMORPHOUS, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},\ .bodyColor = BODY_COLOR_RED, \ .noFlip = flip, \ @@ -248,8 +230,7 @@ .baseSpeed = 120, \ .baseSpAttack = 120, \ .baseSpDefense = 120, \ - .type1 = type, \ - .type2 = type, \ + .types = { type, type }, \ .catchRate = 3, \ .expYield = 324, \ .evYield_HP = 3, \ @@ -257,8 +238,7 @@ .eggCycles = 120, \ .friendship = 0, \ .growthRate = GROWTH_SLOW, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_MULTITYPE, ABILITY_NONE},\ .bodyColor = BODY_COLOR_WHITE, \ .noFlip = FALSE, \ @@ -273,8 +253,7 @@ .baseSpeed = 75, \ .baseSpAttack = 40, \ .baseSpDefense = 50, \ - .type1 = TYPE_NORMAL, \ - .type2 = TYPE_GRASS, \ + .types = { TYPE_NORMAL, TYPE_GRASS}, \ .catchRate = 190, \ .expYield = 67, \ .evYield_Speed = 1, \ @@ -282,8 +261,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FIELD, \ - .eggGroup2 = EGG_GROUP_FIELD, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -297,8 +275,7 @@ .baseSpeed = 95, \ .baseSpAttack = 60, \ .baseSpDefense = 70, \ - .type1 = TYPE_NORMAL, \ - .type2 = TYPE_GRASS, \ + .types = { TYPE_NORMAL, TYPE_GRASS}, \ .catchRate = 75, \ .expYield = 166, \ .evYield_Attack = 2, \ @@ -306,8 +283,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FIELD, \ - .eggGroup2 = EGG_GROUP_FIELD, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE},\ .bodyColor = BODY_COLOR_BROWN, \ .noFlip = FALSE, \ @@ -321,8 +297,7 @@ .baseSpeed = 99, \ .baseSpAttack = 120, \ .baseSpDefense = 95, \ - .type1 = TYPE_BUG, \ - .type2 = TYPE_STEEL, \ + .types = { TYPE_BUG, TYPE_STEEL}, \ .catchRate = 3, \ .expYield = 270, \ .evYield_Attack = 1, \ @@ -332,8 +307,7 @@ .eggCycles = 120, \ .friendship = 0, \ .growthRate = GROWTH_SLOW, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_DOWNLOAD, ABILITY_NONE},\ .bodyColor = BODY_COLOR_PURPLE, \ .noFlip = FALSE, \ @@ -348,8 +322,7 @@ .baseSpeed = 89, \ .baseSpAttack = 90, \ .baseSpDefense = 50, \ - .type1 = TYPE_BUG, \ - .type2 = TYPE_FLYING, \ + .types = { TYPE_BUG, TYPE_FLYING}, \ .catchRate = 45, \ .expYield = 185, \ .evYield_HP = 1, \ @@ -359,8 +332,7 @@ .eggCycles = 15, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_BUG, \ - .eggGroup2 = EGG_GROUP_BUG, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, \ .abilities = {ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -374,8 +346,7 @@ .baseSpeed = 42, \ .baseSpAttack = 61, \ .baseSpDefense = 79, \ - .type1 = TYPE_FAIRY, \ - .type2 = TYPE_FAIRY, \ + .types = { TYPE_FAIRY, TYPE_FAIRY}, \ .catchRate = 225, \ .expYield = 61, \ .evYield_SpDefense = 1, \ @@ -383,8 +354,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FAIRY, \ - .eggGroup2 = EGG_GROUP_FAIRY, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ .bodyColor = BODY_COLOR_WHITE, \ .noFlip = FALSE, \ @@ -398,8 +368,7 @@ .baseSpeed = 52, \ .baseSpAttack = 75, \ .baseSpDefense = 98, \ - .type1 = TYPE_FAIRY, \ - .type2 = TYPE_FAIRY, \ + .types = { TYPE_FAIRY, TYPE_FAIRY}, \ .catchRate = 120, \ .expYield = 130, \ .evYield_SpDefense = 2, \ @@ -407,8 +376,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FAIRY, \ - .eggGroup2 = EGG_GROUP_FAIRY, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ .bodyColor = BODY_COLOR_WHITE, \ .noFlip = FALSE, \ @@ -422,8 +390,7 @@ .baseSpeed = 75, \ .baseSpAttack = 112, \ .baseSpDefense = 154, \ - .type1 = TYPE_FAIRY, \ - .type2 = TYPE_FAIRY, \ + .types = { TYPE_FAIRY, TYPE_FAIRY}, \ .catchRate = 45, \ .expYield = 248, \ .evYield_SpDefense = 3, \ @@ -431,8 +398,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FAIRY, \ - .eggGroup2 = EGG_GROUP_FAIRY, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ .bodyColor = BODY_COLOR_WHITE, \ .noFlip = FALSE, \ @@ -446,8 +412,7 @@ .baseSpeed = 102, \ .baseSpAttack = 65, \ .baseSpDefense = 90, \ - .type1 = TYPE_NORMAL, \ - .type2 = TYPE_NORMAL, \ + .types = { TYPE_NORMAL, TYPE_NORMAL}, \ .catchRate = 160, \ .expYield = 165, \ .evYield_Speed = 1, \ @@ -455,16 +420,14 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FIELD, \ - .eggGroup2 = EGG_GROUP_FIELD, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ .abilities = {ABILITY_FUR_COAT, ABILITY_NONE},\ .bodyColor = BODY_COLOR_WHITE, \ .noFlip = flip, \ } #define PUMKPABOO_MISC_INFO \ - .type1 = TYPE_GHOST, \ - .type2 = TYPE_GRASS, \ + .types = { TYPE_GHOST, TYPE_GRASS}, \ .catchRate = 120, \ .expYield = 67, \ .evYield_Defense = 1, \ @@ -472,15 +435,13 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_AMORPHOUS, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA},\ .bodyColor = BODY_COLOR_BROWN, \ .noFlip = FALSE #define GOURGEIST_MISC_INFO \ - .type1 = TYPE_GHOST, \ - .type2 = TYPE_GRASS, \ + .types = { TYPE_GHOST, TYPE_GRASS}, \ .catchRate = 60, \ .expYield = 173, \ .evYield_Defense = 2, \ @@ -488,8 +449,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_AMORPHOUS, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA},\ .bodyColor = BODY_COLOR_BROWN, \ .noFlip = FALSE @@ -502,8 +462,7 @@ .baseSpeed = 99, \ .baseSpAttack = 131, \ .baseSpDefense = 98, \ - .type1 = TYPE_FAIRY, \ - .type2 = TYPE_FAIRY, \ + .types = { TYPE_FAIRY, TYPE_FAIRY}, \ .catchRate = 45, \ .expYield = 306, \ .evYield_HP = 3, \ @@ -511,8 +470,7 @@ .eggCycles = 120, \ .friendship = 0, \ .growthRate = GROWTH_SLOW, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_FAIRY_AURA, ABILITY_NONE},\ .bodyColor = BODY_COLOR_BLUE, \ .noFlip = FALSE, \ @@ -527,8 +485,7 @@ .baseSpeed = 95, \ .baseSpAttack = 81, \ .baseSpDefense = 95, \ - .type1 = TYPE_DRAGON, \ - .type2 = TYPE_GROUND, \ + .types = { TYPE_DRAGON, TYPE_GROUND},\ .catchRate = 3, \ .expYield = 270, \ .evYield_HP = 3, \ @@ -536,8 +493,7 @@ .eggCycles = 120, \ .friendship = 0, \ .growthRate = GROWTH_SLOW, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ability, ABILITY_NONE},\ .bodyColor = BODY_COLOR_GREEN, \ .noFlip = TRUE, \ @@ -552,8 +508,7 @@ .baseSpeed = 115, \ .baseSpAttack = 61, \ .baseSpDefense = 85, \ - .type1 = TYPE_DRAGON, \ - .type2 = TYPE_GROUND, \ + .types = { TYPE_DRAGON, TYPE_GROUND},\ .catchRate = 3, \ .expYield = 219, \ .evYield_HP = 3, \ @@ -561,8 +516,7 @@ .eggCycles = 120, \ .friendship = 0, \ .growthRate = GROWTH_SLOW, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ability, ABILITY_NONE},\ .bodyColor = BODY_COLOR_BLACK, \ .noFlip = TRUE, \ @@ -577,8 +531,7 @@ .baseSpeed = 93, \ .baseSpAttack = 98, \ .baseSpDefense = 70, \ - .type1 = type, \ - .type2 = TYPE_FLYING, \ + .types = { type, TYPE_FLYING }, \ .catchRate = 45, \ .expYield = 167, \ .evYield_SpAttack = 2, \ @@ -587,8 +540,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FLYING, \ - .eggGroup2 = EGG_GROUP_FLYING, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, \ .abilities = {ABILITY_DANCER, ABILITY_NONE},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -602,8 +554,7 @@ .baseSpeed = 60, \ .baseSpAttack = 30, \ .baseSpDefense = 40, \ - .type1 = TYPE_ROCK, \ - .type2 = TYPE_ROCK, \ + .types = { TYPE_ROCK, TYPE_ROCK}, \ .catchRate = 190, \ .expYield = 56, \ .evYield_Attack = 1, \ @@ -611,8 +562,7 @@ .eggCycles = 15, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FIELD, \ - .eggGroup2 = EGG_GROUP_FIELD, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ .abilities = {ability1, ability2, hiddenAbility}, \ .bodyColor = BODY_COLOR_BROWN, \ .noFlip = FALSE, \ @@ -626,8 +576,7 @@ .baseSpeed = 95, \ .baseSpAttack = 95, \ .baseSpDefense = 95, \ - .type1 = type, \ - .type2 = type, \ + .types = { type, type }, \ .catchRate = 3, \ .expYield = 257, \ .evYield_HP = 3, \ @@ -635,8 +584,7 @@ .eggCycles = 120, \ .friendship = 0, \ .growthRate = GROWTH_SLOW, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_RKS_SYSTEM, ABILITY_NONE},\ .bodyColor = BODY_COLOR_GRAY, \ .noFlip = FALSE, \ @@ -660,8 +608,7 @@ .baseSpDefense = 60 #define MINIOR_MISC_INFO(color) \ - .type1 = TYPE_ROCK, \ - .type2 = TYPE_FLYING, \ + .types = { TYPE_ROCK, TYPE_FLYING}, \ .catchRate = 30, \ .expYield = 154, \ .evYield_Defense = 1, \ @@ -671,8 +618,7 @@ .eggCycles = 25, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroup1 = EGG_GROUP_MINERAL, \ - .eggGroup2 = EGG_GROUP_MINERAL, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, \ .abilities = {ABILITY_SHIELDS_DOWN, ABILITY_NONE}, \ .bodyColor = color, \ .noFlip = TRUE @@ -698,8 +644,7 @@ .baseSpeed = 96, \ .baseSpAttack = 50, \ .baseSpDefense = 105, \ - .type1 = TYPE_GHOST, \ - .type2 = TYPE_FAIRY, \ + .types = { TYPE_GHOST, TYPE_FAIRY}, \ .catchRate = 45, \ .expYield = 167, \ .evYield_SpDefense = 2, \ @@ -708,8 +653,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_AMORPHOUS, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_DISGUISE, ABILITY_NONE},\ .bodyColor = BODY_COLOR_YELLOW, \ .noFlip = FALSE, \ @@ -723,8 +667,7 @@ .baseSpeed = 65, \ .baseSpAttack = 130, \ .baseSpDefense = 115, \ - .type1 = TYPE_STEEL, \ - .type2 = TYPE_FAIRY, \ + .types = { TYPE_STEEL, TYPE_FAIRY}, \ .catchRate = 3, \ .expYield = 270, \ .evYield_SpAttack = 3, \ @@ -732,8 +675,7 @@ .eggCycles = 120, \ .friendship = 0, \ .growthRate = GROWTH_SLOW, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_SOUL_HEART, ABILITY_NONE},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -748,8 +690,7 @@ .baseSpeed = 85, \ .baseSpAttack = 85, \ .baseSpDefense = 95, \ - .type1 = TYPE_FLYING, \ - .type2 = TYPE_WATER, \ + .types = { TYPE_FLYING, TYPE_WATER}, \ .catchRate = 45, \ .expYield = 166, \ .evYield_SpDefense = 2, \ @@ -757,8 +698,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_WATER_1, \ - .eggGroup2 = EGG_GROUP_FLYING, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, \ .abilities = {ABILITY_GULP_MISSILE, ABILITY_NONE},\ .bodyColor = BODY_COLOR_BLUE, \ .noFlip = FALSE, \ @@ -772,8 +712,7 @@ .baseSpeed = 75, \ .baseSpAttack = 114, \ .baseSpDefense = 70, \ - .type1 = TYPE_ELECTRIC, \ - .type2 = TYPE_POISON, \ + .types = { TYPE_ELECTRIC, TYPE_POISON}, \ .catchRate = 45, \ .expYield = 176, \ .evYield_SpAttack = 2, \ @@ -781,8 +720,7 @@ .eggCycles = 25, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, \ - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ .abilities = {ABILITY_PUNK_ROCK, ability2, ABILITY_TECHNICIAN},\ .bodyColor = BODY_COLOR_PURPLE, \ .noFlip = FALSE, \ @@ -796,8 +734,7 @@ .baseSpeed = 50, \ .baseSpAttack = 74, \ .baseSpDefense = 54, \ - .type1 = TYPE_GHOST, \ - .type2 = TYPE_GHOST, \ + .types = { TYPE_GHOST, TYPE_GHOST}, \ .catchRate = 120, \ .expYield = 62, \ .evYield_SpAttack = 1, \ @@ -805,8 +742,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_MINERAL, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY},\ .bodyColor = BODY_COLOR_PURPLE, \ .noFlip = FALSE, \ @@ -820,8 +756,7 @@ .baseSpeed = 70, \ .baseSpAttack = 134, \ .baseSpDefense = 114, \ - .type1 = TYPE_GHOST, \ - .type2 = TYPE_GHOST, \ + .types = { TYPE_GHOST, TYPE_GHOST}, \ .catchRate = 60, \ .expYield = 178, \ .evYield_SpAttack = 2, \ @@ -829,8 +764,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_MINERAL, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY},\ .bodyColor = BODY_COLOR_PURPLE, \ .noFlip = FALSE, \ @@ -844,8 +778,7 @@ .baseSpeed = 64, \ .baseSpAttack = 110, \ .baseSpDefense = 121, \ - .type1 = TYPE_FAIRY, \ - .type2 = TYPE_FAIRY, \ + .types = { TYPE_FAIRY, TYPE_FAIRY}, \ .catchRate = 100, \ .expYield = 173, \ .evYield_SpDefense = 2, \ @@ -853,8 +786,7 @@ .eggCycles = 20, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FAIRY, \ - .eggGroup2 = EGG_GROUP_AMORPHOUS, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ .bodyColor = color, \ .noFlip = FALSE, \ @@ -868,8 +800,7 @@ .baseSpeed = 97, \ .baseSpAttack = 70, \ .baseSpDefense = 58, \ - .type1 = TYPE_ELECTRIC, \ - .type2 = TYPE_DARK, \ + .types = { TYPE_ELECTRIC, TYPE_DARK}, \ .catchRate = 180, \ .expYield = 153, \ .evYield_Speed = 2, \ @@ -877,8 +808,7 @@ .eggCycles = 10, \ .friendship = 70, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FIELD, \ - .eggGroup2 = EGG_GROUP_FAIRY, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_HUNGER_SWITCH, ABILITY_NONE},\ .bodyColor = BODY_COLOR_YELLOW, \ .noFlip = FALSE, \ @@ -892,8 +822,7 @@ .baseSpeed = 105, \ .baseSpAttack = 70, \ .baseSpDefense = 95, \ - .type1 = TYPE_DARK, \ - .type2 = TYPE_GRASS, \ + .types = { TYPE_DARK, TYPE_GRASS}, \ .catchRate = 3, \ .expYield = 300, \ .evYield_Attack = 3, \ @@ -901,8 +830,7 @@ .eggCycles = 120, \ .friendship = 0, \ .growthRate = GROWTH_SLOW, \ - .eggGroup1 = EGG_GROUP_UNDISCOVERED, \ - .eggGroup2 = EGG_GROUP_UNDISCOVERED, \ + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE},\ .bodyColor = BODY_COLOR_GREEN, \ .noFlip = FALSE, \ @@ -921,8 +849,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 65, .baseSpDefense = 65, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON }, .catchRate = 45, .expYield = 64, .evYield_SpAttack = 1, @@ -930,8 +857,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -945,8 +871,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 80, .baseSpDefense = 80, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON }, .catchRate = 45, .expYield = 142, .evYield_SpAttack = 1, @@ -955,8 +880,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -970,8 +894,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON }, .catchRate = 45, .expYield = 236, .evYield_SpAttack = 2, @@ -980,8 +903,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -995,8 +917,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 60, .baseSpDefense = 50, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 62, .evYield_Speed = 1, @@ -1004,8 +925,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -1019,8 +939,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 80, .baseSpDefense = 65, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 142, .evYield_Speed = 1, @@ -1029,8 +948,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -1044,8 +962,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 109, .baseSpDefense = 85, - .type1 = TYPE_FIRE, - .type2 = TYPE_FLYING, + .types = { TYPE_FIRE, TYPE_FLYING }, .catchRate = 45, .expYield = 240, .evYield_SpAttack = 3, @@ -1053,8 +970,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -1068,8 +984,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 43, .baseSpAttack = 50, .baseSpDefense = 64, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 63, .evYield_Defense = 1, @@ -1077,8 +992,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -1092,8 +1006,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 58, .baseSpAttack = 65, .baseSpDefense = 80, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 142, .evYield_Defense = 1, @@ -1102,8 +1015,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -1117,8 +1029,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 78, .baseSpAttack = 85, .baseSpDefense = 105, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 239, .evYield_SpDefense = 3, @@ -1126,8 +1037,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -1141,8 +1051,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 20, .baseSpDefense = 20, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG }, .catchRate = 255, .expYield = 39, .evYield_HP = 1, @@ -1150,8 +1059,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -1165,8 +1073,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 25, .baseSpDefense = 25, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG }, .catchRate = 120, .expYield = 72, .evYield_Defense = 2, @@ -1174,8 +1081,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -1193,8 +1099,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpAttack = 80, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 45, .expYield = 178, .evYield_SpAttack = 2, @@ -1204,8 +1109,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -1219,8 +1123,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 20, .baseSpDefense = 20, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON }, .catchRate = 255, .expYield = 39, .evYield_Speed = 1, @@ -1228,8 +1131,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -1243,8 +1145,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 25, .baseSpDefense = 25, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON }, .catchRate = 120, .expYield = 72, .evYield_Defense = 2, @@ -1252,8 +1153,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -1271,8 +1171,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 80, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON}, .catchRate = 45, .expYield = 178, .evYield_Attack = 2, @@ -1282,8 +1181,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_SNIPER}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -1297,8 +1195,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 56, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING }, .catchRate = 255, .expYield = 50, .evYield_Speed = 1, @@ -1306,8 +1203,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -1321,8 +1217,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 71, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING }, .catchRate = 120, .expYield = 122, .evYield_Speed = 2, @@ -1330,8 +1225,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -1349,8 +1243,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpeed = 91, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 45, .expYield = 216, .evYield_Speed = 3, @@ -1358,8 +1251,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -1373,8 +1265,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 72, .baseSpAttack = 25, .baseSpDefense = 35, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 255, .expYield = 51, .evYield_Speed = 1, @@ -1382,8 +1273,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -1397,8 +1287,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 50, .baseSpDefense = 70, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 127, .expYield = 145, .evYield_Speed = 2, @@ -1406,8 +1295,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -1421,8 +1309,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 31, .baseSpDefense = 31, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING }, .catchRate = 255, .expYield = 52, .evYield_Speed = 1, @@ -1431,8 +1318,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_SNIPER}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -1446,8 +1332,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 61, .baseSpDefense = 61, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING }, .catchRate = 90, .expYield = 155, .evYield_Speed = 2, @@ -1456,8 +1341,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_SNIPER}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -1471,8 +1355,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 40, .baseSpDefense = 54, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 255, .expYield = 58, .evYield_Attack = 1, @@ -1480,8 +1363,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_INTIMIDATE, ABILITY_SHED_SKIN, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -1499,8 +1381,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 85, #endif - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON}, .catchRate = 90, .expYield = 157, .evYield_Attack = 2, @@ -1508,8 +1389,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_INTIMIDATE, ABILITY_SHED_SKIN, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -1529,8 +1409,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpeed = 100, #endif - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 75, .expYield = 218, .evYield_Speed = 3, @@ -1538,8 +1417,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -1553,8 +1431,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 20, .baseSpDefense = 30, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND }, .catchRate = 255, .expYield = 60, .evYield_Defense = 1, @@ -1563,8 +1440,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -1578,8 +1454,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 45, .baseSpDefense = 55, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND }, .catchRate = 90, .expYield = 158, .evYield_Defense = 2, @@ -1588,8 +1463,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -1603,8 +1477,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 41, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 235, .expYield = 55, .evYield_HP = 1, @@ -1612,8 +1485,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -1627,8 +1499,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 56, .baseSpAttack = 55, .baseSpDefense = 55, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 120, .expYield = 128, .evYield_HP = 2, @@ -1636,8 +1507,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -1655,8 +1525,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 82, #endif - .type1 = TYPE_POISON, - .type2 = TYPE_GROUND, + .types = { TYPE_POISON, TYPE_GROUND}, .catchRate = 45, .expYield = 227, .evYield_HP = 3, @@ -1664,8 +1533,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -1679,8 +1547,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 235, .expYield = 55, .evYield_Attack = 1, @@ -1688,8 +1555,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -1703,8 +1569,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 55, .baseSpDefense = 55, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 120, .expYield = 128, .evYield_Attack = 2, @@ -1712,8 +1577,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -1731,8 +1595,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 92, #endif - .type1 = TYPE_POISON, - .type2 = TYPE_GROUND, + .types = { TYPE_POISON, TYPE_GROUND}, .catchRate = 45, .expYield = 227, .evYield_Attack = 3, @@ -1740,8 +1603,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -1756,11 +1618,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 60, .baseSpDefense = 65, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 150, .expYield = 113, @@ -1770,8 +1630,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 140, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_FRIEND_GUARD}, .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, @@ -1790,11 +1649,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 85, #endif #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 25, .expYield = 217, @@ -1804,8 +1661,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 140, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_UNAWARE}, .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, @@ -1819,8 +1675,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 50, .baseSpDefense = 65, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 190, .expYield = 60, .evYield_Speed = 1, @@ -1829,8 +1684,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -1844,8 +1698,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 81, .baseSpDefense = 100, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 75, .expYield = 177, .evYield_Speed = 1, @@ -1855,8 +1708,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -1871,11 +1723,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 45, .baseSpDefense = 25, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_NORMAL, - .type2 = TYPE_FAIRY, + .types = { TYPE_NORMAL, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 170, .expYield = 95, @@ -1885,8 +1735,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD}, .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, @@ -1905,11 +1754,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 75, #endif #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_NORMAL, - .type2 = TYPE_FAIRY, + .types = { TYPE_NORMAL, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 50, .expYield = 196, @@ -1919,8 +1766,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRISK}, .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, @@ -1934,8 +1780,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 30, .baseSpDefense = 40, - .type1 = TYPE_POISON, - .type2 = TYPE_FLYING, + .types = { TYPE_POISON, TYPE_FLYING }, .catchRate = 255, .expYield = 49, .evYield_Speed = 1, @@ -1943,8 +1788,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -1958,8 +1802,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 65, .baseSpDefense = 75, - .type1 = TYPE_POISON, - .type2 = TYPE_FLYING, + .types = { TYPE_POISON, TYPE_FLYING }, .catchRate = 90, .expYield = 159, .evYield_Speed = 2, @@ -1967,8 +1810,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -1982,8 +1824,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 75, .baseSpDefense = 65, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON }, .catchRate = 255, .expYield = 64, .evYield_SpAttack = 1, @@ -1992,8 +1833,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -2007,8 +1847,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 85, .baseSpDefense = 75, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON }, .catchRate = 120, .expYield = 138, .evYield_SpAttack = 2, @@ -2017,8 +1856,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_STENCH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -2036,8 +1874,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpAttack = 100, #endif - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON}, .catchRate = 45, .expYield = 221, .evYield_SpAttack = 3, @@ -2046,8 +1883,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_EFFECT_SPORE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -2061,8 +1897,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 45, .baseSpDefense = 55, - .type1 = TYPE_BUG, - .type2 = TYPE_GRASS, + .types = { TYPE_BUG, TYPE_GRASS }, .catchRate = 190, .expYield = 57, .evYield_Attack = 1, @@ -2072,8 +1907,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -2087,8 +1921,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 60, .baseSpDefense = 80, - .type1 = TYPE_BUG, - .type2 = TYPE_GRASS, + .types = { TYPE_BUG, TYPE_GRASS }, .catchRate = 75, .expYield = 142, .evYield_Attack = 2, @@ -2099,8 +1932,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -2114,8 +1946,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 40, .baseSpDefense = 55, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON }, .catchRate = 190, .expYield = 61, .evYield_SpDefense = 1, @@ -2123,8 +1954,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_TINTED_LENS, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -2138,8 +1968,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 90, .baseSpDefense = 75, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON }, .catchRate = 75, .expYield = 158, .evYield_Speed = 1, @@ -2149,8 +1978,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_TINTED_LENS, ABILITY_WONDER_SKIN}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -2164,8 +1992,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 35, .baseSpDefense = 45, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND }, .catchRate = 255, .expYield = 53, .evYield_Speed = 1, @@ -2174,8 +2001,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2193,8 +2019,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 80, #endif - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 50, .expYield = 149, .evYield_Speed = 2, @@ -2203,8 +2028,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2218,8 +2042,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 255, .expYield = 58, .evYield_Speed = 1, @@ -2228,8 +2051,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -2243,8 +2065,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 65, .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 90, .expYield = 154, .evYield_Speed = 2, @@ -2253,8 +2074,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIMBER, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -2268,8 +2088,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 65, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 190, .expYield = 64, .evYield_SpAttack = 1, @@ -2277,8 +2096,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_DAMP, ABILITY_CLOUD_NINE, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -2292,8 +2110,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 95, .baseSpDefense = 80, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 75, .expYield = 175, .evYield_SpAttack = 2, @@ -2301,8 +2118,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_DAMP, ABILITY_CLOUD_NINE, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -2316,8 +2132,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 35, .baseSpDefense = 45, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 190, .expYield = 61, .evYield_Attack = 1, @@ -2325,8 +2140,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2340,8 +2154,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 60, .baseSpDefense = 70, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 75, .expYield = 159, .evYield_Attack = 2, @@ -2349,8 +2162,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2364,8 +2176,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 70, .baseSpDefense = 50, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 190, .expYield = 70, .evYield_Attack = 1, @@ -2373,8 +2184,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2388,8 +2198,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 100, .baseSpDefense = 80, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 75, .expYield = 194, .evYield_Attack = 2, @@ -2397,8 +2206,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2412,8 +2220,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 255, .expYield = 60, .evYield_Speed = 1, @@ -2421,8 +2228,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -2436,8 +2242,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 120, .expYield = 135, .evYield_Speed = 2, @@ -2446,8 +2251,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -2465,8 +2269,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 85, #endif - .type1 = TYPE_WATER, - .type2 = TYPE_FIGHTING, + .types = { TYPE_WATER, TYPE_FIGHTING}, .catchRate = 45, .expYield = 230, .evYield_Defense = 3, @@ -2475,8 +2278,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -2490,8 +2292,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 105, .baseSpDefense = 55, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 200, .expYield = 62, .evYield_SpAttack = 1, @@ -2500,8 +2301,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2515,8 +2315,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 120, .baseSpDefense = 70, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 100, .expYield = 140, .evYield_SpAttack = 2, @@ -2525,8 +2324,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -2544,8 +2342,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 85, #endif - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 50, .expYield = 225, .evYield_SpAttack = 3, @@ -2554,8 +2351,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2569,8 +2365,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 180, .expYield = 61, .evYield_Attack = 1, @@ -2579,8 +2374,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -2594,8 +2388,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 50, .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 90, .expYield = 142, .evYield_Attack = 2, @@ -2604,8 +2397,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -2619,8 +2411,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 65, .baseSpDefense = 85, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 45, .expYield = 227, .evYield_Attack = 3, @@ -2629,8 +2420,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -2644,8 +2434,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 70, .baseSpDefense = 30, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON }, .catchRate = 255, .expYield = 60, .evYield_Attack = 1, @@ -2653,8 +2442,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -2668,8 +2456,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 85, .baseSpDefense = 45, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON }, .catchRate = 120, .expYield = 137, .evYield_Attack = 2, @@ -2677,8 +2464,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -2696,8 +2482,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 60, #endif - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON}, .catchRate = 45, .expYield = 221, .evYield_Attack = 3, @@ -2705,8 +2490,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -2720,8 +2504,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 50, .baseSpDefense = 100, - .type1 = TYPE_WATER, - .type2 = TYPE_POISON, + .types = { TYPE_WATER, TYPE_POISON }, .catchRate = 190, .expYield = 67, .evYield_SpDefense = 1, @@ -2730,8 +2513,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -2745,8 +2527,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 80, .baseSpDefense = 120, - .type1 = TYPE_WATER, - .type2 = TYPE_POISON, + .types = { TYPE_WATER, TYPE_POISON }, .catchRate = 60, .expYield = 180, .evYield_SpDefense = 2, @@ -2755,8 +2536,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -2770,8 +2550,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_ROCK, - .type2 = TYPE_GROUND, + .types = { TYPE_ROCK, TYPE_GROUND }, .catchRate = 255, .expYield = 60, .evYield_Defense = 1, @@ -2780,8 +2559,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2795,8 +2573,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 45, .baseSpDefense = 45, - .type1 = TYPE_ROCK, - .type2 = TYPE_GROUND, + .types = { TYPE_ROCK, TYPE_GROUND }, .catchRate = 120, .expYield = 137, .evYield_Defense = 2, @@ -2805,8 +2582,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2824,8 +2600,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 110, #endif - .type1 = TYPE_ROCK, - .type2 = TYPE_GROUND, + .types = { TYPE_ROCK, TYPE_GROUND}, .catchRate = 45, .expYield = 223, .evYield_Defense = 3, @@ -2834,8 +2609,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -2849,8 +2623,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 65, .baseSpDefense = 65, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 190, .expYield = 82, .evYield_Speed = 1, @@ -2858,8 +2631,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -2873,8 +2645,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 80, .baseSpDefense = 80, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 60, .expYield = 175, .evYield_Speed = 2, @@ -2882,8 +2653,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -2897,8 +2667,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_WATER, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_WATER, TYPE_PSYCHIC }, .catchRate = 190, .expYield = 63, .evYield_HP = 1, @@ -2907,8 +2676,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -2922,8 +2690,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 100, .baseSpDefense = 80, - .type1 = TYPE_WATER, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_WATER, TYPE_PSYCHIC }, .catchRate = 75, .expYield = 172, .evYield_Defense = 2, @@ -2932,8 +2699,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -2947,8 +2713,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 95, .baseSpDefense = 55, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_STEEL, + .types = { TYPE_ELECTRIC, TYPE_STEEL }, .catchRate = 190, .expYield = 65, .evYield_SpAttack = 1, @@ -2957,8 +2722,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -2972,8 +2736,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 120, .baseSpDefense = 70, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_STEEL, + .types = { TYPE_ELECTRIC, TYPE_STEEL }, .catchRate = 60, .expYield = 163, .evYield_SpAttack = 2, @@ -2982,8 +2745,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -3001,8 +2763,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 65, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 45, .expYield = 132, .evYield_Attack = 1, @@ -3011,8 +2772,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_INNER_FOCUS, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -3026,8 +2786,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING }, .catchRate = 190, .expYield = 62, .evYield_Attack = 1, @@ -3036,8 +2795,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD, ABILITY_TANGLED_FEET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -3055,8 +2813,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpeed = 100, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 45, .expYield = 165, .evYield_Attack = 2, @@ -3065,8 +2822,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD, ABILITY_TANGLED_FEET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -3080,8 +2836,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 45, .baseSpDefense = 70, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 190, .expYield = 65, .evYield_SpDefense = 1, @@ -3089,8 +2844,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -3104,8 +2858,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 70, .baseSpDefense = 95, - .type1 = TYPE_WATER, - .type2 = TYPE_ICE, + .types = { TYPE_WATER, TYPE_ICE }, .catchRate = 75, .expYield = 166, .evYield_SpDefense = 2, @@ -3113,8 +2866,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -3128,8 +2880,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 190, .expYield = 65, .evYield_HP = 1, @@ -3138,8 +2889,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -3153,8 +2903,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 65, .baseSpDefense = 100, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 75, .expYield = 175, .evYield_HP = 1, @@ -3164,8 +2913,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -3179,8 +2927,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 45, .baseSpDefense = 25, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 190, .expYield = 61, .evYield_Defense = 1, @@ -3190,8 +2937,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -3205,8 +2951,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 85, .baseSpDefense = 45, - .type1 = TYPE_WATER, - .type2 = TYPE_ICE, + .types = { TYPE_WATER, TYPE_ICE }, .catchRate = 60, .expYield = 184, .evYield_Defense = 2, @@ -3216,8 +2961,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -3231,8 +2975,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 100, .baseSpDefense = 35, - .type1 = TYPE_GHOST, - .type2 = TYPE_POISON, + .types = { TYPE_GHOST, TYPE_POISON }, .catchRate = 190, .expYield = 62, .evYield_SpAttack = 1, @@ -3240,8 +2983,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -3255,8 +2997,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 115, .baseSpDefense = 55, - .type1 = TYPE_GHOST, - .type2 = TYPE_POISON, + .types = { TYPE_GHOST, TYPE_POISON }, .catchRate = 90, .expYield = 142, .evYield_SpAttack = 2, @@ -3264,8 +3005,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -3279,8 +3019,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 130, .baseSpDefense = 75, - .type1 = TYPE_GHOST, - .type2 = TYPE_POISON, + .types = { TYPE_GHOST, TYPE_POISON }, .catchRate = 45, .expYield = 225, .evYield_SpAttack = 3, @@ -3288,8 +3027,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #if P_UPDATED_ABILITIES >= GEN_7 .abilities = {ABILITY_CURSED_BODY, ABILITY_NONE}, #else @@ -3307,8 +3045,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 30, .baseSpDefense = 45, - .type1 = TYPE_ROCK, - .type2 = TYPE_GROUND, + .types = { TYPE_ROCK, TYPE_GROUND }, .catchRate = 45, .expYield = 77, .evYield_Defense = 1, @@ -3316,8 +3053,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -3331,8 +3067,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 42, .baseSpAttack = 43, .baseSpDefense = 90, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 190, .expYield = 66, .evYield_SpDefense = 1, @@ -3340,8 +3075,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -3355,8 +3089,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 67, .baseSpAttack = 73, .baseSpDefense = 115, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 75, .expYield = 169, .evYield_SpDefense = 2, @@ -3364,8 +3097,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -3379,8 +3111,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 25, .baseSpDefense = 25, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 225, .expYield = 65, .evYield_Attack = 1, @@ -3388,8 +3119,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -3403,8 +3133,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 60, .expYield = 166, .evYield_Attack = 2, @@ -3412,8 +3141,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, @@ -3427,8 +3155,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 55, .baseSpDefense = 55, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, .catchRate = 190, .expYield = 66, .evYield_Speed = 1, @@ -3436,8 +3163,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -3455,8 +3181,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpeed = 140, #endif - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 60, .expYield = 172, .evYield_Speed = 2, @@ -3464,8 +3189,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -3479,8 +3203,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 60, .baseSpDefense = 45, - .type1 = TYPE_GRASS, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_GRASS, TYPE_PSYCHIC }, .catchRate = 90, .expYield = 65, .evYield_Defense = 1, @@ -3489,8 +3212,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -3508,8 +3230,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 65, #endif - .type1 = TYPE_GRASS, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_GRASS, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 186, .evYield_SpAttack = 2, @@ -3517,8 +3238,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -3532,8 +3252,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND }, .catchRate = 190, .expYield = 64, .evYield_Defense = 1, @@ -3542,8 +3261,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -3557,8 +3275,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 50, .baseSpDefense = 80, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND }, .catchRate = 75, .expYield = 149, .evYield_Defense = 2, @@ -3567,8 +3284,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -3582,8 +3298,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 87, .baseSpAttack = 35, .baseSpDefense = 110, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 45, .expYield = 159, .evYield_Attack = 2, @@ -3591,8 +3306,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_LIMBER, ABILITY_RECKLESS, ABILITY_UNBURDEN}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -3606,8 +3320,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 76, .baseSpAttack = 35, .baseSpDefense = 110, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 45, .expYield = 159, .evYield_SpDefense = 2, @@ -3615,8 +3328,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_KEEN_EYE, ABILITY_IRON_FIST, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -3630,8 +3342,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 60, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 77, .evYield_HP = 2, @@ -3640,8 +3351,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS, ABILITY_CLOUD_NINE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -3655,8 +3365,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 60, .baseSpDefense = 45, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 190, .expYield = 68, .evYield_Defense = 1, @@ -3665,8 +3374,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -3680,8 +3388,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 85, .baseSpDefense = 70, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON }, .catchRate = 60, .expYield = 172, .evYield_Defense = 2, @@ -3690,8 +3397,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = TRUE, @@ -3705,8 +3411,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_GROUND, - .type2 = TYPE_ROCK, + .types = { TYPE_GROUND, TYPE_ROCK }, .catchRate = 120, .expYield = 69, .evYield_Defense = 1, @@ -3714,8 +3419,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -3729,8 +3433,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 45, .baseSpDefense = 45, - .type1 = TYPE_GROUND, - .type2 = TYPE_ROCK, + .types = { TYPE_GROUND, TYPE_ROCK }, .catchRate = 60, .expYield = 170, .evYield_Attack = 2, @@ -3738,8 +3441,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -3753,8 +3455,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 35, .baseSpDefense = 105, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 30, .expYield = 395, .evYield_HP = 2, @@ -3763,8 +3464,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 140, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_HEALER}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -3778,8 +3478,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 100, .baseSpDefense = 40, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 45, .expYield = 87, .evYield_Defense = 1, @@ -3787,8 +3486,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -3802,8 +3500,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 40, .baseSpDefense = 80, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 172, .evYield_HP = 2, @@ -3811,8 +3508,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_EARLY_BIRD, ABILITY_SCRAPPY, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -3826,8 +3522,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 70, .baseSpDefense = 25, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 225, .expYield = 59, .evYield_SpAttack = 1, @@ -3836,8 +3531,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -3851,8 +3545,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 95, .baseSpDefense = 45, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 75, .expYield = 154, .evYield_Defense = 1, @@ -3862,8 +3555,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_POISON_POINT, ABILITY_SNIPER, ABILITY_DAMP}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -3877,8 +3569,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 63, .baseSpAttack = 35, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 225, .expYield = 64, .evYield_Attack = 1, @@ -3887,8 +3578,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL, ABILITY_LIGHTNING_ROD}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -3902,8 +3592,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 68, .baseSpAttack = 65, .baseSpDefense = 80, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 60, .expYield = 158, .evYield_Attack = 2, @@ -3912,8 +3601,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL, ABILITY_LIGHTNING_ROD}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -3927,8 +3615,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 70, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 225, .expYield = 68, .evYield_Speed = 1, @@ -3938,8 +3625,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -3953,8 +3639,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 100, .baseSpDefense = 85, - .type1 = TYPE_WATER, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_WATER, TYPE_PSYCHIC }, .catchRate = 60, .expYield = 182, .evYield_Speed = 2, @@ -3964,8 +3649,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -3980,11 +3664,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 100, .baseSpDefense = 120, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, #else - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, #endif .catchRate = 45, .expYield = 161, @@ -3993,8 +3675,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -4008,8 +3689,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 55, .baseSpDefense = 80, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING }, .catchRate = 45, .expYield = 100, .evYield_Attack = 1, @@ -4017,8 +3697,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -4032,8 +3711,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 115, .baseSpDefense = 95, - .type1 = TYPE_ICE, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_ICE, TYPE_PSYCHIC }, .catchRate = 45, .expYield = 159, .evYield_SpAttack = 2, @@ -4041,8 +3719,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_DRY_SKIN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -4056,8 +3733,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 95, .baseSpDefense = 85, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, .catchRate = 45, .expYield = 172, .evYield_Speed = 2, @@ -4066,8 +3742,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, @@ -4081,8 +3756,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 93, .baseSpAttack = 100, .baseSpDefense = 85, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 173, .evYield_SpAttack = 2, @@ -4091,8 +3765,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -4106,8 +3779,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 55, .baseSpDefense = 70, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG }, .catchRate = 45, .expYield = 175, .evYield_Attack = 2, @@ -4115,8 +3787,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_MOLD_BREAKER, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -4130,8 +3801,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 40, .baseSpDefense = 70, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 172, .evYield_Attack = 1, @@ -4140,8 +3810,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -4155,8 +3824,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 15, .baseSpDefense = 20, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 255, .expYield = 40, .evYield_Speed = 1, @@ -4164,8 +3832,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 5, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -4179,8 +3846,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 81, .baseSpAttack = 60, .baseSpDefense = 100, - .type1 = TYPE_WATER, - .type2 = TYPE_FLYING, + .types = { TYPE_WATER, TYPE_FLYING }, .catchRate = 45, .expYield = 189, .evYield_Attack = 2, @@ -4188,8 +3854,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 5, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4203,8 +3868,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 85, .baseSpDefense = 95, - .type1 = TYPE_WATER, - .type2 = TYPE_ICE, + .types = { TYPE_WATER, TYPE_ICE }, .catchRate = 45, .expYield = 187, .evYield_HP = 2, @@ -4214,8 +3878,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4229,8 +3892,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 48, .baseSpAttack = 48, .baseSpDefense = 48, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 35, .expYield = 101, .evYield_HP = 1, @@ -4240,8 +3902,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_DITTO, - .eggGroup2 = EGG_GROUP_DITTO, + .eggGroups = { EGG_GROUP_DITTO, EGG_GROUP_DITTO}, .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_IMPOSTER}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -4255,8 +3916,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 45, .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 65, .evYield_SpDefense = 1, @@ -4264,8 +3924,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -4280,8 +3939,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 110, .baseSpDefense = 95, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 184, .evYield_HP = 2, @@ -4289,8 +3947,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_WATER_ABSORB, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4304,8 +3961,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 110, .baseSpDefense = 95, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, .catchRate = 45, .expYield = 184, .evYield_Speed = 2, @@ -4313,8 +3969,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_VOLT_ABSORB, ABILITY_QUICK_FEET}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -4328,8 +3983,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 95, .baseSpDefense = 110, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 184, .evYield_Attack = 2, @@ -4337,8 +3991,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLASH_FIRE, ABILITY_GUTS}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -4352,8 +4005,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 85, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 79, .evYield_SpAttack = 1, @@ -4361,8 +4013,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -4376,8 +4027,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 90, .baseSpDefense = 55, - .type1 = TYPE_ROCK, - .type2 = TYPE_WATER, + .types = { TYPE_ROCK, TYPE_WATER }, .catchRate = 45, .expYield = 71, .evYield_Defense = 1, @@ -4385,8 +4035,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4400,8 +4049,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 115, .baseSpDefense = 70, - .type1 = TYPE_ROCK, - .type2 = TYPE_WATER, + .types = { TYPE_ROCK, TYPE_WATER }, .catchRate = 45, .expYield = 173, .evYield_Defense = 2, @@ -4409,8 +4057,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4424,8 +4071,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 55, .baseSpDefense = 45, - .type1 = TYPE_ROCK, - .type2 = TYPE_WATER, + .types = { TYPE_ROCK, TYPE_WATER }, .catchRate = 45, .expYield = 71, .evYield_Defense = 1, @@ -4433,8 +4079,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -4448,8 +4093,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 65, .baseSpDefense = 70, - .type1 = TYPE_ROCK, - .type2 = TYPE_WATER, + .types = { TYPE_ROCK, TYPE_WATER }, .catchRate = 45, .expYield = 173, .evYield_Attack = 2, @@ -4457,8 +4101,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -4472,8 +4115,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 60, .baseSpDefense = 75, - .type1 = TYPE_ROCK, - .type2 = TYPE_FLYING, + .types = { TYPE_ROCK, TYPE_FLYING }, .catchRate = 45, .expYield = 180, .evYield_Speed = 2, @@ -4481,8 +4123,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_PRESSURE, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -4496,8 +4137,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 65, .baseSpDefense = 110, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 25, .expYield = 189, .evYield_HP = 2, @@ -4507,8 +4147,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -4522,8 +4161,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 95, .baseSpDefense = 125, - .type1 = TYPE_ICE, - .type2 = TYPE_FLYING, + .types = { TYPE_ICE, TYPE_FLYING }, .catchRate = 3, .expYield = 261, .evYield_SpDefense = 3, @@ -4531,8 +4169,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_SNOW_CLOAK}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4547,8 +4184,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 125, .baseSpDefense = 90, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_FLYING, + .types = { TYPE_ELECTRIC, TYPE_FLYING }, .catchRate = 3, .expYield = 261, .evYield_SpAttack = 3, @@ -4556,8 +4192,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, #if P_UPDATED_ABILITIES >= GEN_6 .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_STATIC}, #else @@ -4576,8 +4211,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 125, .baseSpDefense = 85, - .type1 = TYPE_FIRE, - .type2 = TYPE_FLYING, + .types = { TYPE_FIRE, TYPE_FLYING }, .catchRate = 3, .expYield = 261, .evYield_SpAttack = 3, @@ -4585,8 +4219,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLAME_BODY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -4601,8 +4234,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON }, .catchRate = 45, .expYield = 60, .evYield_Attack = 1, @@ -4611,8 +4243,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_MARVEL_SCALE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4626,8 +4257,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 70, .baseSpDefense = 70, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON }, .catchRate = 45, .expYield = 147, .evYield_Attack = 2, @@ -4636,8 +4266,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_MARVEL_SCALE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4651,8 +4280,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FLYING, + .types = { TYPE_DRAGON, TYPE_FLYING }, .catchRate = 45, .expYield = 270, .evYield_Attack = 3, @@ -4661,8 +4289,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_MULTISCALE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -4676,8 +4303,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 154, .baseSpDefense = 90, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 3, .expYield = 306, .evYield_SpAttack = 3, @@ -4685,8 +4311,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -4701,8 +4326,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 45, .expYield = 270, .evYield_HP = 3, @@ -4712,8 +4336,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -4728,8 +4351,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 49, .baseSpDefense = 65, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 45, .expYield = 64, .evYield_SpDefense = 1, @@ -4737,8 +4359,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -4752,8 +4373,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 63, .baseSpDefense = 80, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 45, .expYield = 142, .evYield_Defense = 1, @@ -4762,8 +4382,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -4777,8 +4396,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 83, .baseSpDefense = 100, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 45, .expYield = 236, .evYield_Defense = 1, @@ -4787,8 +4405,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -4802,8 +4419,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 60, .baseSpDefense = 50, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 62, .evYield_Speed = 1, @@ -4811,8 +4427,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -4826,8 +4441,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 80, .baseSpDefense = 65, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 142, .evYield_Speed = 1, @@ -4836,8 +4450,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -4851,8 +4464,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 109, .baseSpDefense = 85, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 240, .evYield_SpAttack = 3, @@ -4860,8 +4472,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -4875,8 +4486,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 43, .baseSpAttack = 44, .baseSpDefense = 48, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 63, .evYield_Attack = 1, @@ -4884,8 +4494,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4899,8 +4508,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 58, .baseSpAttack = 59, .baseSpDefense = 63, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 142, .evYield_Attack = 1, @@ -4909,8 +4517,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -4924,8 +4531,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 78, .baseSpAttack = 79, .baseSpDefense = 83, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 239, .evYield_Attack = 2, @@ -4934,8 +4540,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -4949,8 +4554,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 35, .baseSpDefense = 45, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 255, .expYield = 43, .evYield_Attack = 1, @@ -4958,8 +4562,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_FRISK}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -4973,8 +4576,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 45, .baseSpDefense = 55, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 90, .expYield = 145, .evYield_Speed = 2, @@ -4982,8 +4584,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_FRISK}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -4997,8 +4598,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 36, .baseSpDefense = 56, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING }, .catchRate = 255, .expYield = 52, .evYield_HP = 1, @@ -5006,8 +4606,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INSOMNIA, ABILITY_KEEN_EYE, ABILITY_TINTED_LENS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -5025,8 +4624,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpAttack = 76, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 90, .expYield = 158, .evYield_HP = 2, @@ -5034,8 +4632,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INSOMNIA, ABILITY_KEEN_EYE, ABILITY_TINTED_LENS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -5049,8 +4646,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 40, .baseSpDefense = 80, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING }, .catchRate = 255, .expYield = 53, .evYield_SpDefense = 1, @@ -5058,8 +4654,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_EARLY_BIRD, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -5073,8 +4668,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 55, .baseSpDefense = 110, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING }, .catchRate = 90, .expYield = 137, .evYield_SpDefense = 2, @@ -5082,8 +4676,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_EARLY_BIRD, ABILITY_IRON_FIST}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -5097,8 +4690,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON }, .catchRate = 255, .expYield = 50, .evYield_Attack = 1, @@ -5106,8 +4698,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_INSOMNIA, ABILITY_SNIPER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -5125,8 +4716,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 60, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON}, .catchRate = 90, .expYield = 140, .evYield_Attack = 2, @@ -5134,8 +4724,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_INSOMNIA, ABILITY_SNIPER}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -5149,8 +4738,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 70, .baseSpDefense = 80, - .type1 = TYPE_POISON, - .type2 = TYPE_FLYING, + .types = { TYPE_POISON, TYPE_FLYING }, .catchRate = 90, .expYield = 241, .evYield_Speed = 3, @@ -5158,8 +4746,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -5173,8 +4760,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 67, .baseSpAttack = 56, .baseSpDefense = 56, - .type1 = TYPE_WATER, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_WATER, TYPE_ELECTRIC }, .catchRate = 190, .expYield = 66, .evYield_HP = 1, @@ -5183,8 +4769,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -5198,8 +4783,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 67, .baseSpAttack = 76, .baseSpDefense = 76, - .type1 = TYPE_WATER, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_WATER, TYPE_ELECTRIC }, .catchRate = 75, .expYield = 161, .evYield_HP = 2, @@ -5208,8 +4792,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -5226,11 +4809,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 45, .baseSpDefense = 55, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 150, .expYield = 44, @@ -5240,8 +4821,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 140, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_FRIEND_GUARD}, .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, @@ -5256,11 +4836,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 40, .baseSpDefense = 20, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_NORMAL, - .type2 = TYPE_FAIRY, + .types = { TYPE_NORMAL, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 170, .expYield = 42, @@ -5269,8 +4847,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD}, .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, @@ -5285,11 +4862,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 40, .baseSpDefense = 65, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 190, .expYield = 49, @@ -5298,8 +4873,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -5314,11 +4888,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 80, .baseSpDefense = 105, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_FAIRY, - .type2 = TYPE_FLYING, + .types = { TYPE_FAIRY, TYPE_FLYING}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, #endif .catchRate = 75, .expYield = 142, @@ -5327,8 +4899,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -5342,8 +4913,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 70, .baseSpDefense = 45, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FLYING, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, .catchRate = 190, .expYield = 64, .evYield_SpAttack = 1, @@ -5351,8 +4921,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -5366,8 +4935,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 95, .baseSpDefense = 70, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FLYING, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, .catchRate = 75, .expYield = 165, .evYield_Speed = 1, @@ -5376,8 +4944,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -5391,8 +4958,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 65, .baseSpDefense = 45, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, .catchRate = 235, .expYield = 56, .evYield_SpAttack = 1, @@ -5400,8 +4966,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -5415,8 +4980,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 80, .baseSpDefense = 60, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, .catchRate = 120, .expYield = 128, .evYield_SpAttack = 2, @@ -5424,8 +4988,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -5443,8 +5006,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseDefense = 75, #endif - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 45, .expYield = 230, .evYield_SpAttack = 3, @@ -5452,8 +5014,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -5471,8 +5032,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseDefense = 85, #endif - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 221, .evYield_SpDefense = 3, @@ -5481,8 +5041,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HEALER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -5497,11 +5056,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 20, .baseSpDefense = 50, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_WATER, - .type2 = TYPE_FAIRY, + .types = { TYPE_WATER, TYPE_FAIRY}, #else - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, #endif .catchRate = 190, .expYield = 88, @@ -5510,8 +5067,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -5530,11 +5086,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 50, #endif #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_WATER, - .type2 = TYPE_FAIRY, + .types = { TYPE_WATER, TYPE_FAIRY}, #else - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, #endif .catchRate = 75, .expYield = 189, @@ -5543,8 +5097,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -5558,8 +5111,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 30, .baseSpDefense = 65, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK }, .catchRate = 65, .expYield = 144, .evYield_Defense = 2, @@ -5567,8 +5119,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -5582,8 +5133,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 90, .baseSpDefense = 100, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 225, .evYield_SpDefense = 3, @@ -5592,8 +5142,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_DRIZZLE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -5607,8 +5156,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 35, .baseSpDefense = 55, - .type1 = TYPE_GRASS, - .type2 = TYPE_FLYING, + .types = { TYPE_GRASS, TYPE_FLYING }, .catchRate = 255, .expYield = 50, .evYield_SpDefense = 1, @@ -5616,8 +5164,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -5631,8 +5178,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 45, .baseSpDefense = 65, - .type1 = TYPE_GRASS, - .type2 = TYPE_FLYING, + .types = { TYPE_GRASS, TYPE_FLYING }, .catchRate = 120, .expYield = 119, .evYield_Speed = 2, @@ -5640,8 +5186,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -5659,8 +5204,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 85, #endif - .type1 = TYPE_GRASS, - .type2 = TYPE_FLYING, + .types = { TYPE_GRASS, TYPE_FLYING}, .catchRate = 45, .expYield = 207, .evYield_Speed = 3, @@ -5668,8 +5212,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -5683,8 +5226,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 40, .baseSpDefense = 55, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 72, .evYield_Speed = 1, @@ -5692,8 +5234,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_PICKUP, ABILITY_SKILL_LINK}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -5707,8 +5248,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 235, .expYield = 36, .evYield_SpAttack = 1, @@ -5716,8 +5256,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -5731,8 +5270,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 105, .baseSpDefense = 85, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 120, .expYield = 149, .evYield_SpAttack = 2, @@ -5740,8 +5278,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -5755,8 +5292,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 75, .baseSpDefense = 45, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING }, .catchRate = 75, .expYield = 78, .evYield_Speed = 1, @@ -5765,8 +5301,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SPEED_BOOST, ABILITY_COMPOUND_EYES, ABILITY_FRISK}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -5780,8 +5315,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 25, .baseSpDefense = 25, - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND }, .catchRate = 255, .expYield = 42, .evYield_HP = 1, @@ -5789,8 +5323,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -5804,8 +5337,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 65, .baseSpDefense = 65, - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND }, .catchRate = 90, .expYield = 151, .evYield_HP = 2, @@ -5813,8 +5345,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -5828,8 +5359,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 130, .baseSpDefense = 95, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 45, .expYield = 184, .evYield_SpAttack = 2, @@ -5837,8 +5367,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_SYNCHRONIZE, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -5852,8 +5381,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 60, .baseSpDefense = 130, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK }, .catchRate = 45, .expYield = 184, .evYield_SpDefense = 2, @@ -5861,8 +5389,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -5876,8 +5403,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 91, .baseSpAttack = 85, .baseSpDefense = 42, - .type1 = TYPE_DARK, - .type2 = TYPE_FLYING, + .types = { TYPE_DARK, TYPE_FLYING }, .catchRate = 30, .expYield = 81, .evYield_Speed = 1, @@ -5885,8 +5411,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INSOMNIA, ABILITY_SUPER_LUCK, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -5900,8 +5425,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 100, .baseSpDefense = 110, - .type1 = TYPE_WATER, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_WATER, TYPE_PSYCHIC }, .catchRate = 70, .expYield = 172, .evYield_SpDefense = 3, @@ -5910,8 +5434,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -5925,8 +5448,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 85, .baseSpDefense = 85, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST }, .catchRate = 45, .expYield = 87, .evYield_SpDefense = 1, @@ -5934,8 +5456,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -5951,8 +5472,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 33, .baseSpAttack = 33, .baseSpDefense = 58, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 45, .expYield = 142, .evYield_HP = 2, @@ -5960,8 +5480,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_SHADOW_TAG, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -5975,8 +5494,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 90, .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_NORMAL, TYPE_PSYCHIC }, .catchRate = 60, .expYield = 159, .evYield_SpAttack = 2, @@ -5984,8 +5502,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_EARLY_BIRD, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -5999,8 +5516,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG }, .catchRate = 190, .expYield = 58, .evYield_Defense = 1, @@ -6008,8 +5524,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -6023,8 +5538,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_BUG, - .type2 = TYPE_STEEL, + .types = { TYPE_BUG, TYPE_STEEL }, .catchRate = 75, .expYield = 163, .evYield_Defense = 2, @@ -6032,8 +5546,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -6047,8 +5560,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 65, .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 190, .expYield = 145, .evYield_HP = 1, @@ -6056,8 +5568,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -6071,8 +5582,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 35, .baseSpDefense = 65, - .type1 = TYPE_GROUND, - .type2 = TYPE_FLYING, + .types = { TYPE_GROUND, TYPE_FLYING }, .catchRate = 60, .expYield = 86, .evYield_Defense = 1, @@ -6080,8 +5590,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL, ABILITY_IMMUNITY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -6095,8 +5604,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 55, .baseSpDefense = 65, - .type1 = TYPE_STEEL, - .type2 = TYPE_GROUND, + .types = { TYPE_STEEL, TYPE_GROUND }, .catchRate = 25, .expYield = 179, .evYield_Defense = 2, @@ -6105,8 +5613,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -6121,11 +5628,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 40, .baseSpDefense = 40, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 190, .expYield = 60, @@ -6134,8 +5639,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_INTIMIDATE, ABILITY_RUN_AWAY, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -6150,11 +5654,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 60, .baseSpDefense = 60, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 75, .expYield = 158, @@ -6163,8 +5665,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -6182,8 +5683,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseDefense = 75, #endif - .type1 = TYPE_WATER, - .type2 = TYPE_POISON, + .types = { TYPE_WATER, TYPE_POISON}, .catchRate = 45, .expYield = 88, .evYield_Attack = 1, @@ -6192,8 +5692,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -6207,8 +5706,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 55, .baseSpDefense = 80, - .type1 = TYPE_BUG, - .type2 = TYPE_STEEL, + .types = { TYPE_BUG, TYPE_STEEL }, .catchRate = 25, .expYield = 175, .evYield_Attack = 2, @@ -6216,8 +5714,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_LIGHT_METAL}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -6231,8 +5728,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 5, .baseSpAttack = 10, .baseSpDefense = 230, - .type1 = TYPE_BUG, - .type2 = TYPE_ROCK, + .types = { TYPE_BUG, TYPE_ROCK }, .catchRate = 190, .expYield = 177, .evYield_Defense = 1, @@ -6243,8 +5739,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_STURDY, ABILITY_GLUTTONY, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -6258,8 +5753,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 40, .baseSpDefense = 95, - .type1 = TYPE_BUG, - .type2 = TYPE_FIGHTING, + .types = { TYPE_BUG, TYPE_FIGHTING }, .catchRate = 45, .expYield = 175, .evYield_Attack = 2, @@ -6267,8 +5761,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_GUTS, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -6282,8 +5775,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 35, .baseSpDefense = 75, - .type1 = TYPE_DARK, - .type2 = TYPE_ICE, + .types = { TYPE_DARK, TYPE_ICE }, .catchRate = 60, .expYield = 86, .evYield_Speed = 1, @@ -6292,8 +5784,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, @@ -6307,8 +5798,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 120, .expYield = 66, .evYield_Attack = 1, @@ -6316,8 +5806,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_QUICK_FEET, ABILITY_HONEY_GATHER}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -6331,8 +5820,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 75, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 60, .expYield = 175, .evYield_Attack = 2, @@ -6340,8 +5828,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GUTS, ABILITY_QUICK_FEET, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -6355,8 +5842,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 70, .baseSpDefense = 40, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 190, .expYield = 50, .evYield_SpAttack = 1, @@ -6364,8 +5850,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -6384,8 +5869,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseHP = 50, .baseSpAttack = 80, #endif - .type1 = TYPE_FIRE, - .type2 = TYPE_ROCK, + .types = { TYPE_FIRE, TYPE_ROCK}, .catchRate = 75, .expYield = 151, .evYield_Defense = 2, @@ -6393,8 +5877,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, @@ -6408,8 +5891,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_ICE, - .type2 = TYPE_GROUND, + .types = { TYPE_ICE, TYPE_GROUND }, .catchRate = 225, .expYield = 50, .evYield_Attack = 1, @@ -6417,8 +5899,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -6432,8 +5913,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_ICE, - .type2 = TYPE_GROUND, + .types = { TYPE_ICE, TYPE_GROUND }, .catchRate = 75, .expYield = 158, .evYield_HP = 1, @@ -6442,8 +5922,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -6463,8 +5942,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseDefense = 85, .baseSpDefense = 85, #endif - .type1 = TYPE_WATER, - .type2 = TYPE_ROCK, + .types = { TYPE_WATER, TYPE_ROCK}, .catchRate = 60, .expYield = 144, .evYield_Defense = 1, @@ -6474,8 +5952,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HUSTLE, ABILITY_NATURAL_CURE, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -6489,8 +5966,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 65, .baseSpDefense = 35, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 190, .expYield = 60, .evYield_SpAttack = 1, @@ -6498,8 +5974,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_HUSTLE, ABILITY_SNIPER, ABILITY_MOODY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -6513,8 +5988,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 105, .baseSpDefense = 75, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 75, .expYield = 168, .evYield_Attack = 1, @@ -6523,8 +5997,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SUCTION_CUPS, ABILITY_SNIPER, ABILITY_MOODY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -6538,8 +6011,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 65, .baseSpDefense = 45, - .type1 = TYPE_ICE, - .type2 = TYPE_FLYING, + .types = { TYPE_ICE, TYPE_FLYING }, .catchRate = 45, .expYield = 116, .evYield_Speed = 1, @@ -6547,8 +6019,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_HUSTLE, ABILITY_INSOMNIA}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -6566,8 +6037,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseHP = 65, #endif - .type1 = TYPE_WATER, - .type2 = TYPE_FLYING, + .types = { TYPE_WATER, TYPE_FLYING}, .catchRate = 25, .expYield = 170, .evYield_SpDefense = 2, @@ -6575,8 +6045,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB, ABILITY_WATER_VEIL}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -6590,8 +6059,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 40, .baseSpDefense = 70, - .type1 = TYPE_STEEL, - .type2 = TYPE_FLYING, + .types = { TYPE_STEEL, TYPE_FLYING }, .catchRate = 25, .expYield = 163, .evYield_Defense = 2, @@ -6600,8 +6068,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_STURDY, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -6615,8 +6082,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 80, .baseSpDefense = 50, - .type1 = TYPE_DARK, - .type2 = TYPE_FIRE, + .types = { TYPE_DARK, TYPE_FIRE }, .catchRate = 120, .expYield = 66, .evYield_SpAttack = 1, @@ -6624,8 +6090,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -6639,8 +6104,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 110, .baseSpDefense = 80, - .type1 = TYPE_DARK, - .type2 = TYPE_FIRE, + .types = { TYPE_DARK, TYPE_FIRE }, .catchRate = 45, .expYield = 175, .evYield_SpAttack = 2, @@ -6648,8 +6112,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -6663,8 +6126,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 95, .baseSpDefense = 95, - .type1 = TYPE_WATER, - .type2 = TYPE_DRAGON, + .types = { TYPE_WATER, TYPE_DRAGON }, .catchRate = 45, .expYield = 243, .evYield_Attack = 1, @@ -6675,8 +6137,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -6690,8 +6151,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND }, .catchRate = 120, .expYield = 66, .evYield_HP = 1, @@ -6699,8 +6159,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_NONE, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -6714,8 +6173,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND }, .catchRate = 60, .expYield = 175, .evYield_Attack = 1, @@ -6724,8 +6182,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -6739,8 +6196,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 105, .baseSpDefense = 95, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 180, .evYield_SpAttack = 2, @@ -6748,8 +6204,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -6763,8 +6218,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 85, .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 163, .evYield_Attack = 1, @@ -6772,8 +6226,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -6787,8 +6240,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 20, .baseSpDefense = 45, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 88, .evYield_Speed = 1, @@ -6796,8 +6248,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_TECHNICIAN, ABILITY_MOODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -6811,8 +6262,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 75, .expYield = 42, .evYield_Attack = 1, @@ -6820,8 +6270,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_GUTS, ABILITY_STEADFAST, ABILITY_VITAL_SPIRIT}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -6835,8 +6284,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 35, .baseSpDefense = 110, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, .catchRate = 45, .expYield = 159, .evYield_SpDefense = 2, @@ -6844,8 +6292,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INTIMIDATE, ABILITY_TECHNICIAN, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -6859,8 +6306,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 85, .baseSpDefense = 65, - .type1 = TYPE_ICE, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_ICE, TYPE_PSYCHIC }, .catchRate = 45, .expYield = 61, .evYield_SpAttack = 1, @@ -6868,8 +6314,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -6883,8 +6328,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 65, .baseSpDefense = 55, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, .catchRate = 45, .expYield = 72, .evYield_Speed = 1, @@ -6893,8 +6337,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, @@ -6908,8 +6351,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 83, .baseSpAttack = 70, .baseSpDefense = 55, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 73, .evYield_Speed = 1, @@ -6918,8 +6360,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, @@ -6933,8 +6374,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 40, .baseSpDefense = 70, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 172, .evYield_Defense = 2, @@ -6944,8 +6384,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_SCRAPPY, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -6959,8 +6398,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 75, .baseSpDefense = 135, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 30, .expYield = 608, .evYield_HP = 3, @@ -6969,8 +6407,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 140, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_HEALER}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -6984,8 +6421,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 115, .baseSpDefense = 100, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, .catchRate = 3, .expYield = 261, .evYield_Speed = 2, @@ -6994,8 +6430,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, #if P_UPDATED_ABILITIES >= GEN_7 .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS}, #else @@ -7014,8 +6449,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 90, .baseSpDefense = 75, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 3, .expYield = 261, .evYield_HP = 1, @@ -7024,8 +6458,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, #if P_UPDATED_ABILITIES >= GEN_7 .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS}, #else @@ -7044,8 +6477,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 90, .baseSpDefense = 115, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 3, .expYield = 261, .evYield_Defense = 1, @@ -7054,8 +6486,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, #if P_UPDATED_ABILITIES >= GEN_7 .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS}, #else @@ -7074,8 +6505,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 41, .baseSpAttack = 45, .baseSpDefense = 50, - .type1 = TYPE_ROCK, - .type2 = TYPE_GROUND, + .types = { TYPE_ROCK, TYPE_GROUND }, .catchRate = 45, .expYield = 60, .evYield_Attack = 1, @@ -7083,8 +6513,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_GUTS, ABILITY_NONE, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7098,8 +6527,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 51, .baseSpAttack = 65, .baseSpDefense = 70, - .type1 = TYPE_ROCK, - .type2 = TYPE_GROUND, + .types = { TYPE_ROCK, TYPE_GROUND }, .catchRate = 45, .expYield = 144, .evYield_Attack = 2, @@ -7107,8 +6535,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -7122,8 +6549,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 61, .baseSpAttack = 95, .baseSpDefense = 100, - .type1 = TYPE_ROCK, - .type2 = TYPE_DARK, + .types = { TYPE_ROCK, TYPE_DARK }, .catchRate = 45, .expYield = 270, .evYield_Attack = 3, @@ -7131,8 +6557,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7146,8 +6571,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 90, .baseSpDefense = 154, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FLYING, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, .catchRate = 3, .expYield = 306, .evYield_SpDefense = 3, @@ -7155,8 +6579,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_MULTISCALE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -7171,8 +6594,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 110, .baseSpDefense = 154, - .type1 = TYPE_FIRE, - .type2 = TYPE_FLYING, + .types = { TYPE_FIRE, TYPE_FLYING }, .catchRate = 3, .expYield = 306, .evYield_SpDefense = 3, @@ -7182,8 +6604,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -7198,8 +6619,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_GRASS, + .types = { TYPE_PSYCHIC, TYPE_GRASS }, .catchRate = 45, .expYield = 270, .evYield_HP = 3, @@ -7209,8 +6629,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7225,8 +6644,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 65, .baseSpDefense = 55, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 45, .expYield = 62, .evYield_Speed = 1, @@ -7234,8 +6652,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7249,8 +6666,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 85, .baseSpDefense = 65, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 45, .expYield = 142, .evYield_Speed = 2, @@ -7258,8 +6674,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7273,8 +6688,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 120, .baseSpAttack = 105, .baseSpDefense = 85, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 45, .expYield = 239, .evYield_Speed = 3, @@ -7282,8 +6696,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7297,8 +6710,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 70, .baseSpDefense = 50, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE }, .catchRate = 45, .expYield = 62, .evYield_SpAttack = 1, @@ -7306,8 +6718,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -7321,8 +6732,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 85, .baseSpDefense = 60, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIRE, TYPE_FIGHTING }, .catchRate = 45, .expYield = 142, .evYield_Attack = 1, @@ -7331,8 +6741,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -7346,8 +6755,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 110, .baseSpDefense = 70, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIRE, TYPE_FIGHTING }, .catchRate = 45, .expYield = 239, .evYield_Attack = 3, @@ -7355,8 +6763,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -7370,8 +6777,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER }, .catchRate = 45, .expYield = 62, .evYield_Attack = 1, @@ -7379,8 +6785,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -7394,8 +6799,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 70, - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND }, .catchRate = 45, .expYield = 142, .evYield_Attack = 2, @@ -7403,8 +6807,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -7418,8 +6821,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 85, .baseSpDefense = 90, - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND }, .catchRate = 45, .expYield = 241, .evYield_Attack = 3, @@ -7427,8 +6829,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -7442,8 +6843,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK }, .catchRate = 255, .expYield = 56, .evYield_Attack = 1, @@ -7451,8 +6851,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_QUICK_FEET, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -7466,8 +6865,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK }, .catchRate = 127, .expYield = 147, .evYield_Attack = 2, @@ -7475,8 +6873,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -7490,8 +6887,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 30, .baseSpDefense = 41, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 255, .expYield = 56, .evYield_Speed = 1, @@ -7501,8 +6897,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -7516,8 +6911,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 50, .baseSpDefense = 61, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 90, .expYield = 147, .evYield_Speed = 2, @@ -7527,8 +6921,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -7542,8 +6935,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 20, .baseSpDefense = 30, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG }, .catchRate = 255, .expYield = 56, .evYield_HP = 1, @@ -7553,8 +6945,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -7568,8 +6959,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 25, .baseSpDefense = 25, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG }, .catchRate = 120, .expYield = 72, .evYield_Defense = 2, @@ -7577,8 +6967,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -7596,8 +6985,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpAttack = 90, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 45, .expYield = 178, .evYield_SpAttack = 3, @@ -7606,8 +6994,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_RIVALRY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -7621,8 +7008,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 25, .baseSpDefense = 25, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG }, .catchRate = 120, .expYield = 72, .evYield_Defense = 2, @@ -7630,8 +7016,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -7645,8 +7030,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 50, .baseSpDefense = 90, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON }, .catchRate = 45, .expYield = 173, .evYield_SpDefense = 3, @@ -7655,8 +7039,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_COMPOUND_EYES}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7670,8 +7053,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_GRASS, + .types = { TYPE_WATER, TYPE_GRASS }, .catchRate = 255, .expYield = 44, .evYield_SpDefense = 1, @@ -7680,8 +7062,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7695,8 +7076,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 70, - .type1 = TYPE_WATER, - .type2 = TYPE_GRASS, + .types = { TYPE_WATER, TYPE_GRASS }, .catchRate = 120, .expYield = 119, .evYield_SpDefense = 2, @@ -7705,8 +7085,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7720,8 +7099,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 90, .baseSpDefense = 100, - .type1 = TYPE_WATER, - .type2 = TYPE_GRASS, + .types = { TYPE_WATER, TYPE_GRASS }, .catchRate = 45, .expYield = 216, .evYield_SpDefense = 3, @@ -7730,8 +7108,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -7745,8 +7122,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 255, .expYield = 44, .evYield_Defense = 1, @@ -7755,8 +7131,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -7770,8 +7145,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 60, .baseSpDefense = 40, - .type1 = TYPE_GRASS, - .type2 = TYPE_DARK, + .types = { TYPE_GRASS, TYPE_DARK }, .catchRate = 120, .expYield = 119, .evYield_Attack = 2, @@ -7780,8 +7154,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -7795,8 +7168,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 90, .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_DARK, + .types = { TYPE_GRASS, TYPE_DARK }, .catchRate = 45, .expYield = 216, .evYield_Attack = 3, @@ -7805,8 +7177,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -7820,8 +7191,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING }, .catchRate = 200, .expYield = 54, .evYield_Speed = 1, @@ -7829,8 +7199,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_GUTS, ABILITY_NONE, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -7848,8 +7217,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpAttack = 50, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 45, .expYield = 159, .evYield_Speed = 2, @@ -7857,8 +7225,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_GUTS, ABILITY_NONE, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -7872,8 +7239,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 55, .baseSpDefense = 30, - .type1 = TYPE_WATER, - .type2 = TYPE_FLYING, + .types = { TYPE_WATER, TYPE_FLYING}, .catchRate = 190, .expYield = 54, .evYield_Speed = 1, @@ -7882,8 +7248,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_HYDRATION, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -7901,8 +7266,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpAttack = 85, #endif - .type1 = TYPE_WATER, - .type2 = TYPE_FLYING, + .types = { TYPE_WATER, TYPE_FLYING}, .catchRate = 45, .expYield = 154, .evYield_Defense = 2, @@ -7911,8 +7275,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_DRIZZLE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -7927,11 +7290,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 45, .baseSpDefense = 35, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, #else - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, #endif .catchRate = 235, .expYield = 40, @@ -7941,11 +7302,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .friendship = 35, .growthRate = GROWTH_SLOW, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS}, #else - .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #endif - .eggGroup2 = EGG_GROUP_AMORPHOUS, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -7960,11 +7320,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 65, .baseSpDefense = 55, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, #else - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, #endif .catchRate = 120, .expYield = 97, @@ -7974,11 +7332,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .friendship = 35, .growthRate = GROWTH_SLOW, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS}, #else - .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #endif - .eggGroup2 = EGG_GROUP_AMORPHOUS, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -7993,11 +7350,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 125, .baseSpDefense = 115, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, #else - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, #endif .catchRate = 45, .expYield = 233, @@ -8007,11 +7362,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .friendship = 35, .growthRate = GROWTH_SLOW, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS}, #else - .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #endif - .eggGroup2 = EGG_GROUP_AMORPHOUS, .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -8025,8 +7379,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 50, .baseSpDefense = 52, - .type1 = TYPE_BUG, - .type2 = TYPE_WATER, + .types = { TYPE_BUG, TYPE_WATER}, .catchRate = 200, .expYield = 54, .evYield_Speed = 1, @@ -8035,8 +7388,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -8055,8 +7407,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 80, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 75, .expYield = 159, .evYield_SpAttack = 1, @@ -8066,8 +7417,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -8081,8 +7431,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 40, .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS }, .catchRate = 255, .expYield = 59, .evYield_HP = 1, @@ -8092,8 +7441,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_QUICK_FEET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -8107,8 +7455,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_FIGHTING, + .types = { TYPE_GRASS, TYPE_FIGHTING }, .catchRate = 90, .expYield = 161, .evYield_Attack = 2, @@ -8118,8 +7465,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -8133,8 +7479,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 255, .expYield = 56, .evYield_HP = 1, @@ -8142,8 +7487,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, .abilities = {ABILITY_TRUANT, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -8157,8 +7501,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 55, .baseSpDefense = 55, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 120, .expYield = 154, .evYield_Speed = 2, @@ -8166,8 +7509,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -8181,8 +7523,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 95, .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 45, .expYield = 252, .evYield_HP = 3, @@ -8190,8 +7531,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, .abilities = {ABILITY_TRUANT, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -8205,8 +7545,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_BUG, - .type2 = TYPE_GROUND, + .types = { TYPE_BUG, TYPE_GROUND}, .catchRate = 255, .expYield = 53, .evYield_Defense = 1, @@ -8215,8 +7554,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -8230,8 +7568,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 160, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 120, .expYield = 160, .evYield_Speed = 2, @@ -8239,8 +7576,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SPEED_BOOST, ABILITY_NONE, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -8254,8 +7590,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_BUG, - .type2 = TYPE_GHOST, + .types = { TYPE_BUG, TYPE_GHOST}, .catchRate = 45, .expYield = 83, .evYield_HP = 2, @@ -8263,8 +7598,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_WONDER_GUARD, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -8278,8 +7612,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 28, .baseSpAttack = 51, .baseSpDefense = 23, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 190, .expYield = 48, .evYield_HP = 1, @@ -8287,8 +7620,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -8302,8 +7634,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 48, .baseSpAttack = 71, .baseSpDefense = 43, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL }, .catchRate = 120, .expYield = 126, .evYield_HP = 2, @@ -8311,8 +7642,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -8330,8 +7660,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 63, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 45, .expYield = 221, .evYield_HP = 3, @@ -8339,8 +7668,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -8354,8 +7682,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 20, .baseSpDefense = 30, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 180, .expYield = 47, .evYield_HP = 1, @@ -8364,8 +7691,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_THICK_FAT, ABILITY_GUTS, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -8379,8 +7705,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 40, .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 200, .expYield = 166, .evYield_HP = 2, @@ -8389,8 +7714,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_THICK_FAT, ABILITY_GUTS, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -8405,11 +7729,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 20, .baseSpDefense = 40, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_NORMAL, - .type2 = TYPE_FAIRY, + .types = { TYPE_NORMAL, TYPE_FAIRY}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, #endif .catchRate = 150, .expYield = 38, @@ -8418,8 +7740,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -8433,8 +7754,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 45, .baseSpDefense = 90, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 255, .expYield = 75, .evYield_Defense = 1, @@ -8443,8 +7763,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_MAGNET_PULL, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -8458,8 +7777,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 52, .evYield_Speed = 1, @@ -8467,8 +7785,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -8486,8 +7803,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpeed = 70, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 60, .expYield = 140, .evYield_HP = 1, @@ -8496,8 +7812,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -8511,8 +7826,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 65, .baseSpDefense = 65, - .type1 = TYPE_DARK, - .type2 = TYPE_GHOST, + .types = { TYPE_DARK, TYPE_GHOST}, .catchRate = 45, .expYield = 133, .evYield_Attack = 1, @@ -8522,8 +7836,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_KEEN_EYE, ABILITY_STALL, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -8538,11 +7851,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 55, .baseSpDefense = 55, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_STEEL, - .type2 = TYPE_FAIRY, + .types = { TYPE_STEEL, TYPE_FAIRY}, #else - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, #endif .catchRate = 45, .expYield = 133, @@ -8553,8 +7864,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_INTIMIDATE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -8568,8 +7878,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_STEEL, - .type2 = TYPE_ROCK, + .types = { TYPE_STEEL, TYPE_ROCK }, .catchRate = 180, .expYield = 66, .evYield_Defense = 1, @@ -8578,8 +7887,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -8593,8 +7901,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_STEEL, - .type2 = TYPE_ROCK, + .types = { TYPE_STEEL, TYPE_ROCK }, .catchRate = 90, .expYield = 151, .evYield_Defense = 2, @@ -8603,8 +7910,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -8618,8 +7924,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_STEEL, - .type2 = TYPE_ROCK, + .types = { TYPE_STEEL, TYPE_ROCK }, .catchRate = 45, .expYield = 239, .evYield_Defense = 3, @@ -8628,8 +7933,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -8643,8 +7947,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 40, .baseSpDefense = 55, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_FIGHTING, TYPE_PSYCHIC}, .catchRate = 180, .expYield = 56, .evYield_Speed = 1, @@ -8652,8 +7955,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -8667,8 +7969,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 60, .baseSpDefense = 75, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_FIGHTING, TYPE_PSYCHIC}, .catchRate = 90, .expYield = 144, .evYield_Speed = 2, @@ -8676,8 +7977,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -8691,8 +7991,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 65, .baseSpDefense = 40, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 120, .expYield = 59, .evYield_Speed = 1, @@ -8700,8 +7999,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -8715,8 +8013,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 105, .baseSpDefense = 60, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 45, .expYield = 166, .evYield_Speed = 2, @@ -8724,8 +8021,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -8739,8 +8035,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 85, .baseSpDefense = 75, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 200, .expYield = 142, .evYield_Speed = 1, @@ -8749,8 +8044,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_PLUS, ABILITY_NONE, ABILITY_LIGHTNING_ROD}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -8764,8 +8058,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 75, .baseSpDefense = 85, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 200, .expYield = 142, .evYield_Speed = 1, @@ -8774,8 +8067,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_MINUS, ABILITY_NONE, ABILITY_VOLT_ABSORB}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -8794,8 +8086,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseDefense = 55, .baseSpDefense = 75, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 150, .expYield = 151, .evYield_Speed = 1, @@ -8804,8 +8095,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_ILLUMINATE, ABILITY_SWARM, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -8824,8 +8114,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseDefense = 55, .baseSpDefense = 75, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 150, .expYield = 151, .evYield_Speed = 1, @@ -8834,8 +8123,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_TINTED_LENS, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -8849,8 +8137,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 100, .baseSpDefense = 80, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON}, .catchRate = 150, .expYield = 140, .evYield_SpAttack = 2, @@ -8859,8 +8146,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -8874,8 +8160,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 43, .baseSpDefense = 53, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON}, .catchRate = 225, .expYield = 60, .evYield_HP = 1, @@ -8885,8 +8170,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -8900,8 +8184,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 73, .baseSpDefense = 83, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON}, .catchRate = 75, .expYield = 163, .evYield_HP = 2, @@ -8911,8 +8194,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -8926,8 +8208,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 65, .baseSpDefense = 20, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 225, .expYield = 61, .evYield_Attack = 1, @@ -8936,8 +8217,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_ROUGH_SKIN, ABILITY_NONE, ABILITY_SPEED_BOOST}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -8951,8 +8231,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 95, .baseSpDefense = 40, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 60, .expYield = 161, .evYield_Attack = 2, @@ -8961,8 +8240,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_ROUGH_SKIN, ABILITY_NONE, ABILITY_SPEED_BOOST}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -8976,8 +8254,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 70, .baseSpDefense = 35, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 125, .expYield = 80, .evYield_HP = 1, @@ -8985,8 +8262,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2}, .abilities = {ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS, ABILITY_PRESSURE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -9000,8 +8276,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 90, .baseSpDefense = 45, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 60, .expYield = 175, .evYield_HP = 2, @@ -9009,8 +8284,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2}, .abilities = {ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS, ABILITY_PRESSURE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -9024,8 +8298,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 65, .baseSpDefense = 45, - .type1 = TYPE_FIRE, - .type2 = TYPE_GROUND, + .types = { TYPE_FIRE, TYPE_GROUND}, .catchRate = 255, .expYield = 61, .evYield_SpAttack = 1, @@ -9033,8 +8306,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_SIMPLE, ABILITY_OWN_TEMPO}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -9048,8 +8320,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 105, .baseSpDefense = 75, - .type1 = TYPE_FIRE, - .type2 = TYPE_GROUND, + .types = { TYPE_FIRE, TYPE_GROUND}, .catchRate = 150, .expYield = 161, .evYield_Attack = 1, @@ -9058,8 +8329,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_SOLID_ROCK, ABILITY_ANGER_POINT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -9073,8 +8343,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 85, .baseSpDefense = 70, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 90, .expYield = 165, .evYield_Defense = 2, @@ -9083,8 +8352,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_WHITE_SMOKE, ABILITY_DROUGHT, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -9098,8 +8366,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 70, .baseSpDefense = 80, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 255, .expYield = 66, .evYield_SpDefense = 1, @@ -9107,8 +8374,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -9122,8 +8388,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 90, .baseSpDefense = 110, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 60, .expYield = 165, .evYield_SpDefense = 2, @@ -9131,8 +8396,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -9146,8 +8410,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 126, .evYield_SpAttack = 1, @@ -9155,8 +8418,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_TANGLED_FEET, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -9170,8 +8432,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 10, .baseSpAttack = 45, .baseSpDefense = 45, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 255, .expYield = 58, .evYield_Attack = 1, @@ -9180,11 +8441,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, #else - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #endif .abilities = {ABILITY_HYPER_CUTTER, ABILITY_ARENA_TRAP, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BROWN, @@ -9199,8 +8459,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_GROUND, - .type2 = TYPE_DRAGON, + .types = { TYPE_GROUND, TYPE_DRAGON}, .catchRate = 120, .expYield = 119, .evYield_Attack = 1, @@ -9209,11 +8468,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, #else - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #endif .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE}, .bodyColor = BODY_COLOR_GREEN, @@ -9228,8 +8486,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 80, .baseSpDefense = 80, - .type1 = TYPE_GROUND, - .type2 = TYPE_DRAGON, + .types = { TYPE_GROUND, TYPE_DRAGON}, .catchRate = 45, .expYield = 234, .evYield_Attack = 1, @@ -9238,11 +8495,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, #else - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #endif .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE}, .bodyColor = BODY_COLOR_GREEN, @@ -9257,8 +8513,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 85, .baseSpDefense = 40, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 190, .expYield = 67, .evYield_SpAttack = 1, @@ -9267,8 +8522,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -9282,8 +8536,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 115, .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_DARK, + .types = { TYPE_GRASS, TYPE_DARK}, .catchRate = 60, .expYield = 166, .evYield_Attack = 1, @@ -9293,8 +8546,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -9308,8 +8560,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 40, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 255, .expYield = 62, .evYield_SpDefense = 1, @@ -9317,8 +8568,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -9332,8 +8582,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 70, .baseSpDefense = 105, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FLYING, + .types = { TYPE_DRAGON, TYPE_FLYING}, .catchRate = 45, .expYield = 172, .evYield_SpDefense = 2, @@ -9341,8 +8590,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -9356,8 +8604,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 90, .expYield = 160, .evYield_Attack = 2, @@ -9366,8 +8613,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_IMMUNITY, ABILITY_NONE, ABILITY_TOXIC_BOOST}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, @@ -9381,8 +8627,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 100, .baseSpDefense = 60, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON}, .catchRate = 90, .expYield = 160, .evYield_Attack = 1, @@ -9392,8 +8637,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, @@ -9411,8 +8655,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseHP = 70, #endif - .type1 = TYPE_ROCK, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_ROCK, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 161, .evYield_SpAttack = 2, @@ -9422,8 +8665,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -9441,8 +8683,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseHP = 70, #endif - .type1 = TYPE_ROCK, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_ROCK, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 161, .evYield_Attack = 2, @@ -9452,8 +8693,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -9467,8 +8707,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 46, .baseSpDefense = 41, - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND}, .catchRate = 190, .expYield = 58, .evYield_HP = 1, @@ -9476,8 +8715,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -9491,8 +8729,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 76, .baseSpDefense = 71, - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND}, .catchRate = 75, .expYield = 164, .evYield_HP = 2, @@ -9500,8 +8737,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -9515,8 +8751,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 50, .baseSpDefense = 35, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 205, .expYield = 62, .evYield_Attack = 1, @@ -9524,8 +8759,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -9539,8 +8773,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 90, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 155, .expYield = 164, .evYield_Attack = 2, @@ -9548,8 +8781,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -9563,8 +8795,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 40, .baseSpDefense = 70, - .type1 = TYPE_GROUND, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_GROUND, TYPE_PSYCHIC}, .catchRate = 255, .expYield = 60, .evYield_SpDefense = 1, @@ -9573,8 +8804,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -9588,8 +8818,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 70, .baseSpDefense = 120, - .type1 = TYPE_GROUND, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_GROUND, TYPE_PSYCHIC}, .catchRate = 90, .expYield = 175, .evYield_SpDefense = 2, @@ -9598,8 +8827,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -9613,8 +8841,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 23, .baseSpAttack = 61, .baseSpDefense = 87, - .type1 = TYPE_ROCK, - .type2 = TYPE_GRASS, + .types = { TYPE_ROCK, TYPE_GRASS }, .catchRate = 45, .expYield = 71, .evYield_SpDefense = 1, @@ -9623,8 +8850,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_STORM_DRAIN}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -9638,8 +8864,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 43, .baseSpAttack = 81, .baseSpDefense = 107, - .type1 = TYPE_ROCK, - .type2 = TYPE_GRASS, + .types = { TYPE_ROCK, TYPE_GRASS }, .catchRate = 45, .expYield = 173, .evYield_SpDefense = 2, @@ -9648,8 +8873,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_STORM_DRAIN}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -9663,8 +8887,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_ROCK, - .type2 = TYPE_BUG, + .types = { TYPE_ROCK, TYPE_BUG }, .catchRate = 45, .expYield = 71, .evYield_Attack = 1, @@ -9672,8 +8895,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -9687,8 +8909,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 70, .baseSpDefense = 80, - .type1 = TYPE_ROCK, - .type2 = TYPE_BUG, + .types = { TYPE_ROCK, TYPE_BUG }, .catchRate = 45, .expYield = 173, .evYield_Attack = 2, @@ -9696,8 +8917,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -9711,8 +8931,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 10, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 255, .expYield = 40, .evYield_Speed = 1, @@ -9720,8 +8939,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_OBLIVIOUS, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -9735,8 +8953,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 81, .baseSpAttack = 100, .baseSpDefense = 125, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 60, .expYield = 189, .evYield_SpDefense = 2, @@ -9744,8 +8961,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_MARVEL_SCALE, ABILITY_COMPETITIVE, ABILITY_CUTE_CHARM}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -9761,8 +8977,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 60, .baseSpDefense = 120, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 200, .expYield = 154, .evYield_SpDefense = 1, @@ -9770,8 +8985,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_COLOR_CHANGE, ABILITY_NONE, ABILITY_PROTEAN}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -9785,8 +8999,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 63, .baseSpDefense = 33, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 225, .expYield = 59, .evYield_Attack = 1, @@ -9795,8 +9008,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -9810,8 +9022,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 83, .baseSpDefense = 63, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 45, .expYield = 159, .evYield_Attack = 2, @@ -9820,8 +9031,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -9835,8 +9045,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 30, .baseSpDefense = 90, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 190, .expYield = 59, .evYield_SpDefense = 1, @@ -9845,8 +9054,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE, ABILITY_FRISK}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -9860,8 +9068,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 60, .baseSpDefense = 130, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 90, .expYield = 159, .evYield_Defense = 1, @@ -9871,8 +9078,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FRISK}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -9886,8 +9092,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 51, .baseSpAttack = 72, .baseSpDefense = 87, - .type1 = TYPE_GRASS, - .type2 = TYPE_FLYING, + .types = { TYPE_GRASS, TYPE_FLYING}, .catchRate = 200, .expYield = 161, .evYield_HP = 2, @@ -9895,8 +9100,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_HARVEST}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -9916,8 +9120,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseDefense = 70, .baseSpDefense = 80, #endif - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 159, .evYield_SpAttack = 1, @@ -9927,8 +9130,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -9942,8 +9144,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 75, .baseSpDefense = 60, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 30, .expYield = 163, .evYield_Attack = 2, @@ -9951,8 +9152,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PRESSURE, ABILITY_SUPER_LUCK, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, @@ -9966,8 +9166,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 23, .baseSpAttack = 23, .baseSpDefense = 48, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 125, .expYield = 52, .evYield_HP = 1, @@ -9975,8 +9174,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SHADOW_TAG, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -9990,8 +9188,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 190, .expYield = 60, .evYield_HP = 1, @@ -10000,8 +9197,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -10015,8 +9211,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 80, .baseSpDefense = 80, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 75, .expYield = 168, .evYield_HP = 2, @@ -10024,8 +9219,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -10039,8 +9233,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 55, .baseSpDefense = 50, - .type1 = TYPE_ICE, - .type2 = TYPE_WATER, + .types = { TYPE_ICE, TYPE_WATER}, .catchRate = 255, .expYield = 58, .evYield_HP = 1, @@ -10048,8 +9241,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10063,8 +9255,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 75, .baseSpDefense = 70, - .type1 = TYPE_ICE, - .type2 = TYPE_WATER, + .types = { TYPE_ICE, TYPE_WATER}, .catchRate = 120, .expYield = 144, .evYield_HP = 2, @@ -10072,8 +9263,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10087,8 +9277,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 95, .baseSpDefense = 90, - .type1 = TYPE_ICE, - .type2 = TYPE_WATER, + .types = { TYPE_ICE, TYPE_WATER}, .catchRate = 45, .expYield = 239, .evYield_HP = 3, @@ -10096,8 +9285,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10111,8 +9299,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 32, .baseSpAttack = 74, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 255, .expYield = 69, .evYield_Defense = 1, @@ -10122,8 +9309,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10137,8 +9323,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 52, .baseSpAttack = 94, .baseSpDefense = 75, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 60, .expYield = 170, .evYield_Attack = 1, @@ -10148,8 +9333,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10163,8 +9347,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 52, .baseSpAttack = 114, .baseSpDefense = 75, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 60, .expYield = 170, .evYield_SpAttack = 2, @@ -10173,8 +9356,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -10188,8 +9370,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 45, .baseSpDefense = 65, - .type1 = TYPE_WATER, - .type2 = TYPE_ROCK, + .types = { TYPE_WATER, TYPE_ROCK}, .catchRate = 25, .expYield = 170, .evYield_HP = 1, @@ -10199,8 +9380,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_ROCK_HEAD, ABILITY_STURDY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -10214,8 +9394,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 40, .baseSpDefense = 65, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 225, .expYield = 116, .evYield_Speed = 1, @@ -10224,8 +9403,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -10239,8 +9417,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 40, .baseSpDefense = 30, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON }, .catchRate = 45, .expYield = 60, .evYield_Attack = 1, @@ -10249,8 +9426,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_NONE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10264,8 +9440,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 50, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON }, .catchRate = 45, .expYield = 147, .evYield_Defense = 2, @@ -10274,8 +9449,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_NONE, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -10289,8 +9463,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 110, .baseSpDefense = 80, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FLYING, + .types = { TYPE_DRAGON, TYPE_FLYING }, .catchRate = 45, .expYield = 270, .evYield_Attack = 3, @@ -10299,8 +9472,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10314,8 +9486,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 35, .baseSpDefense = 60, - .type1 = TYPE_STEEL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, .catchRate = 3, .expYield = 60, .evYield_Defense = 1, @@ -10324,8 +9495,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10339,8 +9509,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 55, .baseSpDefense = 80, - .type1 = TYPE_STEEL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, .catchRate = 3, .expYield = 147, .evYield_Defense = 2, @@ -10349,8 +9518,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10364,8 +9532,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 95, .baseSpDefense = 90, - .type1 = TYPE_STEEL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, .catchRate = 3, .expYield = 270, .evYield_Defense = 3, @@ -10374,8 +9541,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10389,8 +9555,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 50, .baseSpDefense = 100, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK }, .catchRate = 3, .expYield = 261, .evYield_Defense = 3, @@ -10398,8 +9563,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -10414,8 +9578,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 100, .baseSpDefense = 200, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE }, .catchRate = 3, .expYield = 261, .evYield_SpDefense = 3, @@ -10423,8 +9586,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_ICE_BODY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10439,8 +9601,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 75, .baseSpDefense = 150, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL }, .catchRate = 3, .expYield = 261, .evYield_Defense = 2, @@ -10449,8 +9610,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -10465,8 +9625,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 110, .baseSpDefense = 130, - .type1 = TYPE_DRAGON, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_DRAGON, TYPE_PSYCHIC }, .catchRate = 3, .expYield = 270, .evYield_SpDefense = 3, @@ -10474,8 +9633,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -10490,8 +9648,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 130, .baseSpDefense = 110, - .type1 = TYPE_DRAGON, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_DRAGON, TYPE_PSYCHIC }, .catchRate = 3, .expYield = 270, .evYield_SpAttack = 3, @@ -10499,8 +9656,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10515,8 +9671,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 140, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 3, .expYield = 302, .evYield_SpAttack = 3, @@ -10524,8 +9679,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DRIZZLE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10540,8 +9694,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 100, .baseSpDefense = 90, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 3, .expYield = 302, .evYield_Attack = 3, @@ -10549,8 +9702,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DROUGHT, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -10565,8 +9717,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 150, .baseSpDefense = 90, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FLYING, + .types = { TYPE_DRAGON, TYPE_FLYING}, .catchRate = 45, .expYield = 306, .evYield_Attack = 2, @@ -10575,8 +9726,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_AIR_LOCK, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -10591,8 +9741,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_STEEL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, .catchRate = 3, .expYield = 270, .evYield_HP = 3, @@ -10602,8 +9751,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -10618,8 +9766,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 150, .baseSpAttack = 150, .baseSpDefense = 50, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, .catchRate = 3, .expYield = 270, .evYield_Attack = 1, @@ -10629,8 +9776,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -10646,8 +9792,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 31, .baseSpAttack = 45, .baseSpDefense = 55, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 64, .evYield_Attack = 1, @@ -10655,8 +9800,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -10670,8 +9814,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 36, .baseSpAttack = 55, .baseSpDefense = 65, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 142, .evYield_Attack = 1, @@ -10680,8 +9823,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -10695,8 +9837,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 56, .baseSpAttack = 75, .baseSpDefense = 85, - .type1 = TYPE_GRASS, - .type2 = TYPE_GROUND, + .types = { TYPE_GRASS, TYPE_GROUND}, .catchRate = 45, .expYield = 236, .evYield_Attack = 2, @@ -10705,8 +9846,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -10720,8 +9860,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 61, .baseSpAttack = 58, .baseSpDefense = 44, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 62, .evYield_Speed = 1, @@ -10729,8 +9868,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -10744,8 +9882,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 81, .baseSpAttack = 78, .baseSpDefense = 52, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIRE, TYPE_FIGHTING}, .catchRate = 45, .expYield = 142, .evYield_Speed = 1, @@ -10754,8 +9891,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -10769,8 +9905,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 108, .baseSpAttack = 104, .baseSpDefense = 71, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIRE, TYPE_FIGHTING}, .catchRate = 45, .expYield = 240, .evYield_Attack = 1, @@ -10780,8 +9915,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -10795,8 +9929,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 61, .baseSpDefense = 56, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 63, .evYield_SpAttack = 1, @@ -10804,8 +9937,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10819,8 +9951,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 81, .baseSpDefense = 76, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 142, .evYield_SpAttack = 2, @@ -10828,8 +9959,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10843,8 +9973,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 111, .baseSpDefense = 101, - .type1 = TYPE_WATER, - .type2 = TYPE_STEEL, + .types = { TYPE_WATER, TYPE_STEEL}, .catchRate = 45, .expYield = 239, .evYield_SpAttack = 3, @@ -10852,8 +9981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -10867,8 +9995,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 255, .expYield = 49, .evYield_Speed = 1, @@ -10876,8 +10003,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -10892,8 +10018,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 120, .expYield = 119, .evYield_Speed = 2, @@ -10901,8 +10026,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -10921,8 +10045,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 50, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 45, .expYield = 218, .evYield_Attack = 3, @@ -10930,8 +10053,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -10945,8 +10067,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 31, .baseSpAttack = 35, .baseSpDefense = 40, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 50, .evYield_HP = 1, @@ -10954,8 +10075,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -10970,8 +10090,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 71, .baseSpAttack = 55, .baseSpDefense = 60, - .type1 = TYPE_NORMAL, - .type2 = TYPE_WATER, + .types = { TYPE_NORMAL, TYPE_WATER}, .catchRate = 127, .expYield = 144, .evYield_Attack = 2, @@ -10979,8 +10098,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -10994,8 +10112,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 25, .baseSpDefense = 41, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 255, .expYield = 39, .evYield_Defense = 1, @@ -11004,8 +10121,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -11020,8 +10136,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 55, .baseSpDefense = 51, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 45, .expYield = 134, .evYield_Attack = 2, @@ -11030,8 +10145,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -11046,8 +10160,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 40, .baseSpDefense = 34, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 235, .expYield = 53, .evYield_Attack = 1, @@ -11055,8 +10168,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -11071,8 +10183,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 60, .baseSpDefense = 49, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 120, .expYield = 127, .evYield_Attack = 2, @@ -11080,8 +10191,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -11095,8 +10205,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 95, .baseSpDefense = 79, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 45, .expYield = 235, .evYield_Attack = 3, @@ -11104,8 +10213,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -11119,8 +10227,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 50, .baseSpDefense = 70, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON}, .catchRate = 255, .expYield = 56, .evYield_SpAttack = 1, @@ -11129,8 +10236,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -11148,8 +10254,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseDefense = 55, #endif - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON}, .catchRate = 75, .expYield = 232, .evYield_SpAttack = 3, @@ -11158,8 +10263,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -11173,8 +10277,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 58, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 45, .expYield = 70, .evYield_Attack = 1, @@ -11182,8 +10285,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -11197,8 +10299,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 58, .baseSpAttack = 65, .baseSpDefense = 50, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 45, .expYield = 173, .evYield_Attack = 2, @@ -11206,8 +10307,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -11221,8 +10321,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 42, .baseSpDefense = 88, - .type1 = TYPE_ROCK, - .type2 = TYPE_STEEL, + .types = { TYPE_ROCK, TYPE_STEEL}, .catchRate = 45, .expYield = 70, .evYield_Defense = 1, @@ -11230,8 +10329,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SOUNDPROOF}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -11245,8 +10343,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 47, .baseSpDefense = 138, - .type1 = TYPE_ROCK, - .type2 = TYPE_STEEL, + .types = { TYPE_ROCK, TYPE_STEEL}, .catchRate = 45, .expYield = 173, .evYield_Defense = 2, @@ -11254,8 +10351,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SOUNDPROOF}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -11271,8 +10367,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 36, .baseSpAttack = 79, .baseSpDefense = 105, - .type1 = TYPE_BUG, - .type2 = TYPE_GRASS, + .types = { TYPE_BUG, TYPE_GRASS}, .catchRate = 45, .expYield = 148, .evYield_SpDefense = 2, @@ -11281,8 +10376,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -11296,8 +10390,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 66, .baseSpAttack = 94, .baseSpDefense = 50, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 45, .expYield = 148, .evYield_Attack = 1, @@ -11307,8 +10400,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_TINTED_LENS}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -11322,8 +10414,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 30, .baseSpDefense = 42, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 120, .expYield = 49, .evYield_Speed = 1, @@ -11332,8 +10423,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HONEY_GATHER, ABILITY_NONE, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -11348,8 +10438,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 80, .baseSpDefense = 102, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 45, .expYield = 166, .evYield_Defense = 1, @@ -11359,8 +10448,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -11374,8 +10462,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 45, .baseSpDefense = 90, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 200, .expYield = 142, .evYield_Speed = 1, @@ -11383,8 +10470,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 100, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_RUN_AWAY, ABILITY_PICKUP, ABILITY_VOLT_ABSORB}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -11398,8 +10484,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 60, .baseSpDefense = 30, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 190, .expYield = 66, .evYield_Speed = 1, @@ -11407,8 +10492,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -11422,8 +10506,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 85, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 75, .expYield = 173, .evYield_Speed = 2, @@ -11431,8 +10514,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -11446,8 +10528,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 62, .baseSpDefense = 53, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 190, .expYield = 55, .evYield_SpAttack = 1, @@ -11456,8 +10537,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -11477,8 +10557,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 60, .baseSpDefense = 66, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 45, .expYield = 169, .evYield_Speed = 2, @@ -11486,8 +10565,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 100, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TECHNICIAN, ABILITY_PICKUP, ABILITY_SKILL_LINK}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -11501,8 +10579,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 60, .baseSpDefense = 44, - .type1 = TYPE_GHOST, - .type2 = TYPE_FLYING, + .types = { TYPE_GHOST, TYPE_FLYING}, .catchRate = 125, .expYield = 70, .evYield_HP = 1, @@ -11510,8 +10587,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_AFTERMATH, ABILITY_UNBURDEN, ABILITY_FLARE_BOOST}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -11525,8 +10601,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 90, .baseSpDefense = 54, - .type1 = TYPE_GHOST, - .type2 = TYPE_FLYING, + .types = { TYPE_GHOST, TYPE_FLYING}, .catchRate = 60, .expYield = 174, .evYield_HP = 2, @@ -11534,8 +10609,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_AFTERMATH, ABILITY_UNBURDEN, ABILITY_FLARE_BOOST}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -11549,8 +10623,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 44, .baseSpDefense = 56, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 190, .expYield = 70, .evYield_Speed = 1, @@ -11558,8 +10631,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_RUN_AWAY, ABILITY_KLUTZ, ABILITY_LIMBER}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -11573,8 +10645,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 54, .baseSpDefense = 96, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 60, .expYield = 168, .evYield_Speed = 2, @@ -11582,8 +10653,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 140, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_KLUTZ, ABILITY_LIMBER}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -11597,8 +10667,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 105, .baseSpDefense = 105, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 45, .expYield = 173, .evYield_SpAttack = 1, @@ -11607,8 +10676,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -11622,8 +10690,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 71, .baseSpAttack = 105, .baseSpDefense = 52, - .type1 = TYPE_DARK, - .type2 = TYPE_FLYING, + .types = { TYPE_DARK, TYPE_FLYING}, .catchRate = 30, .expYield = 177, .evYield_Attack = 2, @@ -11631,8 +10698,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_INSOMNIA, ABILITY_SUPER_LUCK, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -11646,8 +10712,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 42, .baseSpDefense = 37, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 190, .expYield = 62, .evYield_Speed = 1, @@ -11655,8 +10720,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIMBER, ABILITY_OWN_TEMPO, ABILITY_KEEN_EYE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -11670,8 +10734,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 112, .baseSpAttack = 64, .baseSpDefense = 59, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 75, .expYield = 158, .evYield_Speed = 2, @@ -11679,8 +10742,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -11694,8 +10756,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 65, .baseSpDefense = 50, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 120, .expYield = 57, .evYield_SpAttack = 1, @@ -11704,8 +10765,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -11719,8 +10779,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 74, .baseSpAttack = 41, .baseSpDefense = 41, - .type1 = TYPE_POISON, - .type2 = TYPE_DARK, + .types = { TYPE_POISON, TYPE_DARK}, .catchRate = 225, .expYield = 66, .evYield_Speed = 1, @@ -11728,8 +10787,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STENCH, ABILITY_AFTERMATH, ABILITY_KEEN_EYE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -11743,8 +10801,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 84, .baseSpAttack = 71, .baseSpDefense = 61, - .type1 = TYPE_POISON, - .type2 = TYPE_DARK, + .types = { TYPE_POISON, TYPE_DARK}, .catchRate = 60, .expYield = 168, .evYield_HP = 2, @@ -11752,8 +10809,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STENCH, ABILITY_AFTERMATH, ABILITY_KEEN_EYE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -11767,8 +10823,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 23, .baseSpAttack = 24, .baseSpDefense = 86, - .type1 = TYPE_STEEL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_STEEL, TYPE_PSYCHIC}, .catchRate = 255, .expYield = 60, .evYield_Defense = 1, @@ -11777,8 +10832,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_HEATPROOF, ABILITY_HEAVY_METAL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -11792,8 +10846,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 33, .baseSpAttack = 79, .baseSpDefense = 116, - .type1 = TYPE_STEEL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_STEEL, TYPE_PSYCHIC}, .catchRate = 90, .expYield = 175, .evYield_Defense = 1, @@ -11803,8 +10856,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_HEATPROOF, ABILITY_HEAVY_METAL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -11818,8 +10870,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 10, .baseSpAttack = 10, .baseSpDefense = 45, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 255, .expYield = 58, .evYield_Defense = 1, @@ -11827,8 +10878,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -11843,11 +10893,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 70, .baseSpDefense = 90, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, #else - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, #endif .catchRate = 145, .expYield = 62, @@ -11856,8 +10904,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -11871,8 +10918,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 15, .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 130, .expYield = 110, .evYield_HP = 1, @@ -11881,8 +10927,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 140, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_FRIEND_GUARD}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -11896,8 +10941,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 91, .baseSpAttack = 92, .baseSpDefense = 42, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 30, .expYield = 144, .evYield_Attack = 1, @@ -11906,8 +10950,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -11921,8 +10964,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 92, .baseSpDefense = 108, - .type1 = TYPE_GHOST, - .type2 = TYPE_DARK, + .types = { TYPE_GHOST, TYPE_DARK}, .catchRate = 100, .expYield = 170, .evYield_Defense = 1, @@ -11931,8 +10973,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -11946,8 +10987,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 42, .baseSpAttack = 40, .baseSpDefense = 45, - .type1 = TYPE_DRAGON, - .type2 = TYPE_GROUND, + .types = { TYPE_DRAGON, TYPE_GROUND}, .catchRate = 45, .expYield = 60, .evYield_Attack = 1, @@ -11955,8 +10995,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -11970,8 +11009,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 82, .baseSpAttack = 50, .baseSpDefense = 55, - .type1 = TYPE_DRAGON, - .type2 = TYPE_GROUND, + .types = { TYPE_DRAGON, TYPE_GROUND}, .catchRate = 45, .expYield = 144, .evYield_Attack = 2, @@ -11979,8 +11017,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -11994,8 +11031,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 102, .baseSpAttack = 80, .baseSpDefense = 85, - .type1 = TYPE_DRAGON, - .type2 = TYPE_GROUND, + .types = { TYPE_DRAGON, TYPE_GROUND}, .catchRate = 45, .expYield = 270, .evYield_Attack = 3, @@ -12003,8 +11039,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12018,8 +11053,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 5, .baseSpAttack = 40, .baseSpDefense = 85, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 50, .expYield = 78, .evYield_HP = 1, @@ -12029,8 +11063,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PICKUP, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -12044,8 +11077,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 35, .baseSpDefense = 40, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 75, .expYield = 57, .evYield_Attack = 1, @@ -12053,8 +11085,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12068,8 +11099,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 115, .baseSpDefense = 70, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_STEEL, + .types = { TYPE_FIGHTING, TYPE_STEEL}, .catchRate = 45, .expYield = 184, .evYield_Attack = 1, @@ -12078,8 +11108,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12093,8 +11122,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 32, .baseSpAttack = 38, .baseSpDefense = 42, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 140, .expYield = 66, .evYield_Defense = 1, @@ -12102,8 +11130,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -12118,8 +11145,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 47, .baseSpAttack = 68, .baseSpDefense = 72, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 60, .expYield = 184, .evYield_Defense = 2, @@ -12127,8 +11153,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -12143,8 +11168,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 30, .baseSpDefense = 55, - .type1 = TYPE_POISON, - .type2 = TYPE_BUG, + .types = { TYPE_POISON, TYPE_BUG}, .catchRate = 120, .expYield = 66, .evYield_Defense = 1, @@ -12153,8 +11177,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_SNIPER, ABILITY_KEEN_EYE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -12168,8 +11191,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 60, .baseSpDefense = 75, - .type1 = TYPE_POISON, - .type2 = TYPE_DARK, + .types = { TYPE_POISON, TYPE_DARK}, .catchRate = 45, .expYield = 175, .evYield_Defense = 2, @@ -12178,8 +11200,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_SNIPER, ABILITY_KEEN_EYE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -12193,8 +11214,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 61, .baseSpDefense = 40, - .type1 = TYPE_POISON, - .type2 = TYPE_FIGHTING, + .types = { TYPE_POISON, TYPE_FIGHTING}, .catchRate = 140, .expYield = 60, .evYield_Attack = 1, @@ -12203,8 +11223,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 100, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_ANTICIPATION, ABILITY_DRY_SKIN, ABILITY_POISON_TOUCH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12218,8 +11237,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 86, .baseSpDefense = 65, - .type1 = TYPE_POISON, - .type2 = TYPE_FIGHTING, + .types = { TYPE_POISON, TYPE_FIGHTING}, .catchRate = 75, .expYield = 172, .evYield_Attack = 2, @@ -12228,8 +11246,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_ANTICIPATION, ABILITY_DRY_SKIN, ABILITY_POISON_TOUCH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12243,8 +11260,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 46, .baseSpAttack = 90, .baseSpDefense = 72, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 200, .expYield = 159, .evYield_Attack = 2, @@ -12252,8 +11268,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -12267,8 +11282,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 66, .baseSpAttack = 49, .baseSpDefense = 61, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 190, .expYield = 66, .evYield_Speed = 1, @@ -12276,8 +11290,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_STORM_DRAIN, ABILITY_WATER_VEIL}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12291,8 +11304,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 91, .baseSpAttack = 69, .baseSpDefense = 86, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 75, .expYield = 161, .evYield_Speed = 2, @@ -12300,8 +11312,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_STORM_DRAIN, ABILITY_WATER_VEIL}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12315,8 +11326,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 120, - .type1 = TYPE_WATER, - .type2 = TYPE_FLYING, + .types = { TYPE_WATER, TYPE_FLYING}, .catchRate = 25, .expYield = 69, .evYield_SpDefense = 1, @@ -12324,8 +11334,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB, ABILITY_WATER_VEIL}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12339,8 +11348,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 62, .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_ICE, + .types = { TYPE_GRASS, TYPE_ICE}, .catchRate = 120, .expYield = 67, .evYield_Attack = 1, @@ -12349,8 +11357,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -12364,8 +11371,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 92, .baseSpDefense = 85, - .type1 = TYPE_GRASS, - .type2 = TYPE_ICE, + .types = { TYPE_GRASS, TYPE_ICE}, .catchRate = 60, .expYield = 173, .evYield_Attack = 1, @@ -12375,8 +11381,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -12390,8 +11395,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 125, .baseSpAttack = 45, .baseSpDefense = 85, - .type1 = TYPE_DARK, - .type2 = TYPE_ICE, + .types = { TYPE_DARK, TYPE_ICE}, .catchRate = 45, .expYield = 179, .evYield_Attack = 1, @@ -12401,8 +11405,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -12416,8 +11419,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 130, .baseSpDefense = 90, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_STEEL, + .types = { TYPE_ELECTRIC, TYPE_STEEL}, .catchRate = 30, .expYield = 241, .evYield_SpAttack = 3, @@ -12426,8 +11428,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -12441,8 +11442,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 80, .baseSpDefense = 95, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 30, .expYield = 180, .evYield_HP = 3, @@ -12451,8 +11451,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS, ABILITY_CLOUD_NINE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -12466,8 +11465,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 55, .baseSpDefense = 55, - .type1 = TYPE_GROUND, - .type2 = TYPE_ROCK, + .types = { TYPE_GROUND, TYPE_ROCK}, .catchRate = 30, .expYield = 241, .evYield_Attack = 3, @@ -12475,8 +11473,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_SOLID_ROCK, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -12490,8 +11487,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 110, .baseSpDefense = 50, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 30, .expYield = 187, .evYield_Defense = 2, @@ -12499,8 +11495,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12514,8 +11509,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 95, .baseSpDefense = 85, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 30, .expYield = 243, .evYield_Attack = 3, @@ -12524,8 +11518,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_MOTOR_DRIVE, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -12539,8 +11532,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 83, .baseSpAttack = 125, .baseSpDefense = 95, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 30, .expYield = 243, .evYield_SpAttack = 3, @@ -12549,8 +11541,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, @@ -12565,11 +11556,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 120, .baseSpDefense = 115, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_FAIRY, - .type2 = TYPE_FLYING, + .types = { TYPE_FAIRY, TYPE_FLYING}, #else - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, #endif .catchRate = 30, .expYield = 245, @@ -12579,8 +11568,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, @@ -12594,8 +11582,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 116, .baseSpDefense = 56, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 30, .expYield = 180, .evYield_Attack = 2, @@ -12604,8 +11591,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SPEED_BOOST, ABILITY_TINTED_LENS, ABILITY_FRISK}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -12619,8 +11605,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 60, .baseSpDefense = 65, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 184, .evYield_Defense = 2, @@ -12628,8 +11613,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_LEAF_GUARD, ABILITY_CHLOROPHYLL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -12643,8 +11627,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 130, .baseSpDefense = 95, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 45, .expYield = 184, .evYield_SpAttack = 2, @@ -12652,8 +11635,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_SNOW_CLOAK, ABILITY_ICE_BODY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12667,8 +11649,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 45, .baseSpDefense = 75, - .type1 = TYPE_GROUND, - .type2 = TYPE_FLYING, + .types = { TYPE_GROUND, TYPE_FLYING}, .catchRate = 30, .expYield = 179, .evYield_Defense = 2, @@ -12676,8 +11657,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL, ABILITY_POISON_HEAL}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -12691,8 +11671,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 70, .baseSpDefense = 60, - .type1 = TYPE_ICE, - .type2 = TYPE_GROUND, + .types = { TYPE_ICE, TYPE_GROUND}, .catchRate = 50, .expYield = 239, .evYield_Attack = 3, @@ -12700,8 +11679,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -12715,8 +11693,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 135, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 30, .expYield = 241, .evYield_SpAttack = 3, @@ -12724,8 +11701,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ADAPTABILITY, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -12739,8 +11715,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 65, .baseSpDefense = 115, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FIGHTING, + .types = { TYPE_PSYCHIC, TYPE_FIGHTING}, .catchRate = 45, .expYield = 233, .evYield_Attack = 3, @@ -12749,11 +11724,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .friendship = 35, .growthRate = GROWTH_SLOW, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS}, #else - .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #endif - .eggGroup2 = EGG_GROUP_AMORPHOUS, .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -12767,8 +11741,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 75, .baseSpDefense = 150, - .type1 = TYPE_ROCK, - .type2 = TYPE_STEEL, + .types = { TYPE_ROCK, TYPE_STEEL}, .catchRate = 60, .expYield = 184, .evYield_Defense = 1, @@ -12778,8 +11751,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_MAGNET_PULL, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -12793,8 +11765,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 65, .baseSpDefense = 135, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 45, .expYield = 236, .evYield_Defense = 1, @@ -12804,8 +11775,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FRISK}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -12819,8 +11789,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 80, .baseSpDefense = 70, - .type1 = TYPE_ICE, - .type2 = TYPE_GHOST, + .types = { TYPE_ICE, TYPE_GHOST}, .catchRate = 75, .expYield = 168, .evYield_Speed = 2, @@ -12828,8 +11797,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_CURSED_BODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -12843,8 +11811,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 91, .baseSpAttack = 95, .baseSpDefense = 77, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_GHOST, + .types = { TYPE_ELECTRIC, TYPE_GHOST}, .catchRate = 45, .expYield = 154, .evYield_Speed = 1, @@ -12853,8 +11820,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -12868,8 +11834,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 75, .baseSpDefense = 130, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 261, .evYield_Defense = 2, @@ -12878,8 +11843,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 140, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -12894,8 +11858,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 105, .baseSpDefense = 105, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 261, .evYield_Attack = 1, @@ -12905,8 +11868,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 140, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -12921,8 +11883,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 125, .baseSpDefense = 70, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 261, .evYield_Attack = 2, @@ -12931,8 +11892,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 140, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -12947,8 +11907,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 100, - .type1 = TYPE_STEEL, - .type2 = TYPE_DRAGON, + .types = { TYPE_STEEL, TYPE_DRAGON}, .catchRate = 3, .expYield = 306, .evYield_SpAttack = 3, @@ -12956,8 +11915,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -12972,8 +11930,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 150, .baseSpDefense = 120, - .type1 = TYPE_WATER, - .type2 = TYPE_DRAGON, + .types = { TYPE_WATER, TYPE_DRAGON}, .catchRate = 3, .expYield = 306, .evYield_SpAttack = 3, @@ -12981,8 +11938,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -12997,8 +11953,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 77, .baseSpAttack = 130, .baseSpDefense = 106, - .type1 = TYPE_FIRE, - .type2 = TYPE_STEEL, + .types = { TYPE_FIRE, TYPE_STEEL}, .catchRate = 3, .expYield = 270, .evYield_SpAttack = 3, @@ -13006,8 +11961,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_FLAME_BODY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -13022,8 +11976,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 80, .baseSpDefense = 110, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 3, .expYield = 302, .evYield_Attack = 3, @@ -13031,8 +11984,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SLOW_START, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -13047,8 +11999,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 100, .baseSpDefense = 120, - .type1 = TYPE_GHOST, - .type2 = TYPE_DRAGON, + .types = { TYPE_GHOST, TYPE_DRAGON}, .catchRate = 3, .expYield = 306, .evYield_HP = 3, @@ -13056,8 +12007,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -13072,8 +12022,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 75, .baseSpDefense = 130, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 270, .evYield_SpDefense = 3, @@ -13081,8 +12030,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -13097,8 +12045,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 80, .baseSpDefense = 80, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 30, .expYield = 216, .evYield_HP = 1, @@ -13106,8 +12053,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HYDRATION, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -13122,8 +12068,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 3, .expYield = 270, .evYield_HP = 3, @@ -13131,8 +12076,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HYDRATION, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -13147,8 +12091,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 125, .baseSpAttack = 135, .baseSpDefense = 90, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 3, .expYield = 270, .evYield_Speed = 1, @@ -13157,8 +12100,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BAD_DREAMS, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -13173,8 +12115,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 270, .evYield_HP = 3, @@ -13184,8 +12125,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -13200,8 +12140,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 120, .baseSpAttack = 120, .baseSpDefense = 120, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 3, .expYield = 324, .evYield_HP = 3, @@ -13209,8 +12148,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_MULTITYPE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -13227,8 +12165,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FIRE, + .types = { TYPE_PSYCHIC, TYPE_FIRE}, .catchRate = 3, .expYield = 270, .evYield_HP = 3, @@ -13236,8 +12173,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_VICTORY_STAR, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -13252,8 +12188,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 63, .baseSpAttack = 45, .baseSpDefense = 55, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 62, .evYield_Speed = 1, @@ -13261,8 +12196,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -13276,8 +12210,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 83, .baseSpAttack = 60, .baseSpDefense = 75, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 145, .evYield_Speed = 2, @@ -13285,8 +12218,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -13300,8 +12232,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 113, .baseSpAttack = 75, .baseSpDefense = 95, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 238, .evYield_Speed = 3, @@ -13309,8 +12240,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -13324,8 +12254,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 45, .baseSpDefense = 45, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 62, .evYield_HP = 1, @@ -13333,8 +12262,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -13348,8 +12276,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 70, .baseSpDefense = 55, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIRE, TYPE_FIGHTING}, .catchRate = 45, .expYield = 146, .evYield_Attack = 2, @@ -13357,8 +12284,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -13372,8 +12298,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 100, .baseSpDefense = 65, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIRE, TYPE_FIGHTING}, .catchRate = 45, .expYield = 238, .evYield_Attack = 3, @@ -13381,8 +12306,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, @@ -13396,8 +12320,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 63, .baseSpDefense = 45, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 62, .evYield_SpAttack = 1, @@ -13405,8 +12328,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -13420,8 +12342,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 83, .baseSpDefense = 60, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 145, .evYield_SpAttack = 2, @@ -13429,8 +12350,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -13444,8 +12364,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 108, .baseSpDefense = 70, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 238, .evYield_SpAttack = 3, @@ -13453,8 +12372,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -13468,8 +12386,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 42, .baseSpAttack = 35, .baseSpDefense = 39, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 51, .evYield_Attack = 1, @@ -13477,8 +12394,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -13492,8 +12408,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 77, .baseSpAttack = 60, .baseSpDefense = 69, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 147, .evYield_Attack = 2, @@ -13501,8 +12416,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUMINATE, ABILITY_KEEN_EYE, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -13516,8 +12430,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 25, .baseSpDefense = 45, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 55, .evYield_Attack = 1, @@ -13525,8 +12438,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_PICKUP, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -13540,8 +12452,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 35, .baseSpDefense = 65, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 120, .expYield = 130, .evYield_Attack = 2, @@ -13549,8 +12460,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_SAND_RUSH, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -13568,8 +12478,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 100, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 45, .expYield = 225, .evYield_Attack = 3, @@ -13577,8 +12486,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_SAND_RUSH, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -13592,8 +12500,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 66, .baseSpAttack = 50, .baseSpDefense = 37, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 255, .expYield = 56, .evYield_Speed = 1, @@ -13601,8 +12508,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -13616,8 +12522,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 106, .baseSpAttack = 88, .baseSpDefense = 50, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 90, .expYield = 156, .evYield_Speed = 2, @@ -13625,8 +12530,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -13640,8 +12544,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 64, .baseSpAttack = 53, .baseSpDefense = 48, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 190, .expYield = 63, .evYield_Speed = 1, @@ -13649,8 +12552,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_OVERGROW}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -13664,8 +12566,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 101, .baseSpAttack = 98, .baseSpDefense = 63, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 75, .expYield = 174, .evYield_Speed = 2, @@ -13673,8 +12574,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_OVERGROW}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -13688,8 +12588,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 64, .baseSpAttack = 53, .baseSpDefense = 48, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 190, .expYield = 63, .evYield_Speed = 1, @@ -13697,8 +12596,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_BLAZE}, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, @@ -13712,8 +12610,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 101, .baseSpAttack = 98, .baseSpDefense = 63, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 75, .expYield = 174, .evYield_Speed = 2, @@ -13721,8 +12618,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_BLAZE}, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, @@ -13736,8 +12632,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 64, .baseSpAttack = 53, .baseSpDefense = 48, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 190, .expYield = 63, .evYield_Speed = 1, @@ -13745,8 +12640,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_TORRENT}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -13760,8 +12654,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 101, .baseSpAttack = 98, .baseSpDefense = 63, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 75, .expYield = 174, .evYield_Speed = 2, @@ -13769,8 +12662,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_TORRENT}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -13784,8 +12676,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 24, .baseSpAttack = 67, .baseSpDefense = 55, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 190, .expYield = 58, .evYield_HP = 1, @@ -13793,8 +12684,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FOREWARN, ABILITY_SYNCHRONIZE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -13808,8 +12698,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 29, .baseSpAttack = 107, .baseSpDefense = 95, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 75, .expYield = 170, .evYield_HP = 2, @@ -13817,8 +12706,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FOREWARN, ABILITY_SYNCHRONIZE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -13832,8 +12720,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 43, .baseSpAttack = 36, .baseSpDefense = 30, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 255, .expYield = 53, .evYield_Attack = 1, @@ -13841,8 +12728,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -13856,8 +12742,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 50, .baseSpDefense = 42, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 120, .expYield = 125, .evYield_Attack = 2, @@ -13865,8 +12750,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -13884,8 +12768,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 105, #endif - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 45, .expYield = 220, .evYield_Attack = 3, @@ -13893,8 +12776,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -13909,8 +12791,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 76, .baseSpAttack = 50, .baseSpDefense = 32, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 190, .expYield = 59, .evYield_Speed = 1, @@ -13918,8 +12799,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_MOTOR_DRIVE, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -13933,8 +12813,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 116, .baseSpAttack = 80, .baseSpDefense = 63, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 75, .expYield = 174, .evYield_Speed = 2, @@ -13942,8 +12821,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_MOTOR_DRIVE, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -13957,8 +12835,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 25, .baseSpDefense = 25, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 255, .expYield = 56, .evYield_Defense = 1, @@ -13968,8 +12845,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -13983,8 +12859,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 50, .baseSpDefense = 40, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 120, .expYield = 137, .evYield_Attack = 1, @@ -13995,8 +12870,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -14014,8 +12888,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 70, #endif - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 45, .expYield = 232, .evYield_Attack = 3, @@ -14025,8 +12898,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_SAND_STREAM, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -14044,8 +12916,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseHP = 55, #endif - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FLYING, + .types = { TYPE_PSYCHIC, TYPE_FLYING}, .catchRate = 190, .expYield = 65, .evYield_Speed = 1, @@ -14053,8 +12924,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FLYING}, .abilities = {ABILITY_UNAWARE, ABILITY_KLUTZ, ABILITY_SIMPLE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -14068,8 +12938,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 114, .baseSpAttack = 77, .baseSpDefense = 55, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FLYING, + .types = { TYPE_PSYCHIC, TYPE_FLYING}, .catchRate = 45, .expYield = 149, .evYield_Speed = 2, @@ -14077,8 +12946,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FLYING}, .abilities = {ABILITY_UNAWARE, ABILITY_KLUTZ, ABILITY_SIMPLE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -14092,8 +12960,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 68, .baseSpAttack = 30, .baseSpDefense = 45, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 120, .expYield = 66, .evYield_Attack = 1, @@ -14101,8 +12968,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_RUSH, ABILITY_SAND_FORCE, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -14116,8 +12982,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 88, .baseSpAttack = 50, .baseSpDefense = 65, - .type1 = TYPE_GROUND, - .type2 = TYPE_STEEL, + .types = { TYPE_GROUND, TYPE_STEEL}, .catchRate = 60, .expYield = 178, .evYield_Attack = 2, @@ -14125,8 +12990,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_RUSH, ABILITY_SAND_FORCE, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -14140,8 +13004,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 86, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 390, .evYield_HP = 2, @@ -14151,8 +13014,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_REGENERATOR, ABILITY_KLUTZ}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -14166,8 +13028,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 25, .baseSpDefense = 35, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 180, .expYield = 61, .evYield_Attack = 1, @@ -14175,8 +13036,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -14190,8 +13050,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 90, .expYield = 142, .evYield_Attack = 2, @@ -14199,8 +13058,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -14214,8 +13072,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 55, .baseSpDefense = 65, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 227, .evYield_Attack = 3, @@ -14223,8 +13080,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -14238,8 +13094,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 64, .baseSpAttack = 50, .baseSpDefense = 40, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 255, .expYield = 59, .evYield_Speed = 1, @@ -14247,8 +13102,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_HYDRATION, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -14262,8 +13116,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 69, .baseSpAttack = 65, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND}, .catchRate = 120, .expYield = 134, .evYield_HP = 2, @@ -14271,8 +13124,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_HYDRATION, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -14290,8 +13142,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 85, #endif - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND}, .catchRate = 45, .expYield = 229, .evYield_HP = 3, @@ -14299,8 +13150,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_POISON_TOUCH, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -14314,8 +13164,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 30, .baseSpDefense = 85, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 163, .evYield_HP = 2, @@ -14324,8 +13173,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_GUTS, ABILITY_INNER_FOCUS, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -14339,8 +13187,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 30, .baseSpDefense = 75, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 163, .evYield_Attack = 2, @@ -14349,8 +13196,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_STURDY, ABILITY_INNER_FOCUS, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -14364,8 +13210,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 42, .baseSpAttack = 40, .baseSpDefense = 60, - .type1 = TYPE_BUG, - .type2 = TYPE_GRASS, + .types = { TYPE_BUG, TYPE_GRASS}, .catchRate = 255, .expYield = 62, .evYield_Defense = 1, @@ -14374,8 +13219,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -14389,8 +13233,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 42, .baseSpAttack = 50, .baseSpDefense = 80, - .type1 = TYPE_BUG, - .type2 = TYPE_GRASS, + .types = { TYPE_BUG, TYPE_GRASS}, .catchRate = 120, .expYield = 133, .evYield_Defense = 2, @@ -14399,8 +13242,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -14418,8 +13260,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 70, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_GRASS, + .types = { TYPE_BUG, TYPE_GRASS}, .catchRate = 45, .expYield = 225, .evYield_Attack = 3, @@ -14428,8 +13269,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -14443,8 +13283,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 57, .baseSpAttack = 30, .baseSpDefense = 39, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON}, .catchRate = 255, .expYield = 52, .evYield_Defense = 1, @@ -14453,8 +13292,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #if P_UPDATED_ABILITIES >= GEN_6 .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST}, #else @@ -14472,8 +13310,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 47, .baseSpAttack = 40, .baseSpDefense = 79, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON}, .catchRate = 120, .expYield = 126, .evYield_Defense = 2, @@ -14482,8 +13319,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #if P_UPDATED_ABILITIES >= GEN_6 .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST}, #else @@ -14505,8 +13341,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 90, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON}, .catchRate = 45, .expYield = 218, .evYield_Speed = 3, @@ -14515,8 +13350,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, #if P_UPDATED_ABILITIES >= GEN_6 .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST}, #else @@ -14535,11 +13369,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 37, .baseSpDefense = 50, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_GRASS, - .type2 = TYPE_FAIRY, + .types = { TYPE_GRASS, TYPE_FAIRY}, #else - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, #endif .catchRate = 190, .expYield = 56, @@ -14549,8 +13381,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_FAIRY}, .abilities = {ABILITY_PRANKSTER, ABILITY_INFILTRATOR, ABILITY_CHLOROPHYLL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -14565,11 +13396,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 77, .baseSpDefense = 75, #if P_UPDATED_TYPES >= GEN_6 - .type1 = TYPE_GRASS, - .type2 = TYPE_FAIRY, + .types = { TYPE_GRASS, TYPE_FAIRY}, #else - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, #endif .catchRate = 75, .expYield = 168, @@ -14579,8 +13408,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_FAIRY}, .abilities = {ABILITY_PRANKSTER, ABILITY_INFILTRATOR, ABILITY_CHLOROPHYLL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -14594,8 +13422,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 70, .baseSpDefense = 50, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 190, .expYield = 56, .evYield_SpAttack = 1, @@ -14604,8 +13431,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -14619,8 +13445,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 110, .baseSpDefense = 75, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 75, .expYield = 168, .evYield_SpAttack = 2, @@ -14629,8 +13454,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -14644,8 +13468,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 98, .baseSpAttack = 80, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 25, .expYield = 161, .evYield_Speed = 2, @@ -14654,8 +13477,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_RECKLESS, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -14669,8 +13491,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_GROUND, - .type2 = TYPE_DARK, + .types = { TYPE_GROUND, TYPE_DARK}, .catchRate = 180, .expYield = 58, .evYield_Attack = 1, @@ -14679,8 +13500,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -14694,8 +13514,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 74, .baseSpAttack = 45, .baseSpDefense = 45, - .type1 = TYPE_GROUND, - .type2 = TYPE_DARK, + .types = { TYPE_GROUND, TYPE_DARK}, .catchRate = 90, .expYield = 123, .evYield_Attack = 2, @@ -14704,8 +13523,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -14723,8 +13541,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseDefense = 70, #endif - .type1 = TYPE_GROUND, - .type2 = TYPE_DARK, + .types = { TYPE_GROUND, TYPE_DARK}, .catchRate = 45, .expYield = 234, .evYield_Attack = 3, @@ -14733,8 +13550,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -14748,8 +13564,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 15, .baseSpDefense = 45, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 120, .expYield = 63, .evYield_Attack = 1, @@ -14757,8 +13572,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -14772,8 +13586,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 30, .baseSpDefense = 55, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 60, .expYield = 168, .evYield_Attack = 2, @@ -14781,8 +13594,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -14796,8 +13608,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 106, .baseSpDefense = 67, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 255, .expYield = 161, .evYield_SpAttack = 2, @@ -14806,8 +13617,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_CHLOROPHYLL, ABILITY_STORM_DRAIN}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -14821,8 +13631,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_BUG, - .type2 = TYPE_ROCK, + .types = { TYPE_BUG, TYPE_ROCK}, .catchRate = 190, .expYield = 65, .evYield_Defense = 1, @@ -14831,8 +13640,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -14850,8 +13658,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 95, #endif - .type1 = TYPE_BUG, - .type2 = TYPE_ROCK, + .types = { TYPE_BUG, TYPE_ROCK}, .catchRate = 75, .expYield = 170, .evYield_Defense = 2, @@ -14860,8 +13667,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STURDY, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -14875,8 +13681,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 48, .baseSpAttack = 35, .baseSpDefense = 70, - .type1 = TYPE_DARK, - .type2 = TYPE_FIGHTING, + .types = { TYPE_DARK, TYPE_FIGHTING}, .catchRate = 180, .expYield = 70, .evYield_Attack = 1, @@ -14885,8 +13690,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 35, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHED_SKIN, ABILITY_MOXIE, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -14900,8 +13704,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 58, .baseSpAttack = 45, .baseSpDefense = 115, - .type1 = TYPE_DARK, - .type2 = TYPE_FIGHTING, + .types = { TYPE_DARK, TYPE_FIGHTING}, .catchRate = 90, .expYield = 171, .evYield_Defense = 1, @@ -14911,8 +13714,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHED_SKIN, ABILITY_MOXIE, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -14926,8 +13728,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 103, .baseSpDefense = 80, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FLYING, + .types = { TYPE_PSYCHIC, TYPE_FLYING}, .catchRate = 45, .expYield = 172, .evYield_SpAttack = 2, @@ -14935,8 +13736,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_WONDER_SKIN, ABILITY_MAGIC_GUARD, ABILITY_TINTED_LENS}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -14950,8 +13750,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 55, .baseSpDefense = 65, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 190, .expYield = 61, .evYield_Defense = 1, @@ -14960,8 +13759,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MUMMY, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -14975,8 +13773,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 95, .baseSpDefense = 105, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 90, .expYield = 169, .evYield_Defense = 2, @@ -14985,8 +13782,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MUMMY, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -15000,8 +13796,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 22, .baseSpAttack = 53, .baseSpDefense = 45, - .type1 = TYPE_WATER, - .type2 = TYPE_ROCK, + .types = { TYPE_WATER, TYPE_ROCK}, .catchRate = 45, .expYield = 71, .evYield_Defense = 1, @@ -15009,8 +13804,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SOLID_ROCK, ABILITY_STURDY, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -15024,8 +13818,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 32, .baseSpAttack = 83, .baseSpDefense = 65, - .type1 = TYPE_WATER, - .type2 = TYPE_ROCK, + .types = { TYPE_WATER, TYPE_ROCK}, .catchRate = 45, .expYield = 173, .evYield_Defense = 2, @@ -15033,8 +13826,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_SOLID_ROCK, ABILITY_STURDY, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -15048,8 +13840,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 74, .baseSpDefense = 45, - .type1 = TYPE_ROCK, - .type2 = TYPE_FLYING, + .types = { TYPE_ROCK, TYPE_FLYING}, .catchRate = 45, .expYield = 71, .evYield_Attack = 1, @@ -15057,8 +13848,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_3}, .abilities = {ABILITY_DEFEATIST, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -15072,8 +13862,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 112, .baseSpDefense = 65, - .type1 = TYPE_ROCK, - .type2 = TYPE_FLYING, + .types = { TYPE_ROCK, TYPE_FLYING}, .catchRate = 45, .expYield = 177, .evYield_Attack = 2, @@ -15081,8 +13870,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_3}, .abilities = {ABILITY_DEFEATIST, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -15096,8 +13884,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 40, .baseSpDefense = 62, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON}, .catchRate = 190, .expYield = 66, .evYield_Speed = 1, @@ -15106,8 +13893,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_AFTERMATH}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -15121,8 +13907,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 60, .baseSpDefense = 82, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON}, .catchRate = 60, .expYield = 166, .evYield_Attack = 2, @@ -15132,8 +13917,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -15147,8 +13931,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 80, .baseSpDefense = 40, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 75, .expYield = 66, .evYield_SpAttack = 1, @@ -15156,8 +13939,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -15171,8 +13953,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 120, .baseSpDefense = 60, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 45, .expYield = 179, .evYield_SpAttack = 2, @@ -15180,8 +13961,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -15195,8 +13975,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 60, .evYield_Speed = 1, @@ -15204,8 +13983,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_TECHNICIAN, ABILITY_SKILL_LINK}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -15219,8 +13997,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 65, .baseSpDefense = 60, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 60, .expYield = 165, .evYield_Speed = 2, @@ -15228,8 +14005,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_TECHNICIAN, ABILITY_SKILL_LINK}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -15243,8 +14019,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 55, .baseSpDefense = 65, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 200, .expYield = 58, .evYield_SpDefense = 1, @@ -15252,8 +14027,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -15267,8 +14041,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 75, .baseSpDefense = 85, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 100, .expYield = 137, .evYield_SpDefense = 2, @@ -15276,8 +14049,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -15291,8 +14063,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 95, .baseSpDefense = 110, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 50, .expYield = 221, .evYield_SpDefense = 3, @@ -15300,8 +14071,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -15315,8 +14085,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 105, .baseSpDefense = 50, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 200, .expYield = 58, .evYield_SpAttack = 1, @@ -15324,8 +14093,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -15339,8 +14107,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 125, .baseSpDefense = 60, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 100, .expYield = 130, .evYield_SpAttack = 2, @@ -15348,8 +14115,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -15363,8 +14129,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 125, .baseSpDefense = 85, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 50, .expYield = 221, .evYield_SpAttack = 3, @@ -15372,8 +14137,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -15387,8 +14151,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 44, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_FLYING, + .types = { TYPE_WATER, TYPE_FLYING}, .catchRate = 190, .expYield = 61, .evYield_HP = 1, @@ -15396,8 +14159,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_BIG_PECKS, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -15411,8 +14173,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 98, .baseSpAttack = 87, .baseSpDefense = 63, - .type1 = TYPE_WATER, - .type2 = TYPE_FLYING, + .types = { TYPE_WATER, TYPE_FLYING}, .catchRate = 45, .expYield = 166, .evYield_Speed = 2, @@ -15420,8 +14181,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_BIG_PECKS, ABILITY_HYDRATION}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15435,8 +14195,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 44, .baseSpAttack = 65, .baseSpDefense = 60, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 255, .expYield = 61, .evYield_SpAttack = 1, @@ -15445,8 +14204,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15460,8 +14218,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 59, .baseSpAttack = 80, .baseSpDefense = 75, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 120, .expYield = 138, .evYield_SpAttack = 2, @@ -15470,8 +14227,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15485,8 +14241,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 79, .baseSpAttack = 110, .baseSpDefense = 95, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 45, .expYield = 241, .evYield_SpAttack = 3, @@ -15495,8 +14250,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_WARNING, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15514,8 +14268,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 103, .baseSpAttack = 75, .baseSpDefense = 60, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_FLYING, + .types = { TYPE_ELECTRIC, TYPE_FLYING}, .catchRate = 200, .expYield = 150, .evYield_Speed = 2, @@ -15523,8 +14276,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_MOTOR_DRIVE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15538,8 +14290,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 40, .baseSpDefense = 45, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 200, .expYield = 63, .evYield_Attack = 1, @@ -15547,8 +14298,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_SHED_SKIN, ABILITY_NO_GUARD}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -15562,8 +14312,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 60, .baseSpDefense = 105, - .type1 = TYPE_BUG, - .type2 = TYPE_STEEL, + .types = { TYPE_BUG, TYPE_STEEL}, .catchRate = 75, .expYield = 173, .evYield_Attack = 2, @@ -15571,8 +14320,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_SHELL_ARMOR, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -15586,8 +14334,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 55, .baseSpDefense = 55, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON}, .catchRate = 190, .expYield = 59, .evYield_HP = 1, @@ -15597,8 +14344,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15612,8 +14358,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 85, .baseSpDefense = 80, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON}, .catchRate = 75, .expYield = 162, .evYield_HP = 2, @@ -15623,8 +14368,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, @@ -15638,8 +14382,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 65, .baseSpDefense = 85, - .type1 = TYPE_WATER, - .type2 = TYPE_GHOST, + .types = { TYPE_WATER, TYPE_GHOST}, .catchRate = 190, .expYield = 67, .evYield_SpDefense = 1, @@ -15647,8 +14390,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15663,8 +14405,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 85, .baseSpDefense = 105, - .type1 = TYPE_WATER, - .type2 = TYPE_GHOST, + .types = { TYPE_WATER, TYPE_GHOST}, .catchRate = 60, .expYield = 168, .evYield_SpDefense = 2, @@ -15672,8 +14413,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15688,8 +14428,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 40, .baseSpDefense = 45, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 75, .expYield = 165, .evYield_HP = 2, @@ -15697,8 +14436,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_HEALER, ABILITY_HYDRATION, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -15712,8 +14450,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 57, .baseSpDefense = 50, - .type1 = TYPE_BUG, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_BUG, TYPE_ELECTRIC}, .catchRate = 190, .expYield = 64, .evYield_Speed = 1, @@ -15721,8 +14458,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_UNNERVE, ABILITY_SWARM}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -15736,8 +14472,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 108, .baseSpAttack = 97, .baseSpDefense = 60, - .type1 = TYPE_BUG, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_BUG, TYPE_ELECTRIC}, .catchRate = 75, .expYield = 165, .evYield_Speed = 2, @@ -15745,8 +14480,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_COMPOUND_EYES, ABILITY_UNNERVE, ABILITY_SWARM}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -15760,8 +14494,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 10, .baseSpAttack = 24, .baseSpDefense = 86, - .type1 = TYPE_GRASS, - .type2 = TYPE_STEEL, + .types = { TYPE_GRASS, TYPE_STEEL}, .catchRate = 255, .expYield = 61, .evYield_Defense = 1, @@ -15770,8 +14503,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_MINERAL}, .abilities = {ABILITY_IRON_BARBS, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -15785,8 +14517,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 54, .baseSpDefense = 116, - .type1 = TYPE_GRASS, - .type2 = TYPE_STEEL, + .types = { TYPE_GRASS, TYPE_STEEL}, .catchRate = 90, .expYield = 171, .evYield_Defense = 2, @@ -15795,8 +14526,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_MINERAL}, .abilities = {ABILITY_IRON_BARBS, ABILITY_NONE, ABILITY_ANTICIPATION}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -15810,8 +14540,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 45, .baseSpDefense = 60, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 130, .expYield = 60, .evYield_Defense = 1, @@ -15819,8 +14548,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -15834,8 +14562,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 70, .baseSpDefense = 85, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 60, .expYield = 154, .evYield_Defense = 2, @@ -15843,8 +14570,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -15858,8 +14584,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 70, .baseSpDefense = 85, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 30, .expYield = 234, .evYield_Defense = 3, @@ -15867,8 +14592,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -15882,8 +14606,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 45, .baseSpDefense = 40, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 190, .expYield = 55, .evYield_Speed = 1, @@ -15891,8 +14614,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -15906,8 +14628,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 75, .baseSpDefense = 70, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 60, .expYield = 142, .evYield_Attack = 2, @@ -15915,8 +14636,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -15930,8 +14650,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 105, .baseSpDefense = 80, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 30, .expYield = 232, .evYield_Attack = 3, @@ -15939,8 +14658,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -15954,8 +14672,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 85, .baseSpDefense = 55, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 255, .expYield = 67, .evYield_SpAttack = 1, @@ -15963,8 +14680,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_TELEPATHY, ABILITY_SYNCHRONIZE, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -15978,8 +14694,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 125, .baseSpDefense = 95, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 90, .expYield = 170, .evYield_SpAttack = 2, @@ -15987,8 +14702,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_TELEPATHY, ABILITY_SYNCHRONIZE, ABILITY_ANALYTIC}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -16002,8 +14716,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 65, .baseSpDefense = 55, - .type1 = TYPE_GHOST, - .type2 = TYPE_FIRE, + .types = { TYPE_GHOST, TYPE_FIRE}, .catchRate = 190, .expYield = 55, .evYield_SpAttack = 1, @@ -16011,8 +14724,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #if P_UPDATED_ABILITIES >= GEN_6 .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR}, #else @@ -16030,8 +14742,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 95, .baseSpDefense = 60, - .type1 = TYPE_GHOST, - .type2 = TYPE_FIRE, + .types = { TYPE_GHOST, TYPE_FIRE}, .catchRate = 90, .expYield = 130, .evYield_SpAttack = 2, @@ -16039,8 +14750,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #if P_UPDATED_ABILITIES >= GEN_6 .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR}, #else @@ -16058,8 +14768,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 145, .baseSpDefense = 90, - .type1 = TYPE_GHOST, - .type2 = TYPE_FIRE, + .types = { TYPE_GHOST, TYPE_FIRE}, .catchRate = 45, .expYield = 234, .evYield_SpAttack = 3, @@ -16067,8 +14776,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, #if P_UPDATED_ABILITIES >= GEN_6 .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR}, #else @@ -16086,8 +14794,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 57, .baseSpAttack = 30, .baseSpDefense = 40, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 75, .expYield = 64, .evYield_Attack = 1, @@ -16095,8 +14802,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -16110,8 +14816,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 67, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 60, .expYield = 144, .evYield_Attack = 2, @@ -16119,8 +14824,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -16134,8 +14838,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 60, .baseSpDefense = 70, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 45, .expYield = 243, .evYield_Attack = 3, @@ -16143,8 +14846,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -16158,8 +14860,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 60, .baseSpDefense = 40, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 120, .expYield = 61, .evYield_Attack = 1, @@ -16167,8 +14868,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -16186,8 +14886,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseAttack = 110, #endif - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 60, .expYield = 177, .evYield_Attack = 2, @@ -16195,8 +14894,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -16215,8 +14913,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseHP = 70, .baseDefense = 30, #endif - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 25, .expYield = 180, .evYield_SpDefense = 2, @@ -16225,8 +14922,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -16240,8 +14936,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 40, .baseSpDefense = 65, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 200, .expYield = 61, .evYield_Defense = 1, @@ -16249,8 +14944,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYDRATION, ABILITY_SHELL_ARMOR, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -16264,8 +14958,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 145, .baseSpAttack = 100, .baseSpDefense = 60, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 75, .expYield = 173, .evYield_Speed = 2, @@ -16273,8 +14966,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_HYDRATION, ABILITY_STICKY_HOLD, ABILITY_UNBURDEN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -16288,8 +14980,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 32, .baseSpAttack = 81, .baseSpDefense = 99, - .type1 = TYPE_GROUND, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_GROUND, TYPE_ELECTRIC}, .catchRate = 75, .expYield = 165, .evYield_HP = 2, @@ -16298,8 +14989,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_STATIC, ABILITY_LIMBER, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -16313,8 +15003,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 55, .baseSpDefense = 50, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 180, .expYield = 70, .evYield_Attack = 1, @@ -16322,8 +15011,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_REGENERATOR, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -16337,8 +15025,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 95, .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 179, .evYield_Attack = 2, @@ -16346,8 +15033,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_REGENERATOR, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -16361,8 +15047,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 48, .baseSpAttack = 60, .baseSpDefense = 90, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 45, .expYield = 170, .evYield_Attack = 2, @@ -16371,8 +15056,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MONSTER}, .abilities = {ABILITY_ROUGH_SKIN, ABILITY_SHEER_FORCE, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -16386,8 +15070,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 35, .baseSpDefense = 50, - .type1 = TYPE_GROUND, - .type2 = TYPE_GHOST, + .types = { TYPE_GROUND, TYPE_GHOST}, .catchRate = 190, .expYield = 61, .evYield_Attack = 1, @@ -16396,8 +15079,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_IRON_FIST, ABILITY_KLUTZ, ABILITY_NO_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -16411,8 +15093,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 55, .baseSpDefense = 80, - .type1 = TYPE_GROUND, - .type2 = TYPE_GHOST, + .types = { TYPE_GROUND, TYPE_GHOST}, .catchRate = 90, .expYield = 169, .evYield_Attack = 2, @@ -16421,8 +15102,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_IRON_FIST, ABILITY_KLUTZ, ABILITY_NO_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -16436,8 +15116,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_DARK, - .type2 = TYPE_STEEL, + .types = { TYPE_DARK, TYPE_STEEL}, .catchRate = 120, .expYield = 68, .evYield_Attack = 1, @@ -16445,8 +15124,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_DEFIANT, ABILITY_INNER_FOCUS, ABILITY_PRESSURE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -16460,8 +15138,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 60, .baseSpDefense = 70, - .type1 = TYPE_DARK, - .type2 = TYPE_STEEL, + .types = { TYPE_DARK, TYPE_STEEL}, .catchRate = 45, .expYield = 172, .evYield_Attack = 2, @@ -16469,8 +15146,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_DEFIANT, ABILITY_INNER_FOCUS, ABILITY_PRESSURE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -16484,8 +15160,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 40, .baseSpDefense = 95, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 45, .expYield = 172, .evYield_Attack = 2, @@ -16493,8 +15168,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RECKLESS, ABILITY_SAP_SIPPER, ABILITY_SOUNDPROOF}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -16508,8 +15182,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 37, .baseSpDefense = 50, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 190, .expYield = 70, .evYield_Attack = 1, @@ -16517,8 +15190,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -16532,8 +15204,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 57, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 60, .expYield = 179, .evYield_Attack = 2, @@ -16541,8 +15212,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -16556,8 +15226,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 45, .baseSpDefense = 65, - .type1 = TYPE_DARK, - .type2 = TYPE_FLYING, + .types = { TYPE_DARK, TYPE_FLYING}, .catchRate = 190, .expYield = 74, .evYield_Defense = 1, @@ -16565,8 +15234,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_OVERCOAT, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -16580,8 +15248,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 55, .baseSpDefense = 95, - .type1 = TYPE_DARK, - .type2 = TYPE_FLYING, + .types = { TYPE_DARK, TYPE_FLYING}, .catchRate = 60, .expYield = 179, .evYield_SpAttack = 2, @@ -16589,8 +15256,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_OVERCOAT, ABILITY_WEAK_ARMOR}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -16604,8 +15270,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 105, .baseSpDefense = 66, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 90, .expYield = 169, .evYield_SpAttack = 2, @@ -16613,8 +15278,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -16628,8 +15292,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 109, .baseSpAttack = 48, .baseSpDefense = 48, - .type1 = TYPE_BUG, - .type2 = TYPE_STEEL, + .types = { TYPE_BUG, TYPE_STEEL}, .catchRate = 90, .expYield = 169, .evYield_Defense = 2, @@ -16637,8 +15300,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_HUSTLE, ABILITY_TRUANT}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -16652,8 +15314,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 38, .baseSpAttack = 45, .baseSpDefense = 50, - .type1 = TYPE_DARK, - .type2 = TYPE_DRAGON, + .types = { TYPE_DARK, TYPE_DRAGON}, .catchRate = 45, .expYield = 60, .evYield_Attack = 1, @@ -16661,8 +15322,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_HUSTLE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -16676,8 +15336,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 58, .baseSpAttack = 65, .baseSpDefense = 70, - .type1 = TYPE_DARK, - .type2 = TYPE_DRAGON, + .types = { TYPE_DARK, TYPE_DRAGON}, .catchRate = 45, .expYield = 147, .evYield_Attack = 2, @@ -16685,8 +15344,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_HUSTLE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -16700,8 +15358,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 98, .baseSpAttack = 125, .baseSpDefense = 90, - .type1 = TYPE_DARK, - .type2 = TYPE_DRAGON, + .types = { TYPE_DARK, TYPE_DRAGON}, .catchRate = 45, .expYield = 270, .evYield_SpAttack = 3, @@ -16709,8 +15366,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -16724,8 +15380,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 50, .baseSpDefense = 55, - .type1 = TYPE_BUG, - .type2 = TYPE_FIRE, + .types = { TYPE_BUG, TYPE_FIRE}, .catchRate = 45, .expYield = 72, .evYield_Attack = 1, @@ -16733,8 +15388,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_SWARM}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -16748,8 +15402,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 135, .baseSpDefense = 105, - .type1 = TYPE_BUG, - .type2 = TYPE_FIRE, + .types = { TYPE_BUG, TYPE_FIRE}, .catchRate = 15, .expYield = 248, .evYield_SpAttack = 3, @@ -16759,8 +15412,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_SWARM}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -16774,8 +15426,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 108, .baseSpAttack = 90, .baseSpDefense = 72, - .type1 = TYPE_STEEL, - .type2 = TYPE_FIGHTING, + .types = { TYPE_STEEL, TYPE_FIGHTING}, .catchRate = 3, .expYield = 261, .evYield_Defense = 3, @@ -16783,8 +15434,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -16799,8 +15449,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 108, .baseSpAttack = 72, .baseSpDefense = 90, - .type1 = TYPE_ROCK, - .type2 = TYPE_FIGHTING, + .types = { TYPE_ROCK, TYPE_FIGHTING}, .catchRate = 3, .expYield = 261, .evYield_Attack = 3, @@ -16808,8 +15457,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -16824,8 +15472,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 108, .baseSpAttack = 90, .baseSpDefense = 129, - .type1 = TYPE_GRASS, - .type2 = TYPE_FIGHTING, + .types = { TYPE_GRASS, TYPE_FIGHTING}, .catchRate = 3, .expYield = 261, .evYield_SpDefense = 3, @@ -16833,8 +15480,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -16849,8 +15495,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 111, .baseSpAttack = 125, .baseSpDefense = 80, - .type1 = TYPE_FLYING, - .type2 = TYPE_FLYING, + .types = { TYPE_FLYING, TYPE_FLYING}, .catchRate = 3, .expYield = 261, .evYield_Attack = 3, @@ -16858,8 +15503,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -16874,8 +15518,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 111, .baseSpAttack = 125, .baseSpDefense = 80, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_FLYING, + .types = { TYPE_ELECTRIC, TYPE_FLYING}, .catchRate = 3, .expYield = 261, .evYield_Attack = 3, @@ -16883,8 +15526,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -16899,8 +15541,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 120, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FIRE, + .types = { TYPE_DRAGON, TYPE_FIRE}, .catchRate = 3, .expYield = 306, .evYield_SpAttack = 3, @@ -16908,8 +15549,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_TURBOBLAZE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -16924,8 +15564,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 120, .baseSpDefense = 100, - .type1 = TYPE_DRAGON, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_DRAGON, TYPE_ELECTRIC}, .catchRate = 3, .expYield = 306, .evYield_Attack = 3, @@ -16933,8 +15572,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_TERAVOLT, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -16949,8 +15587,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 101, .baseSpAttack = 115, .baseSpDefense = 80, - .type1 = TYPE_GROUND, - .type2 = TYPE_FLYING, + .types = { TYPE_GROUND, TYPE_FLYING}, .catchRate = 3, .expYield = 270, .evYield_SpAttack = 3, @@ -16958,8 +15595,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SAND_FORCE, ABILITY_NONE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -16974,8 +15610,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 130, .baseSpDefense = 90, - .type1 = TYPE_DRAGON, - .type2 = TYPE_ICE, + .types = { TYPE_DRAGON, TYPE_ICE}, .catchRate = 3, .expYield = 297, .evYield_HP = 1, @@ -16985,8 +15620,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -17001,8 +15635,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 108, .baseSpAttack = 129, .baseSpDefense = 90, - .type1 = TYPE_WATER, - .type2 = TYPE_FIGHTING, + .types = { TYPE_WATER, TYPE_FIGHTING}, .catchRate = 3, .expYield = 261, .evYield_SpAttack = 3, @@ -17010,8 +15643,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -17026,8 +15658,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 128, .baseSpDefense = 128, - .type1 = TYPE_NORMAL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_NORMAL, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 270, .evYield_Speed = 1, @@ -17039,8 +15670,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, @@ -17059,8 +15689,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 38, .baseSpAttack = 48, .baseSpDefense = 45, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 63, .evYield_Defense = 1, @@ -17068,8 +15697,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -17083,8 +15711,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 57, .baseSpAttack = 56, .baseSpDefense = 58, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 142, .evYield_Defense = 2, @@ -17092,8 +15719,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -17107,8 +15733,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 64, .baseSpAttack = 74, .baseSpDefense = 75, - .type1 = TYPE_GRASS, - .type2 = TYPE_FIGHTING, + .types = { TYPE_GRASS, TYPE_FIGHTING}, .catchRate = 45, .expYield = 239, .evYield_Defense = 3, @@ -17116,8 +15741,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -17131,8 +15755,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 62, .baseSpDefense = 60, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 61, .evYield_SpAttack = 1, @@ -17140,8 +15763,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -17155,8 +15777,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 73, .baseSpAttack = 90, .baseSpDefense = 70, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 143, .evYield_SpAttack = 2, @@ -17164,8 +15785,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -17179,8 +15799,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 104, .baseSpAttack = 114, .baseSpDefense = 100, - .type1 = TYPE_FIRE, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_FIRE, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 240, .evYield_SpAttack = 3, @@ -17188,8 +15807,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -17203,8 +15821,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 71, .baseSpAttack = 62, .baseSpDefense = 44, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 63, .evYield_Speed = 1, @@ -17212,8 +15829,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -17227,8 +15843,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 83, .baseSpDefense = 56, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 142, .evYield_Speed = 2, @@ -17236,8 +15851,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -17251,8 +15865,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 122, .baseSpAttack = 103, .baseSpDefense = 71, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 45, .expYield = 239, .evYield_Speed = 3, @@ -17260,8 +15873,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -17275,8 +15887,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 57, .baseSpAttack = 32, .baseSpDefense = 36, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 47, .evYield_Speed = 1, @@ -17284,8 +15895,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_CHEEK_POUCH, ABILITY_HUGE_POWER}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17299,8 +15909,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 78, .baseSpAttack = 50, .baseSpDefense = 77, - .type1 = TYPE_NORMAL, - .type2 = TYPE_GROUND, + .types = { TYPE_NORMAL, TYPE_GROUND}, .catchRate = 127, .expYield = 148, .evYield_HP = 2, @@ -17308,8 +15917,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_CHEEK_POUCH, ABILITY_HUGE_POWER}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17323,8 +15931,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 62, .baseSpAttack = 40, .baseSpDefense = 38, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 255, .expYield = 56, .evYield_Speed = 1, @@ -17332,8 +15939,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_BIG_PECKS, ABILITY_NONE, ABILITY_GALE_WINGS}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -17347,8 +15953,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 84, .baseSpAttack = 56, .baseSpDefense = 52, - .type1 = TYPE_FIRE, - .type2 = TYPE_FLYING, + .types = { TYPE_FIRE, TYPE_FLYING}, .catchRate = 120, .expYield = 134, .evYield_Speed = 2, @@ -17356,8 +15961,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -17371,8 +15975,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 126, .baseSpAttack = 74, .baseSpDefense = 69, - .type1 = TYPE_FIRE, - .type2 = TYPE_FLYING, + .types = { TYPE_FIRE, TYPE_FLYING}, .catchRate = 45, .expYield = 175, .evYield_Speed = 3, @@ -17380,8 +15983,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -17395,8 +15997,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 27, .baseSpDefense = 25, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 255, .expYield = 40, .evYield_Defense = 1, @@ -17404,8 +16005,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -17419,8 +16019,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 29, .baseSpAttack = 27, .baseSpDefense = 30, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 120, .expYield = 75, .evYield_Defense = 2, @@ -17428,8 +16027,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_FRIEND_GUARD}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -17445,8 +16043,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 72, .baseSpAttack = 73, .baseSpDefense = 54, - .type1 = TYPE_FIRE, - .type2 = TYPE_NORMAL, + .types = { TYPE_FIRE, TYPE_NORMAL}, .catchRate = 220, .expYield = 74, .evYield_SpAttack = 1, @@ -17454,8 +16051,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17469,8 +16065,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 106, .baseSpAttack = 109, .baseSpDefense = 66, - .type1 = TYPE_FIRE, - .type2 = TYPE_NORMAL, + .types = { TYPE_FIRE, TYPE_NORMAL}, .catchRate = 65, .expYield = 177, .evYield_SpAttack = 2, @@ -17478,8 +16073,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17500,8 +16094,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 52, .baseSpAttack = 62, .baseSpDefense = 57, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 200, .expYield = 70, .evYield_HP = 1, @@ -17509,8 +16102,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_NONE, ABILITY_GRASS_PELT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17524,8 +16116,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 68, .baseSpAttack = 97, .baseSpDefense = 81, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 186, .evYield_HP = 2, @@ -17533,8 +16124,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_NONE, ABILITY_GRASS_PELT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17548,8 +16138,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 43, .baseSpAttack = 46, .baseSpDefense = 48, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 220, .expYield = 70, .evYield_Attack = 1, @@ -17558,8 +16147,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_IRON_FIST, ABILITY_MOLD_BREAKER, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -17573,8 +16161,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 58, .baseSpAttack = 69, .baseSpDefense = 71, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_DARK, + .types = { TYPE_FIGHTING, TYPE_DARK}, .catchRate = 65, .expYield = 173, .evYield_Attack = 2, @@ -17583,8 +16170,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_IRON_FIST, ABILITY_MOLD_BREAKER, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -17600,8 +16186,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 68, .baseSpAttack = 63, .baseSpDefense = 60, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 190, .expYield = 71, .evYield_Speed = 1, @@ -17609,8 +16194,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_OWN_TEMPO}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -17624,8 +16208,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 104, .baseSpAttack = 83, .baseSpDefense = 81, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 75, .expYield = 163, .evYield_Speed = 2, @@ -17633,8 +16216,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -17648,8 +16230,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 28, .baseSpAttack = 35, .baseSpDefense = 37, - .type1 = TYPE_STEEL, - .type2 = TYPE_GHOST, + .types = { TYPE_STEEL, TYPE_GHOST}, .catchRate = 180, .expYield = 65, .evYield_Defense = 1, @@ -17657,8 +16238,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_NO_GUARD, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17672,8 +16252,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 45, .baseSpDefense = 49, - .type1 = TYPE_STEEL, - .type2 = TYPE_GHOST, + .types = { TYPE_STEEL, TYPE_GHOST}, .catchRate = 90, .expYield = 157, .evYield_Defense = 2, @@ -17681,8 +16260,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_NO_GUARD, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17701,8 +16279,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseDefense = 150, .baseSpDefense = 150, #endif - .type1 = TYPE_STEEL, - .type2 = TYPE_GHOST, + .types = { TYPE_STEEL, TYPE_GHOST}, .catchRate = 45, .expYield = 234, .evYield_Defense = 2, @@ -17711,8 +16288,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STANCE_CHANGE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17726,8 +16302,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 23, .baseSpAttack = 63, .baseSpDefense = 65, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 200, .expYield = 68, .evYield_HP = 1, @@ -17735,8 +16310,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_AROMA_VEIL}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -17750,8 +16324,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 29, .baseSpAttack = 99, .baseSpDefense = 89, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 140, .expYield = 162, .evYield_HP = 2, @@ -17759,8 +16332,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_AROMA_VEIL}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -17774,8 +16346,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 49, .baseSpAttack = 59, .baseSpDefense = 57, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 200, .expYield = 68, .evYield_Defense = 1, @@ -17783,8 +16354,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_UNBURDEN}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -17798,8 +16368,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 72, .baseSpAttack = 85, .baseSpDefense = 75, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 140, .expYield = 168, .evYield_Defense = 2, @@ -17807,8 +16376,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_UNBURDEN}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -17822,8 +16390,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 37, .baseSpDefense = 46, - .type1 = TYPE_DARK, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_DARK, TYPE_PSYCHIC}, .catchRate = 190, .expYield = 58, .evYield_Attack = 1, @@ -17831,8 +16398,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_CONTRARY, ABILITY_SUCTION_CUPS, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -17846,8 +16412,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 73, .baseSpAttack = 68, .baseSpDefense = 75, - .type1 = TYPE_DARK, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_DARK, TYPE_PSYCHIC}, .catchRate = 80, .expYield = 169, .evYield_Attack = 2, @@ -17855,8 +16420,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, .abilities = {ABILITY_CONTRARY, ABILITY_SUCTION_CUPS, ABILITY_INFILTRATOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -17870,8 +16434,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 39, .baseSpDefense = 56, - .type1 = TYPE_ROCK, - .type2 = TYPE_WATER, + .types = { TYPE_ROCK, TYPE_WATER}, .catchRate = 120, .expYield = 61, .evYield_Attack = 1, @@ -17879,8 +16442,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_SNIPER, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17894,8 +16456,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 68, .baseSpAttack = 54, .baseSpDefense = 86, - .type1 = TYPE_ROCK, - .type2 = TYPE_WATER, + .types = { TYPE_ROCK, TYPE_WATER}, .catchRate = 45, .expYield = 175, .evYield_Attack = 2, @@ -17903,8 +16464,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_SNIPER, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -17918,8 +16478,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 60, .baseSpDefense = 60, - .type1 = TYPE_POISON, - .type2 = TYPE_WATER, + .types = { TYPE_POISON, TYPE_WATER}, .catchRate = 225, .expYield = 64, .evYield_SpDefense = 1, @@ -17927,8 +16486,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_POISON_POINT, ABILITY_POISON_TOUCH, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17942,8 +16500,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 44, .baseSpAttack = 97, .baseSpDefense = 123, - .type1 = TYPE_POISON, - .type2 = TYPE_DRAGON, + .types = { TYPE_POISON, TYPE_DRAGON}, .catchRate = 55, .expYield = 173, .evYield_SpDefense = 2, @@ -17951,8 +16508,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, .abilities = {ABILITY_POISON_POINT, ABILITY_POISON_TOUCH, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -17966,8 +16522,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 44, .baseSpAttack = 58, .baseSpDefense = 63, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 225, .expYield = 66, .evYield_SpAttack = 1, @@ -17975,8 +16530,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -17990,8 +16544,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 59, .baseSpAttack = 120, .baseSpDefense = 89, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 55, .expYield = 100, .evYield_SpAttack = 2, @@ -17999,8 +16552,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -18014,8 +16566,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 61, .baseSpDefense = 43, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_NORMAL, + .types = { TYPE_ELECTRIC, TYPE_NORMAL}, .catchRate = 190, .expYield = 58, .evYield_Speed = 1, @@ -18023,8 +16574,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_DRY_SKIN, ABILITY_SAND_VEIL, ABILITY_SOLAR_POWER}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -18038,8 +16588,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 109, .baseSpAttack = 109, .baseSpDefense = 94, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_NORMAL, + .types = { TYPE_ELECTRIC, TYPE_NORMAL}, .catchRate = 75, .expYield = 168, .evYield_Speed = 1, @@ -18048,8 +16597,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_DRY_SKIN, ABILITY_SAND_VEIL, ABILITY_SOLAR_POWER}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -18063,8 +16611,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 48, .baseSpAttack = 45, .baseSpDefense = 45, - .type1 = TYPE_ROCK, - .type2 = TYPE_DRAGON, + .types = { TYPE_ROCK, TYPE_DRAGON}, .catchRate = 45, .expYield = 72, .evYield_Attack = 1, @@ -18072,8 +16619,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_STURDY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -18087,8 +16633,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 71, .baseSpAttack = 69, .baseSpDefense = 59, - .type1 = TYPE_ROCK, - .type2 = TYPE_DRAGON, + .types = { TYPE_ROCK, TYPE_DRAGON}, .catchRate = 45, .expYield = 182, .evYield_Attack = 2, @@ -18096,8 +16641,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_ROCK_HEAD}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -18111,8 +16655,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 46, .baseSpAttack = 67, .baseSpDefense = 63, - .type1 = TYPE_ROCK, - .type2 = TYPE_ICE, + .types = { TYPE_ROCK, TYPE_ICE}, .catchRate = 45, .expYield = 72, .evYield_HP = 1, @@ -18120,8 +16663,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_REFRIGERATE, ABILITY_NONE, ABILITY_SNOW_WARNING}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -18135,8 +16677,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 58, .baseSpAttack = 99, .baseSpDefense = 92, - .type1 = TYPE_ROCK, - .type2 = TYPE_ICE, + .types = { TYPE_ROCK, TYPE_ICE}, .catchRate = 45, .expYield = 104, .evYield_HP = 2, @@ -18144,8 +16685,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_REFRIGERATE, ABILITY_NONE, ABILITY_SNOW_WARNING}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -18159,8 +16699,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 110, .baseSpDefense = 130, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 45, .expYield = 184, .evYield_SpDefense = 2, @@ -18168,8 +16707,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CUTE_CHARM, ABILITY_CUTE_CHARM, ABILITY_PIXILATE}, .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, @@ -18183,8 +16721,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 118, .baseSpAttack = 74, .baseSpDefense = 63, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FLYING, + .types = { TYPE_FIGHTING, TYPE_FLYING}, .catchRate = 100, .expYield = 175, .evYield_Attack = 2, @@ -18194,11 +16731,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup1 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_HUMAN_LIKE}, #else - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, #endif - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, .abilities = {ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -18212,8 +16748,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 101, .baseSpAttack = 81, .baseSpDefense = 67, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_ELECTRIC, TYPE_FAIRY}, .catchRate = 180, .expYield = 151, .evYield_Speed = 2, @@ -18221,8 +16756,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_CHEEK_POUCH, ABILITY_PICKUP, ABILITY_PLUS}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -18236,8 +16770,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 50, .baseSpDefense = 150, - .type1 = TYPE_ROCK, - .type2 = TYPE_FAIRY, + .types = { TYPE_ROCK, TYPE_FAIRY}, .catchRate = 60, .expYield = 100, .evYield_Defense = 1, @@ -18246,8 +16779,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -18261,8 +16793,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 55, .baseSpDefense = 75, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 45, .expYield = 60, .evYield_SpDefense = 1, @@ -18271,8 +16802,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -18286,8 +16816,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 83, .baseSpDefense = 113, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 45, .expYield = 158, .evYield_SpDefense = 2, @@ -18296,8 +16825,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -18311,8 +16839,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 110, .baseSpDefense = 150, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 45, .expYield = 270, .evYield_SpDefense = 3, @@ -18320,8 +16847,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -18335,8 +16861,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 80, .baseSpDefense = 87, - .type1 = TYPE_STEEL, - .type2 = TYPE_FAIRY, + .types = { TYPE_STEEL, TYPE_FAIRY}, .catchRate = 75, .expYield = 165, .evYield_Defense = 1, @@ -18344,8 +16869,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_MAGICIAN}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -18359,8 +16883,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 38, .baseSpAttack = 50, .baseSpDefense = 60, - .type1 = TYPE_GHOST, - .type2 = TYPE_GRASS, + .types = { TYPE_GHOST, TYPE_GRASS}, .catchRate = 120, .expYield = 62, .evYield_Attack = 1, @@ -18368,8 +16891,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_FRISK, ABILITY_HARVEST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -18383,8 +16905,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 56, .baseSpAttack = 65, .baseSpDefense = 82, - .type1 = TYPE_GHOST, - .type2 = TYPE_GRASS, + .types = { TYPE_GHOST, TYPE_GRASS}, .catchRate = 60, .expYield = 166, .evYield_Attack = 2, @@ -18392,8 +16913,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_NATURAL_CURE, ABILITY_FRISK, ABILITY_HARVEST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -18429,8 +16949,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 28, .baseSpAttack = 32, .baseSpDefense = 35, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 190, .expYield = 61, .evYield_Defense = 1, @@ -18438,11 +16957,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, #else - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MINERAL}, #endif .abilities = {ABILITY_OWN_TEMPO, ABILITY_ICE_BODY, ABILITY_STURDY}, .bodyColor = BODY_COLOR_BLUE, @@ -18457,8 +16975,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 28, .baseSpAttack = 44, .baseSpDefense = 46, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 55, .expYield = 180, .evYield_Defense = 2, @@ -18466,11 +16983,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, #else - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MINERAL}, #endif .abilities = {ABILITY_OWN_TEMPO, ABILITY_ICE_BODY, ABILITY_STURDY}, .bodyColor = BODY_COLOR_BLUE, @@ -18485,8 +17001,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 45, .baseSpDefense = 40, - .type1 = TYPE_FLYING, - .type2 = TYPE_DRAGON, + .types = { TYPE_FLYING, TYPE_DRAGON}, .catchRate = 190, .expYield = 49, .evYield_Speed = 1, @@ -18494,11 +17009,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, #else - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, #endif .abilities = {ABILITY_FRISK, ABILITY_INFILTRATOR, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PURPLE, @@ -18513,8 +17027,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 123, .baseSpAttack = 97, .baseSpDefense = 80, - .type1 = TYPE_FLYING, - .type2 = TYPE_DRAGON, + .types = { TYPE_FLYING, TYPE_DRAGON}, .catchRate = 45, .expYield = 187, .evYield_Speed = 2, @@ -18522,11 +17035,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, #else - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, #endif .abilities = {ABILITY_FRISK, ABILITY_INFILTRATOR, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PURPLE, @@ -18543,8 +17055,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 99, .baseSpAttack = 131, .baseSpDefense = 98, - .type1 = TYPE_DARK, - .type2 = TYPE_FLYING, + .types = { TYPE_DARK, TYPE_FLYING}, .catchRate = 45, .expYield = 306, .evYield_HP = 3, @@ -18552,8 +17063,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DARK_AURA, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -18570,8 +17080,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 100, .baseSpDefense = 150, - .type1 = TYPE_ROCK, - .type2 = TYPE_FAIRY, + .types = { TYPE_ROCK, TYPE_FAIRY}, .catchRate = 3, .expYield = 270, .evYield_Defense = 1, @@ -18580,8 +17089,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -18596,8 +17104,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 150, .baseSpDefense = 130, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_GHOST, + .types = { TYPE_PSYCHIC, TYPE_GHOST}, .catchRate = 3, .expYield = 270, .evYield_SpAttack = 3, @@ -18605,8 +17112,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_MAGICIAN, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -18621,8 +17127,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 130, .baseSpDefense = 90, - .type1 = TYPE_FIRE, - .type2 = TYPE_WATER, + .types = { TYPE_FIRE, TYPE_WATER}, .catchRate = 3, .expYield = 270, .evYield_SpAttack = 3, @@ -18630,8 +17135,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -18648,8 +17152,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 42, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_GRASS, - .type2 = TYPE_FLYING, + .types = { TYPE_GRASS, TYPE_FLYING}, .catchRate = 45, .expYield = 64, .evYield_HP = 1, @@ -18657,8 +17160,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -18672,8 +17174,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 52, .baseSpAttack = 70, .baseSpDefense = 70, - .type1 = TYPE_GRASS, - .type2 = TYPE_FLYING, + .types = { TYPE_GRASS, TYPE_FLYING}, .catchRate = 45, .expYield = 147, .evYield_HP = 2, @@ -18681,8 +17182,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -18696,8 +17196,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 100, .baseSpDefense = 100, - .type1 = TYPE_GRASS, - .type2 = TYPE_GHOST, + .types = { TYPE_GRASS, TYPE_GHOST}, .catchRate = 45, .expYield = 239, .evYield_Attack = 3, @@ -18705,8 +17204,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -18720,8 +17218,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 60, .baseSpDefense = 40, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 64, .evYield_Speed = 1, @@ -18729,8 +17226,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -18744,8 +17240,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 80, .baseSpDefense = 50, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 147, .evYield_Speed = 2, @@ -18753,8 +17248,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -18768,8 +17262,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 80, .baseSpDefense = 90, - .type1 = TYPE_FIRE, - .type2 = TYPE_DARK, + .types = { TYPE_FIRE, TYPE_DARK}, .catchRate = 45, .expYield = 239, .evYield_Attack = 3, @@ -18777,8 +17270,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -18792,8 +17284,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 66, .baseSpDefense = 56, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 64, .evYield_SpAttack = 1, @@ -18801,8 +17292,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -18816,8 +17306,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 91, .baseSpDefense = 81, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 147, .evYield_SpAttack = 2, @@ -18825,8 +17314,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -18840,8 +17328,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 126, .baseSpDefense = 116, - .type1 = TYPE_WATER, - .type2 = TYPE_FAIRY, + .types = { TYPE_WATER, TYPE_FAIRY}, .catchRate = 45, .expYield = 239, .evYield_SpAttack = 3, @@ -18849,8 +17336,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -18864,8 +17350,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 255, .expYield = 53, .evYield_Attack = 1, @@ -18874,8 +17359,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_PICKUP}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -18889,8 +17373,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 120, .expYield = 124, .evYield_Attack = 2, @@ -18899,8 +17382,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_PICKUP}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -18914,8 +17396,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 75, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 45, .expYield = 218, .evYield_Attack = 3, @@ -18924,8 +17405,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -18939,8 +17419,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 51, .evYield_Attack = 1, @@ -18949,8 +17428,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STAKEOUT, ABILITY_STRONG_JAW, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -18964,8 +17442,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 55, .baseSpDefense = 60, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 127, .expYield = 146, .evYield_Attack = 2, @@ -18974,8 +17451,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STAKEOUT, ABILITY_STRONG_JAW, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -18989,8 +17465,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 46, .baseSpAttack = 55, .baseSpDefense = 45, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 255, .expYield = 60, .evYield_Attack = 1, @@ -18998,8 +17473,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -19013,8 +17487,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 36, .baseSpAttack = 55, .baseSpDefense = 75, - .type1 = TYPE_BUG, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_BUG, TYPE_ELECTRIC}, .catchRate = 120, .expYield = 140, .evYield_Defense = 2, @@ -19023,8 +17496,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_BATTERY, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -19038,8 +17510,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 43, .baseSpAttack = 145, .baseSpDefense = 75, - .type1 = TYPE_BUG, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_BUG, TYPE_ELECTRIC}, .catchRate = 45, .expYield = 225, .evYield_SpAttack = 3, @@ -19047,8 +17518,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -19062,8 +17532,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 63, .baseSpAttack = 42, .baseSpDefense = 47, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 225, .expYield = 68, .evYield_Attack = 1, @@ -19072,8 +17541,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -19087,8 +17555,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 43, .baseSpAttack = 62, .baseSpDefense = 67, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_ICE, + .types = { TYPE_FIGHTING, TYPE_ICE}, .catchRate = 60, .expYield = 167, .evYield_Attack = 2, @@ -19097,8 +17564,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_3, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, .abilities = {ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -19114,8 +17580,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 84, .baseSpAttack = 55, .baseSpDefense = 40, - .type1 = TYPE_BUG, - .type2 = TYPE_FAIRY, + .types = { TYPE_BUG, TYPE_FAIRY}, .catchRate = 190, .expYield = 61, .evYield_Speed = 1, @@ -19124,8 +17589,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HONEY_GATHER, ABILITY_SHIELD_DUST, ABILITY_SWEET_VEIL}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -19139,8 +17603,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 124, .baseSpAttack = 95, .baseSpDefense = 70, - .type1 = TYPE_BUG, - .type2 = TYPE_FAIRY, + .types = { TYPE_BUG, TYPE_FAIRY}, .catchRate = 75, .expYield = 162, .evYield_Speed = 2, @@ -19149,8 +17612,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HONEY_GATHER, ABILITY_SHIELD_DUST, ABILITY_SWEET_VEIL}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -19166,8 +17628,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 112, .baseSpAttack = 55, .baseSpDefense = 65, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 90, .expYield = 170, .evYield_Attack = 2, @@ -19175,8 +17636,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SAND_RUSH, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -19190,8 +17650,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 25, .baseSpDefense = 25, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 60, .expYield = 61, .evYield_HP = 1, @@ -19199,8 +17658,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SCHOOLING, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -19214,8 +17672,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 43, .baseSpDefense = 52, - .type1 = TYPE_POISON, - .type2 = TYPE_WATER, + .types = { TYPE_POISON, TYPE_WATER}, .catchRate = 190, .expYield = 61, .evYield_Defense = 1, @@ -19224,8 +17681,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_MERCILESS, ABILITY_LIMBER, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -19239,8 +17695,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 53, .baseSpDefense = 142, - .type1 = TYPE_POISON, - .type2 = TYPE_WATER, + .types = { TYPE_POISON, TYPE_WATER}, .catchRate = 75, .expYield = 173, .evYield_Defense = 2, @@ -19249,8 +17704,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_MERCILESS, ABILITY_LIMBER, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -19264,8 +17718,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 45, .baseSpDefense = 55, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 190, .expYield = 77, .evYield_Attack = 1, @@ -19274,8 +17727,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_STAMINA, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -19289,8 +17741,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 55, .baseSpDefense = 85, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 60, .expYield = 175, .evYield_Attack = 2, @@ -19299,8 +17750,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_STAMINA, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -19314,8 +17764,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 27, .baseSpAttack = 40, .baseSpDefense = 72, - .type1 = TYPE_WATER, - .type2 = TYPE_BUG, + .types = { TYPE_WATER, TYPE_BUG}, .catchRate = 200, .expYield = 54, .evYield_SpDefense = 1, @@ -19324,8 +17773,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, .abilities = {ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -19339,8 +17787,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 42, .baseSpAttack = 50, .baseSpDefense = 132, - .type1 = TYPE_WATER, - .type2 = TYPE_BUG, + .types = { TYPE_WATER, TYPE_BUG}, .catchRate = 100, .expYield = 159, .evYield_SpDefense = 2, @@ -19349,8 +17796,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, .abilities = {ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_WATER_ABSORB}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -19364,8 +17810,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 50, .baseSpDefense = 35, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 190, .expYield = 50, .evYield_Attack = 1, @@ -19374,8 +17819,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -19389,8 +17833,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 80, .baseSpDefense = 90, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 75, .expYield = 168, .evYield_Attack = 2, @@ -19399,8 +17842,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -19414,8 +17856,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 65, .baseSpDefense = 75, - .type1 = TYPE_GRASS, - .type2 = TYPE_FAIRY, + .types = { TYPE_GRASS, TYPE_FAIRY}, .catchRate = 190, .expYield = 57, .evYield_SpDefense = 1, @@ -19425,8 +17866,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_ILLUMINATE, ABILITY_EFFECT_SPORE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -19440,8 +17880,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 90, .baseSpDefense = 100, - .type1 = TYPE_GRASS, - .type2 = TYPE_FAIRY, + .types = { TYPE_GRASS, TYPE_FAIRY}, .catchRate = 75, .expYield = 142, .evYield_SpDefense = 2, @@ -19451,8 +17890,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_ILLUMINATE, ABILITY_EFFECT_SPORE, ABILITY_RAIN_DISH}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -19466,8 +17904,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 77, .baseSpAttack = 71, .baseSpDefense = 40, - .type1 = TYPE_POISON, - .type2 = TYPE_FIRE, + .types = { TYPE_POISON, TYPE_FIRE}, .catchRate = 120, .expYield = 64, .evYield_Speed = 1, @@ -19476,8 +17913,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CORROSION, ABILITY_NONE, ABILITY_OBLIVIOUS}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -19491,8 +17927,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 117, .baseSpAttack = 111, .baseSpDefense = 60, - .type1 = TYPE_POISON, - .type2 = TYPE_FIRE, + .types = { TYPE_POISON, TYPE_FIRE}, .catchRate = 45, .expYield = 168, .evYield_Speed = 2, @@ -19501,8 +17936,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CORROSION, ABILITY_NONE, ABILITY_OBLIVIOUS}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -19516,8 +17950,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 45, .baseSpDefense = 50, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FIGHTING, + .types = { TYPE_NORMAL, TYPE_FIGHTING}, .catchRate = 140, .expYield = 68, .evYield_Attack = 1, @@ -19525,8 +17958,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLUFFY, ABILITY_KLUTZ, ABILITY_CUTE_CHARM}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -19540,8 +17972,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 55, .baseSpDefense = 60, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FIGHTING, + .types = { TYPE_NORMAL, TYPE_FIGHTING}, .catchRate = 70, .expYield = 175, .evYield_Attack = 2, @@ -19549,8 +17980,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLUFFY, ABILITY_KLUTZ, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -19564,8 +17994,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 32, .baseSpAttack = 30, .baseSpDefense = 38, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 235, .expYield = 42, .evYield_HP = 1, @@ -19574,8 +18003,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_OBLIVIOUS, ABILITY_SWEET_VEIL}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -19589,8 +18017,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 62, .baseSpAttack = 40, .baseSpDefense = 48, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 120, .expYield = 102, .evYield_Speed = 2, @@ -19599,8 +18026,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_OBLIVIOUS, ABILITY_SWEET_VEIL}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = TRUE, @@ -19614,8 +18040,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 72, .baseSpAttack = 50, .baseSpDefense = 98, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 230, .evYield_Attack = 3, @@ -19624,8 +18049,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_LEAF_GUARD, ABILITY_QUEENLY_MAJESTY, ABILITY_SWEET_VEIL}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = TRUE, @@ -19639,8 +18063,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 82, .baseSpDefense = 110, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 60, .expYield = 170, .evYield_SpDefense = 2, @@ -19649,8 +18072,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_FLOWER_VEIL, ABILITY_TRIAGE, ABILITY_NATURAL_CURE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -19664,8 +18086,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 90, .baseSpDefense = 110, - .type1 = TYPE_NORMAL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_NORMAL, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 172, .evYield_SpDefense = 2, @@ -19673,8 +18094,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_TELEPATHY, ABILITY_SYMBIOSIS}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -19688,8 +18108,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 40, .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 172, .evYield_Attack = 2, @@ -19697,8 +18116,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RECEIVER, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -19712,8 +18130,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 20, .baseSpDefense = 30, - .type1 = TYPE_BUG, - .type2 = TYPE_WATER, + .types = { TYPE_BUG, TYPE_WATER}, .catchRate = 90, .expYield = 46, .evYield_Speed = 1, @@ -19721,8 +18138,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, .abilities = {ABILITY_WIMP_OUT, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -19736,8 +18152,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 60, .baseSpDefense = 90, - .type1 = TYPE_BUG, - .type2 = TYPE_WATER, + .types = { TYPE_BUG, TYPE_WATER}, .catchRate = 45, .expYield = 186, .evYield_Defense = 2, @@ -19745,8 +18160,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, .abilities = {ABILITY_EMERGENCY_EXIT, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -19760,8 +18174,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 70, .baseSpDefense = 45, - .type1 = TYPE_GHOST, - .type2 = TYPE_GROUND, + .types = { TYPE_GHOST, TYPE_GROUND}, .catchRate = 140, .expYield = 64, .evYield_Defense = 1, @@ -19770,8 +18183,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WATER_COMPACTION, ABILITY_NONE, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -19785,8 +18197,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 100, .baseSpDefense = 75, - .type1 = TYPE_GHOST, - .type2 = TYPE_GROUND, + .types = { TYPE_GHOST, TYPE_GROUND}, .catchRate = 60, .expYield = 168, .evYield_Defense = 2, @@ -19795,8 +18206,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WATER_COMPACTION, ABILITY_NONE, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -19810,8 +18220,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 5, .baseSpAttack = 30, .baseSpDefense = 130, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 60, .expYield = 144, .evYield_SpDefense = 2, @@ -19819,8 +18228,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, .abilities = {ABILITY_INNARDS_OUT, ABILITY_NONE, ABILITY_UNAWARE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -19834,8 +18242,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 59, .baseSpAttack = 95, .baseSpDefense = 95, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 3, .expYield = 107, .evYield_HP = 2, @@ -19843,8 +18250,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -19863,8 +18269,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 75, .baseSpDefense = 95, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 45, .expYield = 168, .evYield_Attack = 2, @@ -19872,8 +18277,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_COMATOSE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -19887,8 +18291,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 36, .baseSpAttack = 91, .baseSpDefense = 85, - .type1 = TYPE_FIRE, - .type2 = TYPE_DRAGON, + .types = { TYPE_FIRE, TYPE_DRAGON}, .catchRate = 70, .expYield = 170, .evYield_Defense = 2, @@ -19897,8 +18300,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -19912,8 +18314,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 96, .baseSpAttack = 40, .baseSpDefense = 73, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_STEEL, + .types = { TYPE_ELECTRIC, TYPE_STEEL}, .catchRate = 180, .expYield = 152, .evYield_Attack = 2, @@ -19922,8 +18323,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_IRON_BARBS, ABILITY_LIGHTNING_ROD, ABILITY_STURDY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -19939,8 +18339,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 92, .baseSpAttack = 70, .baseSpDefense = 70, - .type1 = TYPE_WATER, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_WATER, TYPE_PSYCHIC}, .catchRate = 80, .expYield = 166, .evYield_Attack = 2, @@ -19949,8 +18348,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_DAZZLING, ABILITY_STRONG_JAW, ABILITY_WONDER_SKIN}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -19964,8 +18362,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 36, .baseSpAttack = 135, .baseSpDefense = 91, - .type1 = TYPE_NORMAL, - .type2 = TYPE_DRAGON, + .types = { TYPE_NORMAL, TYPE_DRAGON}, .catchRate = 70, .expYield = 170, .evYield_SpAttack = 2, @@ -19974,8 +18371,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BERSERK, ABILITY_SAP_SIPPER, ABILITY_CLOUD_NINE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -19989,8 +18385,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 86, .baseSpDefense = 90, - .type1 = TYPE_GHOST, - .type2 = TYPE_GRASS, + .types = { TYPE_GHOST, TYPE_GRASS}, .catchRate = 25, .expYield = 181, .evYield_Attack = 2, @@ -19998,8 +18393,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STEELWORKER, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -20013,8 +18407,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 45, .baseSpDefense = 45, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 45, .expYield = 60, .evYield_Defense = 1, @@ -20023,8 +18416,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -20038,8 +18430,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 65, .baseSpDefense = 70, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FIGHTING, + .types = { TYPE_DRAGON, TYPE_FIGHTING}, .catchRate = 45, .expYield = 147, .evYield_Defense = 2, @@ -20048,8 +18439,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -20063,8 +18453,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 100, .baseSpDefense = 105, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FIGHTING, + .types = { TYPE_DRAGON, TYPE_FIGHTING}, .catchRate = 45, .expYield = 270, .evYield_Defense = 3, @@ -20073,8 +18462,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -20088,8 +18476,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 95, .baseSpDefense = 75, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_ELECTRIC, TYPE_FAIRY}, .catchRate = 3, .expYield = 257, .evYield_Speed = 3, @@ -20097,8 +18484,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_ELECTRIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -20113,8 +18499,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 130, .baseSpDefense = 115, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, .catchRate = 3, .expYield = 257, .evYield_SpAttack = 3, @@ -20122,8 +18507,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PSYCHIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -20138,8 +18522,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 85, .baseSpDefense = 95, - .type1 = TYPE_GRASS, - .type2 = TYPE_FAIRY, + .types = { TYPE_GRASS, TYPE_FAIRY}, .catchRate = 3, .expYield = 257, .evYield_Attack = 3, @@ -20147,8 +18530,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_GRASSY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -20163,8 +18545,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 95, .baseSpDefense = 130, - .type1 = TYPE_WATER, - .type2 = TYPE_FAIRY, + .types = { TYPE_WATER, TYPE_FAIRY}, .catchRate = 3, .expYield = 257, .evYield_SpDefense = 3, @@ -20172,8 +18553,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_MISTY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -20188,8 +18568,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 37, .baseSpAttack = 29, .baseSpDefense = 31, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 40, .evYield_HP = 1, @@ -20197,8 +18576,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_UNAWARE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -20213,8 +18591,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 37, .baseSpAttack = 29, .baseSpDefense = 131, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 140, .evYield_Defense = 1, @@ -20223,8 +18600,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_STURDY, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -20239,8 +18615,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 113, .baseSpDefense = 89, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_STEEL, + .types = { TYPE_PSYCHIC, TYPE_STEEL}, .catchRate = 45, .expYield = 306, .evYield_Attack = 3, @@ -20248,8 +18623,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_FULL_METAL_BODY, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -20264,8 +18638,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 137, .baseSpDefense = 107, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_GHOST, + .types = { TYPE_PSYCHIC, TYPE_GHOST}, .catchRate = 45, .expYield = 306, .evYield_SpAttack = 3, @@ -20273,8 +18646,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SHADOW_SHIELD, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -20289,8 +18661,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 103, .baseSpAttack = 127, .baseSpDefense = 131, - .type1 = TYPE_ROCK, - .type2 = TYPE_POISON, + .types = { TYPE_ROCK, TYPE_POISON}, .catchRate = 45, .expYield = 257, .evYield_SpDefense = 3, @@ -20298,8 +18669,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -20314,8 +18684,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 79, .baseSpAttack = 53, .baseSpDefense = 53, - .type1 = TYPE_BUG, - .type2 = TYPE_FIGHTING, + .types = { TYPE_BUG, TYPE_FIGHTING}, .catchRate = 45, .expYield = 257, .evYield_Attack = 1, @@ -20324,8 +18693,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -20340,8 +18708,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 151, .baseSpAttack = 137, .baseSpDefense = 37, - .type1 = TYPE_BUG, - .type2 = TYPE_FIGHTING, + .types = { TYPE_BUG, TYPE_FIGHTING}, .catchRate = 45, .expYield = 257, .evYield_Speed = 3, @@ -20349,8 +18716,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -20365,8 +18731,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 83, .baseSpAttack = 173, .baseSpDefense = 71, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 45, .expYield = 257, .evYield_SpAttack = 3, @@ -20374,8 +18739,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -20390,8 +18754,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 61, .baseSpAttack = 107, .baseSpDefense = 101, - .type1 = TYPE_STEEL, - .type2 = TYPE_FLYING, + .types = { TYPE_STEEL, TYPE_FLYING}, .catchRate = 45, .expYield = 257, .evYield_Attack = 1, @@ -20401,8 +18764,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -20417,8 +18779,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 109, .baseSpAttack = 59, .baseSpDefense = 31, - .type1 = TYPE_GRASS, - .type2 = TYPE_STEEL, + .types = { TYPE_GRASS, TYPE_STEEL}, .catchRate = 45, .expYield = 257, .evYield_Attack = 3, @@ -20426,8 +18787,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -20442,8 +18802,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 43, .baseSpAttack = 97, .baseSpDefense = 53, - .type1 = TYPE_DARK, - .type2 = TYPE_DRAGON, + .types = { TYPE_DARK, TYPE_DRAGON}, .catchRate = 45, .expYield = 257, .evYield_HP = 3, @@ -20451,8 +18810,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -20467,8 +18825,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 79, .baseSpAttack = 127, .baseSpDefense = 89, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 255, .expYield = 270, .evYield_Attack = 1, @@ -20477,8 +18834,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, @@ -20495,8 +18851,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 125, .baseSpAttack = 90, .baseSpDefense = 90, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_GHOST, + .types = { TYPE_FIGHTING, TYPE_GHOST}, .catchRate = 3, .expYield = 270, .evYield_Attack = 2, @@ -20505,8 +18860,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_TECHNICIAN, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -20521,8 +18875,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 73, .baseSpAttack = 73, .baseSpDefense = 67, - .type1 = TYPE_POISON, - .type2 = TYPE_POISON, + .types = { TYPE_POISON, TYPE_POISON}, .catchRate = 45, .expYield = 189, .evYield_Speed = 1, @@ -20530,8 +18883,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -20546,8 +18898,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 121, .baseSpAttack = 127, .baseSpDefense = 73, - .type1 = TYPE_POISON, - .type2 = TYPE_DRAGON, + .types = { TYPE_POISON, TYPE_DRAGON}, .catchRate = 45, .expYield = 243, .evYield_SpAttack = 3, @@ -20555,8 +18906,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -20571,8 +18921,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 13, .baseSpAttack = 53, .baseSpDefense = 101, - .type1 = TYPE_ROCK, - .type2 = TYPE_STEEL, + .types = { TYPE_ROCK, TYPE_STEEL}, .catchRate = 30, .expYield = 257, .evYield_Defense = 3, @@ -20580,8 +18929,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -20596,8 +18944,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 107, .baseSpAttack = 151, .baseSpDefense = 79, - .type1 = TYPE_FIRE, - .type2 = TYPE_GHOST, + .types = { TYPE_FIRE, TYPE_GHOST}, .catchRate = 30, .expYield = 257, .evYield_SpAttack = 3, @@ -20605,8 +18952,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, @@ -20621,8 +18967,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 143, .baseSpAttack = 102, .baseSpDefense = 80, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 3, .expYield = 270, .evYield_Speed = 3, @@ -20630,8 +18975,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -20646,8 +18990,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 34, .baseSpAttack = 55, .baseSpDefense = 35, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 3, .expYield = 135, .evYield_Attack = 1, @@ -20655,8 +18998,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -20671,8 +19013,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 34, .baseSpAttack = 80, .baseSpDefense = 65, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 3, .expYield = 270, .evYield_Attack = 3, @@ -20680,8 +19021,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -20698,8 +19038,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 62, .evYield_Attack = 1, @@ -20707,8 +19046,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -20722,8 +19060,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 55, .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 147, .evYield_Attack = 2, @@ -20731,8 +19068,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -20746,8 +19082,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 60, .baseSpDefense = 70, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 45, .expYield = 265, .evYield_Attack = 3, @@ -20755,8 +19090,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -20770,8 +19104,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 69, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 62, .evYield_Speed = 1, @@ -20779,8 +19112,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -20794,8 +19126,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 94, .baseSpAttack = 55, .baseSpDefense = 60, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 147, .evYield_Speed = 2, @@ -20803,8 +19134,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -20818,8 +19148,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 119, .baseSpAttack = 65, .baseSpDefense = 75, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIRE, + .types = { TYPE_FIRE, TYPE_FIRE}, .catchRate = 45, .expYield = 265, .evYield_Speed = 3, @@ -20827,8 +19156,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -20842,8 +19170,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 70, .baseSpDefense = 40, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 62, .evYield_Speed = 1, @@ -20852,8 +19179,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -20867,8 +19193,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 95, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 147, .evYield_SpAttack = 2, @@ -20876,8 +19201,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -20891,8 +19215,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 120, .baseSpAttack = 125, .baseSpDefense = 65, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 265, .evYield_Speed = 3, @@ -20900,8 +19223,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -20915,8 +19237,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 35, .baseSpDefense = 35, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 55, .evYield_HP = 1, @@ -20925,8 +19246,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CHEEK_POUCH, ABILITY_NONE, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -20940,8 +19260,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 55, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 90, .expYield = 161, .evYield_HP = 2, @@ -20950,8 +19269,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_CHEEK_POUCH, ABILITY_NONE, ABILITY_GLUTTONY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -20965,8 +19283,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 57, .baseSpAttack = 33, .baseSpDefense = 35, - .type1 = TYPE_FLYING, - .type2 = TYPE_FLYING, + .types = { TYPE_FLYING, TYPE_FLYING}, .catchRate = 255, .expYield = 49, .evYield_Speed = 1, @@ -20974,8 +19291,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -20989,8 +19305,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 77, .baseSpAttack = 43, .baseSpDefense = 55, - .type1 = TYPE_FLYING, - .type2 = TYPE_FLYING, + .types = { TYPE_FLYING, TYPE_FLYING}, .catchRate = 120, .expYield = 128, .evYield_Speed = 2, @@ -20998,8 +19313,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -21013,8 +19327,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 67, .baseSpAttack = 53, .baseSpDefense = 85, - .type1 = TYPE_FLYING, - .type2 = TYPE_STEEL, + .types = { TYPE_FLYING, TYPE_STEEL}, .catchRate = 45, .expYield = 248, .evYield_Defense = 3, @@ -21022,8 +19335,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -21037,8 +19349,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 25, .baseSpDefense = 45, - .type1 = TYPE_BUG, - .type2 = TYPE_BUG, + .types = { TYPE_BUG, TYPE_BUG}, .catchRate = 255, .expYield = 36, .evYield_SpDefense = 1, @@ -21046,8 +19357,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_COMPOUND_EYES, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -21061,8 +19371,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 50, .baseSpDefense = 90, - .type1 = TYPE_BUG, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_BUG, TYPE_PSYCHIC}, .catchRate = 120, .expYield = 117, .evYield_SpDefense = 2, @@ -21071,8 +19380,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_COMPOUND_EYES, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -21086,8 +19394,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 80, .baseSpDefense = 120, - .type1 = TYPE_BUG, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_BUG, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 253, .evYield_SpDefense = 3, @@ -21096,8 +19403,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -21111,8 +19417,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 47, .baseSpDefense = 52, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 255, .expYield = 49, .evYield_SpDefense = 1, @@ -21120,8 +19425,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_UNBURDEN, ABILITY_STAKEOUT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -21135,8 +19439,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 87, .baseSpDefense = 92, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 127, .expYield = 159, .evYield_SpDefense = 2, @@ -21144,8 +19447,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_UNBURDEN, ABILITY_STAKEOUT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -21159,8 +19461,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 10, .baseSpAttack = 40, .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 190, .expYield = 50, .evYield_SpDefense = 1, @@ -21168,8 +19469,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_COTTON_DOWN, ABILITY_REGENERATOR, ABILITY_EFFECT_SPORE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21183,8 +19483,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 80, .baseSpDefense = 120, - .type1 = TYPE_GRASS, - .type2 = TYPE_GRASS, + .types = { TYPE_GRASS, TYPE_GRASS}, .catchRate = 75, .expYield = 161, .evYield_SpDefense = 2, @@ -21192,8 +19491,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_COTTON_DOWN, ABILITY_REGENERATOR, ABILITY_EFFECT_SPORE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21207,8 +19505,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 48, .baseSpAttack = 40, .baseSpDefense = 45, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 255, .expYield = 122, .evYield_Defense = 1, @@ -21216,8 +19513,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLUFFY, ABILITY_RUN_AWAY, ABILITY_BULLETPROOF}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -21231,8 +19527,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 88, .baseSpAttack = 60, .baseSpDefense = 90, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 127, .expYield = 172, .evYield_Defense = 2, @@ -21240,8 +19535,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FLUFFY, ABILITY_STEADFAST, ABILITY_BULLETPROOF}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -21255,8 +19549,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 44, .baseSpAttack = 38, .baseSpDefense = 38, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 255, .expYield = 57, .evYield_Attack = 1, @@ -21264,8 +19557,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21279,8 +19571,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 74, .baseSpAttack = 48, .baseSpDefense = 68, - .type1 = TYPE_WATER, - .type2 = TYPE_ROCK, + .types = { TYPE_WATER, TYPE_ROCK}, .catchRate = 75, .expYield = 170, .evYield_Attack = 2, @@ -21288,8 +19579,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21303,8 +19593,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 26, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 255, .expYield = 54, .evYield_HP = 1, @@ -21312,8 +19601,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BALL_FETCH, ABILITY_NONE, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -21327,8 +19615,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 121, .baseSpAttack = 90, .baseSpDefense = 60, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 45, .expYield = 172, .evYield_Speed = 2, @@ -21336,8 +19623,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_COMPETITIVE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -21351,8 +19637,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 255, .expYield = 48, .evYield_Defense = 1, @@ -21360,8 +19645,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STEAM_ENGINE, ABILITY_HEATPROOF, ABILITY_FLASH_FIRE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -21375,8 +19659,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 70, - .type1 = TYPE_ROCK, - .type2 = TYPE_FIRE, + .types = { TYPE_ROCK, TYPE_FIRE}, .catchRate = 120, .expYield = 144, .evYield_Defense = 2, @@ -21384,8 +19667,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -21399,8 +19681,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 80, .baseSpDefense = 90, - .type1 = TYPE_ROCK, - .type2 = TYPE_FIRE, + .types = { TYPE_ROCK, TYPE_FIRE}, .catchRate = 45, .expYield = 255, .evYield_Defense = 3, @@ -21408,8 +19689,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -21423,8 +19703,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_GRASS, - .type2 = TYPE_DRAGON, + .types = { TYPE_GRASS, TYPE_DRAGON}, .catchRate = 255, .expYield = 52, .evYield_Defense = 1, @@ -21432,8 +19711,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_BULLETPROOF}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21447,8 +19725,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 95, .baseSpDefense = 60, - .type1 = TYPE_GRASS, - .type2 = TYPE_DRAGON, + .types = { TYPE_GRASS, TYPE_DRAGON}, .catchRate = 45, .expYield = 170, .evYield_Attack = 2, @@ -21456,8 +19733,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21471,8 +19747,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 100, .baseSpDefense = 80, - .type1 = TYPE_GRASS, - .type2 = TYPE_DRAGON, + .types = { TYPE_GRASS, TYPE_DRAGON}, .catchRate = 45, .expYield = 170, .evYield_HP = 2, @@ -21480,8 +19755,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21495,8 +19769,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 46, .baseSpAttack = 35, .baseSpDefense = 50, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 255, .expYield = 63, .evYield_Defense = 1, @@ -21504,8 +19777,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21519,8 +19791,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 71, .baseSpAttack = 65, .baseSpDefense = 70, - .type1 = TYPE_GROUND, - .type2 = TYPE_GROUND, + .types = { TYPE_GROUND, TYPE_GROUND}, .catchRate = 120, .expYield = 179, .evYield_Defense = 2, @@ -21528,8 +19799,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -21545,8 +19815,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 66, .baseSpAttack = 40, .baseSpDefense = 30, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 255, .expYield = 56, .evYield_Speed = 1, @@ -21554,8 +19823,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -21569,8 +19837,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 136, .baseSpAttack = 60, .baseSpDefense = 50, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 60, .expYield = 172, .evYield_Speed = 2, @@ -21578,8 +19845,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -21593,8 +19859,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 54, .baseSpDefense = 35, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_POISON, + .types = { TYPE_ELECTRIC, TYPE_POISON}, .catchRate = 75, .expYield = 48, .evYield_SpAttack = 1, @@ -21602,8 +19867,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_RATTLED, ABILITY_STATIC, ABILITY_KLUTZ}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -21619,8 +19883,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_FIRE, - .type2 = TYPE_BUG, + .types = { TYPE_FIRE, TYPE_BUG}, .catchRate = 190, .expYield = 61, .evYield_Attack = 1, @@ -21628,8 +19891,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -21643,8 +19905,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 90, .baseSpDefense = 90, - .type1 = TYPE_FIRE, - .type2 = TYPE_BUG, + .types = { TYPE_FIRE, TYPE_BUG}, .catchRate = 75, .expYield = 184, .evYield_Attack = 2, @@ -21652,8 +19913,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -21667,8 +19927,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 32, .baseSpAttack = 50, .baseSpDefense = 50, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 180, .expYield = 62, .evYield_Attack = 1, @@ -21676,8 +19935,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -21691,8 +19949,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 42, .baseSpAttack = 70, .baseSpDefense = 80, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 168, .evYield_Attack = 2, @@ -21700,8 +19957,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -21719,8 +19975,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 39, .baseSpAttack = 56, .baseSpDefense = 53, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 235, .expYield = 53, .evYield_SpAttack = 1, @@ -21728,8 +19983,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -21743,8 +19997,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 49, .baseSpAttack = 86, .baseSpDefense = 73, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 120, .expYield = 130, .evYield_SpAttack = 2, @@ -21752,8 +20005,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -21767,8 +20019,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 29, .baseSpAttack = 136, .baseSpDefense = 103, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, .catchRate = 45, .expYield = 255, .evYield_SpAttack = 3, @@ -21776,8 +20027,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -21791,8 +20041,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 55, .baseSpDefense = 40, - .type1 = TYPE_DARK, - .type2 = TYPE_FAIRY, + .types = { TYPE_DARK, TYPE_FAIRY}, .catchRate = 255, .expYield = 53, .evYield_SpAttack = 1, @@ -21800,8 +20049,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -21815,8 +20063,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 75, .baseSpDefense = 55, - .type1 = TYPE_DARK, - .type2 = TYPE_FAIRY, + .types = { TYPE_DARK, TYPE_FAIRY}, .catchRate = 120, .expYield = 130, .evYield_SpAttack = 2, @@ -21824,8 +20071,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -21839,8 +20085,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 95, .baseSpDefense = 75, - .type1 = TYPE_DARK, - .type2 = TYPE_FAIRY, + .types = { TYPE_DARK, TYPE_FAIRY}, .catchRate = 45, .expYield = 255, .evYield_Attack = 3, @@ -21848,8 +20093,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -21863,8 +20107,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 60, .baseSpDefense = 81, - .type1 = TYPE_DARK, - .type2 = TYPE_NORMAL, + .types = { TYPE_DARK, TYPE_NORMAL}, .catchRate = 45, .expYield = 260, .evYield_Defense = 3, @@ -21872,8 +20115,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RECKLESS, ABILITY_GUTS, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -21887,8 +20129,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 50, .baseSpDefense = 60, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 90, .expYield = 154, .evYield_Attack = 2, @@ -21896,8 +20137,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_TOUGH_CLAWS, ABILITY_STEELY_SPIRIT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -21911,8 +20151,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 145, .baseSpDefense = 130, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 30, .expYield = 179, .evYield_SpAttack = 2, @@ -21920,8 +20159,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_PERISH_BODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -21935,8 +20173,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 68, .baseSpDefense = 82, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 177, .evYield_Attack = 2, @@ -21945,8 +20182,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -21960,8 +20196,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 110, .baseSpDefense = 100, - .type1 = TYPE_ICE, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_ICE, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 182, .evYield_SpAttack = 3, @@ -21969,8 +20204,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_TANGLED_FEET, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -21984,8 +20218,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 50, .baseSpDefense = 105, - .type1 = TYPE_GROUND, - .type2 = TYPE_GHOST, + .types = { TYPE_GROUND, TYPE_GHOST}, .catchRate = 90, .expYield = 169, .evYield_Defense = 2, @@ -21993,8 +20226,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WANDERING_SPIRIT, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -22008,8 +20240,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 34, .baseSpAttack = 50, .baseSpDefense = 61, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 200, .expYield = 54, .evYield_SpDefense = 1, @@ -22017,8 +20248,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -22034,8 +20264,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 70, .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 165, .evYield_Attack = 2, @@ -22044,8 +20273,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -22059,8 +20287,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 91, .baseSpDefense = 85, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 75, .expYield = 152, .evYield_Attack = 2, @@ -22068,8 +20295,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_NONE, ABILITY_ELECTRIC_SURGE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -22083,8 +20309,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 45, .baseSpDefense = 30, - .type1 = TYPE_ICE, - .type2 = TYPE_BUG, + .types = { TYPE_ICE, TYPE_BUG}, .catchRate = 190, .expYield = 37, .evYield_SpAttack = 1, @@ -22093,8 +20318,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_ICE_SCALES}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -22108,8 +20332,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 125, .baseSpDefense = 90, - .type1 = TYPE_ICE, - .type2 = TYPE_BUG, + .types = { TYPE_ICE, TYPE_BUG}, .catchRate = 75, .expYield = 166, .evYield_SpAttack = 2, @@ -22117,8 +20340,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_ICE_SCALES}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -22132,8 +20354,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 20, .baseSpDefense = 20, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 60, .expYield = 165, .evYield_Defense = 2, @@ -22141,8 +20362,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_POWER_SPOT, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -22156,8 +20376,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 65, .baseSpDefense = 90, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 60, .expYield = 165, .evYield_Defense = 2, @@ -22165,8 +20384,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_ICE_FACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -22180,8 +20398,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 105, .baseSpDefense = 95, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_NORMAL, + .types = { TYPE_PSYCHIC, TYPE_NORMAL}, .catchRate = 30, .expYield = 166, .evYield_SpAttack = 2, @@ -22189,8 +20406,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 140, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -22206,8 +20422,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 40, .baseSpDefense = 49, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 190, .expYield = 66, .evYield_Attack = 1, @@ -22216,8 +20431,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -22231,8 +20445,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 80, .baseSpDefense = 69, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 90, .expYield = 175, .evYield_Attack = 2, @@ -22241,8 +20454,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22256,8 +20468,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 80, .baseSpDefense = 70, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_DRAGON, + .types = { TYPE_ELECTRIC, TYPE_DRAGON}, .catchRate = 45, .expYield = 177, .evYield_Attack = 2, @@ -22265,8 +20476,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_HUSTLE, ABILITY_SAND_RUSH}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22280,8 +20490,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 90, .baseSpDefense = 80, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ICE, + .types = { TYPE_ELECTRIC, TYPE_ICE}, .catchRate = 45, .expYield = 177, .evYield_Attack = 2, @@ -22289,8 +20498,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_STATIC, ABILITY_SLUSH_RUSH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -22304,8 +20512,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 70, .baseSpDefense = 80, - .type1 = TYPE_WATER, - .type2 = TYPE_DRAGON, + .types = { TYPE_WATER, TYPE_DRAGON}, .catchRate = 45, .expYield = 177, .evYield_Defense = 2, @@ -22313,8 +20520,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_STRONG_JAW, ABILITY_SAND_RUSH}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22328,8 +20534,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 80, .baseSpDefense = 90, - .type1 = TYPE_WATER, - .type2 = TYPE_ICE, + .types = { TYPE_WATER, TYPE_ICE}, .catchRate = 45, .expYield = 177, .evYield_Defense = 2, @@ -22337,8 +20542,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_WATER_ABSORB, ABILITY_ICE_BODY, ABILITY_SLUSH_RUSH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -22352,8 +20556,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 120, .baseSpDefense = 50, - .type1 = TYPE_STEEL, - .type2 = TYPE_DRAGON, + .types = { TYPE_STEEL, TYPE_DRAGON}, .catchRate = 45, .expYield = 187, .evYield_SpAttack = 2, @@ -22361,8 +20564,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_DRAGON}, .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -22376,8 +20578,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 82, .baseSpAttack = 40, .baseSpDefense = 30, - .type1 = TYPE_DRAGON, - .type2 = TYPE_GHOST, + .types = { TYPE_DRAGON, TYPE_GHOST}, .catchRate = 45, .expYield = 54, .evYield_Speed = 1, @@ -22385,8 +20586,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22400,8 +20600,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 102, .baseSpAttack = 60, .baseSpDefense = 50, - .type1 = TYPE_DRAGON, - .type2 = TYPE_GHOST, + .types = { TYPE_DRAGON, TYPE_GHOST}, .catchRate = 45, .expYield = 144, .evYield_Speed = 2, @@ -22409,8 +20608,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22424,8 +20622,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 142, .baseSpAttack = 100, .baseSpDefense = 75, - .type1 = TYPE_DRAGON, - .type2 = TYPE_GHOST, + .types = { TYPE_DRAGON, TYPE_GHOST}, .catchRate = 45, .expYield = 300, .evYield_Speed = 3, @@ -22433,8 +20630,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22448,8 +20644,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 138, .baseSpAttack = 80, .baseSpDefense = 115, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 10, .expYield = 335, .evYield_Speed = 3, @@ -22457,8 +20652,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_INTREPID_SWORD, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -22473,8 +20667,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 138, .baseSpAttack = 80, .baseSpDefense = 115, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 10, .expYield = 335, .evYield_Speed = 3, @@ -22482,8 +20675,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -22498,8 +20690,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 145, .baseSpDefense = 95, - .type1 = TYPE_POISON, - .type2 = TYPE_DRAGON, + .types = { TYPE_POISON, TYPE_DRAGON}, .catchRate = 255, .expYield = 345, .evYield_HP = 3, @@ -22507,8 +20698,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -22523,8 +20713,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 72, .baseSpAttack = 53, .baseSpDefense = 50, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 3, .expYield = 77, .evYield_Attack = 1, @@ -22532,8 +20721,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -22548,8 +20736,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 63, .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_DARK, + .types = { TYPE_FIGHTING, TYPE_DARK}, .catchRate = 3, .expYield = 275, .evYield_Attack = 3, @@ -22557,8 +20744,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -22575,8 +20761,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 200, .baseSpAttack = 100, .baseSpDefense = 50, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 3, .expYield = 290, .evYield_Speed = 3, @@ -22584,8 +20769,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_TRANSISTOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -22600,8 +20784,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 100, .baseSpDefense = 50, - .type1 = TYPE_DRAGON, - .type2 = TYPE_DRAGON, + .types = { TYPE_DRAGON, TYPE_DRAGON}, .catchRate = 3, .expYield = 290, .evYield_HP = 3, @@ -22609,8 +20792,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DRAGONS_MAW, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22625,8 +20807,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 65, .baseSpDefense = 110, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 3, .expYield = 290, .evYield_Attack = 3, @@ -22634,8 +20815,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_CHILLING_NEIGH, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -22650,8 +20830,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 145, .baseSpDefense = 80, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 3, .expYield = 290, .evYield_SpAttack = 3, @@ -22659,8 +20838,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_GRIM_NEIGH, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -22675,8 +20853,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 80, .baseSpDefense = 80, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_GRASS, + .types = { TYPE_PSYCHIC, TYPE_GRASS}, .catchRate = 3, .expYield = 250, .evYield_HP = 3, @@ -22684,8 +20861,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_UNNERVE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22700,8 +20876,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 105, .baseSpDefense = 75, - .type1 = TYPE_NORMAL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_NORMAL, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 184, .evYield_Attack = 1, @@ -22709,8 +20884,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -22724,8 +20898,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 45, .baseSpDefense = 70, - .type1 = TYPE_BUG, - .type2 = TYPE_ROCK, + .types = { TYPE_BUG, TYPE_ROCK}, .catchRate = 25, .expYield = 175, .evYield_Attack = 2, @@ -22733,8 +20906,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SWARM, ABILITY_SHEER_FORCE, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -22748,8 +20920,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 45, .baseSpDefense = 80, - .type1 = TYPE_GROUND, - .type2 = TYPE_NORMAL, + .types = { TYPE_GROUND, TYPE_NORMAL}, .catchRate = 75, .expYield = 194, .evYield_Attack = 3, @@ -22757,8 +20928,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GUTS, ABILITY_BULLETPROOF, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -22772,8 +20942,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 78, .baseSpAttack = 80, .baseSpDefense = 75, - .type1 = TYPE_WATER, - .type2 = TYPE_GHOST, + .types = { TYPE_WATER, TYPE_GHOST}, .catchRate = 25, .expYield = 186, .evYield_HP = 2, @@ -22781,8 +20950,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22797,8 +20965,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 120, .baseSpAttack = 40, .baseSpDefense = 80, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_POISON, + .types = { TYPE_FIGHTING, TYPE_POISON}, .catchRate = 135, .expYield = 179, .evYield_Attack = 1, @@ -22807,8 +20974,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_POISON_TOUCH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -22822,8 +20988,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 65, .baseSpDefense = 65, - .type1 = TYPE_DARK, - .type2 = TYPE_POISON, + .types = { TYPE_DARK, TYPE_POISON}, .catchRate = 135, .expYield = 180, .evYield_Attack = 1, @@ -22831,8 +20996,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -22846,8 +21010,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 106, .baseSpAttack = 135, .baseSpDefense = 80, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FLYING, + .types = { TYPE_FAIRY, TYPE_FLYING}, .catchRate = 3, .expYield = 261, .evYield_SpAttack = 3, @@ -22855,8 +21018,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -22872,8 +21034,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 122, .baseSpDefense = 120, - .type1 = TYPE_GRASS, - .type2 = TYPE_POISON, + .types = { TYPE_GRASS, TYPE_POISON}, .catchRate = 45, .expYield = 281, .evYield_SpAttack = 2, @@ -22882,8 +21043,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_THICK_FAT, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -22898,8 +21058,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 130, .baseSpDefense = 85, - .type1 = TYPE_FIRE, - .type2 = TYPE_DRAGON, + .types = { TYPE_FIRE, TYPE_DRAGON}, .catchRate = 45, .expYield = 285, .evYield_SpAttack = 3, @@ -22907,8 +21066,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -22923,8 +21081,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 159, .baseSpDefense = 115, - .type1 = TYPE_FIRE, - .type2 = TYPE_FLYING, + .types = { TYPE_FIRE, TYPE_FLYING}, .catchRate = 45, .expYield = 285, .evYield_SpAttack = 3, @@ -22932,8 +21089,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_DROUGHT, ABILITY_DROUGHT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -22948,8 +21104,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 78, .baseSpAttack = 135, .baseSpDefense = 115, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 45, .expYield = 284, .evYield_SpDefense = 3, @@ -22957,8 +21112,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_MEGA_LAUNCHER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -22973,8 +21127,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 145, .baseSpAttack = 15, .baseSpDefense = 80, - .type1 = TYPE_BUG, - .type2 = TYPE_POISON, + .types = { TYPE_BUG, TYPE_POISON}, .catchRate = 45, .expYield = 223, .evYield_Attack = 2, @@ -22984,8 +21137,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -23000,8 +21152,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 121, .baseSpAttack = 135, .baseSpDefense = 80, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FLYING, + .types = { TYPE_NORMAL, TYPE_FLYING}, .catchRate = 45, .expYield = 261, .evYield_Speed = 3, @@ -23009,8 +21160,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_NO_GUARD, ABILITY_NO_GUARD}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -23029,8 +21179,7 @@ const struct SpeciesInfo gSpeciesInfo[] = #else .baseSpDefense = 95, #endif - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 50, .expYield = 270, .evYield_SpAttack = 3, @@ -23039,8 +21188,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_TRACE, ABILITY_TRACE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -23055,8 +21203,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 130, .baseSpDefense = 80, - .type1 = TYPE_WATER, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_WATER, TYPE_PSYCHIC}, .catchRate = 75, .expYield = 207, .evYield_Defense = 2, @@ -23065,8 +21212,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -23081,8 +21227,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 170, .baseSpDefense = 95, - .type1 = TYPE_GHOST, - .type2 = TYPE_POISON, + .types = { TYPE_GHOST, TYPE_POISON}, .catchRate = 45, .expYield = 270, .evYield_SpAttack = 3, @@ -23090,8 +21235,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -23106,8 +21250,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 60, .baseSpDefense = 100, - .type1 = TYPE_NORMAL, - .type2 = TYPE_NORMAL, + .types = { TYPE_NORMAL, TYPE_NORMAL}, .catchRate = 45, .expYield = 207, .evYield_HP = 2, @@ -23115,8 +21258,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_PARENTAL_BOND, ABILITY_PARENTAL_BOND}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -23131,8 +21273,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 65, .baseSpDefense = 90, - .type1 = TYPE_BUG, - .type2 = TYPE_FLYING, + .types = { TYPE_BUG, TYPE_FLYING}, .catchRate = 45, .expYield = 210, .evYield_Attack = 2, @@ -23140,8 +21281,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_AERILATE, ABILITY_AERILATE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -23156,8 +21296,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 81, .baseSpAttack = 70, .baseSpDefense = 130, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 45, .expYield = 224, .evYield_Attack = 2, @@ -23165,8 +21304,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 5, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, .abilities = {ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23181,8 +21319,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 150, .baseSpAttack = 70, .baseSpDefense = 95, - .type1 = TYPE_ROCK, - .type2 = TYPE_FLYING, + .types = { TYPE_ROCK, TYPE_FLYING}, .catchRate = 45, .expYield = 215, .evYield_Speed = 2, @@ -23190,8 +21327,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -23206,8 +21342,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 154, .baseSpDefense = 100, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FIGHTING, + .types = { TYPE_PSYCHIC, TYPE_FIGHTING}, .catchRate = 3, .expYield = 351, .evYield_SpAttack = 3, @@ -23215,8 +21350,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_STEADFAST, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -23231,8 +21365,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 140, .baseSpAttack = 194, .baseSpDefense = 120, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 351, .evYield_SpAttack = 3, @@ -23240,8 +21373,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_INSOMNIA, ABILITY_INSOMNIA}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -23256,8 +21388,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 165, .baseSpDefense = 110, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_DRAGON, + .types = { TYPE_ELECTRIC, TYPE_DRAGON}, .catchRate = 45, .expYield = 275, .evYield_SpAttack = 3, @@ -23265,8 +21396,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, .abilities = {ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -23281,8 +21411,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 55, .baseSpDefense = 95, - .type1 = TYPE_STEEL, - .type2 = TYPE_GROUND, + .types = { TYPE_STEEL, TYPE_GROUND}, .catchRate = 25, .expYield = 214, .evYield_Defense = 2, @@ -23291,8 +21420,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SAND_FORCE, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -23307,8 +21435,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 65, .baseSpDefense = 100, - .type1 = TYPE_BUG, - .type2 = TYPE_STEEL, + .types = { TYPE_BUG, TYPE_STEEL}, .catchRate = 25, .expYield = 210, .evYield_Attack = 2, @@ -23316,8 +21443,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_TECHNICIAN, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -23332,8 +21458,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 40, .baseSpDefense = 105, - .type1 = TYPE_BUG, - .type2 = TYPE_FIGHTING, + .types = { TYPE_BUG, TYPE_FIGHTING}, .catchRate = 45, .expYield = 210, .evYield_Attack = 2, @@ -23341,8 +21466,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_SKILL_LINK, ABILITY_SKILL_LINK}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23357,8 +21481,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 140, .baseSpDefense = 90, - .type1 = TYPE_DARK, - .type2 = TYPE_FIRE, + .types = { TYPE_DARK, TYPE_FIRE}, .catchRate = 45, .expYield = 210, .evYield_SpAttack = 2, @@ -23366,8 +21489,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SOLAR_POWER, ABILITY_SOLAR_POWER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -23382,8 +21504,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 71, .baseSpAttack = 95, .baseSpDefense = 120, - .type1 = TYPE_ROCK, - .type2 = TYPE_DARK, + .types = { TYPE_ROCK, TYPE_DARK}, .catchRate = 45, .expYield = 315, .evYield_Attack = 3, @@ -23391,8 +21512,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_SAND_STREAM, ABILITY_SAND_STREAM}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -23407,8 +21527,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 145, .baseSpAttack = 145, .baseSpDefense = 85, - .type1 = TYPE_GRASS, - .type2 = TYPE_DRAGON, + .types = { TYPE_GRASS, TYPE_DRAGON}, .catchRate = 45, .expYield = 284, .evYield_Speed = 3, @@ -23416,8 +21535,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_LIGHTNING_ROD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -23432,8 +21550,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 130, .baseSpDefense = 80, - .type1 = TYPE_FIRE, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIRE, TYPE_FIGHTING}, .catchRate = 45, .expYield = 284, .evYield_Attack = 3, @@ -23441,8 +21558,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SPEED_BOOST, ABILITY_SPEED_BOOST}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -23457,8 +21573,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 95, .baseSpDefense = 110, - .type1 = TYPE_WATER, - .type2 = TYPE_GROUND, + .types = { TYPE_WATER, TYPE_GROUND}, .catchRate = 45, .expYield = 286, .evYield_Attack = 3, @@ -23466,8 +21581,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23482,8 +21596,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 165, .baseSpDefense = 135, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, .catchRate = 45, .expYield = 278, .evYield_SpAttack = 3, @@ -23491,8 +21604,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_PIXILATE, ABILITY_PIXILATE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -23507,8 +21619,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 85, .baseSpDefense = 115, - .type1 = TYPE_DARK, - .type2 = TYPE_GHOST, + .types = { TYPE_DARK, TYPE_GHOST}, .catchRate = 45, .expYield = 168, .evYield_Attack = 1, @@ -23517,8 +21628,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -23533,8 +21643,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 55, .baseSpDefense = 95, - .type1 = TYPE_STEEL, - .type2 = TYPE_FAIRY, + .types = { TYPE_STEEL, TYPE_FAIRY}, .catchRate = 45, .expYield = 168, .evYield_Attack = 1, @@ -23543,8 +21652,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HUGE_POWER, ABILITY_HUGE_POWER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -23559,8 +21667,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 60, .baseSpDefense = 80, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 45, .expYield = 284, .evYield_Defense = 3, @@ -23569,8 +21676,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_FILTER, ABILITY_FILTER}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -23585,8 +21691,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 80, .baseSpDefense = 85, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_FIGHTING, TYPE_PSYCHIC}, .catchRate = 90, .expYield = 179, .evYield_Speed = 2, @@ -23594,8 +21699,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_PURE_POWER, ABILITY_PURE_POWER}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -23610,8 +21714,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 135, .baseSpAttack = 135, .baseSpDefense = 80, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, .catchRate = 45, .expYield = 201, .evYield_Speed = 2, @@ -23619,8 +21722,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -23635,8 +21737,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 110, .baseSpDefense = 65, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 60, .expYield = 196, .evYield_Attack = 2, @@ -23645,8 +21746,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_STRONG_JAW, ABILITY_STRONG_JAW}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23661,8 +21761,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 145, .baseSpDefense = 105, - .type1 = TYPE_FIRE, - .type2 = TYPE_GROUND, + .types = { TYPE_FIRE, TYPE_GROUND}, .catchRate = 150, .expYield = 196, .evYield_Attack = 1, @@ -23671,8 +21770,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -23687,8 +21785,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 110, .baseSpDefense = 105, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FAIRY, + .types = { TYPE_DRAGON, TYPE_FAIRY}, .catchRate = 45, .expYield = 207, .evYield_SpDefense = 2, @@ -23696,8 +21793,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, .abilities = {ABILITY_PIXILATE, ABILITY_PIXILATE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23712,8 +21808,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 75, .baseSpAttack = 93, .baseSpDefense = 83, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 45, .expYield = 194, .evYield_Attack = 2, @@ -23722,8 +21817,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_PRANKSTER, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -23738,8 +21832,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 115, .baseSpDefense = 60, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 30, .expYield = 198, .evYield_Attack = 2, @@ -23747,8 +21840,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, @@ -23763,8 +21855,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 120, .baseSpDefense = 80, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 75, .expYield = 203, .evYield_HP = 2, @@ -23772,8 +21863,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, .abilities = {ABILITY_REFRIGERATE, ABILITY_REFRIGERATE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -23788,8 +21878,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 120, .baseSpAttack = 120, .baseSpDefense = 90, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FLYING, + .types = { TYPE_DRAGON, TYPE_FLYING}, .catchRate = 45, .expYield = 315, .evYield_Attack = 3, @@ -23798,8 +21887,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_AERILATE, ABILITY_AERILATE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23814,8 +21902,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 105, .baseSpDefense = 110, - .type1 = TYPE_STEEL, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_STEEL, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 315, .evYield_Defense = 3, @@ -23824,8 +21911,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23840,8 +21926,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 140, .baseSpDefense = 150, - .type1 = TYPE_DRAGON, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_DRAGON, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 315, .evYield_SpDefense = 3, @@ -23849,8 +21934,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -23865,8 +21949,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 160, .baseSpDefense = 120, - .type1 = TYPE_DRAGON, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_DRAGON, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 315, .evYield_SpAttack = 3, @@ -23874,8 +21957,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -23891,8 +21973,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 135, .baseSpAttack = 54, .baseSpDefense = 96, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FIGHTING, + .types = { TYPE_NORMAL, TYPE_FIGHTING}, .catchRate = 60, .expYield = 203, .evYield_Speed = 2, @@ -23900,8 +21981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 140, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_SCRAPPY, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -23916,8 +21996,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 92, .baseSpAttack = 120, .baseSpDefense = 95, - .type1 = TYPE_DRAGON, - .type2 = TYPE_GROUND, + .types = { TYPE_DRAGON, TYPE_GROUND}, .catchRate = 45, .expYield = 315, .evYield_Attack = 3, @@ -23925,8 +22004,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAND_FORCE, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23941,8 +22019,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 112, .baseSpAttack = 140, .baseSpDefense = 70, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_STEEL, + .types = { TYPE_FIGHTING, TYPE_STEEL}, .catchRate = 45, .expYield = 219, .evYield_Attack = 1, @@ -23951,8 +22028,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -23967,8 +22043,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 132, .baseSpDefense = 105, - .type1 = TYPE_GRASS, - .type2 = TYPE_ICE, + .types = { TYPE_GRASS, TYPE_ICE}, .catchRate = 60, .expYield = 208, .evYield_Attack = 1, @@ -23978,8 +22053,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, .abilities = {ABILITY_SNOW_WARNING, ABILITY_SNOW_WARNING}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -23994,8 +22068,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 65, .baseSpDefense = 115, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FIGHTING, + .types = { TYPE_PSYCHIC, TYPE_FIGHTING}, .catchRate = 45, .expYield = 278, .evYield_Attack = 3, @@ -24003,8 +22076,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -24021,8 +22093,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 80, .baseSpDefense = 126, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FAIRY, + .types = { TYPE_NORMAL, TYPE_FAIRY}, .catchRate = 255, .expYield = 425, .evYield_HP = 2, @@ -24032,8 +22103,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_HEALER, ABILITY_HEALER}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -24050,8 +22120,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 160, .baseSpDefense = 110, - .type1 = TYPE_ROCK, - .type2 = TYPE_FAIRY, + .types = { TYPE_ROCK, TYPE_FAIRY}, .catchRate = 3, .expYield = 315, .evYield_Defense = 1, @@ -24060,8 +22129,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -24077,8 +22145,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 180, .baseSpDefense = 100, - .type1 = TYPE_DRAGON, - .type2 = TYPE_FLYING, + .types = { TYPE_DRAGON, TYPE_FLYING}, .catchRate = 45, .expYield = 306, .evYield_Attack = 2, @@ -24087,8 +22154,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DELTA_STREAM, ABILITY_DELTA_STREAM}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -24103,8 +22169,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 180, .baseSpDefense = 160, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 3, .expYield = 302, .evYield_SpAttack = 3, @@ -24112,8 +22177,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRIMORDIAL_SEA, ABILITY_PRIMORDIAL_SEA}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -24128,8 +22192,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 90, - .type1 = TYPE_GROUND, - .type2 = TYPE_FIRE, + .types = { TYPE_GROUND, TYPE_FIRE}, .catchRate = 3, .expYield = 302, .evYield_Attack = 3, @@ -24137,8 +22200,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DESOLATE_LAND, ABILITY_DESOLATE_LAND}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -24153,8 +22215,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 72, .baseSpAttack = 25, .baseSpDefense = 35, - .type1 = TYPE_DARK, - .type2 = TYPE_NORMAL, + .types = { TYPE_DARK, TYPE_NORMAL}, .catchRate = 255, .expYield = 51, .evYield_Speed = 1, @@ -24163,8 +22224,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -24179,8 +22239,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 77, .baseSpAttack = 40, .baseSpDefense = 80, - .type1 = TYPE_DARK, - .type2 = TYPE_NORMAL, + .types = { TYPE_DARK, TYPE_NORMAL}, .catchRate = 127, .expYield = 145, .evYield_Speed = 2, @@ -24189,8 +22248,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -24205,8 +22263,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 95, .baseSpDefense = 85, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_ELECTRIC, TYPE_PSYCHIC}, .catchRate = 75, .expYield = 218, .evYield_Speed = 3, @@ -24214,8 +22271,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, .abilities = {ABILITY_SURGE_SURFER, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -24230,8 +22286,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 10, .baseSpDefense = 35, - .type1 = TYPE_ICE, - .type2 = TYPE_STEEL, + .types = { TYPE_ICE, TYPE_STEEL}, .catchRate = 255, .expYield = 60, .evYield_Defense = 1, @@ -24240,8 +22295,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -24256,8 +22310,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 25, .baseSpDefense = 65, - .type1 = TYPE_ICE, - .type2 = TYPE_STEEL, + .types = { TYPE_ICE, TYPE_STEEL}, .catchRate = 90, .expYield = 158, .evYield_Defense = 2, @@ -24265,8 +22318,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -24281,8 +22333,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 50, .baseSpDefense = 65, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 190, .expYield = 60, .evYield_Speed = 1, @@ -24291,8 +22342,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -24307,8 +22357,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 109, .baseSpAttack = 81, .baseSpDefense = 100, - .type1 = TYPE_ICE, - .type2 = TYPE_FAIRY, + .types = { TYPE_ICE, TYPE_FAIRY}, .catchRate = 75, .expYield = 177, .evYield_Speed = 1, @@ -24317,8 +22366,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -24333,8 +22381,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 35, .baseSpDefense = 45, - .type1 = TYPE_GROUND, - .type2 = TYPE_STEEL, + .types = { TYPE_GROUND, TYPE_STEEL}, .catchRate = 255, .expYield = 53, .evYield_Speed = 1, @@ -24343,8 +22390,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -24359,8 +22405,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 50, .baseSpDefense = 70, - .type1 = TYPE_GROUND, - .type2 = TYPE_STEEL, + .types = { TYPE_GROUND, TYPE_STEEL}, .catchRate = 50, .expYield = 149, .evYield_Speed = 2, @@ -24369,8 +22414,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, @@ -24385,8 +22429,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 50, .baseSpDefense = 40, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 255, .expYield = 58, .evYield_Speed = 1, @@ -24395,8 +22438,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -24411,8 +22453,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 75, .baseSpDefense = 65, - .type1 = TYPE_DARK, - .type2 = TYPE_DARK, + .types = { TYPE_DARK, TYPE_DARK}, .catchRate = 90, .expYield = 154, .evYield_Speed = 2, @@ -24421,8 +22462,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_FUR_COAT, ABILITY_TECHNICIAN, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -24437,8 +22477,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 20, .baseSpAttack = 30, .baseSpDefense = 30, - .type1 = TYPE_ROCK, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ROCK, TYPE_ELECTRIC}, .catchRate = 255, .expYield = 60, .evYield_Defense = 1, @@ -24447,8 +22486,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -24463,8 +22501,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 35, .baseSpAttack = 45, .baseSpDefense = 45, - .type1 = TYPE_ROCK, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ROCK, TYPE_ELECTRIC}, .catchRate = 120, .expYield = 137, .evYield_Defense = 2, @@ -24473,8 +22510,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -24489,8 +22525,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 55, .baseSpDefense = 65, - .type1 = TYPE_ROCK, - .type2 = TYPE_ELECTRIC, + .types = { TYPE_ROCK, TYPE_ELECTRIC}, .catchRate = 45, .expYield = 223, .evYield_Defense = 3, @@ -24498,8 +22533,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -24514,8 +22548,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 25, .baseSpAttack = 40, .baseSpDefense = 50, - .type1 = TYPE_POISON, - .type2 = TYPE_DARK, + .types = { TYPE_POISON, TYPE_DARK}, .catchRate = 190, .expYield = 65, .evYield_HP = 1, @@ -24524,8 +22557,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -24540,8 +22572,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 65, .baseSpDefense = 100, - .type1 = TYPE_POISON, - .type2 = TYPE_DARK, + .types = { TYPE_POISON, TYPE_DARK}, .catchRate = 75, .expYield = 175, .evYield_HP = 1, @@ -24550,8 +22581,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -24566,8 +22596,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 125, .baseSpDefense = 75, - .type1 = TYPE_GRASS, - .type2 = TYPE_DRAGON, + .types = { TYPE_GRASS, TYPE_DRAGON}, .catchRate = 45, .expYield = 186, .evYield_SpAttack = 2, @@ -24575,8 +22604,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_FRISK, ABILITY_NONE, ABILITY_HARVEST}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -24591,8 +22619,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 45, .baseSpAttack = 50, .baseSpDefense = 80, - .type1 = TYPE_FIRE, - .type2 = TYPE_GHOST, + .types = { TYPE_FIRE, TYPE_GHOST}, .catchRate = 75, .expYield = 149, .evYield_Defense = 2, @@ -24600,8 +22627,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MONSTER, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, .abilities = {ABILITY_CURSED_BODY, ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -24616,8 +22642,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_STEEL, - .type2 = TYPE_STEEL, + .types = { TYPE_STEEL, TYPE_STEEL}, .catchRate = 255, .expYield = 58, .evYield_Attack = 1, @@ -24625,8 +22650,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_TOUGH_CLAWS, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -24641,8 +22665,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 65, .baseSpDefense = 65, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 190, .expYield = 82, .evYield_Speed = 1, @@ -24650,8 +22673,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -24666,8 +22688,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 80, .baseSpDefense = 80, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FAIRY, + .types = { TYPE_PSYCHIC, TYPE_FAIRY}, .catchRate = 60, .expYield = 175, .evYield_Speed = 2, @@ -24675,8 +22696,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -24691,8 +22711,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 15, .baseSpAttack = 40, .baseSpDefense = 40, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 190, .expYield = 63, .evYield_HP = 1, @@ -24700,8 +22719,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_GLUTTONY, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -24716,8 +22734,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 100, .baseSpDefense = 70, - .type1 = TYPE_POISON, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_POISON, TYPE_PSYCHIC}, .catchRate = 75, .expYield = 172, .evYield_Attack = 2, @@ -24725,8 +22742,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_QUICK_DRAW, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -24741,8 +22757,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 58, .baseSpDefense = 62, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FIGHTING, + .types = { TYPE_FIGHTING, TYPE_FIGHTING}, .catchRate = 45, .expYield = 132, .evYield_Attack = 1, @@ -24751,8 +22766,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -24767,8 +22781,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 85, .baseSpDefense = 70, - .type1 = TYPE_POISON, - .type2 = TYPE_FAIRY, + .types = { TYPE_POISON, TYPE_FAIRY}, .catchRate = 60, .expYield = 172, .evYield_Defense = 2, @@ -24777,8 +22790,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_AMORPHOUS, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_MISTY_SURGE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -24793,8 +22805,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 90, .baseSpDefense = 90, - .type1 = TYPE_ICE, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_ICE, TYPE_PSYCHIC}, .catchRate = 45, .expYield = 161, .evYield_Speed = 2, @@ -24802,8 +22813,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_HUMAN_LIKE, - .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -24818,8 +22828,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 125, .baseSpDefense = 100, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FLYING, + .types = { TYPE_PSYCHIC, TYPE_FLYING}, .catchRate = 3, .expYield = 290, .evYield_SpAttack = 3, @@ -24827,8 +22836,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_COMPETITIVE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -24843,8 +22851,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 85, .baseSpDefense = 90, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_FLYING, + .types = { TYPE_FIGHTING, TYPE_FLYING}, .catchRate = 3, .expYield = 290, .evYield_Attack = 3, @@ -24852,8 +22859,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DEFIANT, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -24868,8 +22874,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 100, .baseSpDefense = 125, - .type1 = TYPE_DARK, - .type2 = TYPE_FLYING, + .types = { TYPE_DARK, TYPE_FLYING}, .catchRate = 3, .expYield = 290, .evYield_SpDefense = 3, @@ -24877,8 +22882,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BERSERK, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -24893,8 +22897,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 110, .baseSpDefense = 110, - .type1 = TYPE_POISON, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_POISON, TYPE_PSYCHIC}, .catchRate = 70, .expYield = 172, .evYield_SpDefense = 2, @@ -24902,8 +22905,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_WATER_1, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, .abilities = {ABILITY_CURIOUS_MEDICINE, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, @@ -24918,8 +22920,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 65, .baseSpDefense = 100, - .type1 = TYPE_GHOST, - .type2 = TYPE_GHOST, + .types = { TYPE_GHOST, TYPE_GHOST}, .catchRate = 60, .expYield = 144, .evYield_SpDefense = 1, @@ -24927,8 +22928,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_WATER_3, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -24943,8 +22943,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 30, .baseSpDefense = 41, - .type1 = TYPE_DARK, - .type2 = TYPE_NORMAL, + .types = { TYPE_DARK, TYPE_NORMAL}, .catchRate = 255, .expYield = 56, .evYield_Speed = 1, @@ -24952,8 +22951,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -24968,8 +22966,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 50, .baseSpDefense = 61, - .type1 = TYPE_DARK, - .type2 = TYPE_NORMAL, + .types = { TYPE_DARK, TYPE_NORMAL}, .catchRate = 90, .expYield = 147, .evYield_Speed = 2, @@ -24977,8 +22974,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -24994,8 +22990,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 15, .baseSpDefense = 45, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 120, .expYield = 63, .evYield_Attack = 1, @@ -25003,8 +22998,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -25019,8 +23013,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 30, .baseSpDefense = 55, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 60, .expYield = 168, .evYield_Attack = 2, @@ -25028,8 +23021,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -25044,8 +23036,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 30, .baseSpDefense = 65, - .type1 = TYPE_GROUND, - .type2 = TYPE_GHOST, + .types = { TYPE_GROUND, TYPE_GHOST}, .catchRate = 190, .expYield = 61, .evYield_Defense = 1, @@ -25053,8 +23044,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_WANDERING_SPIRIT, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -25069,8 +23059,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 32, .baseSpAttack = 66, .baseSpDefense = 84, - .type1 = TYPE_GROUND, - .type2 = TYPE_STEEL, + .types = { TYPE_GROUND, TYPE_STEEL}, .catchRate = 75, .expYield = 165, .evYield_HP = 2, @@ -25078,8 +23067,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_AMORPHOUS, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, .abilities = {ABILITY_MIMICRY, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -25095,8 +23083,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 65, .baseSpDefense = 50, - .type1 = TYPE_FIRE, - .type2 = TYPE_ROCK, + .types = { TYPE_FIRE, TYPE_ROCK}, .catchRate = 190, .expYield = 70, .evYield_Attack = 1, @@ -25104,8 +23091,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -25120,8 +23106,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 95, .baseSpDefense = 80, - .type1 = TYPE_FIRE, - .type2 = TYPE_ROCK, + .types = { TYPE_FIRE, TYPE_ROCK}, .catchRate = 75, .expYield = 194, .evYield_Attack = 2, @@ -25129,8 +23114,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -25145,8 +23129,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 100, .baseSpAttack = 55, .baseSpDefense = 55, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_GRASS, + .types = { TYPE_ELECTRIC, TYPE_GRASS}, .catchRate = 190, .expYield = 66, .evYield_Speed = 1, @@ -25154,8 +23137,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -25170,8 +23152,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 80, .baseSpDefense = 80, .baseSpeed = 150, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_GRASS, + .types = { TYPE_ELECTRIC, TYPE_GRASS}, .catchRate = 60, .expYield = 172, .evYield_Speed = 2, @@ -25179,8 +23160,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -25195,8 +23175,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 119, .baseSpDefense = 85, - .type1 = TYPE_FIRE, - .type2 = TYPE_GHOST, + .types = { TYPE_FIRE, TYPE_GHOST}, .catchRate = 45, .expYield = 240, .evYield_SpAttack = 3, @@ -25204,8 +23183,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, @@ -25220,8 +23198,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 55, .baseSpDefense = 55, - .type1 = TYPE_DARK, - .type2 = TYPE_POISON, + .types = { TYPE_DARK, TYPE_POISON}, .catchRate = 45, .expYield = 88, .evYield_Attack = 1, @@ -25230,8 +23207,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -25246,8 +23222,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 115, .baseSpAttack = 35, .baseSpDefense = 75, - .type1 = TYPE_POISON, - .type2 = TYPE_FIGHTING, + .types = { TYPE_POISON, TYPE_FIGHTING}, .catchRate = 60, .expYield = 86, .evYield_Speed = 1, @@ -25256,8 +23231,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_POISON_TOUCH}, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, @@ -25273,8 +23247,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 100, .baseSpDefense = 65, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 45, .expYield = 238, .evYield_SpAttack = 3, @@ -25282,8 +23255,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -25298,8 +23270,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 105, .baseSpAttack = 50, .baseSpDefense = 75, - .type1 = TYPE_GRASS, - .type2 = TYPE_FIGHTING, + .types = { TYPE_GRASS, TYPE_FIGHTING}, .catchRate = 75, .expYield = 168, .evYield_Attack = 2, @@ -25308,8 +23279,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_GRASS, - .eggGroup2 = EGG_GROUP_GRASS, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, .abilities = {ABILITY_CHLOROPHYLL, ABILITY_HUSTLE, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -25324,8 +23294,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 70, .baseSpAttack = 85, .baseSpDefense = 40, - .type1 = TYPE_NORMAL, - .type2 = TYPE_GHOST, + .types = { TYPE_NORMAL, TYPE_GHOST}, .catchRate = 75, .expYield = 66, .evYield_SpAttack = 1, @@ -25333,8 +23302,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -25349,8 +23317,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 125, .baseSpDefense = 60, - .type1 = TYPE_NORMAL, - .type2 = TYPE_GHOST, + .types = { TYPE_NORMAL, TYPE_GHOST}, .catchRate = 45, .expYield = 179, .evYield_SpAttack = 2, @@ -25358,8 +23325,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -25374,8 +23340,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 65, .baseSpAttack = 112, .baseSpDefense = 70, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_FLYING, + .types = { TYPE_PSYCHIC, TYPE_FLYING}, .catchRate = 60, .expYield = 179, .evYield_SpAttack = 2, @@ -25383,8 +23348,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -25401,8 +23365,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 40, .baseSpAttack = 83, .baseSpDefense = 113, - .type1 = TYPE_DRAGON, - .type2 = TYPE_STEEL, + .types = { TYPE_DRAGON, TYPE_STEEL}, .catchRate = 45, .expYield = 158, .evYield_SpDefense = 2, @@ -25411,8 +23374,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_OVERCOAT, ABILITY_GOOEY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -25427,8 +23389,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 110, .baseSpDefense = 150, - .type1 = TYPE_DRAGON, - .type2 = TYPE_STEEL, + .types = { TYPE_DRAGON, TYPE_STEEL}, .catchRate = 45, .expYield = 270, .evYield_SpDefense = 3, @@ -25436,8 +23397,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_DRAGON, - .eggGroup2 = EGG_GROUP_DRAGON, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, .abilities = {ABILITY_SAP_SIPPER, ABILITY_OVERCOAT, ABILITY_GOOEY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -25452,8 +23412,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 38, .baseSpAttack = 34, .baseSpDefense = 36, - .type1 = TYPE_ICE, - .type2 = TYPE_ROCK, + .types = { TYPE_ICE, TYPE_ROCK}, .catchRate = 55, .expYield = 180, .evYield_Defense = 2, @@ -25461,8 +23420,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MONSTER, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STRONG_JAW, ABILITY_ICE_BODY, ABILITY_STURDY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -25479,8 +23437,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 60, .baseSpAttack = 95, .baseSpDefense = 95, - .type1 = TYPE_GRASS, - .type2 = TYPE_FIGHTING, + .types = { TYPE_GRASS, TYPE_FIGHTING}, .catchRate = 45, .expYield = 239, .evYield_Attack = 3, @@ -25488,8 +23445,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FLYING, - .eggGroup2 = EGG_GROUP_FLYING, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -25555,8 +23511,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 150, .baseSpAttack = 180, .baseSpDefense = 20, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 270, .evYield_Attack = 2, @@ -25565,8 +23520,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -25580,8 +23534,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 70, .baseSpDefense = 160, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 270, .evYield_Defense = 2, @@ -25590,8 +23543,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -25605,8 +23557,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 180, .baseSpAttack = 95, .baseSpDefense = 90, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 3, .expYield = 270, .evYield_Speed = 3, @@ -25614,8 +23565,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = TRUE, @@ -25633,8 +23583,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 36, .baseSpAttack = 59, .baseSpDefense = 85, - .type1 = TYPE_BUG, - .type2 = TYPE_GROUND, + .types = { TYPE_BUG, TYPE_GROUND}, .catchRate = 45, .expYield = 148, .evYield_Defense = 2, @@ -25643,8 +23592,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -25658,8 +23606,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 36, .baseSpAttack = 69, .baseSpDefense = 95, - .type1 = TYPE_BUG, - .type2 = TYPE_STEEL, + .types = { TYPE_BUG, TYPE_STEEL}, .catchRate = 45, .expYield = 148, .evYield_Defense = 1, @@ -25669,8 +23616,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_BUG, - .eggGroup2 = EGG_GROUP_BUG, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -25696,8 +23642,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 150, .baseSpDefense = 120, - .type1 = TYPE_STEEL, - .type2 = TYPE_DRAGON, + .types = { TYPE_STEEL, TYPE_DRAGON}, .catchRate = 3, .expYield = 306, .evYield_SpAttack = 3, @@ -25705,8 +23650,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -25721,8 +23665,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 120, .baseSpAttack = 150, .baseSpDefense = 120, - .type1 = TYPE_WATER, - .type2 = TYPE_DRAGON, + .types = { TYPE_WATER, TYPE_DRAGON}, .catchRate = 3, .expYield = 306, .evYield_SpAttack = 3, @@ -25730,8 +23673,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -25746,8 +23688,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 90, .baseSpAttack = 120, .baseSpDefense = 100, - .type1 = TYPE_GHOST, - .type2 = TYPE_DRAGON, + .types = { TYPE_GHOST, TYPE_DRAGON}, .catchRate = 3, .expYield = 306, .evYield_HP = 3, @@ -25755,8 +23696,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -25770,8 +23710,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 127, .baseSpAttack = 120, .baseSpDefense = 75, - .type1 = TYPE_GRASS, - .type2 = TYPE_FLYING, + .types = { TYPE_GRASS, TYPE_FLYING}, .catchRate = 45, .expYield = 270, .evYield_HP = 3, @@ -25781,8 +23720,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, @@ -25816,8 +23754,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 98, .baseSpAttack = 80, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 25, .expYield = 161, .evYield_Speed = 2, @@ -25826,8 +23763,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_ROCK_HEAD, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -25841,8 +23777,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 98, .baseSpAttack = 80, .baseSpDefense = 55, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 25, .expYield = 161, .evYield_Speed = 2, @@ -25851,8 +23786,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -25866,8 +23800,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 55, .baseSpAttack = 140, .baseSpDefense = 105, - .type1 = TYPE_FIRE, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_FIRE, TYPE_PSYCHIC}, .catchRate = 60, .expYield = 189, .evYield_SpAttack = 2, @@ -25875,8 +23808,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -25890,8 +23822,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 135, .baseSpAttack = 30, .baseSpDefense = 55, - .type1 = TYPE_ICE, - .type2 = TYPE_FIRE, + .types = { TYPE_ICE, TYPE_FIRE}, .catchRate = 60, .expYield = 189, .evYield_SpAttack = 2, @@ -25899,8 +23830,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -25923,8 +23853,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 121, .baseSpAttack = 110, .baseSpDefense = 90, - .type1 = TYPE_FLYING, - .type2 = TYPE_FLYING, + .types = { TYPE_FLYING, TYPE_FLYING}, .catchRate = 3, .expYield = 261, .evYield_Attack = 3, @@ -25932,8 +23861,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_REGENERATOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, @@ -25948,8 +23876,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 101, .baseSpAttack = 145, .baseSpDefense = 80, - .type1 = TYPE_ELECTRIC, - .type2 = TYPE_FLYING, + .types = { TYPE_ELECTRIC, TYPE_FLYING}, .catchRate = 3, .expYield = 261, .evYield_SpAttack = 3, @@ -25957,8 +23884,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_VOLT_ABSORB, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -25973,8 +23899,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 91, .baseSpAttack = 105, .baseSpDefense = 80, - .type1 = TYPE_GROUND, - .type2 = TYPE_FLYING, + .types = { TYPE_GROUND, TYPE_FLYING}, .catchRate = 3, .expYield = 270, .evYield_Attack = 3, @@ -25982,8 +23907,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -25998,8 +23922,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 170, .baseSpDefense = 100, - .type1 = TYPE_DRAGON, - .type2 = TYPE_ICE, + .types = { TYPE_DRAGON, TYPE_ICE}, .catchRate = 3, .expYield = 315, .evYield_SpAttack = 3, @@ -26007,8 +23930,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_TURBOBLAZE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -26023,8 +23945,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 95, .baseSpAttack = 120, .baseSpDefense = 90, - .type1 = TYPE_DRAGON, - .type2 = TYPE_ICE, + .types = { TYPE_DRAGON, TYPE_ICE}, .catchRate = 3, .expYield = 315, .evYield_Attack = 3, @@ -26032,8 +23953,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_TERAVOLT, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, @@ -26048,8 +23968,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 108, .baseSpAttack = 129, .baseSpDefense = 90, - .type1 = TYPE_WATER, - .type2 = TYPE_FIGHTING, + .types = { TYPE_WATER, TYPE_FIGHTING}, .catchRate = 3, .expYield = 261, .evYield_SpAttack = 3, @@ -26057,8 +23976,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, @@ -26073,8 +23991,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 128, .baseSpAttack = 77, .baseSpDefense = 77, - .type1 = TYPE_NORMAL, - .type2 = TYPE_FIGHTING, + .types = { TYPE_NORMAL, TYPE_FIGHTING}, .catchRate = 3, .expYield = 270, .evYield_Attack = 1, @@ -26086,8 +24003,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, @@ -26109,8 +24025,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 122, .baseSpAttack = 103, .baseSpDefense = 71, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 45, .expYield = 239, .evYield_Speed = 3, @@ -26118,8 +24033,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BATTLE_BOND, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -26133,8 +24047,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 132, .baseSpAttack = 153, .baseSpDefense = 71, - .type1 = TYPE_WATER, - .type2 = TYPE_DARK, + .types = { TYPE_WATER, TYPE_DARK}, .catchRate = 45, .expYield = 288, .evYield_Speed = 3, @@ -26142,8 +24055,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_BATTLE_BOND, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -26187,8 +24099,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 92, .baseSpAttack = 125, .baseSpDefense = 128, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FAIRY, + .types = { TYPE_FAIRY, TYPE_FAIRY}, .catchRate = 120, .expYield = 243, .evYield_SpDefense = 2, @@ -26196,8 +24107,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -26226,8 +24136,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 104, .baseSpAttack = 83, .baseSpDefense = 81, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_PSYCHIC, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, .catchRate = 75, .expYield = 163, .evYield_Speed = 2, @@ -26235,8 +24144,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_COMPETITIVE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -26255,8 +24163,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpAttack = 150, #endif .baseSpDefense = 50, - .type1 = TYPE_STEEL, - .type2 = TYPE_GHOST, + .types = { TYPE_STEEL, TYPE_GHOST}, .catchRate = 45, .expYield = 234, .evYield_Defense = 2, @@ -26265,8 +24172,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_MINERAL, - .eggGroup2 = EGG_GROUP_MINERAL, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, .abilities = {ABILITY_STANCE_CHANGE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -26356,8 +24262,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 91, .baseSpDefense = 95, - .type1 = TYPE_DRAGON, - .type2 = TYPE_GROUND, + .types = { TYPE_DRAGON, TYPE_GROUND}, .catchRate = 3, .expYield = 319, .evYield_HP = 3, @@ -26365,8 +24270,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_POWER_CONSTRUCT, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, @@ -26381,8 +24285,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 80, .baseSpAttack = 170, .baseSpDefense = 130, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_DARK, + .types = { TYPE_PSYCHIC, TYPE_DARK}, .catchRate = 3, .expYield = 270, .evYield_SpAttack = 3, @@ -26390,8 +24293,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_MAGICIAN, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -26414,8 +24316,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 82, .baseSpAttack = 55, .baseSpDefense = 75, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 90, .expYield = 170, .evYield_Attack = 2, @@ -26423,8 +24324,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_NO_GUARD}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -26438,8 +24338,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 110, .baseSpAttack = 55, .baseSpDefense = 65, - .type1 = TYPE_ROCK, - .type2 = TYPE_ROCK, + .types = { TYPE_ROCK, TYPE_ROCK}, .catchRate = 90, .expYield = 170, .evYield_Attack = 2, @@ -26447,8 +24346,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroup1 = EGG_GROUP_FIELD, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, @@ -26462,8 +24360,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 30, .baseSpAttack = 140, .baseSpDefense = 135, - .type1 = TYPE_WATER, - .type2 = TYPE_WATER, + .types = { TYPE_WATER, TYPE_WATER}, .catchRate = 60, .expYield = 61, .evYield_HP = 1, @@ -26471,8 +24368,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_WATER_2, - .eggGroup2 = EGG_GROUP_WATER_2, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, .abilities = {ABILITY_SCHOOLING, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -26521,8 +24417,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 77, .baseSpAttack = 113, .baseSpDefense = 109, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_STEEL, + .types = { TYPE_PSYCHIC, TYPE_STEEL}, .catchRate = 255, .expYield = 306, .evYield_Attack = 3, @@ -26530,8 +24425,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, @@ -26546,8 +24440,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 77, .baseSpAttack = 157, .baseSpDefense = 127, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_GHOST, + .types = { TYPE_PSYCHIC, TYPE_GHOST}, .catchRate = 255, .expYield = 306, .evYield_SpAttack = 3, @@ -26555,8 +24448,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, @@ -26571,8 +24463,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 129, .baseSpAttack = 167, .baseSpDefense = 97, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_DRAGON, + .types = { TYPE_PSYCHIC, TYPE_DRAGON}, .catchRate = 255, .expYield = 339, .evYield_Attack = 1, @@ -26582,8 +24473,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_NEUROFORCE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, @@ -26620,8 +24510,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 65, .baseSpDefense = 50, - .type1 = TYPE_ICE, - .type2 = TYPE_ICE, + .types = { TYPE_ICE, TYPE_ICE}, .catchRate = 60, .expYield = 165, .evYield_Defense = 2, @@ -26629,8 +24518,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_WATER_1, - .eggGroup2 = EGG_GROUP_FIELD, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, .abilities = {ABILITY_ICE_FACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -26644,8 +24532,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 85, .baseSpAttack = 95, .baseSpDefense = 105, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_NORMAL, + .types = { TYPE_PSYCHIC, TYPE_NORMAL}, .catchRate = 30, .expYield = 166, .evYield_SpDefense = 2, @@ -26653,8 +24540,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 40, .friendship = 140, .growthRate = GROWTH_FAST, - .eggGroup1 = EGG_GROUP_FAIRY, - .eggGroup2 = EGG_GROUP_FAIRY, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, .abilities = {ABILITY_OWN_TEMPO, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -26670,8 +24556,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 148, .baseSpAttack = 80, .baseSpDefense = 115, - .type1 = TYPE_FAIRY, - .type2 = TYPE_STEEL, + .types = { TYPE_FAIRY, TYPE_STEEL}, .catchRate = 10, .expYield = 360, .evYield_Speed = 3, @@ -26679,8 +24564,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_INTREPID_SWORD, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, @@ -26695,8 +24579,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 128, .baseSpAttack = 80, .baseSpDefense = 145, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_STEEL, + .types = { TYPE_FIGHTING, TYPE_STEEL}, .catchRate = 10, .expYield = 360, .evYield_Speed = 3, @@ -26704,8 +24587,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, @@ -26720,8 +24602,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 130, .baseSpAttack = 125, .baseSpDefense = 250, - .type1 = TYPE_POISON, - .type2 = TYPE_DRAGON, + .types = { TYPE_POISON, TYPE_DRAGON}, .catchRate = 255, .expYield = 563, .evYield_HP = 3, @@ -26729,8 +24610,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, @@ -26745,8 +24625,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 97, .baseSpAttack = 63, .baseSpDefense = 60, - .type1 = TYPE_FIGHTING, - .type2 = TYPE_WATER, + .types = { TYPE_FIGHTING, TYPE_WATER}, .catchRate = 3, .expYield = 275, .evYield_Attack = 3, @@ -26754,8 +24633,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 70, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, @@ -26772,8 +24650,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 50, .baseSpAttack = 85, .baseSpDefense = 130, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_ICE, + .types = { TYPE_PSYCHIC, TYPE_ICE}, .catchRate = 3, .expYield = 340, .evYield_Attack = 3, @@ -26781,8 +24658,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_AS_ONE_ICE_RIDER, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, @@ -26797,8 +24673,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 150, .baseSpAttack = 165, .baseSpDefense = 100, - .type1 = TYPE_PSYCHIC, - .type2 = TYPE_GHOST, + .types = { TYPE_PSYCHIC, TYPE_GHOST}, .catchRate = 3, .expYield = 340, .evYield_SpAttack = 3, @@ -26806,8 +24681,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_AS_ONE_SHADOW_RIDER, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, @@ -26822,8 +24696,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .baseSpeed = 46, .baseSpAttack = 135, .baseSpDefense = 100, - .type1 = TYPE_FAIRY, - .type2 = TYPE_FLYING, + .types = { TYPE_FAIRY, TYPE_FLYING}, .catchRate = 3, .expYield = 270, .evYield_SpAttack = 3, @@ -26831,8 +24704,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, - .eggGroup1 = EGG_GROUP_UNDISCOVERED, - .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, .abilities = {ABILITY_OVERCOAT, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 398cf2875..ebe0c316f 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -1348,8 +1348,8 @@ const struct CompressedSpriteSheet gMonBackPicTableFemale[] = SPECIES_SPRITE(KRICKETUNE, gMonBackPic_KricketuneF), SPECIES_SPRITE(SHINX, gMonBackPic_ShinxF), SPECIES_SPRITE(COMBEE, gMonBackPic_Combee), - SPECIES_SPRITE(HIPPOPOTAS, gMonBackPic_HippopotasF), - SPECIES_SPRITE(HIPPOWDON, gMonBackPic_HippowdonF), + SPECIES_SPRITE(HIPPOPOTAS, gMonBackPic_Hippopotas), + SPECIES_SPRITE(HIPPOWDON, gMonBackPic_Hippowdon), #endif #if P_GEN_5_POKEMON == TRUE SPECIES_SPRITE(UNFEZANT, gMonBackPic_UnfezantF), diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 7629834ad..24ebc78f3 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -1346,8 +1346,8 @@ const struct CompressedSpriteSheet gMonFrontPicTableFemale[] = SPECIES_SPRITE(KRICKETOT, gMonFrontPic_KricketotF), SPECIES_SPRITE(KRICKETUNE, gMonFrontPic_KricketuneF), SPECIES_SPRITE(SHINX, gMonFrontPic_ShinxF), - SPECIES_SPRITE(COMBEE, gMonFrontPic_CombeeF), - SPECIES_SPRITE(HIPPOPOTAS, gMonFrontPic_HippopotasF), + SPECIES_SPRITE(COMBEE, gMonFrontPic_Combee), + SPECIES_SPRITE(HIPPOPOTAS, gMonFrontPic_Hippopotas), SPECIES_SPRITE(HIPPOWDON, gMonFrontPic_Hippowdon), #endif #if P_GEN_5_POKEMON == TRUE diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 8ef3b3231..a8c986d79 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -1339,7 +1339,7 @@ const struct CompressedSpritePalette gMonPaletteTableFemale[] = { SPECIES_PAL(EEVEE, gMonPalette_Eevee), #if P_GEN_4_POKEMON == TRUE - SPECIES_PAL(COMBEE, gMonPalette_Combee), + SPECIES_PAL(COMBEE, gMonPalette_CombeeF), SPECIES_PAL(STARLY, gMonPalette_Starly), SPECIES_PAL(STARAVIA, gMonPalette_Staravia), SPECIES_PAL(STARAPTOR, gMonPalette_Staraptor), @@ -1356,7 +1356,7 @@ const struct CompressedSpritePalette gMonPaletteTableFemale[] = SPECIES_PAL(JELLICENT, gMonPalette_JellicentF), #endif #if P_GEN_6_POKEMON == TRUE - SPECIES_PAL(PYROAR, gMonPalette_PyroarF), + SPECIES_PAL(PYROAR, gMonPalette_Pyroar), #endif #if P_GEN_8_POKEMON == TRUE SPECIES_PAL(BASCULEGION, gMonPalette_CircledQuestionMark), // gMonPalette_BasculegionF), diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 64a999c49..012a95cf1 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -1345,7 +1345,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTableFemale[] = SPECIES_SHINY_PAL(KRICKETOT, gMonShinyPalette_Kricketot), SPECIES_SHINY_PAL(KRICKETUNE, gMonShinyPalette_Kricketune), SPECIES_SHINY_PAL(SHINX, gMonShinyPalette_Shinx), - SPECIES_SHINY_PAL(COMBEE, gMonShinyPalette_Combee), + SPECIES_SHINY_PAL(COMBEE, gMonShinyPalette_CombeeF), SPECIES_SHINY_PAL(HIPPOPOTAS, gMonShinyPalette_HippopotasF), SPECIES_SHINY_PAL(HIPPOWDON, gMonShinyPalette_HippowdonF), #endif @@ -1355,7 +1355,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTableFemale[] = SPECIES_SHINY_PAL(JELLICENT, gMonShinyPalette_JellicentF), #endif #if P_GEN_6_POKEMON == TRUE - SPECIES_SHINY_PAL(PYROAR, gMonShinyPalette_PyroarF), + SPECIES_SHINY_PAL(PYROAR, gMonShinyPalette_Pyroar), #endif #if P_GEN_8_POKEMON == TRUE SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_BasculegionF), diff --git a/src/data/text/item_descriptions.h b/src/data/text/item_descriptions.h index 08e5fc846..e815d8ae1 100644 --- a/src/data/text/item_descriptions.h +++ b/src/data/text/item_descriptions.h @@ -3792,3 +3792,28 @@ static const u8 sSapphireDesc[] = _( "A brilliant blue gem\n" "that symbolizes\n" "honesty."); + +static const u8 sAbilityShieldDesc[] = _( + "Ability changes are\n" + "prevented for this\n" + "items's holder."); + +static const u8 sClearAmuletDesc[] = _( + "Stat lowering is\n" + "prevented for this\n" + "items's holder."); + +static const u8 sPunchingGloveDesc[] = _( + "Powers up punching\n" + "moves and removes\n" + "their contact."); + +static const u8 sCovertCloakDesc[] = _( + "Protects the holder\n" + "from secondary\n" + "move effects."); + +static const u8 sLoadedDiceDesc[] = _( + "Rolls high numbers.\n" + "Multihit strikes\n" + "hit more times."); diff --git a/src/daycare.c b/src/daycare.c index a8bdfa0ed..cabecc8ea 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -539,11 +539,17 @@ static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv) static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) { + u16 motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM); + u16 fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM); u8 i; - u8 selectedIvs[INHERITED_IV_COUNT]; + u8 selectedIvs[5]; u8 availableIVs[NUM_STATS]; - u8 whichParents[INHERITED_IV_COUNT]; + u8 whichParents[5]; u8 iv; + u8 howManyIVs = 3; + + if (motherItem == ITEM_DESTINY_KNOT || fatherItem == ITEM_DESTINY_KNOT) + howManyIVs = 5; // Initialize a list of IV indices. for (i = 0; i < NUM_STATS; i++) @@ -551,8 +557,8 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) availableIVs[i] = i; } - // Select the 3 IVs that will be inherited. - for (i = 0; i < INHERITED_IV_COUNT; i++) + // Select which IVs that will be inherited. + for (i = 0; i < howManyIVs; i++) { // Randomly pick an IV from the available list and stop from being chosen again. // BUG: Instead of removing the IV that was just picked, this @@ -571,13 +577,13 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) } // Determine which parent each of the selected IVs should inherit from. - for (i = 0; i < INHERITED_IV_COUNT; i++) + for (i = 0; i < howManyIVs; i++) { whichParents[i] = Random() % DAYCARE_MON_COUNT; } // Set each of inherited IVs on the egg mon. - for (i = 0; i < INHERITED_IV_COUNT; i++) + for (i = 0; i < howManyIVs; i++) { switch (selectedIvs[i]) { @@ -609,6 +615,33 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) } } +static void InheritPokeball(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) +{ + u16 inheritBall = ITEM_POKE_BALL; + u16 fatherBall = GetBoxMonData(father, MON_DATA_POKEBALL); + u16 motherBall = GetBoxMonData(mother, MON_DATA_POKEBALL); + u16 fatherSpecies = GetBoxMonData(father, MON_DATA_SPECIES); + u16 motherSpecies = GetBoxMonData(mother, MON_DATA_SPECIES); + + if (fatherBall == ITEM_MASTER_BALL || fatherBall == ITEM_CHERISH_BALL) + fatherBall = ITEM_POKE_BALL; + + if (motherBall == ITEM_MASTER_BALL || motherBall == ITEM_CHERISH_BALL) + motherBall = ITEM_POKE_BALL; + +#if P_BALL_INHERITING >= GEN_7 + if (fatherSpecies == motherSpecies) + inheritBall = (Random() % 2 == 0 ? motherBall : fatherBall); + else if (motherSpecies != SPECIES_DITTO) + inheritBall = motherBall; + else + inheritBall = fatherBall; +#elif P_BALL_INHERITING == GEN_6 + inheritBall = motherBall; +#endif + SetMonData(egg, MON_DATA_POKEBALL, &inheritBall); +} + // Counts the number of egg moves a pokemon learns and stores the moves in // the given array. static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) @@ -742,55 +775,66 @@ void RejectEggFromDayCare(void) RemoveEggFromDayCare(&gSaveBlock1Ptr->daycare); } +static const struct { + u16 currSpecies; + u16 item; + u16 babySpecies; +} IncenseBabyTable[][3] = +{ + // Regular offspring, Item, Incense Offspring + { SPECIES_WOBBUFFET, ITEM_LAX_INCENSE, SPECIES_WYNAUT }, + { SPECIES_MARILL, ITEM_SEA_INCENSE, SPECIES_AZURILL }, + { SPECIES_SNORLAX, ITEM_FULL_INCENSE, SPECIES_MUNCHLAX }, + { SPECIES_CHANSEY, ITEM_LUCK_INCENSE, SPECIES_HAPPINY }, + { SPECIES_MR_MIME, ITEM_ODD_INCENSE, SPECIES_MIME_JR }, + { SPECIES_CHIMECHO, ITEM_PURE_INCENSE, SPECIES_CHINGLING }, + { SPECIES_SUDOWOODO, ITEM_ROCK_INCENSE, SPECIES_BONSLY }, + { SPECIES_ROSELIA, ITEM_ROSE_INCENSE, SPECIES_BUDEW }, + { SPECIES_MANTINE, ITEM_WAVE_INCENSE, SPECIES_MANTYKE }, +}; + static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare) { + u32 i; u16 motherItem, fatherItem; motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM); fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM); - if (*species == SPECIES_WYNAUT && motherItem != ITEM_LAX_INCENSE && fatherItem != ITEM_LAX_INCENSE) - *species = SPECIES_WOBBUFFET; - else if (*species == SPECIES_AZURILL && motherItem != ITEM_SEA_INCENSE && fatherItem != ITEM_SEA_INCENSE) - *species = SPECIES_MARILL; - #ifdef SPECIES_MUNCHLAX - else if (*species == SPECIES_MUNCHLAX && motherItem != ITEM_FULL_INCENSE && fatherItem != ITEM_FULL_INCENSE) - *species = SPECIES_SNORLAX; - #endif - #ifdef SPECIES_HAPPINY - else if (*species == SPECIES_HAPPINY && motherItem != ITEM_LUCK_INCENSE && fatherItem != ITEM_LUCK_INCENSE) - *species = SPECIES_CHANSEY; - #endif - #ifdef SPECIES_MIME_JR - else if (*species == SPECIES_MIME_JR && motherItem != ITEM_ODD_INCENSE && fatherItem != ITEM_ODD_INCENSE) - *species = SPECIES_MR_MIME; - #endif - #ifdef SPECIES_CHINGLING - else if (*species == SPECIES_CHINGLING && motherItem != ITEM_PURE_INCENSE && fatherItem != ITEM_PURE_INCENSE) - *species = SPECIES_CHIMECHO; - #endif - #ifdef SPECIES_BONSLY - else if (*species == SPECIES_BONSLY && motherItem != ITEM_ROCK_INCENSE && fatherItem != ITEM_ROCK_INCENSE) - *species = SPECIES_SUDOWOODO; - #endif - #ifdef SPECIES_BUDEW - else if (*species == SPECIES_BUDEW && motherItem != ITEM_ROSE_INCENSE && fatherItem != ITEM_ROSE_INCENSE) - *species = SPECIES_ROSELIA; - #endif - #ifdef SPECIES_MANTYKE - else if (*species == SPECIES_MANTYKE && motherItem != ITEM_WAVE_INCENSE && fatherItem != ITEM_WAVE_INCENSE) - *species = SPECIES_MANTINE; - #endif + for (i = 0; i < ARRAY_COUNT(IncenseBabyTable); i++) + { + if (IncenseBabyTable[i]->babySpecies == *species && motherItem != IncenseBabyTable[i]->item && fatherItem != IncenseBabyTable[i]->item) + { + *species = IncenseBabyTable[i]->currSpecies; + break; + } + } } -static void GiveVoltTackleIfLightBall(struct Pokemon *mon, struct DayCare *daycare) +static const struct { + u16 offspring; + u16 item; + u16 move; +} BreedingSpecialMoveItemTable[][3] = { + // Offspring, Item, Move + { SPECIES_PICHU, ITEM_LIGHT_BALL, MOVE_VOLT_TACKLE }, +}; + +static void GiveMoveIfItem(struct Pokemon *mon, struct DayCare *daycare) +{ + u16 i, species = GetMonData(mon, MON_DATA_SPECIES); u32 motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM); u32 fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM); - if (motherItem == ITEM_LIGHT_BALL || fatherItem == ITEM_LIGHT_BALL) + for (i = 0; i < ARRAY_COUNT(BreedingSpecialMoveItemTable); i++) { - if (GiveMoveToMon(mon, MOVE_VOLT_TACKLE) == MON_HAS_MAX_MOVES) - DeleteFirstMoveAndGiveMoveToMon(mon, MOVE_VOLT_TACKLE); + if (BreedingSpecialMoveItemTable[i]->offspring == species + && (motherItem == BreedingSpecialMoveItemTable[i]->item || + fatherItem == BreedingSpecialMoveItemTable[i]->item)) + { + if (GiveMoveToMon(mon, BreedingSpecialMoveItemTable[i]->move) == MON_HAS_MAX_MOVES) + DeleteFirstMoveAndGiveMoveToMon(mon, BreedingSpecialMoveItemTable[i]->move); + } } } @@ -856,13 +900,15 @@ static void _GiveEggFromDaycare(struct DayCare *daycare) bool8 isEgg; species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots); +#if P_INCENSE_BREEDING < GEN_9 AlterEggSpeciesWithIncenseItem(&species, daycare); +#endif SetInitialEggData(&egg, species, daycare); InheritIVs(&egg, daycare); + InheritPokeball(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); BuildEggMoveset(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); - if (species == SPECIES_PICHU) - GiveVoltTackleIfLightBall(&egg, daycare); + GiveMoveIfItem(&egg, daycare); isEgg = TRUE; SetMonData(&egg, MON_DATA_IS_EGG, &isEgg); @@ -1075,8 +1121,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] = gSpeciesInfo[species[i]].eggGroup1; - eggGroups[i][1] = gSpeciesInfo[species[i]].eggGroup2; + eggGroups[i][0] = gSpeciesInfo[species[i]].eggGroups[0]; + eggGroups[i][1] = gSpeciesInfo[species[i]].eggGroups[1]; } // check unbreedable egg group diff --git a/src/decoration.c b/src/decoration.c index 8ec80415b..6d95cfbdc 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -688,7 +688,7 @@ static void ReturnToDecorationActionsAfterInvalidSelection(u8 taskId) static void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId) { - LoadPalette(sDecorationMenuPalette, 0xd0, 0x20); + LoadPalette(sDecorationMenuPalette, BG_PLTT_ID(13), PLTT_SIZE_4BPP); ClearDialogWindowAndFrame(0, FALSE); RemoveDecorationWindow(WINDOW_MAIN_MENU); InitDecorationCategoriesWindow(taskId); @@ -834,7 +834,7 @@ static void ReturnToActionsMenuFromCategories(u8 taskId) void ShowDecorationCategoriesWindow(u8 taskId) { - LoadPalette(sDecorationMenuPalette, 0xd0, 0x20); + LoadPalette(sDecorationMenuPalette, BG_PLTT_ID(13), PLTT_SIZE_4BPP); ClearDialogWindowAndFrame(0, FALSE); gTasks[taskId].tDecorationMenuCommand = DECOR_MENU_TRADE; sCurDecorationCategory = DECORCAT_DESK; diff --git a/src/diploma.c b/src/diploma.c index a30d71554..4f6264492 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -72,7 +72,7 @@ void CB2_ShowDiploma(void) ResetSpriteData(); ResetPaletteFade(); FreeAllSpritePalettes(); - LoadPalette(sDiplomaPalettes, 0, 64); + LoadPalette(sDiplomaPalettes, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); sDiplomaTilemapPtr = Alloc(0x1000); InitDiplomaBg(); InitDiplomaWindow(); @@ -196,7 +196,7 @@ static void InitDiplomaWindow(void) { InitWindows(sDiplomaWinTemplates); DeactivateAllTextPrinters(); - LoadPalette(gStandardMenuPalette, 0xF0, 0x20); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); } diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 268b930ae..e23c04c1a 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -3005,8 +3005,8 @@ static void PrintRecordsText(u8 windowId, s32 width) recordNums[1] = gSaveBlock2Ptr->berryPick.bestScore; recordNums[2] = gSaveBlock2Ptr->berryPick.berriesPickedInRow; - LoadUserWindowBorderGfx_(windowId, 0x21D, 0xD0); - DrawTextBorderOuter(windowId, 0x21D, 0xD); + LoadUserWindowBorderGfx_(windowId, 0x21D, BG_PLTT_ID(13)); + DrawTextBorderOuter(windowId, 0x21D, 13); FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_BerryPickingRecords, GetStringCenterAlignXOffset(FONT_NORMAL, gText_BerryPickingRecords, width * 8), 1, TEXT_SKIP_DRAW, NULL); for (i = 0; i < NUM_RECORD_TYPES; i++) @@ -4429,12 +4429,12 @@ static void ResetBerryAndStatusBarSprites(void) static void LoadWindowFrameGfx(u8 frameId) { LoadBgTiles(BG_INTERFACE, GetWindowFrameTilesPal(frameId)->tiles, 0x120, 1); - LoadPalette(GetWindowFrameTilesPal(frameId)->pal, 0xA0, 0x20); + LoadPalette(GetWindowFrameTilesPal(frameId)->pal, BG_PLTT_ID(10), PLTT_SIZE_4BPP); } static void LoadUserWindowFrameGfx(void) { - LoadUserWindowBorderGfx_(0, 0xA, 0xB0); + LoadUserWindowBorderGfx_(0, 0xA, BG_PLTT_ID(11)); } static void ResetGfxState(void) @@ -5193,7 +5193,7 @@ static bool32 LoadBgGfx(void) switch (sGfx->loadState) { case 0: - LoadPalette(sBg_Pal, 0, sizeof(sBg_Pal)); + LoadPalette(sBg_Pal, BG_PLTT_ID(0), sizeof(sBg_Pal)); break; case 1: ResetTempTileDataBuffers(); @@ -5209,7 +5209,7 @@ static bool32 LoadBgGfx(void) return FALSE; break; case 5: - LoadPalette(GetTextWindowPalette(3), 0xD0, 0x20); + LoadPalette(GetTextWindowPalette(3), BG_PLTT_ID(13), PLTT_SIZE_4BPP); break; default: sGfx->loadState = 0; diff --git a/src/easy_chat.c b/src/easy_chat.c index 054c65c0f..723800828 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -867,17 +867,17 @@ static const u8 *const sEasyChatKeyboardAlphabet[NUM_ALPHABET_ROWS] = static const struct SpriteSheet sSpriteSheets[] = { { .data = sTriangleCursor_Gfx, - .size = 0x20, + .size = sizeof(sTriangleCursor_Gfx), .tag = GFXTAG_TRIANGLE_CURSOR }, { .data = sScrollIndicator_Gfx, - .size = 0x100, + .size = sizeof(sScrollIndicator_Gfx), .tag = GFXTAG_SCROLL_INDICATOR }, { .data = sStartSelectButtons_Gfx, - .size = 0x100, + .size = sizeof(sStartSelectButtons_Gfx), .tag = GFXTAG_START_SELECT_BUTTONS }, {0} @@ -3917,13 +3917,13 @@ static void InitEasyChatBgs(void) static void LoadEasyChatPalettes(void) { ResetPaletteFade(); - LoadPalette(gEasyChatMode_Pal, 0, 32); - LoadPalette(sTextInputFrameOrange_Pal, 1 * 16, 32); - LoadPalette(sTextInputFrameGreen_Pal, 4 * 16, 32); - LoadPalette(sTitleText_Pal, 10 * 16, 8); - LoadPalette(sText_Pal, 11 * 16, 12); - LoadPalette(sText_Pal, 15 * 16, 12); - LoadPalette(sText_Pal, 3 * 16, 12); + LoadPalette(gEasyChatMode_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(sTextInputFrameOrange_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); + LoadPalette(sTextInputFrameGreen_Pal, BG_PLTT_ID(4), PLTT_SIZE_4BPP); + LoadPalette(sTitleText_Pal, BG_PLTT_ID(10), PLTT_SIZEOF(4)); + LoadPalette(sText_Pal, BG_PLTT_ID(11), PLTT_SIZEOF(6)); + LoadPalette(sText_Pal, BG_PLTT_ID(15), PLTT_SIZEOF(6)); + LoadPalette(sText_Pal, BG_PLTT_ID(3), PLTT_SIZEOF(6)); } static void PrintTitle(void) @@ -3957,7 +3957,7 @@ static void PrintEasyChatTextWithColors(u8 windowId, u8 fontId, const u8 *str, u static void PrintInitialInstructions(void) { FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17); - LoadUserWindowBorderGfx(1, 1, 0xE0); + LoadUserWindowBorderGfx(1, 1, BG_PLTT_ID(14)); DrawTextBorderOuter(1, 1, 14); PrintEasyChatStdMessage(MSG_INSTRUCTIONS); PutWindowTilemap(1); diff --git a/src/egg_hatch.c b/src/egg_hatch.c index b7ae2e2ce..3a5937ba4 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -145,14 +145,14 @@ static const union AnimCmd *const sSpriteAnimTable_Egg[] = static const struct SpriteSheet sEggHatch_Sheet = { .data = sEggHatchTiles, - .size = 0x800, + .size = sizeof(sEggHatchTiles), .tag = GFXTAG_EGG, }; static const struct SpriteSheet sEggShards_Sheet = { .data = sEggShardTiles, - .size = 0x80, + .size = sizeof(sEggShardTiles), .tag = GFXTAG_EGG_SHARD, }; @@ -378,9 +378,6 @@ static void AddHatchedMonToParty(u8 id) GetMonNickname2(mon, gStringVar1); - ball = ITEM_POKE_BALL; - SetMonData(mon, MON_DATA_POKEBALL, &ball); - // A met level of 0 is interpreted on the summary screen as "hatched at" metLevel = 0; SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); @@ -532,7 +529,7 @@ static void CB2_LoadEggHatch(void) case 2: DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0); - LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20); + LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); gMain.state++; break; case 3: @@ -556,7 +553,7 @@ static void CB2_LoadEggHatch(void) break; case 7: SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); - LoadPalette(gTradeGba2_Pal, 0x10, 0xA0); + LoadPalette(gTradeGba2_Pal, BG_PLTT_ID(1), 5 * PLTT_SIZE_4BPP); LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0); CopyToBgTilemapBuffer(1, gTradePlatform_Tilemap, 0x1000, 0); CopyBgTilemapBufferToVram(1); @@ -678,7 +675,7 @@ static void CB2_EggHatch(void) // Print the nickname prompt if (!IsTextPrinterActive(sEggHatchData->windowId)) { - LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0); + LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, BG_PLTT_ID(14)); CreateYesNoMenu(&sYesNoWinTemplate, 0x140, 0xE, 0); sEggHatchData->state++; } diff --git a/src/ereader_screen.c b/src/ereader_screen.c index b6bf7133a..ea5cface4 100755 --- a/src/ereader_screen.c +++ b/src/ereader_screen.c @@ -5,6 +5,7 @@ #include "link.h" #include "main.h" #include "mystery_gift_menu.h" +#include "mystery_gift_client.h" #include "save.h" #include "sound.h" #include "sprite.h" @@ -98,7 +99,7 @@ static u8 EReader_Transfer(struct EReaderData *eReader) static void OpenEReaderLink(void) { memset(gDecompressionBuffer, 0, 0x2000); - gLinkType = LINKTYPE_EREADER; + gLinkType = LINKTYPE_EREADER_EM; OpenLink(); SetSuppressLinkErrorMessage(TRUE); } @@ -259,7 +260,7 @@ void CreateEReaderTask(void) data->unused2 = 0; data->unused3 = 0; data->status = 0; - data->unusedBuffer = AllocZeroed(0x40); + data->unusedBuffer = AllocZeroed(CLIENT_MAX_MSG_SIZE); } static void ResetTimer(u16 *timer) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a4039253c..ae48223c3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -498,7 +498,12 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Lugia, OBJ_EVENT_PAL_TAG_LUGIA}, {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, - {}, +#ifdef BUGFIX + {NULL, OBJ_EVENT_PAL_TAG_NONE}, +#else + {}, // BUG: FindObjectEventPaletteIndexByTag looks for OBJ_EVENT_PAL_TAG_NONE and not 0x0. + // If it's looking for a tag that isn't in this table, the game locks in an infinite loop. +#endif }; static const u16 sReflectionPaletteTags_Brendan[] = { @@ -1994,7 +1999,12 @@ static void LoadObjectEventPalette(u16 paletteTag) { u16 i = FindObjectEventPaletteIndexByTag(paletteTag); - if (i != OBJ_EVENT_PAL_TAG_NONE) // always true +// FindObjectEventPaletteIndexByTag returns 0xFF on failure, not OBJ_EVENT_PAL_TAG_NONE. +#ifdef BUGFIX + if (i != 0xFF) +#else + if (i != OBJ_EVENT_PAL_TAG_NONE) +#endif LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); } @@ -2017,9 +2027,10 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) { + // paletteTag is assumed to exist in sObjectEventSpritePalettes u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); - LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20); + LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 39cf8e4c2..a3639d4c7 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -264,7 +264,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u currSpecies, personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, 0x110, 0x20); + LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(currSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -279,7 +279,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u postEvoSpecies, personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, 0x120, 0x20); + LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -357,7 +357,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, 0x120, 0x20); + LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -428,7 +428,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) postEvoSpecies, personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, 0x120, 0x20); + LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); gMain.state++; } break; @@ -493,7 +493,7 @@ void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSprit personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, 0x120, 0x20); + LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -1312,7 +1312,7 @@ static void Task_TradeEvolutionScene(u8 taskId) case T_MVSTATE_PRINT_YES_NO: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - LoadUserWindowBorderGfx(0, 0xA8, 0xE0); + LoadUserWindowBorderGfx(0, 0xA8, BG_PLTT_ID(14)); CreateYesNoMenu(&gTradeEvolutionSceneYesNoWindowTemplate, 0xA8, 0xE, 0); sEvoCursorPos = 0; gTasks[taskId].tLearnMoveState++; @@ -1518,7 +1518,7 @@ static void Task_UpdateBgPalette(u8 taskId) else { // Haven't reached final palette in current stage, load the current palette - LoadPalette(&sBgAnimPal[tPalStage * 16], 0xA0, 0x20); + LoadPalette(&sBgAnimPal[tPalStage * 16], BG_PLTT_ID(10), PLTT_SIZE_4BPP); tCycleTimer = 0; tPalStage++; } @@ -1616,7 +1616,7 @@ static void StartBgAnimation(bool8 isLink) else innerBgId = 1, outerBgId = 3; - LoadPalette(sBgAnim_Intro_Pal, 0xA0, 0x20); + LoadPalette(sBgAnim_Intro_Pal, BG_PLTT_ID(10), PLTT_SIZE_4BPP); DecompressAndLoadBgGfxUsingHeap(1, sBgAnim_Gfx, FALSE, 0, 0); CopyToBgTilemapBuffer(innerBgId, sBgAnim_Inner_Tilemap, 0, 0); @@ -1655,7 +1655,7 @@ static void PauseBgPaletteAnim(void) if (taskId != TASK_NONE) gTasks[taskId].tPaused = TRUE; - FillPalette(RGB_BLACK, 0xA0, 0x20); + FillPalette(RGB_BLACK, BG_PLTT_ID(10), PLTT_SIZE_4BPP); } #undef tPaused @@ -1669,7 +1669,7 @@ static void StopBgAnimation(void) if ((taskId = FindTaskIdByFunc(Task_AnimateBg)) != TASK_NONE) DestroyTask(taskId); - FillPalette(RGB_BLACK, 0xA0, 0x20); + FillPalette(RGB_BLACK, BG_PLTT_ID(10), PLTT_SIZE_4BPP); RestoreBgAfterAnim(); } diff --git a/src/field_effect.c b/src/field_effect.c index 4b651b2a3..d62b2f595 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -903,7 +903,7 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest) { LZDecompressVram(gTrainerFrontPicTable[gender].data, dest); - LoadCompressedPalette(gTrainerFrontPicPaletteTable[gender].data, palOffset, 0x20); + LoadCompressedPalette(gTrainerFrontPicPaletteTable[gender].data, palOffset, PLTT_SIZE_4BPP); } u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority) @@ -2630,7 +2630,7 @@ static void FieldMoveShowMonOutdoorsEffect_LoadGfx(struct Task *task) u16 delta = ((REG_BG0CNT >> 8) << 11); CpuCopy16(sFieldMoveStreaksOutdoors_Gfx, (void *)(VRAM + offset), 0x200); CpuFill32(0, (void *)(VRAM + delta), 0x800); - LoadPalette(sFieldMoveStreaksOutdoors_Pal, 0xf0, sizeof(sFieldMoveStreaksOutdoors_Pal)); + LoadPalette(sFieldMoveStreaksOutdoors_Pal, BG_PLTT_ID(15), sizeof(sFieldMoveStreaksOutdoors_Pal)); LoadFieldMoveOutdoorStreaksTilemap(delta); task->tState++; } @@ -2793,7 +2793,7 @@ static void FieldMoveShowMonIndoorsEffect_LoadGfx(struct Task *task) task->data[12] = delta; CpuCopy16(sFieldMoveStreaksIndoors_Gfx, (void *)(VRAM + offset), 0x80); CpuFill32(0, (void *)(VRAM + delta), 0x800); - LoadPalette(sFieldMoveStreaksIndoors_Pal, 0xf0, sizeof(sFieldMoveStreaksIndoors_Pal)); + LoadPalette(sFieldMoveStreaksIndoors_Pal, BG_PLTT_ID(15), sizeof(sFieldMoveStreaksIndoors_Pal)); task->tState++; } @@ -3092,7 +3092,7 @@ u8 FldEff_RayquazaSpotlight(void) SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(14, 14)); SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); - LoadPalette(sSpotlight_Pal, 0xC0, sizeof(sSpotlight_Pal)); + LoadPalette(sSpotlight_Pal, BG_PLTT_ID(12), sizeof(sSpotlight_Pal)); SetGpuReg(REG_OFFSET_BG0VOFS, 120); for (i = 3; i < 15; i++) { diff --git a/src/field_region_map.c b/src/field_region_map.c index 43055174f..4c94172d5 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -115,7 +115,7 @@ static void MCB2_InitRegionMapRegisters(void) InitBgsFromTemplates(1, sFieldRegionMapBgTemplates, ARRAY_COUNT(sFieldRegionMapBgTemplates)); InitWindows(sFieldRegionMapWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 0x27, 0xd0); + LoadUserWindowBorderGfx(0, 0x27, BG_PLTT_ID(13)); ClearScheduledBgCopiesToVram(); SetMainCallback2(MCB2_FieldUpdateRegionMap); SetVBlankCallback(VBCB_FieldUpdateRegionMap); diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 57f8cc52e..616444116 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -1079,9 +1079,7 @@ static void LoadOrbEffectPalette(bool8 blueOrb) color[0] = RGB_BLUE; for (i = 0; i < 16; i++) - { - LoadPalette(color, 0xF0 + i, 2); - } + LoadPalette(color, BG_PLTT_ID(15) + i, PLTT_SIZEOF(1)); } static bool8 UpdateOrbEffectBlend(u16 shakeDir) diff --git a/src/field_specials.c b/src/field_specials.c index b73a41821..eb622f1f6 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -584,16 +584,16 @@ static void LoadLinkPartnerObjectEventSpritePalette(u8 graphicsId, u8 localEvent switch (graphicsId) { case OBJ_EVENT_GFX_LINK_RS_BRENDAN: - LoadPalette(gObjectEventPal_RubySapphireBrendan, 0x100 + (adjustedPaletteNum << 4), 0x20); + LoadPalette(gObjectEventPal_RubySapphireBrendan, OBJ_PLTT_ID(adjustedPaletteNum), PLTT_SIZE_4BPP); break; case OBJ_EVENT_GFX_LINK_RS_MAY: - LoadPalette(gObjectEventPal_RubySapphireMay, 0x100 + (adjustedPaletteNum << 4), 0x20); + LoadPalette(gObjectEventPal_RubySapphireMay, OBJ_PLTT_ID(adjustedPaletteNum), PLTT_SIZE_4BPP); break; case OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL: - LoadPalette(gObjectEventPal_Brendan, 0x100 + (adjustedPaletteNum << 4), 0x20); + LoadPalette(gObjectEventPal_Brendan, OBJ_PLTT_ID(adjustedPaletteNum), PLTT_SIZE_4BPP); break; case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL: - LoadPalette(gObjectEventPal_May, 0x100 + (adjustedPaletteNum << 4), 0x20); + LoadPalette(gObjectEventPal_May, OBJ_PLTT_ID(adjustedPaletteNum), PLTT_SIZE_4BPP); break; } } @@ -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 (gSpeciesInfo[species].type1 == TYPE_GRASS || gSpeciesInfo[species].type2 == TYPE_GRASS) + if (gSpeciesInfo[species].types[0] == TYPE_GRASS || gSpeciesInfo[species].types[1] == TYPE_GRASS) { gSpecialVar_Result = TRUE; return; @@ -1240,9 +1240,9 @@ void GetSecretBaseNearbyMapName(void) GetMapName(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0); } -u16 GetBestBattleTowerStreak(void) +u16 GetBattleTowerSinglesStreak(void) { - return GetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK); + return GetGameStat(GAME_STAT_BATTLE_TOWER_SINGLES_STREAK); } void BufferEReaderTrainerName(void) @@ -3203,7 +3203,7 @@ static void Task_DeoxysRockInteraction(u8 taskId) static void ChangeDeoxysRockLevel(u8 rockLevel) { u8 objectEventId; - LoadPalette(&sDeoxysRockPalettes[rockLevel], 0x1A0, 8); + LoadPalette(&sDeoxysRockPalettes[rockLevel], OBJ_PLTT_ID(10), PLTT_SIZEOF(4)); TryGetObjectEventIdByLocalIdAndMap(LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId); if (rockLevel == 0) @@ -3251,7 +3251,7 @@ void IncrementBirthIslandRockStepCount(void) void SetDeoxysRockPalette(void) { - LoadPalette(&sDeoxysRockPalettes[(u8)VarGet(VAR_DEOXYS_ROCK_LEVEL)], 0x1A0, 8); + LoadPalette(&sDeoxysRockPalettes[(u8)VarGet(VAR_DEOXYS_ROCK_LEVEL)], OBJ_PLTT_ID(10), PLTT_SIZEOF(4)); BlendPalettes(0x04000000, 16, 0); } diff --git a/src/field_weather.c b/src/field_weather.c index 891dbb1d1..92863dee5 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -552,7 +552,7 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap u8 gBlend = color.g; u8 bBlend = color.b; - palOffset = startPalIndex * 16; + palOffset = BG_PLTT_ID(startPalIndex); numPalettes += startPalIndex; colorMapIndex--; curPalIndex = startPalIndex; @@ -656,7 +656,7 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) u8 bBlend; u16 curPalIndex; - BlendPalette(0, 256, blendCoeff, blendColor); + BlendPalette(BG_PLTT_ID(0), 16 * 16, blendCoeff, blendColor); color = *(struct RGBColor *)&blendColor; rBlend = color.r; gBlend = color.g; @@ -690,7 +690,7 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) } else { - BlendPalette(curPalIndex * 16, 16, blendCoeff, blendColor); + BlendPalette(PLTT_ID(curPalIndex), 16, blendCoeff, blendColor); } } } @@ -830,8 +830,8 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) } break; case WEATHER_PAL_STATE_SCREEN_FADING_OUT: - paletteIndex *= 16; - CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, 32); + paletteIndex = PLTT_ID(paletteIndex); + CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, PLTT_SIZE_4BPP); BlendPalette(paletteIndex, 16, gPaletteFade.y, gPaletteFade.blendColor); break; // WEATHER_PAL_STATE_CHANGING_WEATHER @@ -843,7 +843,7 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) } else { - paletteIndex *= 16; + paletteIndex = PLTT_ID(paletteIndex); BlendPalette(paletteIndex, 16, 12, RGB(28, 31, 28)); } break; @@ -866,7 +866,7 @@ static bool8 IsFirstFrameOfWeatherFadeIn(void) void LoadCustomWeatherSpritePalette(const u16 *palette) { - LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); + LoadPalette(palette, OBJ_PLTT_ID(gWeatherPtr->weatherPicSpritePalIndex), PLTT_SIZE_4BPP); UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); } diff --git a/src/fieldmap.c b/src/fieldmap.c index fa82a983f..89d6b602c 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -879,9 +879,9 @@ void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) { if (tileset->isSecondary == FALSE) { - LoadPalette(&black, destOffset, 2); - LoadPalette(tileset->palettes[0] + 1, destOffset + 1, size - 2); - ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - 2) >> 1); + LoadPalette(&black, destOffset, PLTT_SIZEOF(1)); + LoadPalette(tileset->palettes[0] + 1, destOffset + 1, size - PLTT_SIZEOF(1)); + ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - PLTT_SIZEOF(1)) >> 1); } else if (tileset->isSecondary == TRUE) { @@ -913,12 +913,12 @@ void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout) static void LoadPrimaryTilesetPalette(struct MapLayout const *mapLayout) { - LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2); + LoadTilesetPalette(mapLayout->primaryTileset, BG_PLTT_ID(0), NUM_PALS_IN_PRIMARY * PLTT_SIZE_4BPP); } void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout) { - LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2); + LoadTilesetPalette(mapLayout->secondaryTileset, BG_PLTT_ID(NUM_PALS_IN_PRIMARY), (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * PLTT_SIZE_4BPP); } void CopyMapTilesetsToVram(struct MapLayout const *mapLayout) diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index abdca2a88..87d011741 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -218,8 +218,8 @@ static void Task_ExitCaveTransition2(u8 taskId) SetGpuReg(REG_OFFSET_DISPCNT, 0); LZ77UnCompVram(sCaveTransitionTiles, (void *)(VRAM + 0xC000)); LZ77UnCompVram(sCaveTransitionTilemap, (void *)(VRAM + 0xF800)); - LoadPalette(sCaveTransitionPalette_White, 0xE0, 0x20); - LoadPalette(sCaveTransitionPalette_Exit, 0xE0, 0x10); + LoadPalette(sCaveTransitionPalette_White, BG_PLTT_ID(14), PLTT_SIZE_4BPP); + LoadPalette(sCaveTransitionPalette_Exit, BG_PLTT_ID(14), PLTT_SIZEOF(8)); SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 @@ -270,11 +270,11 @@ static void Task_ExitCaveTransition4(u8 taskId) if (count < 8) { gTasks[taskId].data[2]++; - LoadPalette(&sCaveTransitionPalette_Exit[count], 0xE0, 16 - 2 * count); + LoadPalette(&sCaveTransitionPalette_Exit[count], BG_PLTT_ID(14), PLTT_SIZEOF(8) - PLTT_SIZEOF(count)); } else { - LoadPalette(sCaveTransitionPalette_White, 0, 0x20); + LoadPalette(sCaveTransitionPalette_White, BG_PLTT_ID(0), PLTT_SIZE_4BPP); gTasks[taskId].func = Task_ExitCaveTransition5; gTasks[taskId].data[2] = 8; } @@ -315,8 +315,8 @@ static void Task_EnterCaveTransition2(u8 taskId) | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON); - LoadPalette(sCaveTransitionPalette_White, 0xE0, 0x20); - LoadPalette(sCaveTransitionPalette_Black, 0, 0x20); + LoadPalette(sCaveTransitionPalette_White, BG_PLTT_ID(14), PLTT_SIZE_4BPP); + LoadPalette(sCaveTransitionPalette_Black, BG_PLTT_ID(0), PLTT_SIZE_4BPP); gTasks[taskId].func = Task_EnterCaveTransition3; gTasks[taskId].data[0] = 16; gTasks[taskId].data[1] = 0; @@ -331,7 +331,7 @@ static void Task_EnterCaveTransition3(u8 taskId) { gTasks[taskId].data[2]++; gTasks[taskId].data[2]++; - LoadPalette(&sCaveTransitionPalette_Enter[15 - count], 0xE0, 2 * (count + 1)); + LoadPalette(&sCaveTransitionPalette_Enter[15 - count], BG_PLTT_ID(14), PLTT_SIZEOF(count + 1)); } else { @@ -359,7 +359,7 @@ static void Task_EnterCaveTransition4(u8 taskId) } else { - LoadPalette(sCaveTransitionPalette_Black, 0, 0x20); + LoadPalette(sCaveTransitionPalette_Black, BG_PLTT_ID(0), PLTT_SIZE_4BPP); SetMainCallback2(gMain.savedCallback); } } diff --git a/src/frontier_pass.c b/src/frontier_pass.c index d25cb34cf..61bd1d409 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -768,9 +768,9 @@ static bool32 InitFrontierPass(void) CopyBgTilemapBufferToVram(2); break; case 8: - LoadPalette(gFrontierPassBg_Pal[0], 0, 0x1A0); - LoadPalette(gFrontierPassBg_Pal[1 + sPassData->trainerStars], 0x10, 0x20); - LoadPalette(GetTextWindowPalette(0), 0xF0, 0x20); + LoadPalette(gFrontierPassBg_Pal[0], 0, 13 * PLTT_SIZE_4BPP); + LoadPalette(gFrontierPassBg_Pal[1 + sPassData->trainerStars], BG_PLTT_ID(1), PLTT_SIZE_4BPP); + LoadPalette(GetTextWindowPalette(0), BG_PLTT_ID(15), PLTT_SIZE_4BPP); DrawFrontierPassBg(); UpdateAreaHighlight(sPassData->cursorArea, sPassData->previousCursorArea); if (sPassData->areaToShow == CURSOR_AREA_MAP || sPassData->areaToShow == CURSOR_AREA_CARD) @@ -1412,8 +1412,8 @@ static bool32 InitFrontierMap(void) case 5: if (FreeTempTileDataBuffersIfPossible()) return FALSE; - LoadPalette(gFrontierPassBg_Pal[0], 0, 0x1A0); - LoadPalette(GetTextWindowPalette(0), 0xF0, 0x20); + LoadPalette(gFrontierPassBg_Pal[0], BG_PLTT_ID(0), 13 * PLTT_SIZE_4BPP); + LoadPalette(GetTextWindowPalette(0), BG_PLTT_ID(15), PLTT_SIZE_4BPP); CopyToBgTilemapBuffer(2, sMapScreen_Tilemap, 0, 0); CopyBgTilemapBufferToVram(2); break; diff --git a/src/frontier_util.c b/src/frontier_util.c index d89fca436..1863aa622 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -497,100 +497,46 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ }, }; -static const u8 sBattlePointAwards[][NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUNT] = +static const u8 sBattlePointAwards[NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUNT][30] = { + /* facility, mode, tier */ + [FRONTIER_FACILITY_TOWER] = /* Tier: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 */ { - {1, 2, 3, 3}, {1, 1}, {4, 5}, {1}, {3, 4}, {1}, {5} + [FRONTIER_MODE_SINGLES] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, + [FRONTIER_MODE_DOUBLES] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, + [FRONTIER_MODE_MULTIS] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, + [FRONTIER_MODE_LINK_MULTIS] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, }, + [FRONTIER_FACILITY_DOME] = { - {2, 3, 4, 4}, {1, 1}, {4, 5}, {1}, {3, 4}, {1}, {5} + [FRONTIER_MODE_SINGLES] = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15 }, + [FRONTIER_MODE_DOUBLES] = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15 }, }, + [FRONTIER_FACILITY_PALACE] = { - {3, 4, 5, 5}, {2, 2}, {5, 6}, {1}, {4, 5}, {2}, {6} + [FRONTIER_MODE_SINGLES] = { 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15 }, + [FRONTIER_MODE_DOUBLES] = { 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, }, + [FRONTIER_FACILITY_ARENA] = { - {4, 5, 6, 6}, {2, 2}, {5, 6}, {2}, {4, 5}, {2}, {6} + [FRONTIER_MODE_SINGLES] = { 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, }, + [FRONTIER_FACILITY_FACTORY] = { - {5, 6, 7, 7}, {3, 3}, {6, 7}, {2}, {5, 6}, {2}, {7} + [FRONTIER_MODE_SINGLES] = { 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 15, 15 }, + [FRONTIER_MODE_DOUBLES] = { 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15 }, }, + [FRONTIER_FACILITY_PIKE] = { - {6, 7, 8, 8}, {3, 3}, {6, 7}, {2}, {5, 6}, {4}, {7} + [FRONTIER_MODE_SINGLES] = { 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 8, 10, 10, 10, 10, 12, 12, 12, 12, 12, 14, 14, 14, 14, 15, 15, 15, 15, 15 }, }, + [FRONTIER_FACILITY_PYRAMID] = { - {7, 8, 9, 9}, {4, 4}, {7, 8}, {3}, {6, 7}, {4}, {8} - }, - { - {8, 9, 10, 10}, {4, 4}, {7, 8}, {3},{6, 7}, {4}, {8} - }, - { - {9, 10, 11, 11}, {5, 5}, {8, 9}, {4}, {7, 8}, {8}, {9} - }, - { - {10, 11, 12, 12}, {5, 5}, {8, 9}, {4}, {7, 8}, {8}, {9} - }, - { - {11, 12, 13, 13}, {6, 6}, {9, 10}, {5,0}, {8, 9}, {8}, {10} - }, - { - {12, 13, 14, 14}, {6, 6}, {9, 10}, {6,0}, {8, 9}, {8}, {10} - }, - { - {13, 14, 15, 15}, {7, 7}, {10, 11}, {7}, {9, 10}, {10}, {11} - }, - { - {14, 15, 15, 15}, {7, 7}, {10, 11}, {8}, {9, 10}, {10}, {11} - }, - { - {15, 15, 15, 15}, {8, 8}, {11, 12}, {9}, {10, 11}, {10}, {12} - }, - { - {15, 15, 15, 15}, {8, 8}, {11, 12}, {10}, {10, 11}, {10}, {12} - }, - { - {15, 15, 15, 15}, {9, 9}, {12, 13}, {11}, {11, 12}, {12}, {13} - }, - { - {15, 15, 15, 15}, {9, 9}, {12, 13}, {12}, {11, 12}, {12}, {13} - }, - { - {15, 15, 15, 15}, {10, 10}, {13, 14}, {13}, {12, 13}, {12}, {14} - }, - { - {15, 15, 15, 15}, {10, 10}, {13, 14}, {14}, {12, 13}, {12}, {14} - }, - { - {15, 15, 15, 15}, {11, 11}, {14, 15}, {15}, {13, 14}, {12}, {15} - }, - { - {15, 15, 15, 15}, {11, 11}, {14, 15}, {15}, {13, 14}, {14}, {15} - }, - { - {15, 15, 15, 15}, {12, 12}, {15, 15}, {15}, {14, 15}, {14}, {15} - }, - { - {15, 15, 15, 15}, {12, 12}, {15, 15}, {15}, {14, 15}, {14}, {15} - }, - { - {15, 15, 15, 15}, {13, 13}, {15, 15}, {15}, {15, 15}, {14}, {15} - }, - { - {15, 15, 15, 15}, {13, 13}, {15, 15}, {15}, {15, 15}, {15}, {15} - }, - { - {15, 15, 15, 15}, {14, 14}, {15, 15}, {15}, {15, 15}, {15}, {15} - }, - { - {15, 15, 15, 15}, {14, 14}, {15, 15}, {15}, {15, 15}, {15}, {15} - }, - { - {15, 15, 15, 15}, {15, 15}, {15, 15}, {15}, {15, 15}, {15}, {15} - }, - { - {15, 15, 15, 15}, {15, 15}, {15, 15}, {15}, {15, 15}, {15}, {15} + [FRONTIER_MODE_SINGLES] = { 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, }, }; + // Flags to change the conversation when the Frontier Brain is encountered for a battle // First bit is has battled them before and not won yet, second bit is has battled them and won (obtained a Symbol) static const u16 sBattledBrainBitFlags[NUM_FRONTIER_FACILITIES][2] = @@ -1885,10 +1831,10 @@ static void GiveBattlePoints(void) if (challengeNum != 0) challengeNum--; - if (challengeNum >= ARRAY_COUNT(sBattlePointAwards)) - challengeNum = ARRAY_COUNT(sBattlePointAwards) - 1; + if (challengeNum >= ARRAY_COUNT(sBattlePointAwards[0][0])) + challengeNum = ARRAY_COUNT(sBattlePointAwards[0][0]) - 1; - points = sBattlePointAwards[challengeNum][facility][battleMode]; + points = sBattlePointAwards[facility][battleMode][challengeNum]; if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN) points += 10; gSaveBlock2Ptr->frontier.battlePoints += points; @@ -1897,8 +1843,8 @@ static void GiveBattlePoints(void) gSaveBlock2Ptr->frontier.battlePoints = MAX_BATTLE_FRONTIER_POINTS; points = gSaveBlock2Ptr->frontier.cardBattlePoints; - points += sBattlePointAwards[challengeNum][facility][battleMode]; - IncrementDailyBattlePoints(sBattlePointAwards[challengeNum][facility][battleMode]); + points += sBattlePointAwards[facility][battleMode][challengeNum]; + IncrementDailyBattlePoints(sBattlePointAwards[facility][battleMode][challengeNum]); if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN) { points += 10; @@ -2122,7 +2068,7 @@ static void IncrementWinStreak(void) gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]++; if (battleMode == FRONTIER_MODE_SINGLES) { - SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]); + SetGameStat(GAME_STAT_BATTLE_TOWER_SINGLES_STREAK, gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]); gSaveBlock2Ptr->frontier.towerSinglesStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; } } diff --git a/src/graphics.c b/src/graphics.c index b8ba41666..c8040a827 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -675,19 +675,15 @@ const u16 gBattleInterface_BallDisplayPal[] = INCBIN_U16("graphics/battle_interf const u8 gHealthboxElementsGfxTable[] = INCBIN_U8("graphics/battle_interface/hpbar.4bpp", "graphics/battle_interface/expbar.4bpp", - "graphics/battle_interface/status_psn.4bpp", - "graphics/battle_interface/status_par.4bpp", - "graphics/battle_interface/status_slp.4bpp", - "graphics/battle_interface/status_frz.4bpp", - "graphics/battle_interface/status_brn.4bpp", + "graphics/battle_interface/status.4bpp", "graphics/battle_interface/misc.4bpp", "graphics/battle_interface/hpbar_anim.4bpp", "graphics/battle_interface/misc_frameend.4bpp", "graphics/battle_interface/ball_display.4bpp", - "graphics/battle_interface/ball_display_unused_extra.4bpp", - "graphics/battle_interface/status2.4bpp", // these three duplicate sets of graphics are for the opponent pokemon - "graphics/battle_interface/status3.4bpp", // and are also for use in double battles. they use dynamic palettes so - "graphics/battle_interface/status4.4bpp", // coloring them is an extreme headache and wont be done for now + "graphics/battle_interface/ball_caught_indicator.4bpp", + "graphics/battle_interface/status2.4bpp", // these three duplicate sets of graphics are for the opponent/partner pokemon + "graphics/battle_interface/status3.4bpp", + "graphics/battle_interface/status4.4bpp", "graphics/battle_interface/healthbox_doubles_frameend.4bpp", "graphics/battle_interface/healthbox_doubles_frameend_bar.4bpp"); const u32 gBattleInterfaceGfx_UnusedWindow3[] = INCBIN_U32("graphics/battle_interface/unused_window3.4bpp.lz"); @@ -758,7 +754,7 @@ const u32 gJPContestBgTilemap[] = INCBIN_U32("graphics/contest/japanese/bg.bin.l const u32 gJPContestWindowsTilemap[] = INCBIN_U32("graphics/contest/japanese/windows.bin.lz"); const u32 gJPContestGfx2[] = INCBIN_U32("graphics/contest/japanese/composite_2.4bpp.lz"); -const u32 gContestInterfaceAudiencePalette[] = INCBIN_U32("graphics/contest/interface_audience.gbapal.lz"); +const u32 gContestInterfaceAudiencePalette[] = INCBIN_U32("graphics/contest/interface.gbapal.lz"); const u32 gContestAudienceTilemap[] = INCBIN_U32("graphics/contest/audience.bin.lz"); const u32 gContestInterfaceTilemap[] = INCBIN_U32("graphics/contest/interface.bin.lz"); const u32 gJPContestInterfaceTilemap[] = INCBIN_U32("graphics/contest/japanese/interface.bin.lz"); @@ -1867,24 +1863,24 @@ const u16 gUsePokeblockNatureWin_Pal[] = INCBIN_U16("graphics/pokeblock/use_scre // trainer card -const u16 gHoennTrainerCard0Star_Pal[] = INCBIN_U16("graphics/trainer_card/0star.gbapal"); -const u32 gHoennTrainerCard_Gfx[] = INCBIN_U32("graphics/trainer_card/card.4bpp.lz"); +const u16 gHoennTrainerCardGreen_Pal[] = INCBIN_U16("graphics/trainer_card/green.gbapal"); +const u32 gHoennTrainerCard_Gfx[] = INCBIN_U32("graphics/trainer_card/tiles.4bpp.lz"); const u32 gHoennTrainerCardBg_Tilemap[] = INCBIN_U32("graphics/trainer_card/bg.bin.lz"); const u32 gHoennTrainerCardFront_Tilemap[] = INCBIN_U32("graphics/trainer_card/front.bin.lz"); const u32 gHoennTrainerCardBack_Tilemap[] = INCBIN_U32("graphics/trainer_card/back.bin.lz"); const u32 gHoennTrainerCardFrontLink_Tilemap[] = INCBIN_U32("graphics/trainer_card/front_link.bin.lz"); -const u16 gKantoTrainerCard0Star_Pal[] = INCBIN_U16("graphics/trainer_card/0star_fr.gbapal"); -const u32 gKantoTrainerCard_Gfx[] = INCBIN_U32("graphics/trainer_card/card_fr.4bpp.lz"); -const u32 gKantoTrainerCardBg_Tilemap[] = INCBIN_U32("graphics/trainer_card/bg_fr.bin.lz"); -const u32 gKantoTrainerCardFront_Tilemap[] = INCBIN_U32("graphics/trainer_card/front_fr.bin.lz"); -const u32 gKantoTrainerCardBack_Tilemap[] = INCBIN_U32("graphics/trainer_card/back_fr.bin.lz"); -const u32 gKantoTrainerCardFrontLink_Tilemap[] = INCBIN_U32("graphics/trainer_card/front_link_fr.bin.lz"); +const u16 gKantoTrainerCardBlue_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/blue.gbapal"); +const u32 gKantoTrainerCard_Gfx[] = INCBIN_U32("graphics/trainer_card/frlg/tiles.4bpp.lz"); +const u32 gKantoTrainerCardBg_Tilemap[] = INCBIN_U32("graphics/trainer_card/frlg/bg.bin.lz"); +const u32 gKantoTrainerCardFront_Tilemap[] = INCBIN_U32("graphics/trainer_card/frlg/front.bin.lz"); +const u32 gKantoTrainerCardBack_Tilemap[] = INCBIN_U32("graphics/trainer_card/frlg/back.bin.lz"); +const u32 gKantoTrainerCardFrontLink_Tilemap[] = INCBIN_U32("graphics/trainer_card/frlg/front_link.bin.lz"); // pokemon storage system const u32 gStorageSystemMenu_Gfx[] = INCBIN_U32("graphics/pokemon_storage/menu.4bpp.lz"); -const u16 gStorageSystemPartyMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/menu.gbapal"); // Only used by party menu, but generated from all menu gfx +const u16 gStorageSystemPartyMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/party_menu.gbapal"); const u32 gStorageSystemPartyMenu_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/party_menu.bin.lz"); // naming screen diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 42e17e93d..2be4132f5 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -702,8 +702,8 @@ static void Task_Hof_DisplayPlayer(u8 taskId) ShowBg(3); gTasks[taskId].tPlayerSpriteID = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), TRUE, 120, 72, 6, TAG_NONE); AddWindow(&sHof_WindowTemplate); - LoadWindowGfx(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0); - LoadPalette(GetTextWindowPalette(1), 0xE0, 0x20); + LoadWindowGfx(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, BG_PLTT_ID(13)); + LoadPalette(GetTextWindowPalette(1), BG_PLTT_ID(14), PLTT_SIZE_4BPP); gTasks[taskId].tFrameCount = 120; gTasks[taskId].func = Task_Hof_WaitAndPrintPlayerInfo; } @@ -1269,7 +1269,7 @@ static void ClearVramOamPltt_LoadHofPal(void) DmaFill16(3, 0, plttOffset, plttSize); ResetPaletteFade(); - LoadPalette(sHallOfFame_Pal, 0, 0x20); + LoadPalette(sHallOfFame_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); } static void LoadHofGfx(void) diff --git a/src/intro.c b/src/intro.c index de08556e3..fd9c12467 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1051,11 +1051,11 @@ static void MainCB2_EndIntro(void) SetMainCallback2(CB2_InitTitleScreen); } -static void LoadCopyrightGraphics(u16 tilesetAddress, u16 tilemapAddress, u16 paletteAddress) +static void LoadCopyrightGraphics(u16 tilesetAddress, u16 tilemapAddress, u16 paletteOffset) { LZ77UnCompVram(gIntroCopyright_Gfx, (void *)(VRAM + tilesetAddress)); LZ77UnCompVram(gIntroCopyright_Tilemap, (void *)(VRAM + tilemapAddress)); - LoadPalette(gIntroCopyright_Pal, paletteAddress, 32); + LoadPalette(gIntroCopyright_Pal, paletteOffset, PLTT_SIZE_4BPP); } static void SerialCB_CopyrightScreen(void) @@ -1080,7 +1080,7 @@ static u8 SetUpCopyrightScreen(void) CpuFill32(0, (void *)OAM, OAM_SIZE); CpuFill16(0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); - LoadCopyrightGraphics(0, 0x3800, 0); + LoadCopyrightGraphics(0, 0x3800, BG_PLTT_ID(0)); ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); @@ -1178,7 +1178,7 @@ static void Task_Scene1_Load(u8 taskId) DmaClear16(3, BG_SCREEN_ADDR(21), BG_SCREEN_SIZE); LZ77UnCompVram(sIntro1Bg3_Tilemap, (void *)(BG_SCREEN_ADDR(22))); DmaClear16(3, BG_SCREEN_ADDR(23), BG_SCREEN_SIZE); - LoadPalette(sIntro1Bg_Pal, 0, sizeof(sIntro1Bg_Pal)); + LoadPalette(sIntro1Bg_Pal, BG_PLTT_ID(0), sizeof(sIntro1Bg_Pal)); SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(22) | BGCNT_16COLOR | BGCNT_TXT256x512); SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_16COLOR | BGCNT_TXT256x512); SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(18) | BGCNT_16COLOR | BGCNT_TXT256x512); @@ -1717,7 +1717,7 @@ static void Task_Scene3_Load(u8 taskId) IntroResetGpuRegs(); LZ77UnCompVram(sIntroPokeball_Gfx, (void *)VRAM); LZ77UnCompVram(sIntroPokeball_Tilemap, (void *)(BG_CHAR_ADDR(1))); - LoadPalette(sIntroPokeball_Pal, 0, sizeof(sIntroPokeball_Pal)); + LoadPalette(sIntroPokeball_Pal, BG_PLTT_ID(0), sizeof(sIntroPokeball_Pal)); gTasks[taskId].tAlpha = 0; gTasks[taskId].tZoomDiv = 0; gTasks[taskId].tZoomDivSpeed = 0; @@ -2663,10 +2663,10 @@ static void Task_RayquazaAttack(u8 taskId) { if (--data[3] != 0) { - BlendPalette(0x50, 16, data[3], RGB(9, 10, 10)); - CpuCopy16(&gIntro3Bg_Pal[0x1AC], &gPlttBufferFaded[94], 2); - CpuCopy16(&gIntro3Bg_Pal[0x1AC], &gPlttBufferFaded[88], 2); - CpuCopy16(&gIntro3Bg_Pal[0x18C], &gPlttBufferFaded[92], 2); + BlendPalette(BG_PLTT_ID(5), 16, data[3], RGB(9, 10, 10)); + CpuCopy16(&gIntro3Bg_Pal[428], &gPlttBufferFaded[BG_PLTT_ID(5) + 14], PLTT_SIZEOF(1)); + CpuCopy16(&gIntro3Bg_Pal[428], &gPlttBufferFaded[BG_PLTT_ID(5) + 8], PLTT_SIZEOF(1)); + CpuCopy16(&gIntro3Bg_Pal[396], &gPlttBufferFaded[BG_PLTT_ID(5) + 12], PLTT_SIZEOF(1)); } else { diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index cf193018a..7593a296e 100644 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -730,7 +730,7 @@ void LoadIntroPart2Graphics(u8 scenery) { LZ77UnCompVram(sGrass_Gfx, (void *)(BG_CHAR_ADDR(1))); LZ77UnCompVram(sGrass_Tilemap, (void *)(BG_SCREEN_ADDR(15))); - LoadPalette(&sGrass_Pal, 240, sizeof(sGrass_Pal)); + LoadPalette(&sGrass_Pal, BG_PLTT_ID(15), sizeof(sGrass_Pal)); switch (scenery) { case 0: @@ -739,17 +739,17 @@ void LoadIntroPart2Graphics(u8 scenery) // Clouds are never used in this part of the intro LZ77UnCompVram(sCloudsBg_Gfx, (void *)(VRAM)); LZ77UnCompVram(sCloudsBg_Tilemap, (void *)(BG_SCREEN_ADDR(6))); - LoadPalette(&sCloudsBg_Pal, 0, sizeof(sCloudsBg_Pal)); + LoadPalette(&sCloudsBg_Pal, BG_PLTT_ID(0), sizeof(sCloudsBg_Pal)); LoadCompressedSpriteSheet(sSpriteSheet_Clouds); - LoadPalette(&sClouds_Pal, 256, sizeof(sClouds_Pal)); + LoadPalette(&sClouds_Pal, OBJ_PLTT_ID(0), sizeof(sClouds_Pal)); CreateCloudSprites(); break; case 1: LZ77UnCompVram(sTrees_Gfx, (void *)(VRAM)); LZ77UnCompVram(sTrees_Tilemap, (void *)(BG_SCREEN_ADDR(6))); - LoadPalette(&sTrees_Pal, 0, sizeof(sTrees_Pal)); + LoadPalette(&sTrees_Pal, BG_PLTT_ID(0), sizeof(sTrees_Pal)); LoadCompressedSpriteSheet(sSpriteSheet_TreesSmall); - LoadPalette(&sTreesSmall_Pal, 256, sizeof(sTreesSmall_Pal)); + LoadPalette(&sTreesSmall_Pal, OBJ_PLTT_ID(0), sizeof(sTreesSmall_Pal)); CreateTreeSprites(); break; } @@ -843,42 +843,42 @@ void LoadCreditsSceneGraphics(u8 scene) { case SCENE_OCEAN_MORNING: default: - LoadPalette(&sGrass_Pal, 240, sizeof(sGrass_Pal)); + LoadPalette(&sGrass_Pal, BG_PLTT_ID(15), sizeof(sGrass_Pal)); LZ77UnCompVram(sCloudsBg_Gfx, (void *)(VRAM)); LZ77UnCompVram(sCloudsBg_Tilemap, (void *)(BG_SCREEN_ADDR(6))); - LoadPalette(&sCloudsBg_Pal, 0, sizeof(sCloudsBg_Pal)); + LoadPalette(&sCloudsBg_Pal, BG_PLTT_ID(0), sizeof(sCloudsBg_Pal)); LoadCompressedSpriteSheet(sSpriteSheet_Clouds); LZ77UnCompVram(sClouds_Gfx, (void *)(OBJ_VRAM0)); - LoadPalette(&sClouds_Pal, 256, sizeof(sClouds_Pal)); + LoadPalette(&sClouds_Pal, OBJ_PLTT_ID(0), sizeof(sClouds_Pal)); CreateCloudSprites(); break; case SCENE_OCEAN_SUNSET: - LoadPalette(&sGrassSunset_Pal, 240, sizeof(sGrassSunset_Pal)); + LoadPalette(&sGrassSunset_Pal, BG_PLTT_ID(15), sizeof(sGrassSunset_Pal)); LZ77UnCompVram(sCloudsBg_Gfx, (void *)(VRAM)); LZ77UnCompVram(sCloudsBg_Tilemap, (void *)(BG_SCREEN_ADDR(6))); - LoadPalette(&sCloudsBgSunset_Pal, 0, sizeof(sCloudsBgSunset_Pal)); + LoadPalette(&sCloudsBgSunset_Pal, BG_PLTT_ID(0), sizeof(sCloudsBgSunset_Pal)); LoadCompressedSpriteSheet(sSpriteSheet_Clouds); LZ77UnCompVram(sClouds_Gfx, (void *)(OBJ_VRAM0)); - LoadPalette(&sCloudsSunset_Pal, 256, sizeof(sCloudsSunset_Pal)); + LoadPalette(&sCloudsSunset_Pal, OBJ_PLTT_ID(0), sizeof(sCloudsSunset_Pal)); CreateCloudSprites(); break; case SCENE_FOREST_RIVAL_ARRIVE: case SCENE_FOREST_CATCH_RIVAL: - LoadPalette(&sGrassSunset_Pal, 240, sizeof(sGrassSunset_Pal)); + LoadPalette(&sGrassSunset_Pal, BG_PLTT_ID(15), sizeof(sGrassSunset_Pal)); LZ77UnCompVram(sTrees_Gfx, (void *)(VRAM)); LZ77UnCompVram(sTrees_Tilemap, (void *)(BG_SCREEN_ADDR(6))); - LoadPalette(&sTreesSunset_Pal, 0, sizeof(sTreesSunset_Pal)); + LoadPalette(&sTreesSunset_Pal, BG_PLTT_ID(0), sizeof(sTreesSunset_Pal)); LoadCompressedSpriteSheet(sSpriteSheet_TreesSmall); - LoadPalette(&sTreesSunset_Pal, 256, sizeof(sTreesSunset_Pal)); + LoadPalette(&sTreesSunset_Pal, OBJ_PLTT_ID(0), sizeof(sTreesSunset_Pal)); CreateTreeSprites(); break; case SCENE_CITY_NIGHT: - LoadPalette(&sGrassNight_Pal, 240, sizeof(sGrassNight_Pal)); + LoadPalette(&sGrassNight_Pal, BG_PLTT_ID(15), sizeof(sGrassNight_Pal)); LZ77UnCompVram(sHouses_Gfx, (void *)(VRAM)); LZ77UnCompVram(sHouses_Tilemap, (void *)(BG_SCREEN_ADDR(6))); - LoadPalette(&sHouses_Pal, 0, sizeof(sHouses_Pal)); + LoadPalette(&sHouses_Pal, BG_PLTT_ID(0), sizeof(sHouses_Pal)); LoadCompressedSpriteSheet(sSpriteSheet_HouseSilhouette); - LoadPalette(&sHouseSilhouette_Pal, 256, sizeof(sHouseSilhouette_Pal)); + LoadPalette(&sHouseSilhouette_Pal, OBJ_PLTT_ID(0), sizeof(sHouseSilhouette_Pal)); CreateHouseSprites(); break; } @@ -1006,8 +1006,8 @@ void CycleSceneryPalette(u8 mode) x = gPlttBufferUnfaded[10]; y = gPlttBufferUnfaded[9]; } - LoadPalette(&x, 9, sizeof(x)); - LoadPalette(&y, 10, sizeof(y)); + LoadPalette(&x, BG_PLTT_ID(0) + 9, sizeof(x)); + LoadPalette(&y, BG_PLTT_ID(0) + 10, sizeof(y)); break; case 2: if (gMain.vblankCounter1 & 3 || gPaletteFade.active) @@ -1022,8 +1022,8 @@ void CycleSceneryPalette(u8 mode) x = RGB(28, 24, 0); y = RGB(7, 9, 15); } - LoadPalette(&x, 12, sizeof(x)); - LoadPalette(&y, 13, sizeof(y)); + LoadPalette(&x, BG_PLTT_ID(0) + 12, sizeof(x)); + LoadPalette(&y, BG_PLTT_ID(0) + 13, sizeof(y)); break; case 1: break; diff --git a/src/item_menu.c b/src/item_menu.c index 608e203a6..4c66b0923 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -818,9 +818,9 @@ static bool8 LoadBagMenu_Graphics(void) break; case 2: if (!IsWallysBag() && gSaveBlock2Ptr->playerGender != MALE) - LoadCompressedPalette(gBagScreenFemale_Pal, 0, 0x40); + LoadCompressedPalette(gBagScreenFemale_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); else - LoadCompressedPalette(gBagScreenMale_Pal, 0, 0x40); + LoadCompressedPalette(gBagScreenMale_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); gBagMenu->graphicsLoadState++; break; case 3: @@ -987,7 +987,7 @@ static void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 y) else { // Print registered icon - if (gSaveBlock1Ptr->registeredItem && gSaveBlock1Ptr->registeredItem == itemId) + if (gSaveBlock1Ptr->registeredItem != ITEM_NONE && gSaveBlock1Ptr->registeredItem == itemId) BlitBitmapToWindow(windowId, sRegisteredSelect_Gfx, 96, y - 1, 24, 16); } } @@ -1909,7 +1909,7 @@ static void ItemMenu_Register(u8 taskId) u16 *cursorPos = &gBagPosition.cursorPosition[gBagPosition.pocket]; if (gSaveBlock1Ptr->registeredItem == gSpecialVar_ItemId) - gSaveBlock1Ptr->registeredItem = 0; + gSaveBlock1Ptr->registeredItem = ITEM_NONE; else gSaveBlock1Ptr->registeredItem = gSpecialVar_ItemId; DestroyListMenuTask(tListTaskId, scrollPos, cursorPos); @@ -2448,10 +2448,10 @@ static void LoadBagMenuTextWindows(void) InitWindows(sDefaultBagWindows); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 1, 0xE0); - LoadMessageBoxGfx(0, 10, 0xD0); - ListMenuLoadStdPalAt(0xC0, 1); - LoadPalette(&gStandardMenuPalette, 0xF0, 0x20); + LoadUserWindowBorderGfx(0, 1, BG_PLTT_ID(14)); + LoadMessageBoxGfx(0, 10, BG_PLTT_ID(13)); + ListMenuLoadStdPalAt(BG_PLTT_ID(12), 1); + LoadPalette(&gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); for (i = 0; i <= WIN_POCKET_NAME; i++) { FillWindowPixelBuffer(i, PIXEL_FILL(0)); diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c index ff23c3792..4e6339ba3 100644 --- a/src/item_menu_icons.c +++ b/src/item_menu_icons.c @@ -205,7 +205,7 @@ static const union AffineAnimCmd *const sRotatingBallAnimCmds_FullRotation[] = static const struct SpriteSheet sRotatingBallTable = { - sRotatingBall_Gfx, 0x80, TAG_ROTATING_BALL_GFX + sRotatingBall_Gfx, sizeof(sRotatingBall_Gfx), TAG_ROTATING_BALL_GFX }; static const struct SpritePalette sRotatingBallPaletteTable = diff --git a/src/link.c b/src/link.c index 06907005f..de857af33 100644 --- a/src/link.c +++ b/src/link.c @@ -247,7 +247,7 @@ void Task_DestroySelf(u8 taskId) static void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock, u16 baseChar) { - LoadPalette(sLinkTestDigitsPal, paletteNum * 16, 0x20); + LoadPalette(sLinkTestDigitsPal, BG_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); DmaCopy16(3, sLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * baseChar), sizeof sLinkTestDigitsGfx); gLinkTestBGInfo.screenBaseBlock = screenBaseBlock; gLinkTestBGInfo.paletteNum = paletteNum; @@ -271,7 +271,7 @@ static void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charB // Unused static void LoadLinkTestBgGfx(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock) { - LoadPalette(sLinkTestDigitsPal, paletteNum * 16, 0x20); + LoadPalette(sLinkTestDigitsPal, BG_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); DmaCopy16(3, sLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof sLinkTestDigitsGfx); gLinkTestBGInfo.screenBaseBlock = screenBaseBlock; gLinkTestBGInfo.paletteNum = paletteNum; @@ -1595,7 +1595,7 @@ void CB2_LinkError(void) ResetSpriteData(); FreeAllSpritePalettes(); ResetPaletteFadeControl(); - FillPalette(RGB_BLACK, 0, 2); + SetBackdropFromColor(RGB_BLACK); ResetTasks(); ScanlineEffect_Stop(); if (gWirelessCommType) @@ -1621,7 +1621,7 @@ void CB2_LinkError(void) SetGpuReg(REG_OFFSET_BG1HOFS, 0); SetGpuReg(REG_OFFSET_BG1VOFS, 0); ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON); - LoadPalette(gStandardMenuPalette, 0xf0, 0x20); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); gSoftResetDisabled = FALSE; CreateTask(Task_DestroySelf, 0); StopMapMusic(); diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c index 0d028cd48..2ad7a738e 100644 --- a/src/link_rfu_3.c +++ b/src/link_rfu_3.c @@ -134,7 +134,7 @@ static const u8 sWireless_ASCIItoRSETable[256] = { 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94 }; -static const u8 sWireless_RSEtoASCIITable[256] = { +const u8 gWireless_RSEtoASCIITable[256] = { [CHAR_SPACE] = ' ', 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, @@ -612,7 +612,7 @@ static void PkmnStrToASCII(u8 *asciiStr, const u8 *pkmnStr) s32 i; for (i = 0; pkmnStr[i] != EOS; i++) - asciiStr[i] = sWireless_RSEtoASCIITable[pkmnStr[i]]; + asciiStr[i] = gWireless_RSEtoASCIITable[pkmnStr[i]]; asciiStr[i] = 0; } diff --git a/src/list_menu.c b/src/list_menu.c index c240564c6..546ec6f6c 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -1084,7 +1084,7 @@ u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 if (arrowInfo->palTag == TAG_NONE) { - LoadPalette(sRedInterface_Pal, (16 * arrowInfo->palNum) + 0x100, 0x20); + LoadPalette(sRedInterface_Pal, OBJ_PLTT_ID(arrowInfo->palNum), PLTT_SIZE_4BPP); } else { @@ -1330,7 +1330,7 @@ static u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor) if (cursor->palTag == TAG_NONE) { - LoadPalette(sRedInterface_Pal, (16 * cursor->palNum) + 0x100, 0x20); + LoadPalette(sRedInterface_Pal, OBJ_PLTT_ID(cursor->palNum), PLTT_SIZE_4BPP); } else { @@ -1415,7 +1415,7 @@ static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor) if (cursor->palTag == TAG_NONE) { - LoadPalette(sRedInterface_Pal, (16 * cursor->palNum) + 0x100, 0x20); + LoadPalette(sRedInterface_Pal, OBJ_PLTT_ID(cursor->palNum), PLTT_SIZE_4BPP); } else { diff --git a/src/mail.c b/src/mail.c index e20a53cba..575be7061 100644 --- a/src/mail.c +++ b/src/mail.c @@ -566,13 +566,13 @@ static bool8 MailReadBuildGraphics(void) CopyBgTilemapBufferToVram(2); break; case 12: - LoadPalette(GetOverworldTextboxPalettePtr(), 240, 32); + LoadPalette(GetOverworldTextboxPalettePtr(), BG_PLTT_ID(15), PLTT_SIZE_4BPP); gPlttBufferUnfaded[250] = sMailGraphics[sMailRead->mailType].textColor; gPlttBufferFaded[250] = sMailGraphics[sMailRead->mailType].textColor; gPlttBufferUnfaded[251] = sMailGraphics[sMailRead->mailType].textShadow; gPlttBufferFaded[251] = sMailGraphics[sMailRead->mailType].textShadow; - LoadPalette(sMailGraphics[sMailRead->mailType].palette, 0, 32); + LoadPalette(sMailGraphics[sMailRead->mailType].palette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); gPlttBufferUnfaded[10] = sBgColors[gSaveBlock2Ptr->playerGender][0]; gPlttBufferFaded[10] = sBgColors[gSaveBlock2Ptr->playerGender][0]; diff --git a/src/main.c b/src/main.c index 3a306b2cf..69c6c7a16 100644 --- a/src/main.c +++ b/src/main.c @@ -31,6 +31,9 @@ static void VCountIntr(void); static void SerialIntr(void); static void IntrDummy(void); +// Defined in the linker script so that the test build can override it. +extern void gInitialMainCB2(void); + const u8 gGameVersion = GAME_VERSION; const u8 gGameLanguage = GAME_LANGUAGE; // English @@ -68,6 +71,7 @@ IntrFunc gIntrTable[INTR_COUNT]; u8 gLinkVSyncDisabled; u32 IntrMain_Buffer[0x200]; s8 gPcmDmaCounter; +void *gAgbMainLoop_sp; static EWRAM_DATA u16 sTrainerId = 0; @@ -126,6 +130,12 @@ void AgbMain() AGBPrintfInit(); #endif #endif + gAgbMainLoop_sp = __builtin_frame_address(0); + AgbMainLoop(); +} + +void AgbMainLoop(void) +{ for (;;) { ReadKeys(); @@ -178,7 +188,7 @@ static void InitMainCallbacks(void) gTrainerHillVBlankCounter = NULL; gMain.vblankCounter2 = 0; gMain.callback1 = NULL; - SetMainCallback2(CB2_InitCopyrightScreenAfterBootup); + SetMainCallback2(gInitialMainCB2); gSaveBlock2Ptr = &gSaveblock2.block; gPokemonStoragePtr = &gPokemonStorage.block; } diff --git a/src/main_menu.c b/src/main_menu.c index 39554d188..9d510c027 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -571,8 +571,8 @@ static u32 InitMainMenu(bool8 returningFromOptionsMenu) DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); - LoadPalette(sMainMenuBgPal, 0, 32); - LoadPalette(sMainMenuTextPal, 0xF0, 32); + LoadPalette(sMainMenuBgPal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(sMainMenuTextPal, BG_PLTT_ID(15), PLTT_SIZE_4BPP); ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); @@ -750,28 +750,28 @@ static void Task_DisplayMainMenu(u8 taskId) SetGpuReg(REG_OFFSET_BLDY, 7); palette = RGB_BLACK; - LoadPalette(&palette, 254, 2); + LoadPalette(&palette, BG_PLTT_ID(15) + 14, PLTT_SIZEOF(1)); palette = RGB_WHITE; - LoadPalette(&palette, 250, 2); + LoadPalette(&palette, BG_PLTT_ID(15) + 10, PLTT_SIZEOF(1)); palette = RGB(12, 12, 12); - LoadPalette(&palette, 251, 2); + LoadPalette(&palette, BG_PLTT_ID(15) + 11, PLTT_SIZEOF(1)); palette = RGB(26, 26, 25); - LoadPalette(&palette, 252, 2); + LoadPalette(&palette, BG_PLTT_ID(15) + 12, PLTT_SIZEOF(1)); // Note: If there is no save file, the save block is zeroed out, // so the default gender is MALE. if (gSaveBlock2Ptr->playerGender == MALE) { palette = RGB(4, 16, 31); - LoadPalette(&palette, 241, 2); + LoadPalette(&palette, BG_PLTT_ID(15) + 1, PLTT_SIZEOF(1)); } else { palette = RGB(31, 3, 21); - LoadPalette(&palette, 241, 2); + LoadPalette(&palette, BG_PLTT_ID(15) + 1, PLTT_SIZEOF(1)); } switch (gTasks[taskId].tMenuType) @@ -1274,8 +1274,8 @@ static void Task_NewGameBirchSpeech_Init(u8 taskId) LZ77UnCompVram(sBirchSpeechShadowGfx, (void *)VRAM); LZ77UnCompVram(sBirchSpeechBgMap, (void *)(BG_SCREEN_ADDR(7))); - LoadPalette(sBirchSpeechBgPals, 0, 64); - LoadPalette(sBirchSpeechPlatformBlackPal, 1, 16); + LoadPalette(sBirchSpeechBgPals, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(sBirchSpeechPlatformBlackPal, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(8)); ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -1327,7 +1327,7 @@ static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId) { InitWindows(sNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); - LoadMessageBoxGfx(0, 0xFC, 0xF0); + LoadMessageBoxGfx(0, 0xFC, BG_PLTT_ID(15)); NewGameBirchSpeech_ShowDialogueWindow(0, 1); PutWindowTilemap(0); CopyWindowToVram(0, COPYWIN_GFX); @@ -1809,8 +1809,8 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void) ResetPaletteFade(); LZ77UnCompVram(sBirchSpeechShadowGfx, (u8 *)VRAM); LZ77UnCompVram(sBirchSpeechBgMap, (u8 *)(BG_SCREEN_ADDR(7))); - LoadPalette(sBirchSpeechBgPals, 0, 64); - LoadPalette(&sBirchSpeechBgGradientPal[1], 1, 16); + LoadPalette(sBirchSpeechBgPals, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(&sBirchSpeechBgGradientPal[1], BG_PLTT_ID(0) + 1, PLTT_SIZEOF(8)); ResetTasks(); taskId = CreateTask(Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox, 0); gTasks[taskId].tTimer = 5; @@ -1853,7 +1853,7 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void) SetMainCallback2(CB2_MainMenu); InitWindows(sNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); - LoadMessageBoxGfx(0, 0xFC, 0xF0); + LoadMessageBoxGfx(0, 0xFC, BG_PLTT_ID(15)); PutWindowTilemap(0); CopyWindowToVram(0, COPYWIN_FULL); } @@ -2029,7 +2029,7 @@ static void Task_NewGameBirchSpeech_FadePlatformIn(u8 taskId) { gTasks[taskId].tDelayTimer = gTasks[taskId].tDelay; gTasks[taskId].tPalIndex++; - LoadPalette(&sBirchSpeechBgGradientPal[gTasks[taskId].tPalIndex], 1, 16); + LoadPalette(&sBirchSpeechBgGradientPal[gTasks[taskId].tPalIndex], BG_PLTT_ID(0) + 1, PLTT_SIZEOF(8)); } } @@ -2063,7 +2063,7 @@ static void Task_NewGameBirchSpeech_FadePlatformOut(u8 taskId) { gTasks[taskId].tDelayTimer = gTasks[taskId].tDelay; gTasks[taskId].tPalIndex--; - LoadPalette(&sBirchSpeechBgGradientPal[gTasks[taskId].tPalIndex], 1, 16); + LoadPalette(&sBirchSpeechBgGradientPal[gTasks[taskId].tPalIndex], BG_PLTT_ID(0) + 1, PLTT_SIZEOF(8)); } } @@ -2191,7 +2191,7 @@ static void MainMenu_FormatSavegameBadges(void) static void LoadMainMenuWindowFrameTiles(u8 bgId, u16 tileOffset) { LoadBgTiles(bgId, GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, tileOffset); - LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, 32, 32); + LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); } static void DrawMainMenuWindowBorder(const struct WindowTemplate *template, u16 baseTileNum) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 866072a2c..07e4f9870 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -385,8 +385,8 @@ static void LoadMapNamePopUpWindowBg(void) CallWindowFunction(popupWindowId, DrawMapNamePopUpFrame); PutWindowTilemap(popupWindowId); if (gMapHeader.weather == WEATHER_UNDERWATER_BUBBLES) - LoadPalette(&sMapPopUp_Palette_Underwater, 0xE0, sizeof(sMapPopUp_Palette_Underwater)); + LoadPalette(&sMapPopUp_Palette_Underwater, BG_PLTT_ID(14), sizeof(sMapPopUp_Palette_Underwater)); else - LoadPalette(sMapPopUp_PaletteTable[popUpThemeId], 0xE0, sizeof(sMapPopUp_PaletteTable[0])); + LoadPalette(sMapPopUp_PaletteTable[popUpThemeId], BG_PLTT_ID(14), sizeof(sMapPopUp_PaletteTable[0])); BlitBitmapToWindow(popupWindowId, sMapPopUp_Table[popUpThemeId], 0, 0, 80, 24); } diff --git a/src/match_call.c b/src/match_call.c index 4f6a7b982..a9d18b347 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -1267,8 +1267,8 @@ static bool32 MatchCall_LoadGfx(u8 taskId) } FillWindowPixelBuffer(tWindowId, PIXEL_FILL(8)); - LoadPalette(sMatchCallWindow_Pal, 0xE0, sizeof(sMatchCallWindow_Pal)); - LoadPalette(sPokenavIcon_Pal, 0xF0, sizeof(sPokenavIcon_Pal)); + LoadPalette(sMatchCallWindow_Pal, BG_PLTT_ID(14), sizeof(sMatchCallWindow_Pal)); + LoadPalette(sPokenavIcon_Pal, BG_PLTT_ID(15), sizeof(sPokenavIcon_Pal)); ChangeBgY(0, -0x2000, BG_COORD_SET); return TRUE; } @@ -2102,7 +2102,7 @@ void LoadMatchCallWindowGfx(u32 windowId, u32 destOffset, u32 paletteId) { u8 bg = GetWindowAttribute(windowId, WINDOW_BG); LoadBgTiles(bg, sMatchCallWindow_Gfx, 0x100, destOffset); - LoadPalette(sMatchCallWindow_Pal, paletteId << 4, sizeof(sMatchCallWindow_Pal)); + LoadPalette(sMatchCallWindow_Pal, BG_PLTT_ID(paletteId), sizeof(sMatchCallWindow_Pal)); } void DrawMatchCallTextBoxBorder(u32 windowId, u32 tileOffset, u32 paletteId) diff --git a/src/menu.c b/src/menu.c index 4afda8cc8..ca61f8b87 100644 --- a/src/menu.c +++ b/src/menu.c @@ -23,6 +23,7 @@ #define DLG_WINDOW_PALETTE_NUM 15 #define DLG_WINDOW_BASE_TILE_NUM 0x200 #define STD_WINDOW_PALETTE_NUM 14 +#define STD_WINDOW_PALETTE_SIZE PLTT_SIZEOF(10) #define STD_WINDOW_BASE_TILE_NUM 0x214 struct MenuInfoIcon @@ -209,8 +210,8 @@ void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonP void LoadMessageBoxAndBorderGfx(void) { - LoadMessageBoxGfx(0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10); - LoadUserWindowBorderGfx(0, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM * 0x10); + LoadMessageBoxGfx(0, DLG_WINDOW_BASE_TILE_NUM, BG_PLTT_ID(DLG_WINDOW_PALETTE_NUM)); + LoadUserWindowBorderGfx(0, STD_WINDOW_BASE_TILE_NUM, BG_PLTT_ID(STD_WINDOW_PALETTE_NUM)); } void DrawDialogueFrame(u8 windowId, bool8 copyToVram) @@ -428,18 +429,18 @@ void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram) void LoadMessageBoxAndFrameGfx(u8 windowId, bool8 copyToVram) { - LoadMessageBoxGfx(windowId, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10); - DrawDialogFrameWithCustomTileAndPalette(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF); + LoadMessageBoxGfx(windowId, DLG_WINDOW_BASE_TILE_NUM, BG_PLTT_ID(DLG_WINDOW_PALETTE_NUM)); + DrawDialogFrameWithCustomTileAndPalette(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM); } void Menu_LoadStdPal(void) { - LoadPalette(gStandardMenuPalette, STD_WINDOW_PALETTE_NUM * 0x10, 0x14); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(STD_WINDOW_PALETTE_NUM), STD_WINDOW_PALETTE_SIZE); } void Menu_LoadStdPalAt(u16 offset) { - LoadPalette(gStandardMenuPalette, offset, 0x14); + LoadPalette(gStandardMenuPalette, offset, STD_WINDOW_PALETTE_SIZE); } // Unused @@ -551,7 +552,7 @@ void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, void (*callback)(str void EraseFieldMessageBox(bool8 copyToVram) { - FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x11); + FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 17); if (copyToVram == TRUE) CopyBgTilemapBufferToVram(0); } @@ -807,9 +808,9 @@ u8 HofPCTopBar_AddWindow(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile) sHofPCTopBarWindowId = AddWindow(&window); if (palette > 15) - palette = 15 * 16; + palette = BG_PLTT_ID(15); else - palette *= 16; + palette = BG_PLTT_ID(palette); LoadPalette(sHofPC_TopBar_Pal, palette, sizeof(sHofPC_TopBar_Pal)); return sHofPCTopBarWindowId; @@ -2085,7 +2086,7 @@ static void UnusedBlitBitmapRect(const struct Bitmap *src, struct Bitmap *dst, u // Unused static void LoadMonIconPalAtOffset(u8 palOffset, u16 speciesId) { - LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, 0x20); + LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, PLTT_SIZE_4BPP); } // Unused @@ -2112,7 +2113,7 @@ void ListMenuLoadStdPalAt(u8 palOffset, u8 palId) break; } - LoadPalette(palette, palOffset, 0x20); + LoadPalette(palette, palOffset, PLTT_SIZE_4BPP); } void BlitMenuInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y) diff --git a/src/menu_specialized.c b/src/menu_specialized.c index a5c52a474..6c153772f 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -115,7 +115,7 @@ static const struct WindowTemplate sMoveRelearnerWindowTemplates[] = .tilemapTop = 1, .width = 16, .height = 12, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0xA }, { @@ -124,7 +124,7 @@ static const struct WindowTemplate sMoveRelearnerWindowTemplates[] = .tilemapTop = 1, .width = 16, .height = 12, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0xCA }, { @@ -133,7 +133,7 @@ static const struct WindowTemplate sMoveRelearnerWindowTemplates[] = .tilemapTop = 1, .width = 10, .height = 12, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x18A }, { @@ -142,7 +142,7 @@ static const struct WindowTemplate sMoveRelearnerWindowTemplates[] = .tilemapTop = 15, .width = 22, .height = 4, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x202 }, { @@ -151,7 +151,7 @@ static const struct WindowTemplate sMoveRelearnerWindowTemplates[] = .tilemapTop = 8, .width = 5, .height = 4, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x25A }, DUMMY_WIN_TEMPLATE @@ -164,7 +164,7 @@ static const struct WindowTemplate sMoveRelearnerYesNoMenuTemplate = .tilemapTop = 8, .width = 5, .height = 4, - .paletteNum = 0xF, + .paletteNum = 15, .baseBlock = 0x25A }; @@ -708,8 +708,8 @@ void InitMoveRelearnerWindows(bool8 useContextWindow) InitWindows(sMoveRelearnerWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 1, 0xE0); - LoadPalette(gStandardMenuPalette, 0xF0, 0x20); + LoadUserWindowBorderGfx(0, 1, BG_PLTT_ID(14)); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); for (i = 0; i < ARRAY_COUNT(sMoveRelearnerWindowTemplates) - 1; i++) FillWindowPixelBuffer(i, PIXEL_FILL(1)); diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index e35a5b29a..924428aea 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -23,7 +23,7 @@ static const u8 sTileBitAttributes[NUM_METATILE_BEHAVIORS] = [MB_MOSSDEEP_GYM_WARP] = TILE_FLAG_UNUSED, [MB_MT_PYRE_HOLE] = TILE_FLAG_UNUSED, [MB_POND_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, - [MB_SEMI_DEEP_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, + [MB_INTERIOR_DEEP_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, [MB_DEEP_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, [MB_WATERFALL] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, [MB_SOOTOPOLIS_DEEP_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, @@ -852,7 +852,7 @@ bool8 MetatileBehavior_IsMountain(u8 metatileBehavior) bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior) { - if (metatileBehavior == MB_SEMI_DEEP_WATER + if (metatileBehavior == MB_INTERIOR_DEEP_WATER || metatileBehavior == MB_DEEP_WATER || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER) return TRUE; @@ -905,7 +905,7 @@ bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior) bool8 MetatileBehavior_IsDeepOrOceanWater(u8 metatileBehavior) { if (metatileBehavior == MB_OCEAN_WATER - || metatileBehavior == MB_SEMI_DEEP_WATER + || metatileBehavior == MB_INTERIOR_DEEP_WATER || metatileBehavior == MB_DEEP_WATER) return TRUE; else @@ -1163,7 +1163,7 @@ bool8 MetatileBehavior_IsSurfableFishableWater(u8 metatileBehavior) { if (metatileBehavior == MB_POND_WATER || metatileBehavior == MB_OCEAN_WATER - || metatileBehavior == MB_SEMI_DEEP_WATER + || metatileBehavior == MB_INTERIOR_DEEP_WATER || metatileBehavior == MB_DEEP_WATER || metatileBehavior == MB_SOOTOPOLIS_DEEP_WATER || (metatileBehavior == MB_EASTWARD_CURRENT diff --git a/src/mirage_tower.c b/src/mirage_tower.c index 37096619d..01b87393a 100644 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -96,7 +96,7 @@ static const s16 sCeilingCrumblePositions[][3] = static const struct SpriteSheet sCeilingCrumbleSpriteSheets[] = { - {sMirageTowerCrumbles_Gfx, 0x80, TAG_CEILING_CRUMBLE}, + {sMirageTowerCrumbles_Gfx, sizeof(sMirageTowerCrumbles_Gfx), TAG_CEILING_CRUMBLE}, {} }; diff --git a/src/move_relearner.c b/src/move_relearner.c index 3c8b06a78..05ec549e1 100644 --- a/src/move_relearner.c +++ b/src/move_relearner.c @@ -145,12 +145,19 @@ // The different versions of hearts are selected using animation // commands. -#define APPEAL_HEART_EMPTY 0 -#define APPEAL_HEART_FULL 1 -#define JAM_HEART_EMPTY 2 -#define JAM_HEART_FULL 3 +enum { + APPEAL_HEART_EMPTY, + APPEAL_HEART_FULL, + JAM_HEART_EMPTY, + JAM_HEART_FULL, +}; -#define MAX_RELEARNER_MOVES (MAX_LEVEL_UP_MOVES > 25 ? MAX_LEVEL_UP_MOVES : 25) +#define TAG_MODE_ARROWS 5325 +#define TAG_LIST_ARROWS 5425 +#define GFXTAG_UI 5525 +#define PALTAG_UI 5526 + +#define MAX_RELEARNER_MOVES max(MAX_LEVEL_UP_MOVES, 25) static EWRAM_DATA struct { @@ -174,11 +181,11 @@ static EWRAM_DATA struct { bool8 showContestInfo; } sMoveRelearnerMenuSate = {0}; -static const u16 sMoveRelearnerPaletteData[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal"); +static const u16 sUI_Pal[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal"); // The arrow sprites in this spritesheet aren't used. The scroll-arrow system provides its own // arrow sprites. -static const u8 sMoveRelearnerSpriteSheetData[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp"); +static const u8 sUI_Tiles[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp"); static const struct OamData sHeartSpriteOamData = { @@ -233,15 +240,15 @@ static const struct OamData sUnusedOam2 = static const struct SpriteSheet sMoveRelearnerSpriteSheet = { - .data = sMoveRelearnerSpriteSheetData, - .size = 0x180, - .tag = 5525 + .data = sUI_Tiles, + .size = sizeof(sUI_Tiles), + .tag = GFXTAG_UI }; static const struct SpritePalette sMoveRelearnerPalette = { - .data = sMoveRelearnerPaletteData, - .tag = 5526 + .data = sUI_Pal, + .tag = PALTAG_UI }; static const struct ScrollArrowsTemplate sDisplayModeArrowsTemplate = @@ -254,8 +261,8 @@ static const struct ScrollArrowsTemplate sDisplayModeArrowsTemplate = .secondY = 16, .fullyUpThreshold = -1, .fullyDownThreshold = -1, - .tileTag = 5325, - .palTag = 5325, + .tileTag = TAG_MODE_ARROWS, + .palTag = TAG_MODE_ARROWS, .palNum = 0, }; @@ -269,8 +276,8 @@ static const struct ScrollArrowsTemplate sMoveListScrollArrowsTemplate = .secondY = 104, .fullyUpThreshold = 0, .fullyDownThreshold = 0, - .tileTag = 5425, - .palTag = 5425, + .tileTag = TAG_LIST_ARROWS, + .palTag = TAG_LIST_ARROWS, .palNum = 0, }; @@ -308,8 +315,8 @@ static const union AnimCmd *const sHeartSpriteAnimationCommands[] = static const struct SpriteTemplate sConstestMoveHeartSprite = { - .tileTag = 5525, - .paletteTag = 5526, + .tileTag = GFXTAG_UI, + .paletteTag = PALTAG_UI, .oam = &sHeartSpriteOamData, .anims = sHeartSpriteAnimationCommands, .images = NULL, @@ -405,7 +412,7 @@ static void CB2_InitLearnMove(void) CreateUISprites(); sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuSate.listOffset, sMoveRelearnerMenuSate.listRow); - FillPalette(RGB_BLACK, 0, 2); + SetBackdropFromColor(RGB_BLACK); SetMainCallback2(CB2_MoveRelearnerMain); } @@ -430,7 +437,7 @@ static void CB2_InitLearnMoveReturnFromSelectMove(void) CreateUISprites(); sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuSate.listOffset, sMoveRelearnerMenuSate.listRow); - FillPalette(RGB_BLACK, 0, 2); + SetBackdropFromColor(RGB_BLACK); SetMainCallback2(CB2_MoveRelearnerMain); } diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 0af051ab7..92b07d45b 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -91,8 +91,8 @@ void CB2_InitMysteryEventMenu(void) FillWindowPixelBuffer(i, PIXEL_FILL(0)); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT); - LoadUserWindowBorderGfx(0, 1u, 0xD0u); - Menu_LoadStdPalAt(0xE0); + LoadUserWindowBorderGfx(0, 1, BG_PLTT_ID(13)); + Menu_LoadStdPalAt(BG_PLTT_ID(14)); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON); SetGpuReg(REG_OFFSET_BLDCNT, 0); CreateTask(Task_DestroySelf, 0); @@ -102,7 +102,7 @@ void CB2_InitMysteryEventMenu(void) BuildOamBuffer(); RunTextPrinters(); UpdatePaletteFade(); - FillPalette(RGB_BLACK, 0, 2); + SetBackdropFromColor(RGB_BLACK); SetMainCallback2(CB2_MysteryEventMenu); } } diff --git a/src/mystery_gift.c b/src/mystery_gift.c index c4e63bfbb..ee601059f 100755 --- a/src/mystery_gift.c +++ b/src/mystery_gift.c @@ -27,7 +27,7 @@ static void IncrementCardStatForNewTrainer(u32, u32, u32 *, int); void ClearMysteryGift(void) { CpuFill32(0, &gSaveBlock1Ptr->mysteryGift, sizeof(gSaveBlock1Ptr->mysteryGift)); - ClearSavedWonderNewsMetadata(); // Clear is redundant, InitSavedWonderNews would be sufficient + ClearSavedWonderNewsMetadata(); // Clear is redundant, WonderNews_Reset would be sufficient InitQuestionnaireWords(); } @@ -109,7 +109,7 @@ static void ClearSavedWonderNews(void) static void ClearSavedWonderNewsMetadata(void) { CpuFill32(0, GetSavedWonderNewsMetadata(), sizeof(gSaveBlock1Ptr->mysteryGift.newsMetadata)); - InitSavedWonderNews(); + WonderNews_Reset(); } bool32 IsWonderNewsSameAsSaved(const u8 *news) diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index f5d2b0401..3ac48822c 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -33,7 +33,7 @@ #include "constants/cable_club.h" #define LIST_MENU_TILE_NUM 10 -#define LIST_MENU_PAL_NUM 224 +#define LIST_MENU_PAL_NUM BG_PLTT_ID(14) static void LoadMysteryGiftTextboxBorder(u8 bgId); static void CreateMysteryGiftTask(void); @@ -411,14 +411,14 @@ static bool32 HandleMysteryGiftOrEReaderSetup(s32 isEReader) gMain.state++; break; case 1: - LoadPalette(sTextboxBorder_Pal, 0, 0x20); - LoadPalette(GetTextWindowPalette(2), 0xd0, 0x20); - Menu_LoadStdPalAt(0xC0); - LoadUserWindowBorderGfx(0, 0xA, 0xE0); - LoadUserWindowBorderGfx_(0, 0x1, 0xF0); - FillBgTilemapBufferRect(0, 0x000, 0, 0, 32, 32, 0x11); - FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); - FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); + LoadPalette(sTextboxBorder_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(GetTextWindowPalette(2), BG_PLTT_ID(13), PLTT_SIZE_4BPP); + Menu_LoadStdPalAt(BG_PLTT_ID(12)); + LoadUserWindowBorderGfx(0, 0xA, BG_PLTT_ID(14)); + LoadUserWindowBorderGfx_(0, 0x1, BG_PLTT_ID(15)); + FillBgTilemapBufferRect(0, 0x000, 0, 0, 32, 32, 17); + FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 17); + FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 17); MG_DrawCheckerboardPattern(3); PrintMysteryGiftOrEReaderTopMenu(isEReader, FALSE); gMain.state++; @@ -505,16 +505,16 @@ void MG_DrawCheckerboardPattern(u32 bg) { s32 i = 0, j; - FillBgTilemapBufferRect(bg, 0x003, 0, 0, 32, 2, 0x11); + FillBgTilemapBufferRect(bg, 0x003, 0, 0, 32, 2, 17); for (i = 0; i < 18; i++) { for (j = 0; j < 32; j++) { if ((i & 1) != (j & 1)) - FillBgTilemapBufferRect(bg, 1, j, i + 2, 1, 1, 0x11); + FillBgTilemapBufferRect(bg, 1, j, i + 2, 1, 1, 17); else - FillBgTilemapBufferRect(bg, 2, j, i + 2, 1, 1, 0x11); + FillBgTilemapBufferRect(bg, 2, j, i + 2, 1, 1, 17); } } } @@ -524,10 +524,10 @@ static void ClearScreenInBg0(bool32 ignoreTopTwoRows) switch (ignoreTopTwoRows) { case 0: - FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x11); + FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 17); break; case 1: - FillBgTilemapBufferRect(0, 0, 0, 2, 32, 30, 0x11); + FillBgTilemapBufferRect(0, 0, 0, 2, 32, 30, 17); break; } CopyBgTilemapBufferToVram(0); @@ -1258,7 +1258,7 @@ static void Task_MysteryGift(u8 taskId) data->state = MG_STATE_CLIENT_LINK_END; break; case CLI_RET_COPY_MSG: - memcpy(data->clientMsg, MysteryGiftClient_GetMsg(), 0x40); + memcpy(data->clientMsg, MysteryGiftClient_GetMsg(), CLIENT_MAX_MSG_SIZE); MysteryGiftClient_AdvanceState(); break; case CLI_RET_PRINT_MSG: @@ -1371,9 +1371,9 @@ static void Task_MysteryGift(u8 taskId) if (data->msgId == CLI_MSG_NEWS_RECEIVED) { if (data->sourceIsFriend == TRUE) - GenerateRandomWonderNews(WONDER_NEWS_RECV_FRIEND); + WonderNews_SetReward(WONDER_NEWS_RECV_FRIEND); else - GenerateRandomWonderNews(WONDER_NEWS_RECV_WIRELESS); + WonderNews_SetReward(WONDER_NEWS_RECV_WIRELESS); } if (!successMsg) { @@ -1580,7 +1580,7 @@ static void Task_MysteryGift(u8 taskId) { if (data->sourceIsFriend == TRUE && data->msgId == SVR_MSG_NEWS_SENT) { - GenerateRandomWonderNews(WONDER_NEWS_SENT); + WonderNews_SetReward(WONDER_NEWS_SENT); data->state = MG_STATE_SAVE_LOAD_GIFT; } else diff --git a/src/mystery_gift_scripts.c b/src/mystery_gift_scripts.c index fcd7f568d..0bad35eb0 100644 --- a/src/mystery_gift_scripts.c +++ b/src/mystery_gift_scripts.c @@ -172,7 +172,7 @@ static const struct MysteryGiftServerCmd sServerScript_TossPrompt[] = { {SVR_SEND}, {SVR_RECV, MG_LINKID_RESPONSE}, {SVR_READ_RESPONSE}, - {SVR_GOTO_IF_EQ, FALSE, sServerScript_SendCard}, // Tossed old card, send new one + {SVR_GOTO_IF_EQ, FALSE, sServerScript_SendCard}, // Tossed old card, send new one {SVR_GOTO, .ptr = sServerScript_ClientCanceledCard} // Kept old card, cancel new one }; diff --git a/src/mystery_gift_view.c b/src/mystery_gift_view.c index 43605564e..4ac0489bb 100644 --- a/src/mystery_gift_view.c +++ b/src/mystery_gift_view.c @@ -240,9 +240,9 @@ s32 WonderCard_Enter(void) case 3: if (FreeTempTileDataBuffersIfPossible()) return 0; - LoadPalette(GetTextWindowPalette(1), 0x20, 0x20); + LoadPalette(GetTextWindowPalette(1), BG_PLTT_ID(2), PLTT_SIZE_4BPP); gPaletteFade.bufferTransferDisabled = TRUE; - LoadPalette(sWonderCardData->gfx->pal, 0x10, 0x20); + LoadPalette(sWonderCardData->gfx->pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); LZ77UnCompWram(sWonderCardData->gfx->map, sWonderCardData->bgTilemapBuffer); CopyRectToBgTilemapBufferRect(2, sWonderCardData->bgTilemapBuffer, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT, 1, 0x008, 0); CopyBgTilemapBufferToVram(2); @@ -703,9 +703,9 @@ s32 WonderNews_Enter(void) case 3: if (FreeTempTileDataBuffersIfPossible()) return 0; - LoadPalette(GetTextWindowPalette(1), 0x20, 0x20); + LoadPalette(GetTextWindowPalette(1), BG_PLTT_ID(2), PLTT_SIZE_4BPP); gPaletteFade.bufferTransferDisabled = TRUE; - LoadPalette(sWonderNewsData->gfx->pal, 0x10, 0x20); + LoadPalette(sWonderNewsData->gfx->pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); LZ77UnCompWram(sWonderNewsData->gfx->map, sWonderNewsData->bgTilemapBuffer); CopyRectToBgTilemapBufferRect(1, sWonderNewsData->bgTilemapBuffer, 0, 0, DISPLAY_TILE_WIDTH, 3, 0, 0, DISPLAY_TILE_WIDTH, 3, 1, 8, 0); CopyRectToBgTilemapBufferRect(3, sWonderNewsData->bgTilemapBuffer, 0, 3, DISPLAY_TILE_WIDTH, 3 + DISPLAY_TILE_HEIGHT, 0, 3, DISPLAY_TILE_WIDTH, 3 + DISPLAY_TILE_HEIGHT, 1, 8, 0); diff --git a/src/naming_screen.c b/src/naming_screen.c index c28382755..14a75166f 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1880,9 +1880,9 @@ static void CreateHelperTasks(void) static void LoadPalettes(void) { - LoadPalette(gNamingScreenMenu_Pal, 0, sizeof(gNamingScreenMenu_Pal)); - LoadPalette(sKeyboard_Pal, 0xA0, sizeof(sKeyboard_Pal)); - LoadPalette(GetTextWindowPalette(2), 0xB0, 0x20); + LoadPalette(gNamingScreenMenu_Pal, BG_PLTT_ID(0), sizeof(gNamingScreenMenu_Pal)); + LoadPalette(sKeyboard_Pal, BG_PLTT_ID(10), sizeof(sKeyboard_Pal)); + LoadPalette(GetTextWindowPalette(2), BG_PLTT_ID(11), PLTT_SIZE_4BPP); } static void DrawBgTilemap(u8 bg, const void *src) diff --git a/src/new_game.c b/src/new_game.c index 8f8aa9b82..0efc12d47 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -182,7 +182,7 @@ void NewGameInitData(void) ResetPokemonStorageSystem(); ClearRoamerData(); ClearRoamerLocationData(); - gSaveBlock1Ptr->registeredItem = 0; + gSaveBlock1Ptr->registeredItem = ITEM_NONE; ClearBag(); NewGameInitPCItems(); ClearPokeblocks(); diff --git a/src/option_menu.c b/src/option_menu.c index 3ca9857e8..67169b1f9 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -1,34 +1,29 @@ #include "global.h" #include "option_menu.h" -#include "main.h" -#include "menu.h" -#include "scanline_effect.h" -#include "palette.h" -#include "sprite.h" -#include "task.h" #include "bg.h" #include "gpu_regs.h" -#include "window.h" +#include "international_string_util.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "scanline_effect.h" +#include "sprite.h" +#include "strings.h" +#include "task.h" #include "text.h" #include "text_window.h" -#include "international_string_util.h" -#include "strings.h" +#include "window.h" #include "gba/m4a_internal.h" #include "constants/rgb.h" -// Task data -enum -{ - TD_MENUSELECTION, - TD_TEXTSPEED, - TD_BATTLESCENE, - TD_BATTLESTYLE, - TD_SOUND, - TD_BUTTONMODE, - TD_FRAMETYPE, -}; +#define tMenuSelection data[0] +#define tTextSpeed data[1] +#define tBattleSceneOff data[2] +#define tBattleStyle data[3] +#define tSound data[4] +#define tButtonMode data[5] +#define tWindowFrameType data[6] -// Menu items enum { MENUITEM_TEXTSPEED, @@ -41,10 +36,9 @@ enum MENUITEM_COUNT, }; -// Window Ids enum { - WIN_TEXT_OPTION, + WIN_HEADER, WIN_OPTIONS }; @@ -55,25 +49,24 @@ enum #define YPOS_BUTTONMODE (MENUITEM_BUTTONMODE * 16) #define YPOS_FRAMETYPE (MENUITEM_FRAMETYPE * 16) -// this file's functions static void Task_OptionMenuFadeIn(u8 taskId); static void Task_OptionMenuProcessInput(u8 taskId); static void Task_OptionMenuSave(u8 taskId); static void Task_OptionMenuFadeOut(u8 taskId); static void HighlightOptionMenuItem(u8 selection); -static u8 TextSpeed_ProcessInput(u8 selection); +static u8 TextSpeed_ProcessInput(u8 selection); static void TextSpeed_DrawChoices(u8 selection); -static u8 BattleScene_ProcessInput(u8 selection); +static u8 BattleScene_ProcessInput(u8 selection); static void BattleScene_DrawChoices(u8 selection); -static u8 BattleStyle_ProcessInput(u8 selection); +static u8 BattleStyle_ProcessInput(u8 selection); static void BattleStyle_DrawChoices(u8 selection); -static u8 Sound_ProcessInput(u8 selection); +static u8 Sound_ProcessInput(u8 selection); static void Sound_DrawChoices(u8 selection); -static u8 FrameType_ProcessInput(u8 selection); +static u8 FrameType_ProcessInput(u8 selection); static void FrameType_DrawChoices(u8 selection); -static u8 ButtonMode_ProcessInput(u8 selection); +static u8 ButtonMode_ProcessInput(u8 selection); static void ButtonMode_DrawChoices(u8 selection); -static void DrawTextOption(void); +static void DrawHeaderText(void); static void DrawOptionMenuTexts(void); static void DrawBgWindowFrames(void); @@ -96,7 +89,7 @@ static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = static const struct WindowTemplate sOptionMenuWinTemplates[] = { - { + [WIN_HEADER] = { .bg = 1, .tilemapLeft = 2, .tilemapTop = 1, @@ -105,7 +98,7 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] = .paletteNum = 1, .baseBlock = 2 }, - { + [WIN_OPTIONS] = { .bg = 0, .tilemapLeft = 2, .tilemapTop = 5, @@ -119,29 +112,28 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] = static const struct BgTemplate sOptionMenuBgTemplates[] = { - { - .bg = 1, - .charBaseIndex = 1, - .mapBaseIndex = 30, - .screenSize = 0, - .paletteMode = 0, - .priority = 0, - .baseTile = 0 - }, - { - .bg = 0, - .charBaseIndex = 1, - .mapBaseIndex = 31, - .screenSize = 0, - .paletteMode = 0, - .priority = 1, - .baseTile = 0 - } + { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 0, + .charBaseIndex = 1, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + } }; static const u16 sOptionMenuBg_Pal[] = {RGB(17, 18, 31)}; -// code static void MainCB2(void) { RunTasks(); @@ -207,24 +199,24 @@ void CB2_InitOptionMenu(void) gMain.state++; break; case 4: - LoadPalette(sOptionMenuBg_Pal, 0, sizeof(sOptionMenuBg_Pal)); - LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, 0x70, 0x20); + LoadPalette(sOptionMenuBg_Pal, BG_PLTT_ID(0), sizeof(sOptionMenuBg_Pal)); + LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, BG_PLTT_ID(7), PLTT_SIZE_4BPP); gMain.state++; break; case 5: - LoadPalette(sOptionMenuText_Pal, 16, sizeof(sOptionMenuText_Pal)); + LoadPalette(sOptionMenuText_Pal, BG_PLTT_ID(1), sizeof(sOptionMenuText_Pal)); gMain.state++; break; case 6: - PutWindowTilemap(0); - DrawTextOption(); + PutWindowTilemap(WIN_HEADER); + DrawHeaderText(); gMain.state++; break; case 7: gMain.state++; break; case 8: - PutWindowTilemap(1); + PutWindowTilemap(WIN_OPTIONS); DrawOptionMenuTexts(); gMain.state++; case 9: @@ -235,28 +227,28 @@ void CB2_InitOptionMenu(void) { u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0); - gTasks[taskId].data[TD_MENUSELECTION] = 0; - gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; - gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; - gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; - gTasks[taskId].data[TD_SOUND] = gSaveBlock2Ptr->optionsSound; - gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; - gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + gTasks[taskId].tMenuSelection = 0; + gTasks[taskId].tTextSpeed = gSaveBlock2Ptr->optionsTextSpeed; + gTasks[taskId].tBattleSceneOff = gSaveBlock2Ptr->optionsBattleSceneOff; + gTasks[taskId].tBattleStyle = gSaveBlock2Ptr->optionsBattleStyle; + gTasks[taskId].tSound = gSaveBlock2Ptr->optionsSound; + gTasks[taskId].tButtonMode = gSaveBlock2Ptr->optionsButtonMode; + gTasks[taskId].tWindowFrameType = gSaveBlock2Ptr->optionsWindowFrameType; - TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); - BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); - BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); - Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); - ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); - FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); + TextSpeed_DrawChoices(gTasks[taskId].tTextSpeed); + BattleScene_DrawChoices(gTasks[taskId].tBattleSceneOff); + BattleStyle_DrawChoices(gTasks[taskId].tBattleStyle); + Sound_DrawChoices(gTasks[taskId].tSound); + ButtonMode_DrawChoices(gTasks[taskId].tButtonMode); + FrameType_DrawChoices(gTasks[taskId].tWindowFrameType); + HighlightOptionMenuItem(gTasks[taskId].tMenuSelection); CopyWindowToVram(WIN_OPTIONS, COPYWIN_FULL); gMain.state++; break; } case 11: - BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); SetVBlankCallback(VBlankCB); SetMainCallback2(MainCB2); return; @@ -273,7 +265,7 @@ static void Task_OptionMenuProcessInput(u8 taskId) { if (JOY_NEW(A_BUTTON)) { - if (gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL) + if (gTasks[taskId].tMenuSelection == MENUITEM_CANCEL) gTasks[taskId].func = Task_OptionMenuSave; } else if (JOY_NEW(B_BUTTON)) @@ -282,67 +274,67 @@ static void Task_OptionMenuProcessInput(u8 taskId) } else if (JOY_NEW(DPAD_UP)) { - if (gTasks[taskId].data[TD_MENUSELECTION] > 0) - gTasks[taskId].data[TD_MENUSELECTION]--; + if (gTasks[taskId].tMenuSelection > 0) + gTasks[taskId].tMenuSelection--; else - gTasks[taskId].data[TD_MENUSELECTION] = MENUITEM_CANCEL; - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); + gTasks[taskId].tMenuSelection = MENUITEM_CANCEL; + HighlightOptionMenuItem(gTasks[taskId].tMenuSelection); } else if (JOY_NEW(DPAD_DOWN)) { - if (gTasks[taskId].data[TD_MENUSELECTION] < MENUITEM_CANCEL) - gTasks[taskId].data[TD_MENUSELECTION]++; + if (gTasks[taskId].tMenuSelection < MENUITEM_CANCEL) + gTasks[taskId].tMenuSelection++; else - gTasks[taskId].data[TD_MENUSELECTION] = 0; - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); + gTasks[taskId].tMenuSelection = 0; + HighlightOptionMenuItem(gTasks[taskId].tMenuSelection); } else { u8 previousOption; - switch (gTasks[taskId].data[TD_MENUSELECTION]) + switch (gTasks[taskId].tMenuSelection) { case MENUITEM_TEXTSPEED: - previousOption = gTasks[taskId].data[TD_TEXTSPEED]; - gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]); + previousOption = gTasks[taskId].tTextSpeed; + gTasks[taskId].tTextSpeed = TextSpeed_ProcessInput(gTasks[taskId].tTextSpeed); - if (previousOption != gTasks[taskId].data[TD_TEXTSPEED]) - TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); + if (previousOption != gTasks[taskId].tTextSpeed) + TextSpeed_DrawChoices(gTasks[taskId].tTextSpeed); break; case MENUITEM_BATTLESCENE: - previousOption = gTasks[taskId].data[TD_BATTLESCENE]; - gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]); + previousOption = gTasks[taskId].tBattleSceneOff; + gTasks[taskId].tBattleSceneOff = BattleScene_ProcessInput(gTasks[taskId].tBattleSceneOff); - if (previousOption != gTasks[taskId].data[TD_BATTLESCENE]) - BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); + if (previousOption != gTasks[taskId].tBattleSceneOff) + BattleScene_DrawChoices(gTasks[taskId].tBattleSceneOff); break; case MENUITEM_BATTLESTYLE: - previousOption = gTasks[taskId].data[TD_BATTLESTYLE]; - gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]); + previousOption = gTasks[taskId].tBattleStyle; + gTasks[taskId].tBattleStyle = BattleStyle_ProcessInput(gTasks[taskId].tBattleStyle); - if (previousOption != gTasks[taskId].data[TD_BATTLESTYLE]) - BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); + if (previousOption != gTasks[taskId].tBattleStyle) + BattleStyle_DrawChoices(gTasks[taskId].tBattleStyle); break; case MENUITEM_SOUND: - previousOption = gTasks[taskId].data[TD_SOUND]; - gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]); + previousOption = gTasks[taskId].tSound; + gTasks[taskId].tSound = Sound_ProcessInput(gTasks[taskId].tSound); - if (previousOption != gTasks[taskId].data[TD_SOUND]) - Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); + if (previousOption != gTasks[taskId].tSound) + Sound_DrawChoices(gTasks[taskId].tSound); break; case MENUITEM_BUTTONMODE: - previousOption = gTasks[taskId].data[TD_BUTTONMODE]; - gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]); + previousOption = gTasks[taskId].tButtonMode; + gTasks[taskId].tButtonMode = ButtonMode_ProcessInput(gTasks[taskId].tButtonMode); - if (previousOption != gTasks[taskId].data[TD_BUTTONMODE]) - ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); + if (previousOption != gTasks[taskId].tButtonMode) + ButtonMode_DrawChoices(gTasks[taskId].tButtonMode); break; case MENUITEM_FRAMETYPE: - previousOption = gTasks[taskId].data[TD_FRAMETYPE]; - gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]); + previousOption = gTasks[taskId].tWindowFrameType; + gTasks[taskId].tWindowFrameType = FrameType_ProcessInput(gTasks[taskId].tWindowFrameType); - if (previousOption != gTasks[taskId].data[TD_FRAMETYPE]) - FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); + if (previousOption != gTasks[taskId].tWindowFrameType) + FrameType_DrawChoices(gTasks[taskId].tWindowFrameType); break; default: return; @@ -358,14 +350,14 @@ static void Task_OptionMenuProcessInput(u8 taskId) static void Task_OptionMenuSave(u8 taskId) { - gSaveBlock2Ptr->optionsTextSpeed = gTasks[taskId].data[TD_TEXTSPEED]; - gSaveBlock2Ptr->optionsBattleSceneOff = gTasks[taskId].data[TD_BATTLESCENE]; - gSaveBlock2Ptr->optionsBattleStyle = gTasks[taskId].data[TD_BATTLESTYLE]; - gSaveBlock2Ptr->optionsSound = gTasks[taskId].data[TD_SOUND]; - gSaveBlock2Ptr->optionsButtonMode = gTasks[taskId].data[TD_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = gTasks[taskId].data[TD_FRAMETYPE]; + gSaveBlock2Ptr->optionsTextSpeed = gTasks[taskId].tTextSpeed; + gSaveBlock2Ptr->optionsBattleSceneOff = gTasks[taskId].tBattleSceneOff; + gSaveBlock2Ptr->optionsBattleStyle = gTasks[taskId].tBattleStyle; + gSaveBlock2Ptr->optionsSound = gTasks[taskId].tSound; + gSaveBlock2Ptr->optionsButtonMode = gTasks[taskId].tButtonMode; + gSaveBlock2Ptr->optionsWindowFrameType = gTasks[taskId].tWindowFrameType; - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); gTasks[taskId].func = Task_OptionMenuFadeOut; } @@ -390,13 +382,13 @@ static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style) u8 dst[16]; u16 i; - for (i = 0; *text != EOS && i <= 14; i++) + for (i = 0; *text != EOS && i < ARRAY_COUNT(dst) - 1; i++) dst[i] = *(text++); if (style != 0) { - dst[2] = 4; - dst[5] = 5; + dst[2] = TEXT_COLOR_RED; + dst[5] = TEXT_COLOR_LIGHT_RED; } dst[i] = EOS; @@ -529,7 +521,7 @@ static u8 FrameType_ProcessInput(u8 selection) selection = 0; LoadBgTiles(1, GetWindowFrameTilesPal(selection)->tiles, 0x120, 0x1A2); - LoadPalette(GetWindowFrameTilesPal(selection)->pal, 0x70, 0x20); + LoadPalette(GetWindowFrameTilesPal(selection)->pal, BG_PLTT_ID(7), PLTT_SIZE_4BPP); sArrowPressed = TRUE; } if (JOY_NEW(DPAD_LEFT)) @@ -540,7 +532,7 @@ static u8 FrameType_ProcessInput(u8 selection) selection = WINDOW_FRAMES_COUNT - 1; LoadBgTiles(1, GetWindowFrameTilesPal(selection)->tiles, 0x120, 0x1A2); - LoadPalette(GetWindowFrameTilesPal(selection)->pal, 0x70, 0x20); + LoadPalette(GetWindowFrameTilesPal(selection)->pal, BG_PLTT_ID(7), PLTT_SIZE_4BPP); sArrowPressed = TRUE; } return selection; @@ -567,7 +559,7 @@ static void FrameType_DrawChoices(u8 selection) { text[i] = n % 10 + CHAR_0; i++; - text[i] = 0x77; + text[i] = CHAR_SPACER; i++; } @@ -623,11 +615,11 @@ static void ButtonMode_DrawChoices(u8 selection) DrawOptionMenuChoice(gText_ButtonTypeLEqualsA, GetStringRightAlignXOffset(FONT_NORMAL, gText_ButtonTypeLEqualsA, 198), YPOS_BUTTONMODE, styles[2]); } -static void DrawTextOption(void) +static void DrawHeaderText(void) { - FillWindowPixelBuffer(WIN_TEXT_OPTION, PIXEL_FILL(1)); - AddTextPrinterParameterized(WIN_TEXT_OPTION, FONT_NORMAL, gText_Option, 8, 1, TEXT_SKIP_DRAW, NULL); - CopyWindowToVram(WIN_TEXT_OPTION, COPYWIN_FULL); + FillWindowPixelBuffer(WIN_HEADER, PIXEL_FILL(1)); + AddTextPrinterParameterized(WIN_HEADER, FONT_NORMAL, gText_Option, 8, 1, TEXT_SKIP_DRAW, NULL); + CopyWindowToVram(WIN_HEADER, COPYWIN_FULL); } static void DrawOptionMenuTexts(void) diff --git a/src/party_menu.c b/src/party_menu.c index e00ae14a4..7be838d62 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -741,8 +741,8 @@ static bool8 AllocPartyMenuBgGfx(void) } break; case 2: - LoadCompressedPalette(gPartyMenuBg_Pal, 0, 0x160); - CpuCopy16(gPlttBufferUnfaded, sPartyMenuInternal->palBuffer, 0x160); + LoadCompressedPalette(gPartyMenuBg_Pal, BG_PLTT_ID(0), 11 * PLTT_SIZE_4BPP); + CpuCopy16(gPlttBufferUnfaded, sPartyMenuInternal->palBuffer, 11 * PLTT_SIZE_4BPP); sPartyMenuInternal->data[0]++; break; case 3: @@ -2061,9 +2061,9 @@ static void InitPartyMenuWindows(u8 layout) DeactivateAllTextPrinters(); for (i = 0; i < PARTY_SIZE; i++) FillWindowPixelBuffer(i, PIXEL_FILL(0)); - LoadUserWindowBorderGfx(0, 0x4F, 0xD0); - LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20); - LoadPalette(gStandardMenuPalette, 0xF0, 0x20); + LoadUserWindowBorderGfx(0, 0x4F, BG_PLTT_ID(13)); + LoadPalette(GetOverworldTextboxPalettePtr(), BG_PLTT_ID(14), PLTT_SIZE_4BPP); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); } static void CreateCancelConfirmWindows(bool8 chooseHalf) @@ -2165,9 +2165,9 @@ static void DrawEmptySlot(u8 windowId) #define LOAD_PARTY_BOX_PAL(paletteIds, paletteOffsets) \ { \ - LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[0]), paletteOffsets[0] + palNum, 2); \ - LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[1]), paletteOffsets[1] + palNum, 2); \ - LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[2]), paletteOffsets[2] + palNum, 2); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[0]), paletteOffsets[0] + palNum, PLTT_SIZEOF(1)); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[1]), paletteOffsets[1] + palNum, PLTT_SIZEOF(1)); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[2]), paletteOffsets[2] + palNum, PLTT_SIZEOF(1)); \ } static void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags) @@ -2309,13 +2309,13 @@ static void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, stru switch (gender) { case MON_MALE: - LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[0]), sGenderPalOffsets[0] + palNum, 2); - LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[1]), sGenderPalOffsets[1] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[0]), sGenderPalOffsets[0] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[1]), sGenderPalOffsets[1] + palNum, PLTT_SIZEOF(1)); DisplayPartyPokemonBarDetail(menuBox->windowId, gText_MaleSymbol, 2, &menuBox->infoRects->dimensions[8]); break; case MON_FEMALE: - LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[0]), sGenderPalOffsets[0] + palNum, 2); - LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[1]), sGenderPalOffsets[1] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[0]), sGenderPalOffsets[0] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[1]), sGenderPalOffsets[1] + palNum, PLTT_SIZEOF(1)); DisplayPartyPokemonBarDetail(menuBox->windowId, gText_FemaleSymbol, 2, &menuBox->infoRects->dimensions[8]); break; } @@ -2395,16 +2395,16 @@ static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *men { case HP_BAR_GREEN: case HP_BAR_FULL: - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[0]), sHPBarPalOffsets[0] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[1]), sHPBarPalOffsets[1] + palNum, PLTT_SIZEOF(1)); break; case HP_BAR_YELLOW: - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[0]), sHPBarPalOffsets[0] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[1]), sHPBarPalOffsets[1] + palNum, PLTT_SIZEOF(1)); break; default: - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); - LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[0]), sHPBarPalOffsets[0] + palNum, PLTT_SIZEOF(1)); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[1]), sHPBarPalOffsets[1] + palNum, PLTT_SIZEOF(1)); break; } @@ -2482,7 +2482,7 @@ void DisplayPartyMenuStdMessage(u32 stringId) else if (!ShouldUseChooseMonText()) stringId = PARTY_MSG_CHOOSE_MON_OR_CANCEL; } - DrawStdFrameWithCustomTileAndPalette(*windowPtr, FALSE, 0x4F, 0xD); + DrawStdFrameWithCustomTileAndPalette(*windowPtr, FALSE, 0x4F, 13); StringExpandPlaceholders(gStringVar4, sActionStringTable[stringId]); AddTextPrinterParameterized(*windowPtr, FONT_NORMAL, gStringVar4, 0, 1, 0, 0); ScheduleBgCopyTilemapToVram(2); diff --git a/src/pokeblock.c b/src/pokeblock.c index 481f84c4a..3f0b3b5c5 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -653,7 +653,7 @@ static bool8 LoadPokeblockMenuGfx(void) } break; case 2: - LoadCompressedPalette(gMenuPokeblock_Pal, 0, 0xC0); + LoadCompressedPalette(gMenuPokeblock_Pal, BG_PLTT_ID(0), 6 * PLTT_SIZE_4BPP); sPokeblockMenu->gfxState++; break; case 3: @@ -679,9 +679,9 @@ static void HandleInitWindows(void) InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 1, 0xE0); - LoadMessageBoxGfx(0, 0xA, 0xD0); - LoadPalette(gStandardMenuPalette, 0xF0, 0x20); + LoadUserWindowBorderGfx(0, 1, BG_PLTT_ID(14)); + LoadMessageBoxGfx(0, 0xA, BG_PLTT_ID(13)); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); for (i = 0; i < ARRAY_COUNT(sWindowTemplates) - 1; i++) FillWindowPixelBuffer(i, PIXEL_FILL(0)); diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 46355e146..9a7ce414d 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -771,7 +771,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) } break; case 8: - LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60); + LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); sPokeblockFeed->loadGfxState = 0; return TRUE; } @@ -783,8 +783,8 @@ static void HandleInitWindows(void) { InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 1, 0xE0); - LoadPalette(gStandardMenuPalette, 0xF0, 0x20); + LoadUserWindowBorderGfx(0, 1, BG_PLTT_ID(14)); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); ScheduleBgCopyTilemapToVram(0); diff --git a/src/pokedex.c b/src/pokedex.c index ef71d3129..2388626ff 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -2145,12 +2145,12 @@ static bool8 LoadPokedexListPage(u8 page) static void LoadPokedexBgPalette(bool8 isSearchResults) { if (isSearchResults == TRUE) - LoadPalette(gPokedexSearchResults_Pal + 1, 1, 0xBE); + LoadPalette(gPokedexSearchResults_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else if (!IsNationalPokedexEnabled()) - LoadPalette(gPokedexBgHoenn_Pal + 1, 1, 0xBE); + LoadPalette(gPokedexBgHoenn_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else - LoadPalette(gPokedexBgNational_Pal + 1, 1, 0xBE); - LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); + LoadPalette(gPokedexBgNational_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(GetOverworldTextboxPalettePtr(), BG_PLTT_ID(15), PLTT_SIZE_4BPP); } static void FreeWindowAndBgBuffers(void) @@ -3264,7 +3264,7 @@ static void Task_LoadInfoScreen(u8 taskId) case 4: PrintMonInfo(sPokedexListItem->dexNum, sPokedexView->dexMode == DEX_MODE_HOENN ? FALSE : TRUE, sPokedexListItem->owned, 0); if (!sPokedexListItem->owned) - LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); + LoadPalette(gPlttBufferUnfaded + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(16 - 1)); CopyWindowToVram(WIN_INFO, COPYWIN_FULL); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); @@ -3713,7 +3713,7 @@ static void LoadPlayArrowPalette(bool8 cryPlaying) color = RGB(18, 28, 0); else color = RGB(15, 21, 0); - LoadPalette(&color, 0x5D, 2); + LoadPalette(&color, BG_PLTT_ID(5) + 13, PLTT_SIZEOF(1)); } static void Task_LoadSizeScreen(u8 taskId) @@ -3768,7 +3768,7 @@ static void Task_LoadSizeScreen(u8 taskId) gSprites[spriteId].oam.priority = 0; gSprites[spriteId].y2 = gPokedexEntries[sPokedexListItem->dexNum].trainerOffset; SetOamMatrix(1, gPokedexEntries[sPokedexListItem->dexNum].trainerScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].trainerScale); - LoadPalette(sSizeScreenSilhouette_Pal, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + LoadPalette(sSizeScreenSilhouette_Pal, OBJ_PLTT_ID2(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); gTasks[taskId].tTrainerSpriteId = spriteId; gMain.state++; break; @@ -3779,7 +3779,7 @@ static void Task_LoadSizeScreen(u8 taskId) gSprites[spriteId].oam.priority = 0; gSprites[spriteId].y2 = gPokedexEntries[sPokedexListItem->dexNum].pokemonOffset; SetOamMatrix(2, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale); - LoadPalette(sSizeScreenSilhouette_Pal, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + LoadPalette(sSizeScreenSilhouette_Pal, OBJ_PLTT_ID2(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); gTasks[taskId].tMonSpriteId = spriteId; CopyWindowToVram(WIN_INFO, COPYWIN_FULL); CopyBgTilemapBufferToVram(1); @@ -4030,11 +4030,11 @@ static void Task_HandleCaughtMonPageInput(u8 taskId) // Flicker caught screen color else if (++gTasks[taskId].tPalTimer & 16) { - LoadPalette(gPokedexBgHoenn_Pal + 1, 0x31, 14); + LoadPalette(gPokedexBgHoenn_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); } else { - LoadPalette(gPokedexCaughtScreen_Pal + 1, 0x31, 14); + LoadPalette(gPokedexCaughtScreen_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); } } @@ -4063,7 +4063,7 @@ static void Task_ExitCaughtMonPage(u8 taskId) personality = ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo; paletteNum = gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum; lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality); - LoadCompressedPalette(lzPaletteData, 0x100 | paletteNum * 16, 32); + LoadCompressedPalette(lzPaletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); DestroyTask(taskId); } } @@ -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] = gSpeciesInfo[species].type1; - types[1] = gSpeciesInfo[species].type2; + types[0] = gSpeciesInfo[species].types[0]; + types[1] = gSpeciesInfo[species].types[1]; 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] = gSpeciesInfo[species].type1; - types[1] = gSpeciesInfo[species].type2; + types[0] = gSpeciesInfo[species].types[0]; + types[1] = gSpeciesInfo[species].types[1]; if ((types[0] == type1 && types[1] == type2) || (types[0] == type2 && types[1] == type1)) { sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; @@ -4795,7 +4795,7 @@ static void Task_LoadSearchMenu(u8 taskId) CopyToBgTilemapBuffer(3, gPokedexSearchMenuHoenn_Tilemap, 0, 0); else CopyToBgTilemapBuffer(3, gPokedexSearchMenuNational_Tilemap, 0, 0); - LoadPalette(gPokedexSearchMenu_Pal + 1, 1, 0x7E); + LoadPalette(gPokedexSearchMenu_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); gMain.state = 1; } break; diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c index 406d1377d..2c352c67a 100644 --- a/src/pokedex_cry_screen.c +++ b/src/pokedex_cry_screen.c @@ -27,6 +27,8 @@ #define WAVEFORM_WINDOW_HEIGHT 56 +#define TAG_NEEDLE 0x2000 + struct PokedexCryMeterNeedle { s8 rotation; s8 targetRotation; @@ -202,8 +204,8 @@ static const struct OamData sOamData_CryMeterNeedle = static const struct SpriteTemplate sCryMeterNeedleSpriteTemplate = { - .tileTag = 0x2000, - .paletteTag = 0x2000, + .tileTag = TAG_NEEDLE, + .paletteTag = TAG_NEEDLE, .oam = &sOamData_CryMeterNeedle, .anims = sSpriteAnimTable_CryMeterNeedle, .images = NULL, @@ -213,13 +215,13 @@ static const struct SpriteTemplate sCryMeterNeedleSpriteTemplate = static const struct SpriteSheet sCryMeterNeedleSpriteSheets[] = { - {sCryMeterNeedle_Gfx, 0x800, 0x2000}, + {sCryMeterNeedle_Gfx, sizeof(sCryMeterNeedle_Gfx), TAG_NEEDLE}, {} }; static const struct SpritePalette sCryMeterNeedleSpritePalettes[] = { - {sCryMeterNeedle_Pal, 0x2000}, + {sCryMeterNeedle_Pal, TAG_NEEDLE}, {} }; @@ -258,7 +260,7 @@ bool8 LoadCryWaveformWindow(struct CryScreenWindow *window, u8 windowId) break; case 2: DrawWaveformWindow(windowId); - LoadPalette(sCryScreenBg_Pal, window->paletteNo * 16, 32); + LoadPalette(sCryScreenBg_Pal, BG_PLTT_ID(window->paletteNo), PLTT_SIZE_4BPP); finished = TRUE; break; } @@ -458,7 +460,7 @@ bool8 LoadCryMeter(struct CryScreenWindow *window, u8 windowId) sCryMeterNeedle = AllocZeroed(sizeof(*sCryMeterNeedle)); CopyToWindowPixelBuffer(windowId, sCryMeter_Gfx, 0, 0); - LoadPalette(sCryMeter_Pal, window->paletteNo * 16, 32); + LoadPalette(sCryMeter_Pal, BG_PLTT_ID(window->paletteNo), PLTT_SIZE_4BPP); gDexCryScreenState++; break; case 1: diff --git a/src/pokemon.c b/src/pokemon.c index 9cc2c7407..71dcb5bcb 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5645,8 +5645,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 = gSpeciesInfo[dst->species].type1; - dst->type2 = gSpeciesInfo[dst->species].type2; + dst->type1 = gSpeciesInfo[dst->species].types[0]; + dst->type2 = gSpeciesInfo[dst->species].types[1]; dst->type3 = TYPE_MYSTERY; dst->ability = GetAbilityBySpecies(dst->species, dst->abilityNum); GetMonData(src, MON_DATA_NICKNAME, nickname); @@ -6699,8 +6699,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 (gSpeciesInfo[currSpecies].type1 == TYPE_DARK - || gSpeciesInfo[currSpecies].type2 == TYPE_DARK) + if (gSpeciesInfo[currSpecies].types[0] == TYPE_DARK + || gSpeciesInfo[currSpecies].types[1] == TYPE_DARK) { targetSpecies = gEvolutionTable[species][i].targetSpecies; break; @@ -8681,3 +8681,32 @@ u32 GetMonFriendshipScore(struct Pokemon *pokemon) return FRIENDSHIP_NONE; } + +void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality) +{ + struct PokemonSubstruct0 *old0, *new0; + struct PokemonSubstruct1 *old1, *new1; + struct PokemonSubstruct2 *old2, *new2; + struct PokemonSubstruct3 *old3, *new3; + struct BoxPokemon old; + + old = *boxMon; + old0 = &(GetSubstruct(&old, old.personality, 0)->type0); + old1 = &(GetSubstruct(&old, old.personality, 1)->type1); + old2 = &(GetSubstruct(&old, old.personality, 2)->type2); + old3 = &(GetSubstruct(&old, old.personality, 3)->type3); + + new0 = &(GetSubstruct(boxMon, personality, 0)->type0); + new1 = &(GetSubstruct(boxMon, personality, 1)->type1); + new2 = &(GetSubstruct(boxMon, personality, 2)->type2); + new3 = &(GetSubstruct(boxMon, personality, 3)->type3); + + DecryptBoxMon(&old); + boxMon->personality = personality; + *new0 = *old0; + *new1 = *old1; + *new2 = *old2; + *new3 = *old3; + boxMon->checksum = CalculateBoxMonChecksum(boxMon); + EncryptBoxMon(boxMon); +} diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 936ef037d..c7518ba23 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "palette.h" #include "pokemon.h" #include "pokemon_animation.h" #include "sprite.h" @@ -907,11 +908,11 @@ u8 GetSpeciesBackAnimSet(u16 species) // as 0xFFFFXXXX instead of the desired 0x02YYXXXX. // By dumb luck, this is not an issue in vanilla. However, // changing the link order revealed this bug. -#if MODERN +#if MODERN || defined(BUGFIX) #define ANIM_SPRITE(taskId) ((struct Sprite *)((gTasks[taskId].tPtrHi << 16) | ((u16)gTasks[taskId].tPtrLo))) #else #define ANIM_SPRITE(taskId) ((struct Sprite *)((gTasks[taskId].tPtrHi << 16) | (gTasks[taskId].tPtrLo))) -#endif //MODERN +#endif //MODERN || BUGFIX static void Task_HandleMonAnimation(u8 taskId) { @@ -1544,7 +1545,7 @@ static void Anim_CircleCounterclockwise(struct Sprite *sprite) #define GlowColor(color, colorIncrement, speed) \ { \ if (sprite->data[2] == 0) \ - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; \ + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); \ \ if (sprite->data[2] > 128) \ { \ @@ -2479,7 +2480,7 @@ static void Anim_FlashYellow(struct Sprite *sprite) { if (++sprite->data[2] == 1) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[6] = 0; sprite->data[5] = 0; sprite->data[4] = 0; @@ -5268,7 +5269,7 @@ static void Anim_ShakeFlashYellow_Fast(struct Sprite *sprite) { if (++sprite->data[2] == 1) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[6] = 0; sprite->data[5] = 0; sprite->data[4] = 0; @@ -5282,7 +5283,7 @@ static void Anim_ShakeFlashYellow(struct Sprite *sprite) { if (++sprite->data[2] == 1) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[6] = 0; sprite->data[5] = 0; sprite->data[4] = 0; @@ -5296,7 +5297,7 @@ static void Anim_ShakeFlashYellow_Slow(struct Sprite *sprite) { if (++sprite->data[2] == 1) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[6] = 0; sprite->data[5] = 0; sprite->data[4] = 0; @@ -5366,7 +5367,7 @@ static void Anim_ShakeGlowRed_Fast(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 10; sprite->data[5] = 0; sprite->data[4] = 2; @@ -5387,7 +5388,7 @@ static void Anim_ShakeGlowRed(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 20; sprite->data[5] = 0; sprite->data[4] = 1; @@ -5408,7 +5409,7 @@ static void Anim_ShakeGlowRed_Slow(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 80; sprite->data[5] = 0; sprite->data[4] = 1; @@ -5429,7 +5430,7 @@ static void Anim_ShakeGlowGreen_Fast(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 10; sprite->data[5] = 0; sprite->data[4] = 2; @@ -5450,7 +5451,7 @@ static void Anim_ShakeGlowGreen(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 20; sprite->data[5] = 0; sprite->data[4] = 1; @@ -5471,7 +5472,7 @@ static void Anim_ShakeGlowGreen_Slow(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 80; sprite->data[5] = 0; sprite->data[4] = 1; @@ -5492,7 +5493,7 @@ static void Anim_ShakeGlowBlue_Fast(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 10; sprite->data[5] = 0; sprite->data[4] = 2; @@ -5513,7 +5514,7 @@ static void Anim_ShakeGlowBlue(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 20; sprite->data[5] = 0; sprite->data[4] = 1; @@ -5534,7 +5535,7 @@ static void Anim_ShakeGlowBlue_Slow(struct Sprite *sprite) { if (sprite->data[2] == 0) { - sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; + sprite->data[7] = OBJ_PLTT_ID(sprite->oam.paletteNum); sprite->data[0] = 80; sprite->data[5] = 0; sprite->data[4] = 1; diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index c9dae5343..0758ea37d 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -1309,9 +1309,14 @@ const u8 *const gMonIconTableFemale[] = [SPECIES_KRICKETUNE] = gMonIcon_Kricketune, [SPECIES_SHINX] = gMonIcon_Shinx, [SPECIES_COMBEE] = gMonIcon_Combee, +#if P_HIPPO_GENDER_DIFF_ICONS == TRUE + [SPECIES_HIPPOPOTAS] = gMonIcon_HippopotasF, + [SPECIES_HIPPOWDON] = gMonIcon_HippowdonF, +#else [SPECIES_HIPPOPOTAS] = gMonIcon_Hippopotas, [SPECIES_HIPPOWDON] = gMonIcon_Hippowdon, #endif +#endif #if P_GEN_5_POKEMON == TRUE [SPECIES_UNFEZANT] = gMonIcon_UnfezantF, [SPECIES_FRILLISH] = gMonIcon_FrillishF, @@ -2865,12 +2870,12 @@ void TryLoadAllMonIconPalettesAtOffset(u16 offset) s32 i; const struct SpritePalette* monIconPalettePtr; - if (offset <= 0xA0) + if (offset <= BG_PLTT_ID(10)) { monIconPalettePtr = gMonIconPaletteTable; - for(i = ARRAY_COUNT(gMonIconPaletteTable) - 1; i >= 0; i--) + for (i = ARRAY_COUNT(gMonIconPaletteTable) - 1; i >= 0; i--) { - LoadPalette(monIconPalettePtr->data, offset, 0x20); + LoadPalette(monIconPalettePtr->data, offset, PLTT_SIZE_4BPP); offset += 0x10; monIconPalettePtr++; } diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index ccd3125e4..f7438f139 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -3364,21 +3364,21 @@ static void LoadPokeJumpGfx(void) ResetTempTileDataBuffers(); LoadSpriteSheetsAndPalettes(sPokemonJumpGfx); InitDigitPrinters(); - LoadPalette(sBg_Pal, 0, 0x20); + LoadPalette(sBg_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); DecompressAndCopyTileDataToVram(BG_SCENERY, sBg_Gfx, 0, 0, 0); DecompressAndCopyTileDataToVram(BG_SCENERY, sBg_Tilemap, 0, 0, 1); - LoadPalette(sVenusaur_Pal, 0x30, 0x20); + LoadPalette(sVenusaur_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); DecompressAndCopyTileDataToVram(BG_VENUSAUR, sVenusaur_Gfx, 0, 0, 0); DecompressAndCopyTileDataToVram(BG_VENUSAUR, sVenusaur_Tilemap, 0, 0, 1); - LoadPalette(sBonuses_Pal, 0x10, 0x20); + LoadPalette(sBonuses_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); DecompressAndCopyTileDataToVram(BG_BONUSES, sBonuses_Gfx, 0, 0, 0); DecompressAndCopyTileDataToVram(BG_BONUSES, sBonuses_Tilemap, 0, 0, 1); - LoadPalette(sInterface_Pal, 0x20, 0x20); + LoadPalette(sInterface_Pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); SetBgTilemapBuffer(BG_INTERFACE, sPokemonJumpGfx->tilemapBuffer); FillBgTilemapBufferRect_Palette0(BG_INTERFACE, 0, 0, 0, 0x20, 0x20); PrintScoreSuffixes(); PrintScore(0); - LoadUserWindowBorderGfxOnBg(0, 1, 0xE0); + LoadUserWindowBorderGfxOnBg(0, 1, BG_PLTT_ID(14)); CopyBgTilemapBufferToVram(BG_INTERFACE); CopyBgTilemapBufferToVram(BG_VENUSAUR); CopyBgTilemapBufferToVram(BG_BONUSES); @@ -3782,7 +3782,7 @@ static u32 AddMessageWindow(u32 left, u32 top, u32 width, u32 height) window.tilemapTop = top; window.width = width; window.height = height; - window.paletteNum = 0xF; + window.paletteNum = 15; window.baseBlock = 0x43; windowId = AddWindow(&window); @@ -4394,8 +4394,8 @@ static void PrintRecordsText(u16 windowId, int width) recordNums[1] = records->bestJumpScore; recordNums[2] = records->excellentsInRow; - LoadUserWindowBorderGfx_(windowId, 0x21D, 0xD0); - DrawTextBorderOuter(windowId, 0x21D, 0xD); + LoadUserWindowBorderGfx_(windowId, 0x21D, BG_PLTT_ID(13)); + DrawTextBorderOuter(windowId, 0x21D, 13); FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_PkmnJumpRecords, GetStringCenterAlignXOffset(FONT_NORMAL, gText_PkmnJumpRecords, width * 8), 1, TEXT_SKIP_DRAW, NULL); for (i = 0; i < ARRAY_COUNT(sRecordsTexts); i++) diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 1146d0789..d83533d59 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -257,7 +257,7 @@ enum { // The maximum number of Pokémon icons that can appear on-screen. // By default the limit is 40 (though in practice only 37 can be). -#define MAX_MON_ICONS (IN_BOX_COUNT + PARTY_SIZE + 1 >= 40 ? IN_BOX_COUNT + PARTY_SIZE + 1 : 40) +#define MAX_MON_ICONS max(IN_BOX_COUNT + PARTY_SIZE + 1, 40) // The maximum number of item icons that can appear on-screen while // moving held items. 1 in the cursor, and 2 more while switching @@ -950,26 +950,26 @@ static const union AffineAnimCmd *const sAffineAnims_ChooseBoxMenu[] = static const u8 sChooseBoxMenu_TextColors[] = {TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5}; static const u8 sText_OutOf30[] = _("/30"); -static const u16 sChooseBoxMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal"); -static const u8 sChooseBoxMenuCenter_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp"); -static const u8 sChooseBoxMenuSides_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); -static const u32 sScrollingBg_Gfx[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz"); -static const u32 sScrollingBg_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz"); -static const u16 sDisplayMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/display_menu.gbapal"); // Unused -static const u32 sDisplayMenu_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/display_menu.bin.lz"); -static const u16 sPkmnData_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/pkmn_data.bin"); +static const u16 sChooseBoxMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal"); +static const u8 sChooseBoxMenuCenter_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp"); +static const u8 sChooseBoxMenuSides_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); +static const u32 sScrollingBg_Gfx[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz"); +static const u32 sScrollingBg_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz"); +static const u16 sDisplayMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/display_menu.gbapal"); // Unused +static const u32 sDisplayMenu_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/display_menu.bin.lz"); +static const u16 sPkmnData_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/pkmn_data.bin"); // sInterface_Pal - parts of the display frame, "PkmnData"'s normal color, Close Box -static const u16 sInterface_Pal[] = INCBIN_U16("graphics/pokemon_storage/interface.gbapal"); -static const u16 sPkmnDataGray_Pal[] = INCBIN_U16("graphics/pokemon_storage/pkmn_data_gray.gbapal"); -static const u16 sBg_Pal[] = INCBIN_U16("graphics/pokemon_storage/bg.gbapal"); -static const u16 sBgMoveItems_Pal[] = INCBIN_U16("graphics/pokemon_storage/bg_move_items.gbapal"); -static const u16 sCloseBoxButton_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/close_box_button.bin"); -static const u16 sPartySlotFilled_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/party_slot_filled.bin"); -static const u16 sPartySlotEmpty_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/party_slot_empty.bin"); -static const u16 sWaveform_Pal[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal"); -static const u32 sWaveform_Gfx[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp"); -static const u16 sUnused_Pal[] = INCBIN_U16("graphics/pokemon_storage/unused.gbapal"); -static const u16 sTextWindows_Pal[] = INCBIN_U16("graphics/pokemon_storage/text_windows.gbapal"); +static const u16 sInterface_Pal[] = INCBIN_U16("graphics/pokemon_storage/interface.gbapal"); +static const u16 sPkmnDataGray_Pal[] = INCBIN_U16("graphics/pokemon_storage/pkmn_data_gray.gbapal"); +static const u16 sScrollingBg_Pal[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.gbapal"); +static const u16 sScrollingBgMoveItems_Pal[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg_move_items.gbapal"); +static const u16 sCloseBoxButton_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/close_box_button.bin"); +static const u16 sPartySlotFilled_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/party_slot_filled.bin"); +static const u16 sPartySlotEmpty_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/party_slot_empty.bin"); +static const u16 sWaveform_Pal[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal"); +static const u32 sWaveform_Gfx[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp"); +static const u16 sUnused_Pal[] = INCBIN_U16("graphics/pokemon_storage/unused.gbapal"); +static const u16 sTextWindows_Pal[] = INCBIN_U16("graphics/pokemon_storage/text_windows.gbapal"); static const struct WindowTemplate sWindowTemplates[] = { @@ -1245,7 +1245,7 @@ static const union AffineAnimCmd *const sAffineAnims_ReleaseMon[] = static const u16 sUnusedColor = RGB(26, 29, 8); -static const struct SpriteSheet sSpriteSheet_Arrow = {sArrow_Gfx, 0x80, GFXTAG_ARROW}; +static const struct SpriteSheet sSpriteSheet_Arrow = {sArrow_Gfx, sizeof(sArrow_Gfx), GFXTAG_ARROW}; static const struct OamData sOamData_BoxTitle = { @@ -1768,6 +1768,8 @@ void ResetPokemonStorageSystem(void) static void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *menu, u16 tileTag, u16 palTag, u8 subpriority, bool32 loadPal) { + // Because loadPal is always false, the below palette is never used. + // The Choose Box menu instead uses the palette indicated by palTag, which is always PALTAG_MISC_1 (sHandCursor_Pal) struct SpritePalette palette = { sChooseBoxMenu_Pal, palTag @@ -2132,7 +2134,7 @@ static void Task_InitPokeStorage(u8 taskId) PutWindowTilemap(WIN_DISPLAY_INFO); ClearWindowTilemap(WIN_MESSAGE); CpuFill32(0, (void *)VRAM, 0x200); - LoadUserWindowBorderGfx(WIN_MESSAGE, 0xB, 0xE0); + LoadUserWindowBorderGfx(WIN_MESSAGE, 0xB, BG_PLTT_ID(14)); break; case 3: ResetAllBgCoords(); @@ -3862,13 +3864,13 @@ static void LoadWaveformSpritePalette(void) static void InitPalettesAndSprites(void) { - LoadPalette(sInterface_Pal, 0, sizeof(sInterface_Pal)); - LoadPalette(sPkmnDataGray_Pal, 0x20, sizeof(sPkmnDataGray_Pal)); - LoadPalette(sTextWindows_Pal, 0xF0, sizeof(sTextWindows_Pal)); + LoadPalette(sInterface_Pal, BG_PLTT_ID(0), sizeof(sInterface_Pal)); + LoadPalette(sPkmnDataGray_Pal, BG_PLTT_ID(2), sizeof(sPkmnDataGray_Pal)); + LoadPalette(sTextWindows_Pal, BG_PLTT_ID(15), sizeof(sTextWindows_Pal)); if (sStorage->boxOption != OPTION_MOVE_ITEMS) - LoadPalette(sBg_Pal, 0x30, sizeof(sBg_Pal)); + LoadPalette(sScrollingBg_Pal, BG_PLTT_ID(3), sizeof(sScrollingBg_Pal)); else - LoadPalette(sBgMoveItems_Pal, 0x30, sizeof(sBgMoveItems_Pal)); + LoadPalette(sScrollingBgMoveItems_Pal, BG_PLTT_ID(3), sizeof(sScrollingBgMoveItems_Pal)); SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(30)); CreateDisplayMonSprite(); @@ -3971,7 +3973,7 @@ static void CreateDisplayMonSprite(void) break; sStorage->displayMonSprite = &gSprites[spriteId]; - sStorage->displayMonPalOffset = palSlot * 16 + 0x100; + sStorage->displayMonPalOffset = OBJ_PLTT_ID(palSlot); sStorage->displayMonTilePtr = (void *) OBJ_VRAM0 + tileStart * TILE_SIZE_4BPP; } while (0); @@ -3992,7 +3994,7 @@ static void LoadDisplayMonGfx(u16 species, u32 pid) LoadSpecialPokePic(sStorage->tileBuffer, species, pid, TRUE); LZ77UnCompWram(sStorage->displayMonPalette, sStorage->displayMonPalBuffer); CpuCopy32(sStorage->tileBuffer, sStorage->displayMonTilePtr, MON_PIC_SIZE); - LoadPalette(sStorage->displayMonPalBuffer, sStorage->displayMonPalOffset, 0x20); + LoadPalette(sStorage->displayMonPalBuffer, sStorage->displayMonPalOffset, PLTT_SIZE_4BPP); sStorage->displayMonSprite->invisible = FALSE; } else @@ -4058,7 +4060,7 @@ static void UpdateWaveformAnimation(void) static void InitSupplementalTilemaps(void) { LZ77UnCompWram(gStorageSystemPartyMenu_Tilemap, sStorage->partyMenuTilemapBuffer); - LoadPalette(gStorageSystemPartyMenu_Pal, 0x10, 0x20); + LoadPalette(gStorageSystemPartyMenu_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); TilemapUtil_SetMap(TILEMAPID_PARTY_MENU, 1, sStorage->partyMenuTilemapBuffer, 12, 22); TilemapUtil_SetMap(TILEMAPID_CLOSE_BUTTON, 1, sCloseBoxButton_Tilemap, 9, 4); TilemapUtil_SetPos(TILEMAPID_PARTY_MENU, 10, 0); @@ -4280,7 +4282,7 @@ static void UpdateBoxToSendMons(void) static void InitPokeStorageBg0(void) { SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(29)); - LoadUserWindowBorderGfx(WIN_MESSAGE, 2, 208); + LoadUserWindowBorderGfx(WIN_MESSAGE, 2, BG_PLTT_ID(13)); FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17); CopyBgTilemapBufferToVram(0); } @@ -5416,9 +5418,9 @@ static void LoadWallpaperGfx(u8 boxId, s8 direction) DrawWallpaper(sStorage->wallpaperTilemap, sStorage->wallpaperLoadDir, sStorage->wallpaperOffset); if (sStorage->wallpaperLoadDir != 0) - LoadPalette(wallpaper->palettes, (sStorage->wallpaperOffset * 32) + 0x40, 0x40); + LoadPalette(wallpaper->palettes, BG_PLTT_ID(4) + BG_PLTT_ID(sStorage->wallpaperOffset * 2), 2 * PLTT_SIZE_4BPP); else - CpuCopy16(wallpaper->palettes, &gPlttBufferUnfaded[(sStorage->wallpaperOffset * 32) + 0x40], 0x40); + CpuCopy16(wallpaper->palettes, &gPlttBufferUnfaded[BG_PLTT_ID(4) + BG_PLTT_ID(sStorage->wallpaperOffset * 2)], 2 * PLTT_SIZE_4BPP); sStorage->wallpaperTiles = malloc_and_decompress(wallpaper->tiles, &tilesSize); LoadBgTiles(2, sStorage->wallpaperTiles, tilesSize, sStorage->wallpaperOffset << 8); @@ -5434,9 +5436,9 @@ static void LoadWallpaperGfx(u8 boxId, s8 direction) CpuCopy16(GetWaldaWallpaperColorsPtr(), &sStorage->wallpaperTilemap[17], 4); if (sStorage->wallpaperLoadDir != 0) - LoadPalette(sStorage->wallpaperTilemap, (sStorage->wallpaperOffset * 32) + 0x40, 0x40); + LoadPalette(sStorage->wallpaperTilemap, BG_PLTT_ID(4) + BG_PLTT_ID(sStorage->wallpaperOffset * 2), 2 * PLTT_SIZE_4BPP); else - CpuCopy16(sStorage->wallpaperTilemap, &gPlttBufferUnfaded[(sStorage->wallpaperOffset * 32) + 0x40], 0x40); + CpuCopy16(sStorage->wallpaperTilemap, &gPlttBufferUnfaded[BG_PLTT_ID(4) + BG_PLTT_ID(sStorage->wallpaperOffset * 2)], 2 * PLTT_SIZE_4BPP); sStorage->wallpaperTiles = malloc_and_decompress(wallpaper->tiles, &tilesSize); iconGfx = malloc_and_decompress(sWaldaWallpaperIcons[GetWaldaWallpaperIconId()], &iconSize); @@ -5473,7 +5475,7 @@ static void DrawWallpaper(const void *tilemap, s8 direction, u8 offset) else x -= 4; - FillBgTilemapBufferRect(2, 0, x, 2, 4, 0x12, 0x11); + FillBgTilemapBufferRect(2, 0, x, 2, 4, 0x12, 17); } static void TrimOldWallpaper(void *tilemap) @@ -5524,7 +5526,7 @@ static void InitBoxTitle(u8 boxId) sStorage->wallpaperPalBits = 0x3f0; tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE); - sStorage->boxTitlePalOffset = 0x10e + 16 * tagIndex; + sStorage->boxTitlePalOffset = OBJ_PLTT_ID(tagIndex) + 14; sStorage->wallpaperPalBits |= 0x10000 << tagIndex; // The below seems intended to have separately tracked @@ -5532,7 +5534,7 @@ static void InitBoxTitle(u8 boxId) // share a palette tag, all colors (and fields in some cases) // this is redundant along with the use of boxTitleAltPalOffset tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE); - sStorage->boxTitleAltPalOffset = 0x10e + 16 * tagIndex; + sStorage->boxTitleAltPalOffset = OBJ_PLTT_ID(tagIndex) + 14; sStorage->wallpaperPalBits |= 0x10000 << tagIndex; StringCopyPadded(sStorage->boxTitleText, GetBoxNamePtr(boxId), 0, BOX_NAME_LENGTH); @@ -8210,7 +8212,7 @@ static bool8 MultiMove_Start(void) { case 0: HideBg(0); - TryLoadAllMonIconPalettesAtOffset(0x80); + TryLoadAllMonIconPalettesAtOffset(BG_PLTT_ID(8)); sMultiMove->state++; break; case 1: @@ -8259,7 +8261,7 @@ static bool8 MultiMove_Cancel(void) if (!IsDma3ManagerBusyWithBgCopy()) { SetCursorPriorityTo1(); - LoadPalette(GetTextWindowPalette(3), 0xD0, 0x20); + LoadPalette(GetTextWindowPalette(3), BG_PLTT_ID(13), PLTT_SIZE_4BPP); ShowBg(0); return FALSE; } @@ -8365,7 +8367,7 @@ static bool8 MultiMove_PlaceMons(void) case 3: if (!IsDma3ManagerBusyWithBgCopy()) { - LoadPalette(GetTextWindowPalette(3), 0xD0, 0x20); + LoadPalette(GetTextWindowPalette(3), BG_PLTT_ID(13), PLTT_SIZE_4BPP); SetCursorPriorityTo1(); ShowBg(0); return FALSE; @@ -9161,7 +9163,7 @@ static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal) CpuFastCopy(sStorage->itemIconBuffer, sStorage->itemIcons[id].tiles, 0x200); LZ77UnCompWram(itemPal, sStorage->itemIconBuffer); - LoadPalette(sStorage->itemIconBuffer, sStorage->itemIcons[id].palIndex, 0x20); + LoadPalette(sStorage->itemIconBuffer, sStorage->itemIcons[id].palIndex, PLTT_SIZE_4BPP); } static void SetItemIconAffineAnim(u8 id, u8 animNum) @@ -9294,7 +9296,7 @@ static bool8 UpdateItemInfoWindowSlideOut(void) if (pos >= 0) DrawItemInfoWindow(pos); - FillBgTilemapBufferRect(0, 0, pos + 1, 12, 1, 9, 0x11); + FillBgTilemapBufferRect(0, 0, pos + 1, 12, 1, 9, 17); ScheduleBgCopyTilemapToVram(0); return TRUE; } @@ -9303,12 +9305,12 @@ static void DrawItemInfoWindow(u32 x) { if (x != 0) { - FillBgTilemapBufferRect(0, 0x13A, 0, 0xC, x, 1, 0xFu); - FillBgTilemapBufferRect(0, 0x93A, 0, 0x14, x, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x13A, 0, 0xC, x, 1, 15); + FillBgTilemapBufferRect(0, 0x93A, 0, 0x14, x, 1, 15); } - FillBgTilemapBufferRect(0, 0x13B, x, 0xD, 1, 7, 0xFu); - FillBgTilemapBufferRect(0, 0x13C, x, 0xC, 1, 1, 0xFu); - FillBgTilemapBufferRect(0, 0x13D, x, 0x14, 1, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x13B, x, 0xD, 1, 7, 15); + FillBgTilemapBufferRect(0, 0x13C, x, 0xC, 1, 1, 15); + FillBgTilemapBufferRect(0, 0x13D, x, 0x14, 1, 1, 15); ScheduleBgCopyTilemapToVram(0); } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 0e21d1e59..2d42002ad 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -109,6 +109,7 @@ enum { #define PSS_DATA_WINDOW_MOVE_DESCRIPTION 2 #define MOVE_SELECTOR_SPRITES_COUNT 10 +#define TYPE_ICON_SPRITE_COUNT (MAX_MON_MOVES + 1) // for the spriteIds field in PokemonSummaryScreenData enum { @@ -116,7 +117,7 @@ enum SPRITE_ARR_ID_BALL, SPRITE_ARR_ID_STATUS, SPRITE_ARR_ID_TYPE, // 2 for mon types, 5 for move types(4 moves and 1 to learn), used interchangeably, because mon types and move types aren't shown on the same screen - SPRITE_ARR_ID_MOVE_SELECTOR1 = SPRITE_ARR_ID_TYPE + 5, // 10 sprites that make up the selector + SPRITE_ARR_ID_MOVE_SELECTOR1 = SPRITE_ARR_ID_TYPE + TYPE_ICON_SPRITE_COUNT, // 10 sprites that make up the selector SPRITE_ARR_ID_MOVE_SELECTOR2 = SPRITE_ARR_ID_MOVE_SELECTOR1 + MOVE_SELECTOR_SPRITES_COUNT, SPRITE_ARR_ID_COUNT = SPRITE_ARR_ID_MOVE_SELECTOR2 + MOVE_SELECTOR_SPRITES_COUNT }; @@ -1416,8 +1417,8 @@ static bool8 DecompressGraphics(void) sMonSummaryScreen->switchCounter++; break; case 6: - LoadCompressedPalette(gSummaryScreen_Pal, 0, 0x100); - LoadPalette(&gPPTextPalette, 0x81, 0x1E); + LoadCompressedPalette(gSummaryScreen_Pal, BG_PLTT_ID(0), 8 * PLTT_SIZE_4BPP); + LoadPalette(&gPPTextPalette, BG_PLTT_ID(8) + 1, PLTT_SIZEOF(16 - 1)); sMonSummaryScreen->switchCounter++; break; case 7: @@ -1441,7 +1442,7 @@ static bool8 DecompressGraphics(void) sMonSummaryScreen->switchCounter++; break; case 12: - LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60); + LoadCompressedPalette(gMoveTypes_Pal, OBJ_PLTT_ID(13), 3 * PLTT_SIZE_4BPP); LoadCompressedSpriteSheet(&sSpriteSheet_SplitIcons); LoadSpritePalette(&sSpritePal_SplitIcons); sMonSummaryScreen->switchCounter = 0; @@ -3873,7 +3874,7 @@ static void CreateMoveTypeIcons(void) { u8 i; - for (i = SPRITE_ARR_ID_TYPE; i < SPRITE_ARR_ID_TYPE + 5; i++) + for (i = SPRITE_ARR_ID_TYPE; i < SPRITE_ARR_ID_TYPE + TYPE_ICON_SPRITE_COUNT; i++) { if (sMonSummaryScreen->spriteIds[i] == SPRITE_NONE) sMonSummaryScreen->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2); @@ -3902,10 +3903,10 @@ static void SetMonTypeIcons(void) } else { - SetTypeSpritePosAndPal(gSpeciesInfo[summary->species].type1, 120, 48, SPRITE_ARR_ID_TYPE); - if (gSpeciesInfo[summary->species].type1 != gSpeciesInfo[summary->species].type2) + SetTypeSpritePosAndPal(gSpeciesInfo[summary->species].types[0], 120, 48, SPRITE_ARR_ID_TYPE); + if (gSpeciesInfo[summary->species].types[0] != gSpeciesInfo[summary->species].types[1]) { - SetTypeSpritePosAndPal(gSpeciesInfo[summary->species].type2, 160, 48, SPRITE_ARR_ID_TYPE + 1); + SetTypeSpritePosAndPal(gSpeciesInfo[summary->species].types[1], 160, 48, SPRITE_ARR_ID_TYPE + 1); SetSpriteInvisibility(SPRITE_ARR_ID_TYPE + 1, FALSE); } else @@ -4097,7 +4098,7 @@ static void StopPokemonAnimations(void) // A subtle effect, this function stops gSprites[sMonSummaryScreen->spriteIds[SPRITE_ARR_ID_MON]].callback = SpriteCallbackDummy; StopPokemonAnimationDelayTask(); - paletteIndex = (gSprites[sMonSummaryScreen->spriteIds[SPRITE_ARR_ID_MON]].oam.paletteNum * 16) | 0x100; + paletteIndex = OBJ_PLTT_ID(gSprites[sMonSummaryScreen->spriteIds[SPRITE_ARR_ID_MON]].oam.paletteNum); for (i = 0; i < 16; i++) { diff --git a/src/pokenav_conditions_gfx.c b/src/pokenav_conditions_gfx.c index 5631f5bb2..e382cbf69 100644 --- a/src/pokenav_conditions_gfx.c +++ b/src/pokenav_conditions_gfx.c @@ -224,8 +224,8 @@ static u32 LoopedTask_OpenConditionGraphMenu(s32 state) CopyToBgTilemapBufferRect(3, gPokenavOptions_Tilemap, 0, 5, 9, 4); CopyBgTilemapBufferToVram(3); - CopyPaletteIntoBufferUnfaded(gPokenavCondition_Pal, 0x10, 0x20); - CopyPaletteIntoBufferUnfaded(gConditionText_Pal, 0xF0, 0x20); + CopyPaletteIntoBufferUnfaded(gPokenavCondition_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(gConditionText_Pal, BG_PLTT_ID(15), PLTT_SIZE_4BPP); menu->monTransitionX = -80; return LT_INC_AND_PAUSE; case 4: @@ -235,7 +235,7 @@ static u32 LoopedTask_OpenConditionGraphMenu(s32 state) LZ77UnCompVram(sConditionGraphData_Tilemap, menu->tilemapBuffers[2]); SetBgTilemapBuffer(2, menu->tilemapBuffers[2]); CopyBgTilemapBufferToVram(2); - CopyPaletteIntoBufferUnfaded(gConditionGraphData_Pal, 0x30, 0x20); + CopyPaletteIntoBufferUnfaded(gConditionGraphData_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); ConditionGraph_InitWindow(2); return LT_INC_AND_PAUSE; case 5: @@ -827,13 +827,13 @@ static void CreateConditionMonPic(u8 id) menu->monPicSpriteId = spriteId; gSprites[menu->monPicSpriteId].callback = MonPicGfxSpriteCallback; menu->monGfxPtr = (void *)VRAM + BG_VRAM_SIZE + (menu->monGfxTileStart * 32); - menu->monPalIndex = (menu->monPalIndex * 16) + 0x100; + menu->monPalIndex = OBJ_PLTT_ID(menu->monPalIndex); } } else { DmaCopy16Defvars(3, GetConditionMonPicGfx(id), menu->monGfxPtr, MON_PIC_SIZE); - LoadPalette(GetConditionMonPal(id), menu->monPalIndex, 0x20); + LoadPalette(GetConditionMonPal(id), menu->monPalIndex, PLTT_SIZE_4BPP); } } diff --git a/src/pokenav_conditions_search_results.c b/src/pokenav_conditions_search_results.c index f1d442111..db2422030 100644 --- a/src/pokenav_conditions_search_results.c +++ b/src/pokenav_conditions_search_results.c @@ -2,6 +2,7 @@ #include "pokenav.h" #include "bg.h" #include "menu.h" +#include "palette.h" #include "window.h" #include "sound.h" #include "dynamic_placeholder_text_util.h" @@ -431,7 +432,7 @@ static u32 LoopedTask_OpenConditionSearchResults(s32 state) SetBgTilemapBuffer(1, gfx->buff); CopyToBgTilemapBuffer(1, sConditionSearchResultTilemap, 0, 0); CopyBgTilemapBufferToVram(1); - CopyPaletteIntoBufferUnfaded(sConditionSearchResultFramePal, 0x10, 0x20); + CopyPaletteIntoBufferUnfaded(sConditionSearchResultFramePal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); CopyBgTilemapBufferToVram(1); return LT_INC_AND_PAUSE; case 1: @@ -443,7 +444,7 @@ static u32 LoopedTask_OpenConditionSearchResults(s32 state) case 2: if (FreeTempTileDataBuffersIfPossible()) return LT_PAUSE; - CopyPaletteIntoBufferUnfaded(sListBg_Pal, 0x20, 32); + CopyPaletteIntoBufferUnfaded(sListBg_Pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); CreateSearchResultsList(); return LT_INC_AND_PAUSE; case 3: diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c index c51ab10ba..bfc5ba0cb 100644 --- a/src/pokenav_main_menu.c +++ b/src/pokenav_main_menu.c @@ -349,7 +349,7 @@ static u32 LoopedTask_InitPokenavMenu(s32 state) DecompressAndCopyTileDataToVram(0, &gPokenavHeader_Gfx, 0, 0, 0); SetBgTilemapBuffer(0, menu->tilemapBuffer); CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0); - CopyPaletteIntoBufferUnfaded(gPokenavHeader_Pal, 0, 0x20); + CopyPaletteIntoBufferUnfaded(gPokenavHeader_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); CopyBgTilemapBufferToVram(0); return LT_INC_AND_PAUSE; case 2: @@ -460,8 +460,8 @@ void Pokenav_AllocAndLoadPalettes(const struct SpritePalette *palettes) } else { - index = (index * 16) + 0x100; - CopyPaletteIntoBufferUnfaded(current->data, index, 0x20); + index = OBJ_PLTT_ID(index); + CopyPaletteIntoBufferUnfaded(current->data, index, PLTT_SIZE_4BPP); } } } @@ -683,7 +683,7 @@ static void LoadLeftHeaderGfxForMenu(u32 menuGfxId) menu = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU); tag = sMenuLeftHeaderSpriteSheets[menuGfxId].tag; size = GetDecompressedDataSize(sMenuLeftHeaderSpriteSheets[menuGfxId].data); - LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20); + LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], OBJ_PLTT_ID(IndexOfSpritePaletteTag(1)), PLTT_SIZE_4BPP); LZ77UnCompWram(sMenuLeftHeaderSpriteSheets[menuGfxId].data, gDecompressionBuffer); RequestDma3Copy(gDecompressionBuffer, (void *)OBJ_VRAM0 + (GetSpriteTileStartByTag(2) * 32), size, 1); menu->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + sMenuLeftHeaderSpriteSheets[menuGfxId].size; @@ -703,7 +703,7 @@ static void LoadLeftHeaderGfxForSubMenu(u32 menuGfxId) tag = sPokenavSubMenuLeftHeaderSpriteSheets[menuGfxId].tag; size = GetDecompressedDataSize(sPokenavSubMenuLeftHeaderSpriteSheets[menuGfxId].data); - LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(2) * 16) + 0x100, 0x20); + LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], OBJ_PLTT_ID(IndexOfSpritePaletteTag(2)), PLTT_SIZE_4BPP); LZ77UnCompWram(sPokenavSubMenuLeftHeaderSpriteSheets[menuGfxId].data, &gDecompressionBuffer[0x1000]); RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)OBJ_VRAM0 + 0x800 + (GetSpriteTileStartByTag(2) * 32), size, 1); } diff --git a/src/pokenav_match_call_gfx.c b/src/pokenav_match_call_gfx.c index fd5b36fae..626e584b7 100755 --- a/src/pokenav_match_call_gfx.c +++ b/src/pokenav_match_call_gfx.c @@ -333,7 +333,7 @@ static u32 LoopedTask_OpenMatchCall(s32 state) SetBgTilemapBuffer(2, gfx->bgTilemapBuffer2); CopyToBgTilemapBuffer(2, sMatchCallUI_Tilemap, 0, 0); CopyBgTilemapBufferToVram(2); - CopyPaletteIntoBufferUnfaded(sMatchCallUI_Pal, 0x20, 0x20); + CopyPaletteIntoBufferUnfaded(sMatchCallUI_Pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); CopyBgTilemapBufferToVram(2); return LT_INC_AND_PAUSE; case 1: @@ -343,7 +343,7 @@ static u32 LoopedTask_OpenMatchCall(s32 state) BgDmaFill(1, 0, 0, 1); SetBgTilemapBuffer(1, gfx->bgTilemapBuffer1); FillBgTilemapBufferRect_Palette0(1, 0x1000, 0, 0, 32, 20); - CopyPaletteIntoBufferUnfaded(sCallWindow_Pal, 0x10, 0x20); + CopyPaletteIntoBufferUnfaded(sCallWindow_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); CopyBgTilemapBufferToVram(1); return LT_INC_AND_PAUSE; case 2: @@ -352,8 +352,8 @@ static u32 LoopedTask_OpenMatchCall(s32 state) LoadCallWindowAndFade(gfx); DecompressAndCopyTileDataToVram(3, sPokeball_Gfx, 0, 0, 0); - CopyPaletteIntoBufferUnfaded(sListWindow_Pal, 0x30, 0x20); - CopyPaletteIntoBufferUnfaded(sPokeball_Pal, 0x50, 0x20); + CopyPaletteIntoBufferUnfaded(sListWindow_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sPokeball_Pal, BG_PLTT_ID(5), PLTT_SIZE_4BPP); return LT_INC_AND_PAUSE; case 3: if (FreeTempTileDataBuffersIfPossible() || !IsMatchCallListInitFinished()) @@ -1102,7 +1102,7 @@ static void DrawMsgBoxForMatchCallMsg(struct Pokenav_MatchCallGfx *gfx) static void DrawMsgBoxForCloseByMsg(struct Pokenav_MatchCallGfx *gfx) { - LoadUserWindowBorderGfx(gfx->msgBoxWindowId, 1, 0x40); + LoadUserWindowBorderGfx(gfx->msgBoxWindowId, 1, BG_PLTT_ID(4)); DrawTextBorderOuter(gfx->msgBoxWindowId, 1, 4); FillWindowPixelBuffer(gfx->msgBoxWindowId, PIXEL_FILL(1)); PutWindowTilemap(gfx->msgBoxWindowId); @@ -1186,7 +1186,7 @@ static void AllocMatchCallSprites(void) spriteSheet.tag = GFXTAG_TRAINER_PIC; gfx->trainerPicGfxPtr = (u8 *)OBJ_VRAM0 + LoadSpriteSheet(&spriteSheet) * 0x20; paletteNum = AllocSpritePalette(PALTAG_TRAINER_PIC); - gfx->trainerPicPalOffset = 0x100 + paletteNum * 0x10; + gfx->trainerPicPalOffset = OBJ_PLTT_ID(paletteNum); gfx->trainerPicSprite = CreateTrainerPicSprite(); gfx->trainerPicSprite->invisible = TRUE; } diff --git a/src/pokenav_menu_handler_gfx.c b/src/pokenav_menu_handler_gfx.c index 291c10ce9..0c664a0d0 100644 --- a/src/pokenav_menu_handler_gfx.c +++ b/src/pokenav_menu_handler_gfx.c @@ -457,7 +457,7 @@ static u32 LoopedTask_OpenMenu(s32 state) SetBgTilemapBuffer(1, gfx->bg1TilemapBuffer); CopyToBgTilemapBuffer(1, gPokenavMessageBox_Tilemap, 0, 0); CopyBgTilemapBufferToVram(1); - CopyPaletteIntoBufferUnfaded(gPokenavMessageBox_Pal, 0x10, 0x20); + CopyPaletteIntoBufferUnfaded(gPokenavMessageBox_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); ChangeBgX(1, 0, BG_COORD_SET); ChangeBgY(1, 0, BG_COORD_SET); ChangeBgX(2, 0, BG_COORD_SET); @@ -470,14 +470,14 @@ static u32 LoopedTask_OpenMenu(s32 state) return LT_PAUSE; DecompressAndCopyTileDataToVram(2, sPokenavDeviceBgTiles, 0, 0, 0); DecompressAndCopyTileDataToVram(2, sPokenavDeviceBgTilemap, 0, 0, 1); - CopyPaletteIntoBufferUnfaded(sPokenavDeviceBgPal, 0x20, 0x20); + CopyPaletteIntoBufferUnfaded(sPokenavDeviceBgPal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); return LT_INC_AND_PAUSE; case 2: if (FreeTempTileDataBuffersIfPossible()) return LT_PAUSE; DecompressAndCopyTileDataToVram(3, sPokenavBgDotsTiles, 0, 0, 0); DecompressAndCopyTileDataToVram(3, sPokenavBgDotsTilemap, 0, 0, 1); - CopyPaletteIntoBufferUnfaded(sPokenavBgDotsPal, 0x30, 0x20); + CopyPaletteIntoBufferUnfaded(sPokenavBgDotsPal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); if (GetPokenavMenuType() == POKENAV_MENU_TYPE_CONDITION || GetPokenavMenuType() == POKENAV_MENU_TYPE_CONDITION_SEARCH) ChangeBgDotsColorToPurple(); return LT_INC_AND_PAUSE; @@ -1270,7 +1270,7 @@ static void CreateBgDotPurplePalTask(void) static void ChangeBgDotsColorToPurple(void) { - CopyPaletteIntoBufferUnfaded(sPokenavBgDotsPal + 7, 0x31, 4); + CopyPaletteIntoBufferUnfaded(sPokenavBgDotsPal + 7, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(2)); } static void CreateBgDotLightBluePalTask(void) @@ -1293,7 +1293,7 @@ static void Task_UpdateBgDotsPalette(u8 taskId) const u16 * pal2 = (const u16 *)GetWordTaskArg(taskId, 3); PokenavCopyPalette(pal1, pal2, 2, 12, ++data[0], sp8); - LoadPalette(sp8, 0x31, 4); + LoadPalette(sp8, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(2)); if (data[0] == 12) DestroyTask(taskId); } diff --git a/src/pokenav_region_map.c b/src/pokenav_region_map.c index 036ea5ff1..50f01345c 100755 --- a/src/pokenav_region_map.c +++ b/src/pokenav_region_map.c @@ -509,14 +509,14 @@ static void LoadPokenavRegionMapGfx(struct Pokenav_RegionMapGfx *state) CpuFill16(0x1040, state->tilemapBuffer, 0x800); SetBgTilemapBuffer(1, state->tilemapBuffer); state->infoWindowId = AddWindow(&sMapSecInfoWindowTemplate); - LoadUserWindowBorderGfx_(state->infoWindowId, 0x42, 0x40); + LoadUserWindowBorderGfx_(state->infoWindowId, 0x42, BG_PLTT_ID(4)); DrawTextBorderOuter(state->infoWindowId, 0x42, 4); DecompressAndCopyTileDataToVram(1, sRegionMapCityZoomTiles_Gfx, 0, 0, 0); FillWindowPixelBuffer(state->infoWindowId, PIXEL_FILL(1)); PutWindowTilemap(state->infoWindowId); CopyWindowToVram(state->infoWindowId, COPYWIN_FULL); - CopyPaletteIntoBufferUnfaded(sMapSecInfoWindow_Pal, 0x10, 0x20); - CopyPaletteIntoBufferUnfaded(gRegionMapCityZoomTiles_Pal, 0x30, 0x20); + CopyPaletteIntoBufferUnfaded(sMapSecInfoWindow_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(gRegionMapCityZoomTiles_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); if (!IsRegionMapZoomed()) ChangeBgY(1, -0x6000, BG_COORD_SET); else diff --git a/src/pokenav_ribbons_list.c b/src/pokenav_ribbons_list.c index cf5f99104..075bcc7ce 100644 --- a/src/pokenav_ribbons_list.c +++ b/src/pokenav_ribbons_list.c @@ -2,6 +2,7 @@ #include "pokenav.h" #include "bg.h" #include "menu.h" +#include "palette.h" #include "window.h" #include "sound.h" #include "string_util.h" @@ -431,7 +432,7 @@ static u32 LoopedTask_OpenRibbonsMonList(s32 state) DecompressAndCopyTileDataToVram(1, sMonRibbonListFrameTiles, 0, 0, 0); SetBgTilemapBuffer(1, menu->buff); CopyToBgTilemapBuffer(1, sMonRibbonListFrameTilemap, 0, 0); - CopyPaletteIntoBufferUnfaded(sMonRibbonListFramePal, 0x10, 0x20); + CopyPaletteIntoBufferUnfaded(sMonRibbonListFramePal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); CopyBgTilemapBufferToVram(1); return LT_INC_AND_PAUSE; case 1: @@ -446,7 +447,7 @@ static u32 LoopedTask_OpenRibbonsMonList(s32 state) case 2: if (FreeTempTileDataBuffersIfPossible()) return LT_PAUSE; - CopyPaletteIntoBufferUnfaded(sMonRibbonListUi_Pal, 0x20, 0x20); + CopyPaletteIntoBufferUnfaded(sMonRibbonListUi_Pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); CreateRibbonMonsList(); return LT_INC_AND_PAUSE; case 3: diff --git a/src/pokenav_ribbons_summary.c b/src/pokenav_ribbons_summary.c index 3bc7cb236..f9432c834 100644 --- a/src/pokenav_ribbons_summary.c +++ b/src/pokenav_ribbons_summary.c @@ -3,6 +3,7 @@ #include "dynamic_placeholder_text_util.h" #include "graphics.h" #include "international_string_util.h" +#include "palette.h" #include "pokenav.h" #include "sound.h" #include "sprite.h" @@ -572,7 +573,7 @@ static u32 LoopedTask_OpenRibbonsSummaryMenu(s32 state) DecompressAndCopyTileDataToVram(2, gPokenavRibbonsSummaryBg_Gfx, 0, 0, 0); SetBgTilemapBuffer(2, menu->tilemapBuffers[0]); CopyToBgTilemapBuffer(2, gPokenavRibbonsSummaryBg_Tilemap, 0, 0); - CopyPaletteIntoBufferUnfaded(gPokenavRibbonsSummaryBg_Pal, 0x10, 0x20); + CopyPaletteIntoBufferUnfaded(gPokenavRibbonsSummaryBg_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); CopyBgTilemapBufferToVram(2); return LT_INC_AND_PAUSE; case 1: @@ -582,8 +583,8 @@ static u32 LoopedTask_OpenRibbonsSummaryMenu(s32 state) DecompressAndCopyTileDataToVram(1, sRibbonIconsSmall_Gfx, 0, 1, 0); SetBgTilemapBuffer(1, menu->tilemapBuffers[1]); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20); - CopyPaletteIntoBufferUnfaded(sRibbonIcons1_Pal, 0x20, 0xA0); - CopyPaletteIntoBufferUnfaded(sMonInfo_Pal, 0xA0, 0x20); + CopyPaletteIntoBufferUnfaded(sRibbonIcons1_Pal, BG_PLTT_ID(2), 5 * PLTT_SIZE_4BPP); + CopyPaletteIntoBufferUnfaded(sMonInfo_Pal, BG_PLTT_ID(10), PLTT_SIZE_4BPP); CopyBgTilemapBufferToVram(1); return LT_INC_AND_PAUSE; } diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c index 83298b03d..c984dfec8 100644 --- a/src/rayquaza_scene.c +++ b/src/rayquaza_scene.c @@ -1301,7 +1301,7 @@ static void CB2_InitRayquazaScene(void) ResetPaletteFade(); ResetSpriteData(); ResetTasks(); - FillPalette(RGB_BLACK, 0xF0, 32); + FillPalette(RGB_BLACK, BG_PLTT_ID(15), PLTT_SIZE_4BPP); CreateTask(sTasksForAnimations[sRayScene->animId], 0); SetMainCallback2(CB2_RayquazaScene); } @@ -1592,7 +1592,7 @@ static void LoadDuoFightSceneGfx(void) LZDecompressWram(gRaySceneDuoFight_Clouds2_Tilemap, sRayScene->tilemapBuffers[0]); LZDecompressWram(gRaySceneDuoFight_Clouds1_Tilemap, sRayScene->tilemapBuffers[1]); LZDecompressWram(gRaySceneDuoFight_Clouds3_Tilemap, sRayScene->tilemapBuffers[2]); - LoadCompressedPalette(gRaySceneDuoFight_Clouds_Pal, 0, 0x40); + LoadCompressedPalette(gRaySceneDuoFight_Clouds_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_Groudon); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_GroudonShoulder); LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_GroudonClaw); @@ -2032,7 +2032,7 @@ static void LoadTakesFlightSceneGfx(void) LZDecompressWram(gRaySceneDuoFight_Clouds2_Tilemap, sRayScene->tilemapBuffers[0]); LZDecompressWram(gRaySceneTakesFlight_Bg_Tilemap, sRayScene->tilemapBuffers[1]); LZDecompressWram(gRaySceneTakesFlight_Rayquaza_Tilemap, sRayScene->tilemapBuffers[2]); - LoadCompressedPalette(gRaySceneTakesFlight_Rayquaza_Pal, 0, 64); + LoadCompressedPalette(gRaySceneTakesFlight_Rayquaza_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadCompressedSpriteSheet(&sSpriteSheet_TakesFlight_Smoke); LoadCompressedSpritePalette(&sSpritePal_TakesFlight_Smoke); } @@ -2238,7 +2238,7 @@ static void LoadDescendsSceneGfx(void) CpuFastCopy(sRayScene->tilemapBuffers[3], sRayScene->tilemapBuffers[1], BG_SCREEN_SIZE); CpuFastFill16(0, &sRayScene->tilemapBuffers[1][0x100], 0x340); - LoadCompressedPalette(gRaySceneDescends_Bg_Pal, 0, 0x40); + LoadCompressedPalette(gRaySceneDescends_Bg_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); gPlttBufferUnfaded[0] = RGB_WHITE; gPlttBufferFaded[0] = RGB_WHITE; LoadCompressedSpriteSheet(&sSpriteSheet_Descends_Rayquaza); @@ -2487,7 +2487,7 @@ static void LoadChargesSceneGfx(void) LZDecompressWram(gRaySceneCharges_Rayquaza_Tilemap, sRayScene->tilemapBuffers[1]); LZDecompressWram(gRaySceneCharges_Streaks_Tilemap, sRayScene->tilemapBuffers[2]); LZDecompressWram(gRaySceneCharges_Bg_Tilemap, sRayScene->tilemapBuffers[3]); - LoadCompressedPalette(gRaySceneCharges_Bg_Pal, 0, 0x80); + LoadCompressedPalette(gRaySceneCharges_Bg_Pal, BG_PLTT_ID(0), 4 * PLTT_SIZE_4BPP); } #define tState data[0] @@ -2671,7 +2671,7 @@ static void LoadChasesAwaySceneGfx(void) LZDecompressWram(gRaySceneChasesAway_Bg_Tilemap, sRayScene->tilemapBuffers[1]); LZDecompressWram(gRaySceneChasesAway_Light_Tilemap, sRayScene->tilemapBuffers[0]); LZDecompressWram(gRaySceneChasesAway_Ring_Tilemap, sRayScene->tilemapBuffers[2]); - LoadCompressedPalette(gRaySceneChasesAway_Bg_Pal, 0, 0x60); + LoadCompressedPalette(gRaySceneChasesAway_Bg_Pal, BG_PLTT_ID(0), 3 * PLTT_SIZE_4BPP); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Groudon); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_GroudonTail); LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Kyogre); diff --git a/src/record_mixing.c b/src/record_mixing.c index 5d75f3fc8..d6edd078b 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -59,23 +59,23 @@ struct PlayerRecordRS struct RecordMixingDaycareMail daycareMail; struct RSBattleTowerRecord battleTowerRecord; u16 giftItem; - u16 padding[50]; + u16 filler[50]; }; struct PlayerRecordEmerald { /* 0x0000 */ struct SecretBase secretBases[SECRET_BASES_COUNT]; - /* 0x0c80 */ TVShow tvShows[TV_SHOWS_COUNT]; + /* 0x0C80 */ TVShow tvShows[TV_SHOWS_COUNT]; /* 0x1004 */ PokeNews pokeNews[POKE_NEWS_COUNT]; /* 0x1044 */ OldMan oldMan; /* 0x1084 */ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT]; - /* 0x10ac */ struct RecordMixingDaycareMail daycareMail; + /* 0x10AC */ struct RecordMixingDaycareMail daycareMail; /* 0x1124 */ struct EmeraldBattleTowerRecord battleTowerRecord; /* 0x1210 */ u16 giftItem; /* 0x1214 */ LilycoveLady lilycoveLady; /* 0x1254 */ struct Apprentice apprentices[2]; - /* 0x12dc */ struct PlayerHallRecords hallRecords; - /* 0x1434 */ u8 padding[16]; + /* 0x12DC */ struct PlayerHallRecords hallRecords; + /* 0x1434 */ u8 filler_1434[16]; }; // 0x1444 union PlayerRecord diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 33228255d..4cfa0e4c0 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -14,14 +14,13 @@ #include "malloc.h" #include "util.h" #include "task.h" +#include "test_runner.h" #include "text.h" #include "battle_setup.h" #include "frontier_util.h" #include "constants/trainers.h" #include "constants/rgb.h" -#define BATTLER_RECORD_SIZE 664 - struct PlayerInfo { u32 trainerId; @@ -31,37 +30,6 @@ struct PlayerInfo u16 language; }; -struct RecordedBattleSave -{ - struct Pokemon playerParty[PARTY_SIZE]; - struct Pokemon opponentParty[PARTY_SIZE]; - u8 playersName[MAX_BATTLERS_COUNT][PLAYER_NAME_LENGTH + 1]; - u8 playersGender[MAX_BATTLERS_COUNT]; - u32 playersTrainerId[MAX_BATTLERS_COUNT]; - u8 playersLanguage[MAX_BATTLERS_COUNT]; - u32 rngSeed; - u32 battleFlags; - u8 playersBattlers[MAX_BATTLERS_COUNT]; - u16 opponentA; - u16 opponentB; - u16 partnerId; - u16 multiplayerId; - u8 lvlMode; - u8 frontierFacility; - u8 frontierBrainSymbol; - u8 battleScene:1; - u8 textSpeed:3; - u32 AI_scripts; - u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1]; - u8 recordMixFriendClass; - u8 apprenticeId; - u16 easyChatSpeech[EASY_CHAT_BATTLE_WORDS_COUNT]; - u8 recordMixFriendLanguage; - u8 apprenticeLanguage; - u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; - u32 checksum; -}; - // Save data using TryWriteSpecialSaveSector is allowed to exceed SECTOR_DATA_SIZE (up to the counter field) STATIC_ASSERT(sizeof(struct RecordedBattleSave) <= SECTOR_COUNTER_OFFSET, RecordedBattleSaveFreeSpace); @@ -205,8 +173,11 @@ void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear) } } -u8 RecordedBattle_GetBattlerAction(u8 battlerId) +u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId) { + if (gTestRunnerEnabled) + BattleTest_CheckBattleRecordActionType(battlerId, sBattlerRecordSizes[battlerId], actionType); + // Trying to read past array or invalid action byte, battle is over. if (sBattlerRecordSizes[battlerId] >= BATTLER_RECORD_SIZE || sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == 0xFF) { @@ -522,7 +493,7 @@ static void Task_StartAfterCountdown(u8 taskId) } } -static void SetVariablesForRecordedBattle(struct RecordedBattleSave *src) +void SetVariablesForRecordedBattle(struct RecordedBattleSave *src) { bool8 var; s32 i, j; @@ -755,14 +726,14 @@ void RecordedBattle_CheckMovesetChanges(u8 mode) // We know the current action is ACTION_MOVE_CHANGE, retrieve // it without saving it to move on to the next action. - RecordedBattle_GetBattlerAction(battlerId); + RecordedBattle_GetBattlerAction(RECORDED_BYTE, battlerId); for (j = 0; j < MAX_MON_MOVES; j++) ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & (3 << (j << 1))) >> (j << 1)); for (j = 0; j < MAX_MON_MOVES; j++) { - moveSlots[j] = RecordedBattle_GetBattlerAction(battlerId); + moveSlots[j] = RecordedBattle_GetBattlerAction(RECORDED_BYTE, battlerId); movePp.moves[j] = gBattleMons[battlerId].moves[moveSlots[j]]; movePp.currentPp[j] = gBattleMons[battlerId].pp[moveSlots[j]]; movePp.maxPp[j] = ppBonuses[moveSlots[j]]; diff --git a/src/region_map.c b/src/region_map.c index 67f1643d6..d55afb961 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -557,7 +557,7 @@ bool8 LoadRegionMapGfx(void) break; case 2: if (!FreeTempTileDataBuffersIfPossible()) - LoadPalette(sRegionMapBg_Pal, 0x70, 0x60); + LoadPalette(sRegionMapBg_Pal, BG_PLTT_ID(7), 3 * PLTT_SIZE_4BPP); break; case 3: LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, sRegionMap->cursorSmallImage); @@ -1679,7 +1679,7 @@ void CB2_OpenFlyMap(void) gMain.state++; break; case 3: - LoadUserWindowBorderGfx(0, 0x65, 0xd0); + LoadUserWindowBorderGfx(0, 0x65, BG_PLTT_ID(13)); ClearScheduledBgCopiesToVram(); gMain.state++; break; @@ -1702,7 +1702,7 @@ void CB2_OpenFlyMap(void) gMain.state++; break; case 7: - LoadPalette(sRegionMapFramePal, 0x10, sizeof(sRegionMapFramePal)); + LoadPalette(sRegionMapFramePal, BG_PLTT_ID(1), sizeof(sRegionMapFramePal)); PutWindowTilemap(2); FillWindowPixelBuffer(2, PIXEL_FILL(0)); AddTextPrinterParameterized(2, FONT_NORMAL, gText_FlyToWhere, 0, 1, 0, NULL); diff --git a/src/rotating_gate.c b/src/rotating_gate.c index d1184dae0..f9e732eb7 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -264,14 +264,14 @@ static const struct OamData sOamData_RotatingGateRegular = static const struct SpriteSheet sRotatingGatesGraphicsTable[] = { - {sRotatingGateTiles_1, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1}, - {sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2}, - {sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3}, - {sRotatingGateTiles_4, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4}, - {sRotatingGateTiles_5, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1}, - {sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2}, - {sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3}, - {sRotatingGateTiles_8, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4}, + {sRotatingGateTiles_1, sizeof(sRotatingGateTiles_1), ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1}, + {sRotatingGateTiles_2, sizeof(sRotatingGateTiles_2), ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2}, + {sRotatingGateTiles_3, sizeof(sRotatingGateTiles_3), ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3}, + {sRotatingGateTiles_4, sizeof(sRotatingGateTiles_4), ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4}, + {sRotatingGateTiles_5, sizeof(sRotatingGateTiles_5), ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1}, + {sRotatingGateTiles_6, sizeof(sRotatingGateTiles_6), ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2}, + {sRotatingGateTiles_7, sizeof(sRotatingGateTiles_7), ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3}, + {sRotatingGateTiles_8, sizeof(sRotatingGateTiles_8), ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4}, {NULL}, }; diff --git a/src/roulette.c b/src/roulette.c index 52efc8779..283cceebf 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -1195,7 +1195,7 @@ static void CB2_LoadRoulette(void) ResetTempTileDataBuffers(); break; case 3: - LoadPalette(&sWheel_Pal, 0, 0x1C0); + LoadPalette(&sWheel_Pal, BG_PLTT_ID(0), 14 * PLTT_SIZE_4BPP); DecompressAndCopyTileDataToVram(1, gRouletteMenu_Gfx, 0, 0, 0); DecompressAndCopyTileDataToVram(2, gRouletteWheel_Gfx, 0, 0, 0); break; @@ -2167,16 +2167,16 @@ static void FlashSelectionOnWheel(u8 selectionId) // The specific color of the poke it references doesn't matter, because the icons of a poke share a palette // So it just uses the first sprite ID of each case COL_WYNAUT: - palOffset = gSprites[sRoulette->spriteIds[SPR_WHEEL_ICON_ORANGE_WYNAUT]].oam.paletteNum * 16; + palOffset = PLTT_ID(gSprites[sRoulette->spriteIds[SPR_WHEEL_ICON_ORANGE_WYNAUT]].oam.paletteNum); break; case COL_AZURILL: - palOffset = gSprites[sRoulette->spriteIds[SPR_WHEEL_ICON_GREEN_AZURILL]].oam.paletteNum * 16; + palOffset = PLTT_ID(gSprites[sRoulette->spriteIds[SPR_WHEEL_ICON_GREEN_AZURILL]].oam.paletteNum); break; case COL_SKITTY: - palOffset = gSprites[sRoulette->spriteIds[SPR_WHEEL_ICON_PURPLE_SKITTY]].oam.paletteNum * 16; + palOffset = PLTT_ID(gSprites[sRoulette->spriteIds[SPR_WHEEL_ICON_PURPLE_SKITTY]].oam.paletteNum); break; case COL_MAKUHITA: - palOffset = gSprites[sRoulette->spriteIds[SPR_WHEEL_ICON_ORANGE_MAKUHITA]].oam.paletteNum * 16; + palOffset = PLTT_ID(gSprites[sRoulette->spriteIds[SPR_WHEEL_ICON_ORANGE_MAKUHITA]].oam.paletteNum); break; } if (numSelected == 1) diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 877482728..f7f0162ff 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -196,7 +196,7 @@ static void CB2_SaveFailedScreen(void) DmaFill16(3, 0, VRAM, VRAM_SIZE); DmaFill32(3, 0, OAM, OAM_SIZE); DmaFill16(3, 0, PLTT, PLTT_SIZE); - LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM); + LZ77UnCompVram(gBirchBagGrass_Gfx, (void *)VRAM); LZ77UnCompVram(gBirchBagTilemap, (void *)(BG_SCREEN_ADDR(14))); LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(15))); LZ77UnCompVram(sSaveFailedClockGfx, (void *)(OBJ_VRAM0 + 0x20)); @@ -214,10 +214,10 @@ static void CB2_SaveFailedScreen(void) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - LoadPalette(gBirchBagGrassPal, 0, 0x40); - LoadPalette(sSaveFailedClockPal, 0x100, 0x20); - LoadPalette(gTextWindowFrame1_Pal, 0xE0, 0x20); - LoadPalette(gStandardMenuPalette, 0xF0, 0x20); + LoadPalette(gBirchBagGrass_Pal, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); + LoadPalette(sSaveFailedClockPal, OBJ_PLTT_ID(0), PLTT_SIZE_4BPP); + LoadPalette(gTextWindowFrame1_Pal, BG_PLTT_ID(14), PLTT_SIZE_4BPP); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZE_4BPP); DrawStdFrameWithCustomTileAndPalette(sWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE); DrawStdFrameWithCustomTileAndPalette(sWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE); FillWindowPixelBuffer(sWindowIds[CLOCK_WIN_ID], PIXEL_FILL(1)); // backwards? diff --git a/src/scrcmd.c b/src/scrcmd.c index 745e0d882..7b51df9f9 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1524,7 +1524,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) winTemplate = CreateWindowTemplate(0, xWindow, yWindow + 1, width, height, 0xF, 0x1); sBrailleWindowId = AddWindow(&winTemplate); - LoadUserWindowBorderGfx(sBrailleWindowId, 0x214, 0xE0); + LoadUserWindowBorderGfx(sBrailleWindowId, 0x214, BG_PLTT_ID(14)); DrawStdWindowFrame(sBrailleWindowId, FALSE); PutWindowTilemap(sBrailleWindowId); FillWindowPixelBuffer(sBrailleWindowId, PIXEL_FILL(1)); diff --git a/src/shop.c b/src/shop.c index ef0f07b38..8fea1e117 100644 --- a/src/shop.c +++ b/src/shop.c @@ -740,15 +740,15 @@ static void BuyMenuDecompressBgGraphics(void) { DecompressAndCopyTileDataToVram(1, gShopMenu_Gfx, 0x3A0, 0x3E3, 0); LZDecompressWram(gShopMenu_Tilemap, sShopData->tilemapBuffers[0]); - LoadCompressedPalette(gShopMenu_Pal, 0xC0, 0x20); + LoadCompressedPalette(gShopMenu_Pal, BG_PLTT_ID(12), PLTT_SIZE_4BPP); } static void BuyMenuInitWindows(void) { InitWindows(sShopBuyMenuWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(WIN_MONEY, 1, 0xD0); - LoadMessageBoxGfx(WIN_MONEY, 0xA, 0xE0); + LoadUserWindowBorderGfx(WIN_MONEY, 1, BG_PLTT_ID(13)); + LoadMessageBoxGfx(WIN_MONEY, 0xA, BG_PLTT_ID(14)); PutWindowTilemap(WIN_MONEY); PutWindowTilemap(WIN_ITEM_LIST); PutWindowTilemap(WIN_ITEM_DESCRIPTION); diff --git a/src/slot_machine.c b/src/slot_machine.c index 8a67acae3..2fc0e2c03 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1247,8 +1247,8 @@ static void SlotMachineSetup_LoadGfxAndTilemaps(void) LoadMenuGfx(); LoadMenuAndReelOverlayTilemaps(); LoadSlotMachineGfx(); - LoadMessageBoxGfx(0, 0x200, 0xF0); - LoadUserWindowBorderGfx(0, 0x214, 0xE0); + LoadMessageBoxGfx(0, 0x200, BG_PLTT_ID(15)); + LoadUserWindowBorderGfx(0, 0x214, BG_PLTT_ID(14)); PutWindowTilemap(0); } @@ -3211,12 +3211,12 @@ static void StopReelButton_Unpress(struct Task *task, u8 taskId) static void LightenMatchLine(u8 matchLineId) { - LoadPalette(sLitMatchLinePalTable[matchLineId], sMatchLinePalOffsets[matchLineId], 2); + LoadPalette(sLitMatchLinePalTable[matchLineId], sMatchLinePalOffsets[matchLineId], PLTT_SIZEOF(1)); } static void DarkenMatchLine(u8 matchLineId) { - LoadPalette(sDarkMatchLinePalTable[matchLineId], sMatchLinePalOffsets[matchLineId], 2); + LoadPalette(sDarkMatchLinePalTable[matchLineId], sMatchLinePalOffsets[matchLineId], PLTT_SIZEOF(1)); } // light up the match line for each bet by the player @@ -3360,7 +3360,7 @@ static bool8 TryStopSlotMachineLights(void) if (gTasks[taskId].sFlashState == 0) { DestroyTask(taskId); - LoadPalette(sSlotMachineMenu_Pal, 0x10, 0x20); + LoadPalette(sSlotMachineMenu_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); return TRUE; } return FALSE; @@ -3376,7 +3376,7 @@ static void Task_FlashSlotMachineLights(u8 taskId) if (task->sFlashState == 0 || task->sFlashState == 2) task->sFlashDir = -task->sFlashDir; } - LoadPalette(sFlashingLightsPalTable[task->sFlashState], 0x10, 0x20); + LoadPalette(sFlashingLightsPalTable[task->sFlashState], BG_PLTT_ID(1), PLTT_SIZE_4BPP); } #undef sDelayTimer @@ -4857,7 +4857,7 @@ static void SpriteCB_DigitalDisplay_PokeballShining(struct Sprite *sprite) { if (sprite->sCounter < 3) { - LoadPalette(sPokeballShiningPalTable[sprite->sCounter], (IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY) << 4) + 0x100, 32); + LoadPalette(sPokeballShiningPalTable[sprite->sCounter], OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY)), PLTT_SIZE_4BPP); if (++sprite->data[2] >= 4) { sprite->data[1]++; @@ -4866,7 +4866,7 @@ static void SpriteCB_DigitalDisplay_PokeballShining(struct Sprite *sprite) } else { - LoadPalette(sPokeballShiningPalTable[sprite->sCounter], (IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY) << 4) + 0x100, 32); + LoadPalette(sPokeballShiningPalTable[sprite->sCounter], OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY)), PLTT_SIZE_4BPP); if (++sprite->data[2] >= 25) { sprite->sCounter = 0; @@ -4995,7 +4995,7 @@ static void EndDigitalDisplayScene_StopReel(void) static void EndDigitalDisplayScene_Win(void) { - LoadPalette(sDigitalDisplay_Pal, (IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY) << 4) + 0x100, 0x20); + LoadPalette(sDigitalDisplay_Pal, OBJ_PLTT_ID(IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY)), PLTT_SIZE_4BPP); } static void EndDigitalDisplayScene_InsertBet(void) @@ -5054,8 +5054,8 @@ static void LoadMenuGfx(void) sMenuGfx = Alloc(0x2200); LZDecompressWram(gSlotMachineMenu_Gfx, sMenuGfx); LoadBgTiles(2, sMenuGfx, 0x2200, 0); - LoadPalette(gSlotMachineMenu_Pal, 0, 160); - LoadPalette(sUnkPalette, 208, 32); + LoadPalette(gSlotMachineMenu_Pal, BG_PLTT_ID(0), 5 * PLTT_SIZE_4BPP); + LoadPalette(sUnkPalette, BG_PLTT_ID(13), PLTT_SIZE_4BPP); } static void LoadMenuAndReelOverlayTilemaps(void) @@ -7879,19 +7879,19 @@ static const u16 *const sLitMatchLinePalTable[NUM_MATCH_LINES] = static const u16 *const sDarkMatchLinePalTable[NUM_MATCH_LINES] = { - [MATCH_MIDDLE_ROW] = &gSlotMachineMenu_Pal[74], - [MATCH_TOP_ROW] = &gSlotMachineMenu_Pal[75], - [MATCH_BOTTOM_ROW] = &gSlotMachineMenu_Pal[76], - [MATCH_NWSE_DIAG] = &gSlotMachineMenu_Pal[77], - [MATCH_NESW_DIAG] = &gSlotMachineMenu_Pal[78], + [MATCH_MIDDLE_ROW] = &gSlotMachineMenu_Pal[BG_PLTT_ID(4) + 10], + [MATCH_TOP_ROW] = &gSlotMachineMenu_Pal[BG_PLTT_ID(4) + 11], + [MATCH_BOTTOM_ROW] = &gSlotMachineMenu_Pal[BG_PLTT_ID(4) + 12], + [MATCH_NWSE_DIAG] = &gSlotMachineMenu_Pal[BG_PLTT_ID(4) + 13], + [MATCH_NESW_DIAG] = &gSlotMachineMenu_Pal[BG_PLTT_ID(4) + 14], }; static const u8 sMatchLinePalOffsets[NUM_MATCH_LINES] = { - [MATCH_MIDDLE_ROW] = 74, - [MATCH_TOP_ROW] = 75, - [MATCH_BOTTOM_ROW] = 76, - [MATCH_NWSE_DIAG] = 78, // Diag colors flipped for some reason - [MATCH_NESW_DIAG] = 77 // Doesn't matter as both are identical + [MATCH_MIDDLE_ROW] = BG_PLTT_ID(4) + 10, + [MATCH_TOP_ROW] = BG_PLTT_ID(4) + 11, + [MATCH_BOTTOM_ROW] = BG_PLTT_ID(4) + 12, + [MATCH_NWSE_DIAG] = BG_PLTT_ID(4) + 14, // Diag colors flipped for some reason + [MATCH_NESW_DIAG] = BG_PLTT_ID(4) + 13 // Doesn't matter as both are identical }; static const u8 sBetToMatchLineIds[MAX_BET][2] = diff --git a/src/start_menu.c b/src/start_menu.c index 3e5025f8f..ea8123ef9 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -1244,8 +1244,8 @@ static bool32 InitSaveWindowAfterLinkBattle(u8 *state) ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sBgTemplates_LinkBattleSave, ARRAY_COUNT(sBgTemplates_LinkBattleSave)); InitWindows(sWindowTemplates_LinkBattleSave); - LoadUserWindowBorderGfx_(0, 8, 224); - Menu_LoadStdPalAt(240); + LoadUserWindowBorderGfx_(0, 8, BG_PLTT_ID(14)); + Menu_LoadStdPalAt(BG_PLTT_ID(15)); break; case 3: ShowBg(0); diff --git a/src/starter_choose.c b/src/starter_choose.c index cbe0c7ee6..3d5291e88 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -51,17 +51,12 @@ static void SpriteCB_StarterPokemon(struct Sprite *sprite); static u16 sStarterLabelWindowId; -const u16 gBirchBagGrassPal[][16] = -{ - INCBIN_U16("graphics/starter_choose/birch_bag.gbapal"), - INCBIN_U16("graphics/starter_choose/birch_grass.gbapal"), -}; - +const u16 gBirchBagGrass_Pal[] = INCBIN_U16("graphics/starter_choose/tiles.gbapal"); static const u16 sPokeballSelection_Pal[] = INCBIN_U16("graphics/starter_choose/pokeball_selection.gbapal"); static const u16 sStarterCircle_Pal[] = INCBIN_U16("graphics/starter_choose/starter_circle.gbapal"); const u32 gBirchBagTilemap[] = INCBIN_U32("graphics/starter_choose/birch_bag.bin.lz"); const u32 gBirchGrassTilemap[] = INCBIN_U32("graphics/starter_choose/birch_grass.bin.lz"); -const u32 gBirchHelpGfx[] = INCBIN_U32("graphics/starter_choose/birch_help.4bpp.lz"); // Birch bag and grass combined +const u32 gBirchBagGrass_Gfx[] = INCBIN_U32("graphics/starter_choose/tiles.4bpp.lz"); const u32 gPokeballSelection_Gfx[] = INCBIN_U32("graphics/starter_choose/pokeball_selection.4bpp.lz"); static const u32 sStarterCircle_Gfx[] = INCBIN_U32("graphics/starter_choose/starter_circle.4bpp.lz"); @@ -402,7 +397,7 @@ void CB2_ChooseStarter(void) DmaFill32(3, 0, OAM, OAM_SIZE); DmaFill16(3, 0, PLTT, PLTT_SIZE); - LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM); + LZ77UnCompVram(gBirchBagGrass_Gfx, (void *)VRAM); LZ77UnCompVram(gBirchBagTilemap, (void *)(BG_SCREEN_ADDR(6))); LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(7))); @@ -411,7 +406,7 @@ void CB2_ChooseStarter(void) InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 0x2A8, 0xD0); + LoadUserWindowBorderGfx(0, 0x2A8, BG_PLTT_ID(13)); ClearScheduledBgCopiesToVram(); ScanlineEffect_Stop(); ResetTasks(); @@ -420,8 +415,8 @@ void CB2_ChooseStarter(void) FreeAllSpritePalettes(); ResetAllPicSprites(); - LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20); - LoadPalette(gBirchBagGrassPal, 0, 0x40); + LoadPalette(GetOverworldTextboxPalettePtr(), BG_PLTT_ID(14), PLTT_SIZE_4BPP); + LoadPalette(gBirchBagGrass_Pal, BG_PLTT_ID(0), sizeof(gBirchBagGrass_Pal)); LoadCompressedSpriteSheet(&sSpriteSheet_PokeballSelect[0]); LoadCompressedSpriteSheet(&sSpriteSheet_StarterCircle[0]); LoadSpritePalettes(sSpritePalettes_StarterChoose); diff --git a/src/test_runner_stub.c b/src/test_runner_stub.c new file mode 100644 index 000000000..2c8b54020 --- /dev/null +++ b/src/test_runner_stub.c @@ -0,0 +1,46 @@ +#include "global.h" +#include "test_runner.h" + +__attribute__((weak)) +const bool8 gTestRunnerEnabled = FALSE; + +// The Makefile patches gTestRunnerHeadless as part of make test. +// This allows us to open the ROM in an mgba with a UI and see the +// animations and messages play, which helps when debugging a test. +const bool8 gTestRunnerHeadless = FALSE; +const bool8 gTestRunnerSkipIsFail = FALSE; + +__attribute__((weak)) +void TestRunner_Battle_RecordAbilityPopUp(u32 battlerId, u32 ability) +{ +} + +__attribute__((weak)) +void TestRunner_Battle_RecordAnimation(u32 animType, u32 animId) +{ +} + +__attribute__((weak)) +void TestRunner_Battle_RecordHP(u32 battlerId, u32 oldHP, u32 newHP) +{ +} + +__attribute__((weak)) +void TestRunner_Battle_RecordMessage(const u8 *string) +{ +} + +__attribute__((weak)) +void TestRunner_Battle_RecordStatus1(u32 battlerId, u32 status1) +{ +} + +__attribute__((weak)) +void TestRunner_Battle_AfterLastTurn(void) +{ +} + +__attribute__((weak)) +void BattleTest_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType) +{ +} diff --git a/src/text_window.c b/src/text_window.c index 798b791ce..df0683729 100644 --- a/src/text_window.c +++ b/src/text_window.c @@ -93,7 +93,7 @@ const struct TilesPal *GetWindowFrameTilesPal(u8 id) void LoadMessageBoxGfx(u8 windowId, u16 destOffset, u8 palOffset) { LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gMessageBox_Gfx, 0x1C0, destOffset); - LoadPalette(GetOverworldTextboxPalettePtr(), palOffset, 0x20); + LoadPalette(GetOverworldTextboxPalettePtr(), palOffset, PLTT_SIZE_4BPP); } void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset) @@ -104,7 +104,7 @@ void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset) void LoadWindowGfx(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset) { LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), sWindowFrames[frameId].tiles, 0x120, destOffset); - LoadPalette(sWindowFrames[frameId].pal, palOffset, 0x20); + LoadPalette(sWindowFrames[frameId].pal, palOffset, PLTT_SIZE_4BPP); } void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palOffset) @@ -164,7 +164,7 @@ const u16 *GetTextWindowPalette(u8 id) switch (id) { case 0: - id = 0; + id = 0x00; break; case 1: id = 0x10; @@ -193,5 +193,5 @@ const u16 *GetOverworldTextboxPalettePtr(void) void LoadUserWindowBorderGfxOnBg(u8 bg, u16 destOffset, u8 palOffset) { LoadBgTiles(bg, sWindowFrames[gSaveBlock2Ptr->optionsWindowFrameType].tiles, 0x120, destOffset); - LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, palOffset, 0x20); + LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, palOffset, PLTT_SIZE_4BPP); } diff --git a/src/tileset_anims.c b/src/tileset_anims.c index fd3982ea1..12701fb5f 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -1168,7 +1168,7 @@ static void QueueAnimTiles_BattlePyramid_StatueShadow(u16 timer) static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) { CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); - BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); + BlendPalette(BG_PLTT_ID(8), 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) != TASK_NONE) { sSecondaryTilesetAnimCallback = TilesetAnim_BattleDome2; @@ -1181,7 +1181,7 @@ static void BlendAnimPalette_BattleDome_FloorLightsNoBlend(u16 timer) CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) == TASK_NONE) { - BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); + BlendPalette(BG_PLTT_ID(8), 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); if (!--sSecondaryTilesetAnimCounterMax) sSecondaryTilesetAnimCallback = NULL; } diff --git a/src/title_screen.c b/src/title_screen.c index 689c96863..bb73df5bc 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -548,7 +548,7 @@ void CB2_InitTitleScreen(void) // bg2 LZ77UnCompVram(gTitleScreenPokemonLogoGfx, (void *)(BG_CHAR_ADDR(0))); LZ77UnCompVram(gTitleScreenPokemonLogoTilemap, (void *)(BG_SCREEN_ADDR(9))); - LoadPalette(gTitleScreenBgPalettes, 0, 0x1E0); + LoadPalette(gTitleScreenBgPalettes, BG_PLTT_ID(0), 15 * PLTT_SIZE_4BPP); // bg3 LZ77UnCompVram(sTitleScreenRayquazaGfx, (void *)(BG_CHAR_ADDR(2))); LZ77UnCompVram(sTitleScreenRayquazaTilemap, (void *)(BG_SCREEN_ADDR(26))); @@ -563,7 +563,7 @@ void CB2_InitTitleScreen(void) LoadCompressedSpriteSheet(&sSpriteSheet_EmeraldVersion[0]); LoadCompressedSpriteSheet(&sSpriteSheet_PressStart[0]); LoadCompressedSpriteSheet(&sPokemonLogoShineSpriteSheet[0]); - LoadPalette(gTitleScreenEmeraldVersionPal, 0x100, 0x20); + LoadPalette(gTitleScreenEmeraldVersionPal, OBJ_PLTT_ID(0), PLTT_SIZE_4BPP); LoadSpritePalette(&sSpritePalette_PressStart[0]); gMain.state = 2; break; @@ -812,6 +812,6 @@ static void UpdateLegendaryMarkingColor(u8 frameNum) s32 b = 12; u16 color = RGB(r, g, b); - LoadPalette(&color, 0xEF, sizeof(color)); + LoadPalette(&color, BG_PLTT_ID(14) + 15, sizeof(color)); } } diff --git a/src/trade.c b/src/trade.c index 03a05681e..b1aa60e10 100644 --- a/src/trade.c +++ b/src/trade.c @@ -333,8 +333,8 @@ static void InitTradeMenu(void) gPaletteFade.bufferTransferDisabled = TRUE; SetVBlankCallback(VBlankCB_TradeMenu); - LoadPalette(gStandardMenuPalette, 0xF0, 20); - LoadPalette(gStandardMenuPalette, 0xD0, 20); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(15), PLTT_SIZEOF(10)); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(13), PLTT_SIZEOF(10)); ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sTradeMenuBgTemplates, ARRAY_COUNT(sTradeMenuBgTemplates)); SetBgTilemapBuffer(1, sTradeMenuData->tilemapBuffer); @@ -352,8 +352,8 @@ static void InitTradeMenu(void) } FillBgTilemapBufferRect(0, 0, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT, 15); - LoadUserWindowBorderGfx_(0, 20, 0xC0); - LoadUserWindowBorderGfx(2, 1, 0xE0); + LoadUserWindowBorderGfx_(0, 20, BG_PLTT_ID(12)); + LoadUserWindowBorderGfx(2, 1, BG_PLTT_ID(14)); LoadMonIconPalettes(); sTradeMenuData->bufferPartyState = 0; sTradeMenuData->tradeMenuFunc = 0; @@ -906,7 +906,7 @@ static void LoadTradeBgGfx(u8 state) switch (state) { case 0: - LoadPalette(gTradeMenu_Pal, 0, 0x60); + LoadPalette(gTradeMenu_Pal, BG_PLTT_ID(0), 3 * PLTT_SIZE_4BPP); LoadBgTiles(1, gTradeMenu_Gfx, 0x1280, 0); CopyToBgTilemapBufferRect_ChangePalette(1, gTradeMenu_Tilemap, 0, 0, 32, 20, 0); LoadBgTilemap(2, sTradeStripesBG2Tilemap, 0x800, 0); @@ -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 (gSpeciesInfo[playerSpecies2].type1 != requestedType - && gSpeciesInfo[playerSpecies2].type2 != requestedType) + if (gSpeciesInfo[playerSpecies2].types[0] != requestedType + && gSpeciesInfo[playerSpecies2].types[1] != requestedType) return UR_TRADE_MSG_NOT_MON_PARTNER_WANTS; } @@ -2617,7 +2617,7 @@ static void SpriteCB_LinkMonShadow(struct Sprite *sprite) if (++sprite->data[0] == 12) sprite->data[0] = 0; - LoadPalette(&sLinkMonShadow_Pal[sprite->data[0]], (sprite->oam.paletteNum + 16) * 16 + 4, 2); + LoadPalette(&sLinkMonShadow_Pal[sprite->data[0]], OBJ_PLTT_ID2(sprite->oam.paletteNum) + 4, PLTT_SIZEOF(1)); } } @@ -2924,12 +2924,12 @@ static void InitTradeBgInternal(void) DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); LZDecompressWram(gBattleTextboxTilemap, gDecompressionBuffer); CopyToBgTilemapBuffer(0, gDecompressionBuffer, 0x800, 0); - LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20); + LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); InitWindows(sTradeSequenceWindowTemplates); DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); LZDecompressWram(gBattleTextboxTilemap, gDecompressionBuffer); CopyToBgTilemapBuffer(0, gDecompressionBuffer, 0x800, 0); - LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20); + LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), PLTT_SIZE_4BPP); } static void CB2_InGameTrade(void) @@ -3109,7 +3109,7 @@ static void SetTradeSequenceBgGpuRegs(u8 state) BGCNT_16COLOR | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256); - LoadPalette(gTradeGba2_Pal, 16, 0x60); + LoadPalette(gTradeGba2_Pal, BG_PLTT_ID(1), 3 * PLTT_SIZE_4BPP); DmaCopyLarge16(3, gTradeGba_Gfx, (void *) BG_CHAR_ADDR(1), 0x1420, 0x1000); DmaCopy16Defvars(3, gTradePlatform_Tilemap, (void *) BG_SCREEN_ADDR(18), 0x1000); break; @@ -3166,7 +3166,7 @@ static void SetTradeSequenceBgGpuRegs(u8 state) } break; case 3: - LoadPalette(sWirelessSignalNone_Pal, 48, 0x20); + LoadPalette(sWirelessSignalNone_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); LZ77UnCompVram(sWirelessSignal_Gfx, (void *) BG_CHAR_ADDR(1)); LZ77UnCompVram(sWirelessSignal_Tilemap, (void *) BG_SCREEN_ADDR(18)); sTradeData->bg2vofs = 80; @@ -3245,7 +3245,7 @@ static void SetTradeSequenceBgGpuRegs(u8 state) BGCNT_16COLOR | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256); - LoadPalette(gTradeGba2_Pal, 16, 0x60); + LoadPalette(gTradeGba2_Pal, BG_PLTT_ID(1), 3 * PLTT_SIZE_4BPP); DmaCopyLarge16(3, gTradeGba_Gfx, (void *) BG_CHAR_ADDR(1), 0x1420, 0x1000); DmaCopy16Defvars(3, gTradePlatform_Tilemap, (void *) BG_SCREEN_ADDR(18), 0x1000); break; @@ -4858,16 +4858,16 @@ static void Task_AnimateWirelessSignal(u8 taskId) if (!signalComingBack) { if (paletteIdx == 256) - LoadPalette(sWirelessSignalNone_Pal, 0x30, 32); + LoadPalette(sWirelessSignalNone_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); else - LoadPalette(&sWirelessSignalSend_Pal[paletteIdx], 0x30, 32); + LoadPalette(&sWirelessSignalSend_Pal[paletteIdx], BG_PLTT_ID(3), PLTT_SIZE_4BPP); } else { if (paletteIdx == 256) - LoadPalette(sWirelessSignalNone_Pal, 0x30, 32); + LoadPalette(sWirelessSignalNone_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); else - LoadPalette(&sWirelessSignalRecv_Pal[paletteIdx], 0x30, 32); + LoadPalette(&sWirelessSignalRecv_Pal[paletteIdx], BG_PLTT_ID(3), PLTT_SIZE_4BPP); } if (sWirelessSignalTiming[idx][0] == 0 && counter == 0) diff --git a/src/trainer_card.c b/src/trainer_card.c index 04b8f686a..4da1d938a 100755 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -162,27 +162,27 @@ static bool8 Task_EndCardFlip(struct Task *task); static void UpdateCardFlipRegs(u16); static void LoadMonIconGfx(void); -static const u32 sTrainerCardStickers_Gfx[] = INCBIN_U32("graphics/trainer_card/stickers_fr.4bpp.lz"); +static const u32 sTrainerCardStickers_Gfx[] = INCBIN_U32("graphics/trainer_card/frlg/stickers.4bpp.lz"); static const u16 sUnused_Pal[] = INCBIN_U16("graphics/trainer_card/unused.gbapal"); -static const u16 sHoennTrainerCard1Star_Pal[] = INCBIN_U16("graphics/trainer_card/one_star.gbapal"); -static const u16 sKantoTrainerCard1Star_Pal[] = INCBIN_U16("graphics/trainer_card/one_star_fr.gbapal"); -static const u16 sHoennTrainerCard2Star_Pal[] = INCBIN_U16("graphics/trainer_card/two_stars.gbapal"); -static const u16 sKantoTrainerCard2Star_Pal[] = INCBIN_U16("graphics/trainer_card/two_stars_fr.gbapal"); -static const u16 sHoennTrainerCard3Star_Pal[] = INCBIN_U16("graphics/trainer_card/three_stars.gbapal"); -static const u16 sKantoTrainerCard3Star_Pal[] = INCBIN_U16("graphics/trainer_card/three_stars_fr.gbapal"); -static const u16 sHoennTrainerCard4Star_Pal[] = INCBIN_U16("graphics/trainer_card/four_stars.gbapal"); -static const u16 sKantoTrainerCard4Star_Pal[] = INCBIN_U16("graphics/trainer_card/four_stars_fr.gbapal"); +static const u16 sHoennTrainerCardBronze_Pal[] = INCBIN_U16("graphics/trainer_card/bronze.gbapal"); +static const u16 sKantoTrainerCardGreen_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/green.gbapal"); +static const u16 sHoennTrainerCardCopper_Pal[] = INCBIN_U16("graphics/trainer_card/copper.gbapal"); +static const u16 sKantoTrainerCardBronze_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/bronze.gbapal"); +static const u16 sHoennTrainerCardSilver_Pal[] = INCBIN_U16("graphics/trainer_card/silver.gbapal"); +static const u16 sKantoTrainerCardSilver_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/silver.gbapal"); +static const u16 sHoennTrainerCardGold_Pal[] = INCBIN_U16("graphics/trainer_card/gold.gbapal"); +static const u16 sKantoTrainerCardGold_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/gold.gbapal"); static const u16 sHoennTrainerCardFemaleBg_Pal[] = INCBIN_U16("graphics/trainer_card/female_bg.gbapal"); -static const u16 sKantoTrainerCardFemaleBg_Pal[] = INCBIN_U16("graphics/trainer_card/female_bg_fr.gbapal"); +static const u16 sKantoTrainerCardFemaleBg_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/female_bg.gbapal"); static const u16 sHoennTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/badges.gbapal"); -static const u16 sKantoTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/badges_fr.gbapal"); -static const u16 sTrainerCardGold_Pal[] = INCBIN_U16("graphics/trainer_card/gold.gbapal"); -static const u16 sTrainerCardSticker1_Pal[] = INCBIN_U16("graphics/trainer_card/stickers_fr1.gbapal"); -static const u16 sTrainerCardSticker2_Pal[] = INCBIN_U16("graphics/trainer_card/stickers_fr2.gbapal"); -static const u16 sTrainerCardSticker3_Pal[] = INCBIN_U16("graphics/trainer_card/stickers_fr3.gbapal"); -static const u16 sTrainerCardSticker4_Pal[] = INCBIN_U16("graphics/trainer_card/stickers_fr4.gbapal"); +static const u16 sKantoTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/badges.gbapal"); +static const u16 sTrainerCardStar_Pal[] = INCBIN_U16("graphics/trainer_card/star.gbapal"); +static const u16 sTrainerCardSticker1_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/stickers1.gbapal"); +static const u16 sTrainerCardSticker2_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/stickers2.gbapal"); +static const u16 sTrainerCardSticker3_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/stickers3.gbapal"); +static const u16 sTrainerCardSticker4_Pal[] = INCBIN_U16("graphics/trainer_card/frlg/stickers4.gbapal"); static const u32 sHoennTrainerCardBadges_Gfx[] = INCBIN_U32("graphics/trainer_card/badges.4bpp.lz"); -static const u32 sKantoTrainerCardBadges_Gfx[] = INCBIN_U32("graphics/trainer_card/badges_fr.4bpp.lz"); +static const u32 sKantoTrainerCardBadges_Gfx[] = INCBIN_U32("graphics/trainer_card/frlg/badges.4bpp.lz"); static const struct BgTemplate sTrainerCardBgTemplates[4] = { @@ -256,22 +256,22 @@ static const struct WindowTemplate sTrainerCardWindowTemplates[] = DUMMY_WIN_TEMPLATE }; -static const u16 *const sHoennTrainerCardStarPals[] = +static const u16 *const sHoennTrainerCardPals[] = { - gHoennTrainerCard0Star_Pal, - sHoennTrainerCard1Star_Pal, - sHoennTrainerCard2Star_Pal, - sHoennTrainerCard3Star_Pal, - sHoennTrainerCard4Star_Pal, + gHoennTrainerCardGreen_Pal, // Default (0 stars) + sHoennTrainerCardBronze_Pal, // 1 star + sHoennTrainerCardCopper_Pal, // 2 stars + sHoennTrainerCardSilver_Pal, // 3 stars + sHoennTrainerCardGold_Pal, // 4 stars }; -static const u16 *const sKantoTrainerCardStarPals[] = +static const u16 *const sKantoTrainerCardPals[] = { - gKantoTrainerCard0Star_Pal, - sKantoTrainerCard1Star_Pal, - sKantoTrainerCard2Star_Pal, - sKantoTrainerCard3Star_Pal, - sKantoTrainerCard4Star_Pal, + gKantoTrainerCardBlue_Pal, // Default (0 stars) + sKantoTrainerCardGreen_Pal, // 1 star + sKantoTrainerCardBronze_Pal, // 2 stars + sKantoTrainerCardSilver_Pal, // 3 stars + sKantoTrainerCardGold_Pal, // 4 stars }; static const u8 sTrainerCardTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}; @@ -1372,7 +1372,7 @@ static void LoadMonIconGfx(void) TintPalette_SepiaTone(sData->monIconPal, 96); break; } - LoadPalette(sData->monIconPal, 80, 192); + LoadPalette(sData->monIconPal, BG_PLTT_ID(5), 6 * PLTT_SIZE_4BPP); for (i = 0; i < PARTY_SIZE; i++) { @@ -1399,10 +1399,10 @@ static void PrintStickersOnCard(void) static void LoadStickerGfx(void) { - LoadPalette(sTrainerCardSticker1_Pal, 176, 32); - LoadPalette(sTrainerCardSticker2_Pal, 192, 32); - LoadPalette(sTrainerCardSticker3_Pal, 208, 32); - LoadPalette(sTrainerCardSticker4_Pal, 224, 32); + LoadPalette(sTrainerCardSticker1_Pal, BG_PLTT_ID(11), PLTT_SIZE_4BPP); + LoadPalette(sTrainerCardSticker2_Pal, BG_PLTT_ID(12), PLTT_SIZE_4BPP); + LoadPalette(sTrainerCardSticker3_Pal, BG_PLTT_ID(13), PLTT_SIZE_4BPP); + LoadPalette(sTrainerCardSticker4_Pal, BG_PLTT_ID(14), PLTT_SIZE_4BPP); LoadBgTiles(3, sData->stickerTiles, 1024, 128); } @@ -1425,19 +1425,19 @@ static u8 SetCardBgsAndPals(void) case 2: if (sData->cardType != CARD_TYPE_FRLG) { - LoadPalette(sHoennTrainerCardStarPals[sData->trainerCard.stars], 0, 96); - LoadPalette(sHoennTrainerCardBadges_Pal, 48, 32); + LoadPalette(sHoennTrainerCardPals[sData->trainerCard.stars], BG_PLTT_ID(0), 3 * PLTT_SIZE_4BPP); + LoadPalette(sHoennTrainerCardBadges_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); if (sData->trainerCard.gender != MALE) - LoadPalette(sHoennTrainerCardFemaleBg_Pal, 16, 32); + LoadPalette(sHoennTrainerCardFemaleBg_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); } else { - LoadPalette(sKantoTrainerCardStarPals[sData->trainerCard.stars], 0, 96); - LoadPalette(sKantoTrainerCardBadges_Pal, 48, 32); + LoadPalette(sKantoTrainerCardPals[sData->trainerCard.stars], BG_PLTT_ID(0), 3 * PLTT_SIZE_4BPP); + LoadPalette(sKantoTrainerCardBadges_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); if (sData->trainerCard.gender != MALE) - LoadPalette(sKantoTrainerCardFemaleBg_Pal, 16, 32); + LoadPalette(sKantoTrainerCardFemaleBg_Pal, BG_PLTT_ID(1), PLTT_SIZE_4BPP); } - LoadPalette(sTrainerCardGold_Pal, 64, 32); + LoadPalette(sTrainerCardStar_Pal, BG_PLTT_ID(4), PLTT_SIZE_4BPP); break; case 3: SetBgTilemapBuffer(0, sData->cardTilemapBuffer); diff --git a/src/trainer_hill.c b/src/trainer_hill.c index ac73c3fae..f6ee9e818 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -951,7 +951,7 @@ static void SetAllTrainerFlags(void) void TryLoadTrainerHillEReaderPalette(void) { if (OnTrainerHillEReaderChallengeFloor() == TRUE) - LoadPalette(sEReader_Pal, 0x70, 0x20); + LoadPalette(sEReader_Pal, BG_PLTT_ID(7), PLTT_SIZE_4BPP); } static void GetGameSaved(void) diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index dcc664718..7707e59cc 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -83,7 +83,7 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 if (paletteTag == TAG_NONE) { sCreatingSpriteTemplate.paletteTag = TAG_NONE; - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } else { @@ -96,7 +96,7 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 if (paletteTag == TAG_NONE) { sCreatingSpriteTemplate.paletteTag = TAG_NONE; - LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, 0x100 + paletteSlot * 0x10, 0x20); + LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } else { @@ -109,9 +109,9 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 static void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer) { if (!isTrainer) - LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); else - LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, paletteSlot * 0x10, 0x20); + LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } static void AssignSpriteAnimsTable(bool8 isTrainer) diff --git a/src/trainer_see.c b/src/trainer_see.c index 41534a55d..9496e119b 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -216,7 +216,7 @@ bool8 CheckForTrainersWantingBattle(void) if (gNoOfApproachingTrainers > 1) break; - if (GetMonsStateToDoubles_2() != 0) // one trainer found and cant have a double battle + if (GetMonsStateToDoubles_2() != PLAYER_HAS_TWO_USABLE_MONS) // one trainer found and cant have a double battle break; } @@ -283,7 +283,7 @@ static u8 CheckTrainer(u8 objectEventId) || scriptPtr[1] == TRAINER_BATTLE_REMATCH_DOUBLE || scriptPtr[1] == TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE) { - if (GetMonsStateToDoubles_2() != 0) + if (GetMonsStateToDoubles_2() != PLAYER_HAS_TWO_USABLE_MONS) return 0; numTrainers = 2; diff --git a/src/union_room.c b/src/union_room.c index 2a170e304..c622ee04a 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -2438,7 +2438,7 @@ void RunUnionRoom(void) uroom->unreadPlayerId = 0; gSpecialVar_Result = 0; - ListMenuLoadStdPalAt(0xD0, 1); + ListMenuLoadStdPalAt(BG_PLTT_ID(13), 1); } static u16 ReadAsU16(const u8 *ptr) @@ -4187,7 +4187,7 @@ static s32 IsRequestedTradeInPlayerParty(u32 type, u32 species) for (i = 0; i < gPlayerPartyCount; i++) { species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); - if (gSpeciesInfo[species].type1 == type || gSpeciesInfo[species].type2 == type) + if (gSpeciesInfo[species].types[0] == type || gSpeciesInfo[species].types[1] == type) return UR_TRADE_MATCH; } return UR_TRADE_NOTYPE; diff --git a/src/union_room_battle.c b/src/union_room_battle.c index ed8a52ef5..4d5f7d827 100644 --- a/src/union_room_battle.c +++ b/src/union_room_battle.c @@ -43,7 +43,7 @@ static const struct WindowTemplate sWindowTemplates[] = { .tilemapTop = 15, .width = 24, .height = 4, - .paletteNum = 0xE, + .paletteNum = 14, .baseBlock = 0x014 }, DUMMY_WIN_TEMPLATE @@ -130,8 +130,8 @@ void CB2_UnionRoomBattle(void) FillWindowPixelBuffer(0, PIXEL_FILL(0)); FillWindowPixelBuffer(0, PIXEL_FILL(1)); FillBgTilemapBufferRect(0, 0, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT, 0xF); - LoadUserWindowBorderGfx(0, 1, 0xD0); - LoadUserWindowBorderGfx_(0, 1, 0xD0); + LoadUserWindowBorderGfx(0, 1, BG_PLTT_ID(13)); + LoadUserWindowBorderGfx_(0, 1, BG_PLTT_ID(13)); Menu_LoadStdPal(); SetVBlankCallback(VBlankCB_UnionRoomBattle); gMain.state++; diff --git a/src/union_room_chat.c b/src/union_room_chat.c index eb902fbe6..af4ec2721 100755 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -3055,8 +3055,8 @@ static void ClearBg0(void) static void LoadChatWindowBorderGfx(void) { - LoadPalette(gUnionRoomChat_Window_Pal2, 0x70, 0x20); - LoadPalette(gUnionRoomChat_Window_Pal1, 0xC0, 0x20); + LoadPalette(gUnionRoomChat_Window_Pal2, BG_PLTT_ID(7), PLTT_SIZE_4BPP); + LoadPalette(gUnionRoomChat_Window_Pal1, BG_PLTT_ID(12), PLTT_SIZE_4BPP); DecompressAndCopyTileDataToVram(1, gUnionRoomChat_Border_Gfx, 0, 0, 0); CopyToBgTilemapBuffer(1, gUnionRoomChat_Border_Tilemap, 0, 0); CopyBgTilemapBufferToVram(1); @@ -3066,7 +3066,7 @@ static void LoadChatWindowGfx(void) { u8 *ptr; - LoadPalette(gUnionRoomChat_Background_Pal, 0, 0x20); + LoadPalette(gUnionRoomChat_Background_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); ptr = DecompressAndCopyTileDataToVram(2, gUnionRoomChat_Background_Gfx, 0, 0, 0); if (ptr) { @@ -3080,13 +3080,13 @@ static void LoadChatWindowGfx(void) static void LoadChatUnkPalette(void) { - LoadPalette(sUnk_Palette1, 0x80, sizeof(sUnk_Palette1)); + LoadPalette(sUnk_Palette1, BG_PLTT_ID(8), sizeof(sUnk_Palette1)); RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, 1); } static void LoadChatMessagesWindow(void) { - LoadPalette(sUnk_Palette2, 0xF0, sizeof(sUnk_Palette2)); + LoadPalette(sUnk_Palette2, BG_PLTT_ID(15), sizeof(sUnk_Palette2)); PutWindowTilemap(0); FillWindowPixelBuffer(0, PIXEL_FILL(1)); CopyWindowToVram(0, COPYWIN_FULL); @@ -3117,9 +3117,9 @@ static void LoadTextEntryWindow(void) static void LoadKeyboardSwapWindow(void) { FillWindowPixelBuffer(3, PIXEL_FILL(1)); - LoadUserWindowBorderGfx(3, 1, 0xD0); - LoadUserWindowBorderGfx_(3, 0xA, 0x20); - LoadPalette(gStandardMenuPalette, 0xE0, 0x20); + LoadUserWindowBorderGfx(3, 1, BG_PLTT_ID(13)); + LoadUserWindowBorderGfx_(3, 0xA, BG_PLTT_ID(2)); + LoadPalette(gStandardMenuPalette, BG_PLTT_ID(14), PLTT_SIZE_4BPP); } static void InitScanlineEffect(void) @@ -3202,7 +3202,7 @@ static void SetRegisteredTextPalette(bool32 registering) { const u16 *palette = &sUnionRoomChatInterfacePal[registering * 2 + 1]; u8 index = IndexOfSpritePaletteTag(PALTAG_INTERFACE); - LoadPalette(palette, index * 16 + 0x101, 4); + LoadPalette(palette, OBJ_PLTT_ID(index) + 1, PLTT_SIZEOF(2)); } static void StartKeyboardCursorAnim(void) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 2f16f220a..be6fc8934 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -505,7 +505,7 @@ static void LoadUsePokeblockMenu(void) InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates)); InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 0x97, 0xE0); + LoadUserWindowBorderGfx(0, 0x97, BG_PLTT_ID(14)); sInfo->mainState++; break; case 4: @@ -1233,13 +1233,13 @@ static void UpdateMonPic(u8 loadId) gSprites[sMenu->curMonSpriteId].callback = SpriteCB_MonPic; gSprites[sMenu->curMonSpriteId].y2 -= 34; sMenu->curMonTileStart = (void *)(OBJ_VRAM0 + (sMenu->curMonSheet * 32)); - sMenu->curMonPalette = (sMenu->curMonPalette * 16) + 0x100; + sMenu->curMonPalette = OBJ_PLTT_ID(sMenu->curMonPalette); } } else { Dma3CopyLarge16_(sMenu->partySheets[loadId], sMenu->curMonTileStart, MON_PIC_SIZE); - LoadPalette(sMenu->partyPalettes[loadId], sMenu->curMonPalette, 32); + LoadPalette(sMenu->partyPalettes[loadId], sMenu->curMonPalette, PLTT_SIZE_4BPP); } } @@ -1340,7 +1340,7 @@ static bool8 LoadUsePokeblockMenuGfx(void) LoadBgTilemap(3, sMonFrame_TilemapPtr, 1280, 0); break; case 5: - LoadPalette(sMonFrame_Pal, 208, 32); + LoadPalette(sMonFrame_Pal, BG_PLTT_ID(13), PLTT_SIZE_4BPP); sMenu->curMonXOffset = -80; break; case 6: @@ -1348,7 +1348,7 @@ static bool8 LoadUsePokeblockMenuGfx(void) break; case 7: LZ77UnCompVram(gUsePokeblockGraph_Tilemap, sGraph_Tilemap); - LoadPalette(gUsePokeblockGraph_Pal, 32, 32); + LoadPalette(gUsePokeblockGraph_Pal, BG_PLTT_ID(2), PLTT_SIZE_4BPP); break; case 8: LoadBgTiles(1, sGraph_Gfx, 6656, 160 << 2); @@ -1363,8 +1363,8 @@ static bool8 LoadUsePokeblockMenuGfx(void) break; case 11: LoadBgTilemap(2, sMenu->tilemapBuffer, 1280, 0); - LoadPalette(gConditionGraphData_Pal, 48, 32); - LoadPalette(gConditionText_Pal, 240, 32); + LoadPalette(gConditionGraphData_Pal, BG_PLTT_ID(3), PLTT_SIZE_4BPP); + LoadPalette(gConditionText_Pal, BG_PLTT_ID(15), PLTT_SIZE_4BPP); ConditionGraph_InitWindow(2); break; default: diff --git a/src/wallclock.c b/src/wallclock.c index 5e0fae3a1..571748d11 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -644,17 +644,17 @@ static void LoadWallClockGraphics(void) LZ77UnCompVram(gWallClock_Gfx, (void *)VRAM); if (gSpecialVar_0x8004 == MALE) - LoadPalette(gWallClockMale_Pal, 0, 32); + LoadPalette(gWallClockMale_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); else - LoadPalette(gWallClockFemale_Pal, 0, 32); + LoadPalette(gWallClockFemale_Pal, BG_PLTT_ID(0), PLTT_SIZE_4BPP); - LoadPalette(GetOverworldTextboxPalettePtr(), 0xe0, 32); - LoadPalette(sTextPrompt_Pal, 0xc0, 8); + LoadPalette(GetOverworldTextboxPalettePtr(), BG_PLTT_ID(14), PLTT_SIZE_4BPP); + LoadPalette(sTextPrompt_Pal, BG_PLTT_ID(12), PLTT_SIZEOF(4)); ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates)); InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); - LoadUserWindowBorderGfx(0, 0x250, 0xd0); + LoadUserWindowBorderGfx(0, 0x250, BG_PLTT_ID(13)); ClearScheduledBgCopiesToVram(); ScanlineEffect_Stop(); ResetTasks(); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 2c9730cd5..d228b87a1 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -1030,7 +1030,7 @@ static bool8 TryGetRandomWildMonIndexByType(const struct WildPokemon *wildMon, u for (validMonCount = 0, i = 0; i < numMon; i++) { - if (gSpeciesInfo[wildMon[i].species].type1 == type || gSpeciesInfo[wildMon[i].species].type2 == type) + if (gSpeciesInfo[wildMon[i].species].types[0] == type || gSpeciesInfo[wildMon[i].species].types[1] == type) validIndexes[validMonCount++] = i; } diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index d18df8bc7..14ee1cf99 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -211,10 +211,10 @@ static void CB2_InitWirelessCommunicationScreen(void) ChangeBgY(0, 0, BG_COORD_SET); ChangeBgX(1, 0, BG_COORD_SET); ChangeBgY(1, 0, BG_COORD_SET); - LoadPalette(sPalettes, 0x00, 0x20); + LoadPalette(sPalettes, BG_PLTT_ID(0), PLTT_SIZE_4BPP); Menu_LoadStdPalAt(0xF0); DynamicPlaceholderTextUtil_Reset(); - FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x0F); + FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 15); CopyBgTilemapBufferToVram(1); SetMainCallback2(CB2_RunWirelessCommunicationScreen); RunTasks(); @@ -248,7 +248,7 @@ static void CyclePalette(s16 * counter, s16 * palIdx) *counter = 0; } idx = *palIdx + 2; // +2 skips over default.pal and the empty black palette after it - LoadPalette(sPalettes[idx], 0, 16); + LoadPalette(sPalettes[idx], BG_PLTT_ID(0), PLTT_SIZEOF(8)); } static void PrintHeaderTexts(void) diff --git a/src/wonder_news.c b/src/wonder_news.c index e083575d9..4b5f32d1d 100644 --- a/src/wonder_news.c +++ b/src/wonder_news.c @@ -3,30 +3,22 @@ #include "random.h" #include "event_data.h" #include "wonder_news.h" +#include "constants/items.h" -/* - Wonder News related functions. - Because this feature is largely unused, the names in here are - mostly nebulous and without a real indication of purpose. -*/ +// Every 4th reward for sending Wonder News to a link partner is a "big" reward. +#define MAX_SENT_REWARD 4 -enum { - NEWS_VAL_INVALID, - NEWS_VAL_RECV_FRIEND, - NEWS_VAL_RECV_WIRELESS, - NEWS_VAL_NONE, - NEWS_VAL_SENT, - NEWS_VAL_SENT_MAX, - NEWS_VAL_GET_MAX, -}; +// Only up to 5 rewards can be received in a short period. After this the player +// must take 500 steps before any more rewards can be received. +#define MAX_REWARD 5 -static u32 GetNewsId(struct WonderNewsMetadata *); -static void IncrementGetNewsCounter(struct WonderNewsMetadata *); -static u32 GetNewsValByNewsType(struct WonderNewsMetadata *); -static void IncrementSentNewsCounter(struct WonderNewsMetadata *); -static void ResetSentNewsCounter(struct WonderNewsMetadata *); +static u32 GetRewardItem(struct WonderNewsMetadata *); +static u32 GetRewardType(struct WonderNewsMetadata *); +static void IncrementRewardCounter(struct WonderNewsMetadata *); +static void IncrementSentRewardCounter(struct WonderNewsMetadata *); +static void ResetSentRewardCounter(struct WonderNewsMetadata *); -void GenerateRandomWonderNews(u32 newsType) +void WonderNews_SetReward(u32 newsType) { struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata(); @@ -37,124 +29,128 @@ void GenerateRandomWonderNews(u32 newsType) break; case WONDER_NEWS_RECV_FRIEND: case WONDER_NEWS_RECV_WIRELESS: - data->rand = (Random() % 15) + 16; + // Random berry between ITEM_RAZZ_BERRY and ITEM_NOMEL_BERRY + data->berry = (Random() % 15) + ITEM_TO_BERRY(ITEM_RAZZ_BERRY); break; case WONDER_NEWS_SENT: - data->rand = (Random() % 15) + 1; + // Random berry between ITEM_CHERI_BERRY and ITEM_IAPAPA_BERRY + data->berry = (Random() % 15) + ITEM_TO_BERRY(ITEM_CHERI_BERRY); break; } } -void InitSavedWonderNews(void) +void WonderNews_Reset(void) { struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata(); data->newsType = WONDER_NEWS_NONE; - data->sentCounter = 0; - data->getCounter = 0; - data->rand = 0; - VarSet(VAR_WONDER_NEWS_COUNTER, 0); + data->sentRewardCounter = 0; + data->rewardCounter = 0; + data->berry = 0; + VarSet(VAR_WONDER_NEWS_STEP_COUNTER, 0); } -// Unused -static void TryIncrementWonderNewsVar(void) +// Only used in FRLG +void WonderNews_IncrementStepCounter(void) { - u16 *var = GetVarPointer(VAR_WONDER_NEWS_COUNTER); + u16 *stepCounter = GetVarPointer(VAR_WONDER_NEWS_STEP_COUNTER); struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata(); - if (data->getCounter > 4 && ++(*var) >= 500) + // If the player has reached the reward limit, start counting steps. + // When they reach 500 steps reset the reward counter to allow them to + // receive rewards again. + if (data->rewardCounter >= MAX_REWARD && ++(*stepCounter) >= 500) { - data->getCounter = 0; - *var = 0; + data->rewardCounter = 0; + *stepCounter = 0; } } -// Unused -u16 RetrieveWonderNewsVal(void) +// Only used in FRLG +u16 WonderNews_GetRewardInfo(void) { u16 *result = &gSpecialVar_Result; struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata(); - u16 newsVal; + u16 rewardType; // Checks if Mystery Event is enabled, not Mystery Gift? if (!IsMysteryEventEnabled() || !ValidateSavedWonderNews()) - return 0; + return NEWS_REWARD_NONE; - newsVal = GetNewsValByNewsType(data); + rewardType = GetRewardType(data); - switch (newsVal) + switch (rewardType) { - case NEWS_VAL_RECV_FRIEND: - *result = GetNewsId(data); + case NEWS_REWARD_RECV_SMALL: + case NEWS_REWARD_RECV_BIG: + *result = GetRewardItem(data); break; - case NEWS_VAL_RECV_WIRELESS: - *result = GetNewsId(data); + case NEWS_REWARD_SENT_SMALL: + *result = GetRewardItem(data); + IncrementSentRewardCounter(data); break; - case NEWS_VAL_SENT: - *result = GetNewsId(data); - IncrementSentNewsCounter(data); + case NEWS_REWARD_SENT_BIG: + *result = GetRewardItem(data); + ResetSentRewardCounter(data); break; - case NEWS_VAL_SENT_MAX: - *result = GetNewsId(data); - ResetSentNewsCounter(data); - break; - case NEWS_VAL_INVALID: - case NEWS_VAL_NONE: - case NEWS_VAL_GET_MAX: + case NEWS_REWARD_NONE: + case NEWS_REWARD_WAITING: + case NEWS_REWARD_AT_MAX: break; } - return newsVal; + return rewardType; } -static u32 GetNewsId(struct WonderNewsMetadata *data) +static u32 GetRewardItem(struct WonderNewsMetadata *data) { - u32 id; + u32 itemId; data->newsType = WONDER_NEWS_NONE; - id = data->rand + 132; - data->rand = 0; - IncrementGetNewsCounter(data); - return id; + itemId = data->berry + FIRST_BERRY_INDEX - 1; + data->berry = 0; + IncrementRewardCounter(data); + return itemId; } -static void ResetSentNewsCounter(struct WonderNewsMetadata *data) +static void ResetSentRewardCounter(struct WonderNewsMetadata *data) { - data->sentCounter = 0; + data->sentRewardCounter = 0; } -static void IncrementSentNewsCounter(struct WonderNewsMetadata *data) +// Track number of times a reward was received (or attmepted to receive) for sending Wonder News to a link partner. +static void IncrementSentRewardCounter(struct WonderNewsMetadata *data) { - data->sentCounter++; - if (data->sentCounter > 4) - data->sentCounter = 4; + data->sentRewardCounter++; + if (data->sentRewardCounter > MAX_SENT_REWARD) + data->sentRewardCounter = MAX_SENT_REWARD; } -static void IncrementGetNewsCounter(struct WonderNewsMetadata *data) +static void IncrementRewardCounter(struct WonderNewsMetadata *data) { - data->getCounter++; - if (data->getCounter > 5) - data->getCounter = 5; + data->rewardCounter++; + if (data->rewardCounter > MAX_REWARD) + data->rewardCounter = MAX_REWARD; } -static u32 GetNewsValByNewsType(struct WonderNewsMetadata *data) +static u32 GetRewardType(struct WonderNewsMetadata *data) { - if (data->getCounter == 5) - return NEWS_VAL_GET_MAX; + if (data->rewardCounter == MAX_REWARD) + return NEWS_REWARD_AT_MAX; switch (data->newsType) { case WONDER_NEWS_NONE: - return NEWS_VAL_NONE; + return NEWS_REWARD_WAITING; case WONDER_NEWS_RECV_FRIEND: - return NEWS_VAL_RECV_FRIEND; + return NEWS_REWARD_RECV_SMALL; case WONDER_NEWS_RECV_WIRELESS: - return NEWS_VAL_RECV_WIRELESS; + return NEWS_REWARD_RECV_BIG; case WONDER_NEWS_SENT: - if (data->sentCounter < 3) - return NEWS_VAL_SENT; - return NEWS_VAL_SENT_MAX; + if (data->sentRewardCounter < MAX_SENT_REWARD - 1) + return NEWS_REWARD_SENT_SMALL; + return NEWS_REWARD_SENT_BIG; default: AGB_ASSERT(0); - return NEWS_VAL_INVALID; + return NEWS_REWARD_NONE; } } diff --git a/test/ability_blaze.c b/test/ability_blaze.c new file mode 100644 index 000000000..259b863ec --- /dev/null +++ b/test/ability_blaze.c @@ -0,0 +1,20 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Blaze boosts Fire-type moves in a pinch", s16 damage) +{ + u16 hp; + PARAMETRIZE { hp = 99; } + PARAMETRIZE { hp = 33; } + GIVEN { + ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); + PLAYER(SPECIES_CHARMANDER) { Ability(ABILITY_BLAZE); MaxHP(99); HP(hp); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EMBER); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_GT(results[1].damage, results[0].damage); + } +} diff --git a/test/ability_cute_charm.c b/test/ability_cute_charm.c new file mode 100644 index 000000000..5e089efdf --- /dev/null +++ b/test/ability_cute_charm.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test_battle.h" + +// TODO: Currently PASSES_RANDOMLY is incapable of testing Cute Charm +// because it only activates 33% of the time, but we only want to +// measure the 50% of the time that the infatuation prevents our move. +SINGLE_BATTLE_TEST("Cute Charm inflicts infatuation on contact") +{ + u32 move; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); + ASSUME(!(gBattleMoves[MOVE_SWIFT].flags & FLAG_MAKES_CONTACT)); + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); } + OPPONENT(SPECIES_CLEFAIRY) { Gender(MON_FEMALE); Ability(ABILITY_CUTE_CHARM); } + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, move); } + } SCENE { + if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) { + ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); + MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); + MESSAGE("Wobbuffet is in love with Foe Clefairy!"); + } else { + NOT ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); + NOT MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); + NOT MESSAGE("Wobbuffet is in love with Foe Clefairy!"); + } + } +} + +SINGLE_BATTLE_TEST("Cute Charm cannot infatuate same gender") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); } + OPPONENT(SPECIES_CLEFAIRY) { Gender(MON_MALE); Ability(ABILITY_CUTE_CHARM); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + NOT ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + } +} diff --git a/test/ability_flame_body.c b/test/ability_flame_body.c new file mode 100644 index 000000000..303337693 --- /dev/null +++ b/test/ability_flame_body.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Flame Body inflicts burn on contact") +{ + u32 move; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); + ASSUME(!(gBattleMoves[MOVE_SWIFT].flags & FLAG_MAKES_CONTACT)); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MAGMAR) { Ability(ABILITY_FLAME_BODY); } + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) { + ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); + MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); + STATUS_ICON(player, burn: TRUE); + } else { + NOT ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); + NOT MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); + NOT STATUS_ICON(player, burn: TRUE); + } + } +} diff --git a/test/ability_immunity.c b/test/ability_immunity.c new file mode 100644 index 000000000..fea2eb522 --- /dev/null +++ b/test/ability_immunity.c @@ -0,0 +1,47 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Immunity prevents Poison Sting poison") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_POISON_STING].effect == EFFECT_POISON_HIT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SNORLAX) { Ability(ABILITY_IMMUNITY); } + } WHEN { + TURN { MOVE(player, MOVE_POISON_STING); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_STING, player); + NOT STATUS_ICON(opponent, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Immunity prevents Toxic bad poison") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SNORLAX) { Ability(ABILITY_IMMUNITY); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC); } + } SCENE { + MESSAGE("Wobbuffet used Toxic!"); + ABILITY_POPUP(opponent, ABILITY_IMMUNITY); + MESSAGE("Foe Snorlax's Immunity prevents poisoning!"); + NOT STATUS_ICON(opponent, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Immunity prevents Toxic Spikes poison") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TOXIC_SPIKES].effect == EFFECT_TOXIC_SPIKES); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SNORLAX) { Ability(ABILITY_IMMUNITY); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { SWITCH(opponent, 1); } + } SCENE { + NOT STATUS_ICON(opponent, poison: TRUE); + } +} diff --git a/test/ability_pastel_veil.c b/test/ability_pastel_veil.c new file mode 100644 index 000000000..5d7a8f020 --- /dev/null +++ b/test/ability_pastel_veil.c @@ -0,0 +1,169 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_POISON_STING].effect == EFFECT_POISON_HIT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + } WHEN { + TURN { MOVE(player, MOVE_POISON_STING); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_STING, player); + NOT STATUS_ICON(opponent, poison: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Pastel Veil prevents Poison Sting poison on partner") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_POISON_STING].effect == EFFECT_POISON_HIT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_POISON_STING, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_STING, playerLeft); + NOT STATUS_ICON(opponentRight, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Pastel Veil immediately cures Mold Breaker poison") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); + PLAYER(SPECIES_DRILBUR) { Ability(ABILITY_MOLD_BREAKER); } + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); + STATUS_ICON(opponent, badPoison: TRUE); + ABILITY_POPUP(opponent, ABILITY_PASTEL_VEIL); + MESSAGE("Foe Ponyta's Pastel Veil cured its poison problem!"); + STATUS_ICON(opponent, none: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Pastel Veil does not cure Mold Breaker poison on partner") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); + PLAYER(SPECIES_DRILBUR) { Ability(ABILITY_MOLD_BREAKER); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TOXIC, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, playerLeft, target: opponentRight); + STATUS_ICON(opponentRight, badPoison: TRUE); + NOT STATUS_ICON(opponentRight, none: TRUE); + } +} + +SINGLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC); } + } SCENE { + MESSAGE("Wobbuffet used Toxic!"); + ABILITY_POPUP(opponent, ABILITY_PASTEL_VEIL); + MESSAGE("Foe Ponyta is protected by a pastel veil!"); + NOT STATUS_ICON(opponent, badPoison: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison on partner") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TOXIC, target: opponentRight); } + } SCENE { + MESSAGE("Wobbuffet used Toxic!"); + ABILITY_POPUP(opponentLeft, ABILITY_PASTEL_VEIL); + MESSAGE("Foe Wynaut is protected by a pastel veil!"); + NOT STATUS_ICON(opponentRight, badPoison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Pastel Veil prevents Toxic Spikes poison") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TOXIC_SPIKES].effect == EFFECT_TOXIC_SPIKES); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { SWITCH(opponent, 1); } + } SCENE { + MESSAGE("2 sent out Ponyta!"); + NOT STATUS_ICON(opponent, poison: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic Spikes poison on partner") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TOXIC_SPIKES].effect == EFFECT_TOXIC_SPIKES); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TOXIC_SPIKES); } + TURN { SWITCH(opponentRight, 2); } + } SCENE { + MESSAGE("2 sent out Wynaut!"); + NOT STATUS_ICON(opponentRight, poison: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Pastel Veil cures partner's poison on initial switch in") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + } WHEN { + TURN {} + } SCENE { + MESSAGE("2 sent out Wobbuffet and Ponyta!"); + ABILITY_POPUP(opponentRight, ABILITY_PASTEL_VEIL); + MESSAGE("Foe Wobbuffet was cured of its poisoning!"); + STATUS_ICON(opponentLeft, none: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Pastel Veil cures partner's poison on switch in") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_PONYTA_GALARIAN) { Ability(ABILITY_PASTEL_VEIL); } + } WHEN { + TURN { SWITCH(opponentRight, 2); } + } SCENE { + MESSAGE("2 sent out Ponyta!"); + ABILITY_POPUP(opponentRight, ABILITY_PASTEL_VEIL); + MESSAGE("Foe Wobbuffet was cured of its poisoning!"); + STATUS_ICON(opponentLeft, none: TRUE); + } +} diff --git a/test/ability_poison_point.c b/test/ability_poison_point.c new file mode 100644 index 000000000..a85edd85b --- /dev/null +++ b/test/ability_poison_point.c @@ -0,0 +1,30 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Poison Point inflicts poison on contact") +{ + u32 move; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); + ASSUME(!(gBattleMoves[MOVE_SWIFT].flags & FLAG_MAKES_CONTACT)); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_NIDORAN_M) { Ability(ABILITY_POISON_POINT); } + } WHEN { + TURN { MOVE(player, move); } + TURN {} + } SCENE { + if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) { + ABILITY_POPUP(opponent, ABILITY_POISON_POINT); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); + STATUS_ICON(player, poison: TRUE); + } else { + NOT ABILITY_POPUP(opponent, ABILITY_POISON_POINT); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + NOT MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); + NOT STATUS_ICON(player, poison: TRUE); + } + } +} diff --git a/test/ability_static.c b/test/ability_static.c new file mode 100644 index 000000000..022efa5bb --- /dev/null +++ b/test/ability_static.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Static inflicts paralysis on contact") +{ + u32 move; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].flags & FLAG_MAKES_CONTACT); + ASSUME(!(gBattleMoves[MOVE_SWIFT].flags & FLAG_MAKES_CONTACT)); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); } + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + if (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) { + ABILITY_POPUP(opponent, ABILITY_STATIC); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); + STATUS_ICON(player, paralysis: TRUE); + } else { + NOT ABILITY_POPUP(opponent, ABILITY_STATIC); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + NOT MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); + NOT STATUS_ICON(player, paralysis: TRUE); + } + } +} diff --git a/test/ability_sturdy.c b/test/ability_sturdy.c new file mode 100644 index 000000000..42cdab11f --- /dev/null +++ b/test/ability_sturdy.c @@ -0,0 +1,47 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Sturdy prevents OHKO moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_FISSURE].effect == EFFECT_OHKO); + PLAYER(SPECIES_GEODUDE) { Ability(ABILITY_STURDY); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_FISSURE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Fissure!"); + ABILITY_POPUP(player, ABILITY_STURDY); + MESSAGE("Geodude was protected by Sturdy!"); + } THEN { + EXPECT_EQ(player->hp, player->maxHP); + } +} + +SINGLE_BATTLE_TEST("Sturdy prevents OHKOs") +{ + GIVEN { + PLAYER(SPECIES_GEODUDE) { Ability(ABILITY_STURDY); MaxHP(100); HP(100); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SEISMIC_TOSS); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEISMIC_TOSS, opponent); + HP_BAR(player, hp: 1); + ABILITY_POPUP(player, ABILITY_STURDY); + MESSAGE("Geodude endured the hit using Sturdy!"); + } +} + +SINGLE_BATTLE_TEST("Sturdy does not prevent non-OHKOs") +{ + GIVEN { + PLAYER(SPECIES_GEODUDE) { Ability(ABILITY_STURDY); MaxHP(100); HP(99); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SEISMIC_TOSS); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEISMIC_TOSS, opponent); + HP_BAR(player, hp: 0); + } +} diff --git a/test/hold_effect_leftovers.c b/test/hold_effect_leftovers.c new file mode 100644 index 000000000..ee6520587 --- /dev/null +++ b/test/hold_effect_leftovers.c @@ -0,0 +1,54 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + gItems[ITEM_LEFTOVERS].holdEffect == HOLD_EFFECT_LEFTOVERS; +}; + +SINGLE_BATTLE_TEST("Leftovers recovers 1/16th HP at end of turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(1); Item(ITEM_LEFTOVERS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet's Leftovers restored its HP a little!"); + HP_BAR(player, damage: -maxHP / 16); + } +} + +SINGLE_BATTLE_TEST("Leftovers does nothing if max HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet's Leftovers restored its HP a little!"); + HP_BAR(player); + } + } +} + +SINGLE_BATTLE_TEST("Leftovers does nothing if Heal Block applies") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(1); Item(ITEM_LEFTOVERS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_HEAL_BLOCK); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet's Leftovers restored its HP a little!"); + HP_BAR(player); + } + } +} diff --git a/test/mega_evolution.c b/test/mega_evolution.c new file mode 100644 index 000000000..13e9cd5b2 --- /dev/null +++ b/test/mega_evolution.c @@ -0,0 +1,68 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Venusaur can Mega Evolve holding Venusaurite") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR) { Item(ITEM_VENUSAURITE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + MESSAGE("Venusaur's Venusaurite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); + MESSAGE("Venusaur has Mega Evolved into Mega Venusaur!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_VENUSAUR_MEGA); + } +} + +SINGLE_BATTLE_TEST("Rayquaza can Mega Evolve knowing Dragon Ascent") +{ + GIVEN { + PLAYER(SPECIES_RAYQUAZA) { Moves(MOVE_DRAGON_ASCENT, MOVE_CELEBRATE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + MESSAGE("1's fervent wish has reached Rayquaza!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); + MESSAGE("Rayquaza has Mega Evolved into Mega Rayquaza!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_RAYQUAZA_MEGA); + } +} + +SINGLE_BATTLE_TEST("Mega Evolution affects turn order") +{ + GIVEN { + ASSUME(B_MEGA_EVO_TURN_ORDER); + PLAYER(SPECIES_DIANCIE) { Item(ITEM_DIANCITE); Speed(105); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(106); } + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + MESSAGE("Diancie used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } THEN { + ASSUME(player->speed == 225); + } +} + +SINGLE_BATTLE_TEST("Abilities replaced by Mega Evolution do not affect turn order") +{ + GIVEN { + ASSUME(B_MEGA_EVO_TURN_ORDER); + ASSUME(gSpeciesInfo[SPECIES_SABLEYE_MEGA].abilities[0] != ABILITY_STALL + && gSpeciesInfo[SPECIES_SABLEYE_MEGA].abilities[1] != ABILITY_STALL); + PLAYER(SPECIES_SABLEYE) { Item(ITEM_SABLENITE); Ability(ABILITY_STALL); Speed(105); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(44); } + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + MESSAGE("Sableye used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } THEN { + ASSUME(player->speed == 45); + } +} diff --git a/test/move.c b/test/move.c new file mode 100644 index 000000000..d7e759f27 --- /dev/null +++ b/test/move.c @@ -0,0 +1,158 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Accuracy controls the proportion of misses") +{ + u32 move; + PARAMETRIZE { move = MOVE_DYNAMIC_PUNCH; } + PARAMETRIZE { move = MOVE_THUNDER; } + PARAMETRIZE { move = MOVE_HYDRO_PUMP; } + PARAMETRIZE { move = MOVE_RAZOR_LEAF; } + PARAMETRIZE { move = MOVE_SCRATCH; } + ASSUME(0 < gBattleMoves[move].accuracy && gBattleMoves[move].accuracy <= 100); + PASSES_RANDOMLY(gBattleMoves[move].accuracy, 100); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + } +} + +SINGLE_BATTLE_TEST("Secondary Effect Chance controls the proportion of secondary effects") +{ + u32 move; + PARAMETRIZE { move = MOVE_THUNDER_SHOCK; } + PARAMETRIZE { move = MOVE_DISCHARGE; } + PARAMETRIZE { move = MOVE_NUZZLE; } + ASSUME(gBattleMoves[move].accuracy == 100); + ASSUME(gBattleMoves[move].effect == EFFECT_PARALYZE_HIT); + ASSUME(0 < gBattleMoves[move].secondaryEffectChance && gBattleMoves[move].secondaryEffectChance <= 100); + PASSES_RANDOMLY(gBattleMoves[move].secondaryEffectChance, 100); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + STATUS_ICON(opponent, paralysis: TRUE); + } +} + +SINGLE_BATTLE_TEST("Turn order is determined by priority") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_QUICK_ATTACK].priority > gBattleMoves[MOVE_TACKLE].priority); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_QUICK_ATTACK); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Turn order is determined by speed if priority ties") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(2); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } + } WHEN { + TURN { MOVE(player, MOVE_QUICK_ATTACK); MOVE(opponent, MOVE_QUICK_ATTACK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, opponent); + } +} + +SINGLE_BATTLE_TEST("Turn order is determined randomly if priority and speed tie") +{ + PASSES_RANDOMLY(1, 2); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(1); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } + } WHEN { + TURN { MOVE(player, MOVE_QUICK_ATTACK); MOVE(opponent, MOVE_QUICK_ATTACK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, opponent); + } +} + +SINGLE_BATTLE_TEST("Critical hits occur at a 1/24 rate") +{ + ASSUME(B_CRIT_CHANCE >= GEN_7); + ASSUME(gBattleMoves[MOVE_SCRATCH].accuracy == 100); + PASSES_RANDOMLY(100 / 24, 100); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SCRATCH); } + } SCENE { + MESSAGE("It's a critical hit!"); + } +} + +SINGLE_BATTLE_TEST("Critical hits deal 50% more damage", s16 damage) +{ + bool32 criticalHit; + PARAMETRIZE { criticalHit = FALSE; } + PARAMETRIZE { criticalHit = TRUE; } + GIVEN { + ASSUME(B_CRIT_MULTIPLIER >= GEN_6); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SCRATCH, criticalHit: criticalHit); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Critical hits do not ignore positive stat stages", s16 damage) +{ + u32 move; + PARAMETRIZE { move = MOVE_CELEBRATE; } + PARAMETRIZE { move = MOVE_HOWL; } + PARAMETRIZE { move = MOVE_TAIL_WHIP; } + GIVEN { + ASSUME(gBattleMoves[MOVE_SCRATCH].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_SCRATCH, criticalHit: TRUE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } THEN { + if (i > 0) + EXPECT_LT(results[0].damage, results[i].damage); + } +} + +SINGLE_BATTLE_TEST("Critical hits ignore negative stat stages", s16 damage) +{ + u32 move; + PARAMETRIZE { move = MOVE_CELEBRATE; } + PARAMETRIZE { move = MOVE_HARDEN; } + PARAMETRIZE { move = MOVE_GROWL; } + GIVEN { + ASSUME(gBattleMoves[MOVE_SCRATCH].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); } + TURN { MOVE(player, MOVE_SCRATCH, criticalHit: TRUE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } THEN { + if (i > 0) + EXPECT_EQ(results[0].damage, results[i].damage); + } +} diff --git a/test/move_effect_absorb.c b/test/move_effect_absorb.c new file mode 100644 index 000000000..2ea49ef9e --- /dev/null +++ b/test/move_effect_absorb.c @@ -0,0 +1,41 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_ABSORB].effect == EFFECT_ABSORB); +} + +SINGLE_BATTLE_TEST("Absorb recovers 50% of the damage dealt") +{ + s16 damage; + s16 healed; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ABSORB); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player); + HP_BAR(opponent, captureDamage: &damage); + HP_BAR(player, captureDamage: &healed); + } THEN { + EXPECT_MUL_EQ(damage, Q_4_12(-0.5), healed); + } +} + +SINGLE_BATTLE_TEST("Absorb fails if Heal Block applies") +{ + ASSUME(B_HEAL_BLOCKING >= GEN_6); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_HEAL_BLOCK); MOVE(player, MOVE_ABSORB); } + } SCENE { + MESSAGE("Wobbuffet was prevented from healing!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player); + NOT HP_BAR(opponent); + NOT HP_BAR(player); + } +} diff --git a/test/move_effect_accuracy_down.c b/test/move_effect_accuracy_down.c new file mode 100644 index 000000000..2a90d8ea2 --- /dev/null +++ b/test/move_effect_accuracy_down.c @@ -0,0 +1,24 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SAND_ATTACK].effect == EFFECT_ACCURACY_DOWN); +} + +SINGLE_BATTLE_TEST("Sand Attack lowers Accuracy") +{ + ASSUME(gBattleMoves[MOVE_SCRATCH].accuracy == 100); + PASSES_RANDOMLY(gBattleMoves[MOVE_SCRATCH].accuracy * 3 / 4, 100); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SAND_ATTACK); MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SAND_ATTACK, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's accuracy fell!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); + } +} diff --git a/test/move_effect_after_you.c b/test/move_effect_after_you.c new file mode 100644 index 000000000..400fc053f --- /dev/null +++ b/test/move_effect_after_you.c @@ -0,0 +1,54 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_AFTER_YOU].effect == EFFECT_AFTER_YOU); +} + +DOUBLE_BATTLE_TEST("After You makes the target move after user") +{ + if (B_RECALC_TURN_AFTER_ACTIONS >= GEN_8) KNOWN_FAILING; // #2615. + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(1); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(3); } + OPPONENT(SPECIES_WYNAUT) { Speed(2); } + } WHEN { + TURN { + MOVE(playerLeft, MOVE_AFTER_YOU, target: playerRight); + MOVE(playerRight, MOVE_CELEBRATE); + MOVE(opponentLeft, MOVE_CELEBRATE); + MOVE(opponentRight, MOVE_CELEBRATE); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AFTER_YOU, playerLeft); + MESSAGE("Wynaut took the kind offer!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentRight); + } +} + +DOUBLE_BATTLE_TEST("After You does nothing if the target has already moved") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(1); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(3); } + OPPONENT(SPECIES_WYNAUT) { Speed(2); } + } WHEN { + TURN { + MOVE(playerLeft, MOVE_CELEBRATE); + MOVE(playerRight, MOVE_CELEBRATE); + MOVE(opponentLeft, MOVE_CELEBRATE); + MOVE(opponentRight, MOVE_AFTER_YOU, target: opponentLeft); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentLeft); + MESSAGE("Foe Wynaut used After You!"); + MESSAGE("But it failed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); + } +} diff --git a/test/move_effect_attack_down.c b/test/move_effect_attack_down.c new file mode 100644 index 000000000..6333bbea1 --- /dev/null +++ b/test/move_effect_attack_down.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); +} + +SINGLE_BATTLE_TEST("Growl lowers Attack", s16 damage) +{ + bool32 lowerAttack; + PARAMETRIZE { lowerAttack = FALSE; } + PARAMETRIZE { lowerAttack = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (lowerAttack) TURN { MOVE(player, MOVE_GROWL); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (lowerAttack) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's attack fell!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.5), results[0].damage); + } +} diff --git a/test/move_effect_attack_up.c b/test/move_effect_attack_up.c new file mode 100644 index 000000000..7b57fa0d2 --- /dev/null +++ b/test/move_effect_attack_up.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_MEDITATE].effect == EFFECT_ATTACK_UP); +} + +SINGLE_BATTLE_TEST("Meditate raises Attack", s16 damage) +{ + bool32 raiseAttack; + PARAMETRIZE { raiseAttack = FALSE; } + PARAMETRIZE { raiseAttack = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (raiseAttack) TURN { MOVE(player, MOVE_MEDITATE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + if (raiseAttack) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MEDITATE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's attack rose!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} diff --git a/test/move_effect_bide.c b/test/move_effect_bide.c new file mode 100644 index 000000000..3a5c38735 --- /dev/null +++ b/test/move_effect_bide.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_BIDE].effect == EFFECT_BIDE); +} + +SINGLE_BATTLE_TEST("Bide deals twice the taken damage over two turns") +{ + s16 damage1; + s16 damage2; + s16 bideDamage; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BIDE); MOVE(opponent, MOVE_TACKLE); } + TURN { SKIP_TURN(player); MOVE(opponent, MOVE_TACKLE); } + TURN { SKIP_TURN(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BIDE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage1); + MESSAGE("Wobbuffet is storing energy!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage2); + MESSAGE("Wobbuffet unleashed energy!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BIDE, player); + HP_BAR(opponent, captureDamage: &bideDamage); + } FINALLY { + EXPECT_EQ(bideDamage, damage1 + damage2); + } +} diff --git a/test/move_effect_burn_hit.c b/test/move_effect_burn_hit.c new file mode 100644 index 000000000..88fef17cb --- /dev/null +++ b/test/move_effect_burn_hit.c @@ -0,0 +1,38 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_EMBER].effect == EFFECT_BURN_HIT); +} + +SINGLE_BATTLE_TEST("Ember inflicts burn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EMBER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + STATUS_ICON(opponent, burn: TRUE); + } +} + +SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_CHARMANDER].types[0] == TYPE_FIRE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CHARMANDER); + } WHEN { + TURN { MOVE(player, MOVE_EMBER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + NOT STATUS_ICON(opponent, burn: TRUE); + } +} diff --git a/test/move_effect_defense_down.c b/test/move_effect_defense_down.c new file mode 100644 index 000000000..6e5a45e84 --- /dev/null +++ b/test/move_effect_defense_down.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TAIL_WHIP].effect == EFFECT_DEFENSE_DOWN); +} + +SINGLE_BATTLE_TEST("Tail Whip lowers Defense", s16 damage) +{ + bool32 lowerDefense; + PARAMETRIZE { lowerDefense = FALSE; } + PARAMETRIZE { lowerDefense = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (lowerDefense) TURN { MOVE(player, MOVE_TAIL_WHIP); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + if (lowerDefense) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAIL_WHIP, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's defense fell!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} diff --git a/test/move_effect_defense_up.c b/test/move_effect_defense_up.c new file mode 100644 index 000000000..8db9a7f7e --- /dev/null +++ b/test/move_effect_defense_up.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_HARDEN].effect == EFFECT_DEFENSE_UP); +} + +SINGLE_BATTLE_TEST("Harden raises Defense", s16 damage) +{ + bool32 raiseDefense; + PARAMETRIZE { raiseDefense = FALSE; } + PARAMETRIZE { raiseDefense = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (raiseDefense) TURN { MOVE(player, MOVE_HARDEN); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (raiseDefense) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's defense rose!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.5), results[0].damage); + } +} diff --git a/test/move_effect_dream_eater.c b/test/move_effect_dream_eater.c new file mode 100644 index 000000000..fa17b94a6 --- /dev/null +++ b/test/move_effect_dream_eater.c @@ -0,0 +1,54 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_DREAM_EATER].effect == EFFECT_DREAM_EATER); +} + +SINGLE_BATTLE_TEST("Dream Eater recovers 50% of the damage dealt") +{ + s16 damage; + s16 healed; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); } + } WHEN { + TURN { MOVE(player, MOVE_DREAM_EATER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, player); + HP_BAR(opponent, captureDamage: &damage); + HP_BAR(player, captureDamage: &healed); + } THEN { + EXPECT_MUL_EQ(damage, Q_4_12(-1.0/2.0), healed); + } +} + +SINGLE_BATTLE_TEST("Dream Eater fails on awake targets") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DREAM_EATER); } + } SCENE { + MESSAGE("Wobbuffet used Dream Eater!"); + MESSAGE("Foe Wobbuffet wasn't affected!"); + } +} + +SINGLE_BATTLE_TEST("Dream Eater fails if Heal Block applies") +{ + ASSUME(B_HEAL_BLOCKING >= GEN_6); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_HEAL_BLOCK); MOVE(player, MOVE_DREAM_EATER); } + } SCENE { + MESSAGE("Wobbuffet was prevented from healing!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, player); + NOT HP_BAR(opponent); + NOT HP_BAR(player); + } +} diff --git a/test/move_effect_encore.c b/test/move_effect_encore.c new file mode 100644 index 000000000..f8a178512 --- /dev/null +++ b/test/move_effect_encore.c @@ -0,0 +1,54 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); +} + +SINGLE_BATTLE_TEST("Encore forces consecutive move uses for 2 turns") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_ENCORE); } + TURN { FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, MOVE_SPLASH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLASH, player); + } +} + +SINGLE_BATTLE_TEST("Encore has no effect if no previous move") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Encore!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Encore overrides the chosen move if it occurs first") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_SPLASH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } +} diff --git a/test/move_effect_evasion_up.c b/test/move_effect_evasion_up.c new file mode 100644 index 000000000..d14d15334 --- /dev/null +++ b/test/move_effect_evasion_up.c @@ -0,0 +1,24 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_DOUBLE_TEAM].effect == EFFECT_EVASION_UP); +} + +SINGLE_BATTLE_TEST("Double Team raises Evasion") +{ + ASSUME(gBattleMoves[MOVE_SCRATCH].accuracy == 100); + PASSES_RANDOMLY(gBattleMoves[MOVE_SCRATCH].accuracy * 3 / 4, 100); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DOUBLE_TEAM); MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_TEAM, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's evasiveness rose!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); + } +} diff --git a/test/move_effect_explosion.c b/test/move_effect_explosion.c new file mode 100644 index 000000000..872f3f709 --- /dev/null +++ b/test/move_effect_explosion.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_EXPLOSION].effect == EFFECT_EXPLOSION); +} + +SINGLE_BATTLE_TEST("Explosion causes the user to faint") +{ + u16 remainingHP; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EXPLOSION); } + } SCENE { + HP_BAR(player, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); + } +} + +SINGLE_BATTLE_TEST("Explosion causes the user to faint even if it misses") +{ + u16 remainingHP; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EXPLOSION, hit: FALSE); } + } SCENE { + HP_BAR(player, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); + } +} + +SINGLE_BATTLE_TEST("Explosion causes the user to faint even if it has no effect") +{ + u16 remainingHP; + GIVEN { + ASSUME(gBattleMoves[MOVE_EXPLOSION].type == TYPE_NORMAL); + ASSUME(gSpeciesInfo[SPECIES_GASTLY].types[0] == TYPE_GHOST); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GASTLY); + } WHEN { + TURN { MOVE(player, MOVE_EXPLOSION); } + } SCENE { + HP_BAR(player, hp: 0); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); + MESSAGE("It doesn't affect Foe Gastly…"); + NOT HP_BAR(opponent); + } +} diff --git a/test/move_effect_freeze_hit.c b/test/move_effect_freeze_hit.c new file mode 100644 index 000000000..bb0878d0d --- /dev/null +++ b/test/move_effect_freeze_hit.c @@ -0,0 +1,38 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_POWDER_SNOW].effect == EFFECT_FREEZE_HIT); +} + +SINGLE_BATTLE_TEST("Powder Snow inflicts freeze") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_POWDER_SNOW); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POWDER_SNOW, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); + STATUS_ICON(opponent, freeze: TRUE); + } +} + +SINGLE_BATTLE_TEST("Powder Snow cannot freeze an Ice-type") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_SNORUNT].types[0] == TYPE_ICE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SNORUNT); + } WHEN { + TURN { MOVE(player, MOVE_POWDER_SNOW); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POWDER_SNOW, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); + NOT STATUS_ICON(opponent, freeze: TRUE); + } +} diff --git a/test/move_effect_haze.c b/test/move_effect_haze.c new file mode 100644 index 000000000..bd43c6947 --- /dev/null +++ b/test/move_effect_haze.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_HAZE].effect == EFFECT_HAZE); +} + +SINGLE_BATTLE_TEST("Haze resets stat changes", s16 damage) +{ + bool32 haze; + PARAMETRIZE { haze = FALSE; } + PARAMETRIZE { haze = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_MEDITATE].effect == EFFECT_ATTACK_UP); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (haze) TURN { MOVE(player, MOVE_MEDITATE); MOVE(opponent, MOVE_HAZE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + if (haze) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HAZE, opponent); + MESSAGE("All stat changes were eliminated!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} diff --git a/test/move_effect_hex.c b/test/move_effect_hex.c new file mode 100644 index 000000000..2847aeb17 --- /dev/null +++ b/test/move_effect_hex.c @@ -0,0 +1,33 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_HEX].effect == EFFECT_HEX); +} + +SINGLE_BATTLE_TEST("Hex deals double damage to foes with a status", s16 damage) +{ + u32 status1; + PARAMETRIZE { status1 = STATUS1_NONE; } + PARAMETRIZE { status1 = STATUS1_SLEEP; } + PARAMETRIZE { status1 = STATUS1_POISON; } + PARAMETRIZE { status1 = STATUS1_BURN; } + PARAMETRIZE { status1 = STATUS1_FREEZE; } + PARAMETRIZE { status1 = STATUS1_PARALYSIS; } + PARAMETRIZE { status1 = STATUS1_TOXIC_POISON; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Status1(status1); } + } WHEN { + TURN { MOVE(player, MOVE_HEX); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEX, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } THEN { + if (i > 0) + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[i].damage); + if (i > 1) + EXPECT_EQ(results[i-1].damage, results[i].damage); + } +} diff --git a/test/move_effect_hit_escape.c b/test/move_effect_hit_escape.c new file mode 100644 index 000000000..cc34db2e2 --- /dev/null +++ b/test/move_effect_hit_escape.c @@ -0,0 +1,96 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_U_TURN].effect == EFFECT_HIT_ESCAPE); +} + +SINGLE_BATTLE_TEST("U-turn switches the user out") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + HP_BAR(opponent); + MESSAGE("Go! Wynaut!"); + } +} + +SINGLE_BATTLE_TEST("U-turn does not switch the user out if the battle ends") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_U_TURN); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("U-turn does not switch the user out if no replacements") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_U_TURN); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("U-turn does not switch the user out if replacements fainted") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT) { HP(0); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_U_TURN); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("U-turn does not switch the user out if Wimp Out activates") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WIMPOD) { MaxHP(100); HP(51); Ability(ABILITY_WIMP_OUT); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(opponent, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + HP_BAR(opponent); + ABILITY_POPUP(opponent, ABILITY_WIMP_OUT); + MESSAGE("2 sent out Wobbuffet!"); + } +} + +SINGLE_BATTLE_TEST("U-turn switches the user out if Wimp Out fails to activate") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WIMPOD) { MaxHP(100); HP(51); Ability(ABILITY_WIMP_OUT); } + } WHEN { + TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); + HP_BAR(opponent); + NOT ABILITY_POPUP(opponent); + MESSAGE("Your foe's weak! Get 'em, Wynaut!"); + } +} diff --git a/test/move_effect_paralyze_hit.c b/test/move_effect_paralyze_hit.c new file mode 100644 index 000000000..8e7d259f7 --- /dev/null +++ b/test/move_effect_paralyze_hit.c @@ -0,0 +1,39 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_THUNDER_SHOCK].effect == EFFECT_PARALYZE_HIT); +} + +SINGLE_BATTLE_TEST("Thunder Shock inflicts paralysis") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THUNDER_SHOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_SHOCK, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } +} + +SINGLE_BATTLE_TEST("Thunder Shock cannot paralyze an Electric-type") +{ + GIVEN { + ASSUME(B_PARALYZE_ELECTRIC >= GEN_6); + ASSUME(gSpeciesInfo[SPECIES_PIKACHU].types[0] == TYPE_ELECTRIC); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIKACHU); + } WHEN { + TURN { MOVE(player, MOVE_THUNDER_SHOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_SHOCK, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + NOT STATUS_ICON(opponent, paralysis: TRUE); + } +} diff --git a/test/move_effect_poison_hit.c b/test/move_effect_poison_hit.c new file mode 100644 index 000000000..b1a154810 --- /dev/null +++ b/test/move_effect_poison_hit.c @@ -0,0 +1,39 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_POISON_STING].effect == EFFECT_POISON_HIT); +} + +SINGLE_BATTLE_TEST("Poison Sting inflicts poison") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_POISON_STING); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_STING, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Poison Sting cannot poison Poison-type") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_NIDORAN_M].types[0] == TYPE_POISON); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_NIDORAN_M); + } WHEN { + TURN { MOVE(player, MOVE_POISON_STING); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_STING, player); + HP_BAR(opponent); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + NOT STATUS_ICON(opponent, poison: TRUE); + } +} diff --git a/test/move_effect_rampage.c b/test/move_effect_rampage.c new file mode 100644 index 000000000..a3afebf6b --- /dev/null +++ b/test/move_effect_rampage.c @@ -0,0 +1,91 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_THRASH].effect == EFFECT_RAMPAGE); +} + +SINGLE_BATTLE_TEST("Thrash lasts for 2 or 3 turns") +{ + PASSES_RANDOMLY(1, 2); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THRASH); } + TURN { SKIP_TURN(player); } + TURN { SKIP_TURN(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + } +} + +SINGLE_BATTLE_TEST("Thrash confuses the user after it finishes") +{ + GIVEN { + RNGSeed(0x00000000); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THRASH); } + TURN { SKIP_TURN(player); } + TURN { SKIP_TURN(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THRASH, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + } +} + +SINGLE_BATTLE_TEST("Thrash does not confuse the user if it is canceled on turn 1 of 3") +{ + GIVEN { + ASSUME(B_RAMPAGE_CANCELLING >= GEN_5); + RNGSeed(0x00000000); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THRASH); } + TURN { MOVE(opponent, MOVE_PROTECT); SKIP_TURN(player); } + TURN { SKIP_TURN(player); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + } +} + +SINGLE_BATTLE_TEST("Thrash does not confuse the user if it is canceled on turn 2 of 3") +{ + GIVEN { + ASSUME(B_RAMPAGE_CANCELLING >= GEN_5); + RNGSeed(0x00000000); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THRASH); } + TURN { MOVE(opponent, MOVE_PROTECT); SKIP_TURN(player); } + TURN { SKIP_TURN(player); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + } +} + +SINGLE_BATTLE_TEST("Thrash confuses the user if it is canceled on turn 3 of 3") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(B_RAMPAGE_CANCELLING >= GEN_5); + RNGSeed(0x00000000); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THRASH); } + TURN { SKIP_TURN(player); } + TURN { MOVE(opponent, MOVE_PROTECT); SKIP_TURN(player); } + } SCENE { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + } +} diff --git a/test/move_effect_recoil_if_miss.c b/test/move_effect_recoil_if_miss.c new file mode 100644 index 000000000..5c1f1a61a --- /dev/null +++ b/test/move_effect_recoil_if_miss.c @@ -0,0 +1,57 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_JUMP_KICK].effect == EFFECT_RECOIL_IF_MISS); +} + +SINGLE_BATTLE_TEST("Jump Kick has 50% recoil on miss") +{ + s16 recoil; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_JUMP_KICK, hit: FALSE); } + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + MESSAGE("Wobbuffet used Jump Kick!"); + MESSAGE("Wobbuffet's attack missed!"); + MESSAGE("Wobbuffet kept going and crashed!"); + HP_BAR(player, damage: maxHP / 2); + } +} + +SINGLE_BATTLE_TEST("Jump Kick has 50% recoil on protect") +{ + s16 recoil; + GIVEN { + ASSUME(gBattleMoves[MOVE_JUMP_KICK].flags & FLAG_PROTECT_AFFECTED); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_JUMP_KICK, hit: FALSE); } + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_JUMP_KICK, player); + HP_BAR(player, damage: maxHP / 2); + } +} + +SINGLE_BATTLE_TEST("Jump Kick has no recoil if no target") +{ + KNOWN_FAILING; // #2596. + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_HEALING_WISH); MOVE(player, MOVE_JUMP_KICK, hit: FALSE); SEND_OUT(opponent, 1); } + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEALING_WISH, opponent); + NOT HP_BAR(player, damage: maxHP / 2); + } +} diff --git a/test/move_effect_reflect.c b/test/move_effect_reflect.c new file mode 100644 index 000000000..4ea875f35 --- /dev/null +++ b/test/move_effect_reflect.c @@ -0,0 +1,77 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_REFLECT].effect == EFFECT_REFLECT); +} + +SINGLE_BATTLE_TEST("Reflect reduces physical damage", s16 damage) +{ + u32 move; + PARAMETRIZE { move = MOVE_CELEBRATE; } + PARAMETRIZE { move = MOVE_REFLECT; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_LT(results[1].damage, results[0].damage); + } +} + +SINGLE_BATTLE_TEST("Reflect applies for 5 turns") +{ + u16 damage[6]; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage[1]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage[2]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage[3]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage[4]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage[5]); + } THEN { + EXPECT_MUL_EQ(damage[0], Q_4_12(1.0), damage[1]); + EXPECT_MUL_EQ(damage[0], Q_4_12(1.0), damage[2]); + EXPECT_MUL_EQ(damage[0], Q_4_12(1.0), damage[3]); + EXPECT_MUL_EQ(damage[0], Q_4_12(1.0), damage[4]); + EXPECT_LT(damage[0], damage[5]); + } +} + +SINGLE_BATTLE_TEST("Reflect fails if already active") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT); } + TURN { MOVE(player, MOVE_REFLECT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT, player); + MESSAGE("Wobbuffet used Reflect!"); + MESSAGE("But it failed!"); + } +} diff --git a/test/move_effect_sleep.c b/test/move_effect_sleep.c new file mode 100644 index 000000000..c80faf4bd --- /dev/null +++ b/test/move_effect_sleep.c @@ -0,0 +1,21 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_HYPNOSIS].effect == EFFECT_SLEEP); +} + +SINGLE_BATTLE_TEST("Hypnosis inflicts sleep") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_HYPNOSIS); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPNOSIS, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponent); + STATUS_ICON(opponent, sleep: TRUE); + } +} diff --git a/test/move_effect_special_attack_down.c b/test/move_effect_special_attack_down.c new file mode 100644 index 000000000..a20b8558e --- /dev/null +++ b/test/move_effect_special_attack_down.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_CONFIDE].effect == EFFECT_SPECIAL_ATTACK_DOWN); +} + +SINGLE_BATTLE_TEST("Confide lowers Special Attack", s16 damage) +{ + bool32 lowerSpecialAttack; + PARAMETRIZE { lowerSpecialAttack = FALSE; } + PARAMETRIZE { lowerSpecialAttack = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_GUST].split == SPLIT_SPECIAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (lowerSpecialAttack) TURN { MOVE(player, MOVE_CONFIDE); } + TURN { MOVE(opponent, MOVE_GUST); } + } SCENE { + if (lowerSpecialAttack) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFIDE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's sp. attack fell!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.5), results[0].damage); + } +} diff --git a/test/move_effect_special_attack_up_3.c b/test/move_effect_special_attack_up_3.c new file mode 100644 index 000000000..f7e7e11d1 --- /dev/null +++ b/test/move_effect_special_attack_up_3.c @@ -0,0 +1,32 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TAIL_GLOW].effect == EFFECT_SPECIAL_ATTACK_UP_3); +} + +SINGLE_BATTLE_TEST("Tail Glow drastically raises Special Attack", s16 damage) +{ + bool32 raiseSpecialAttack; + PARAMETRIZE { raiseSpecialAttack = FALSE; } + PARAMETRIZE { raiseSpecialAttack = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_GUST].split == SPLIT_SPECIAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (raiseSpecialAttack) TURN { MOVE(player, MOVE_TAIL_GLOW); } + TURN { MOVE(player, MOVE_GUST); } + } SCENE { + if (raiseSpecialAttack) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAIL_GLOW, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's sp. attack drastically rose!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.5), results[1].damage); + } +} diff --git a/test/move_effect_spikes.c b/test/move_effect_spikes.c new file mode 100644 index 000000000..33b0bad4b --- /dev/null +++ b/test/move_effect_spikes.c @@ -0,0 +1,135 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SPIKES].effect == EFFECT_SPIKES); +} + +SINGLE_BATTLE_TEST("Spikes damage on switch in") +{ + u32 layers; + u32 divisor; + PARAMETRIZE { layers = 1; divisor = 8; } + PARAMETRIZE { layers = 2; divisor = 6; } + PARAMETRIZE { layers = 3; divisor = 4; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + u32 count; + for (count = 0; count < layers; ++count) { + TURN { MOVE(player, MOVE_SPIKES); } + } + TURN { SWITCH(opponent, 1); } + } SCENE { + u32 count; + s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); + for (count = 0; count < layers; ++count) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, player); + MESSAGE("Spikes were scattered all around the opponent's side!"); + } + MESSAGE("2 sent out Wynaut!"); + HP_BAR(opponent, damage: maxHP / divisor); + MESSAGE("Foe Wynaut is hurt by spikes!"); + } +} + +SINGLE_BATTLE_TEST("Spikes fails after 3 layers") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_SPIKES); } + TURN { MOVE(player, MOVE_SPIKES); } + TURN { MOVE(player, MOVE_SPIKES); } + TURN { MOVE(player, MOVE_SPIKES); } + TURN { SWITCH(opponent, 1); } + } SCENE { + s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, player); + MESSAGE("Spikes were scattered all around the opponent's side!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, player); + MESSAGE("Spikes were scattered all around the opponent's side!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPIKES, player); + MESSAGE("Spikes were scattered all around the opponent's side!"); + MESSAGE("Wobbuffet used Spikes!"); + MESSAGE("But it failed!"); + MESSAGE("2 sent out Wynaut!"); + HP_BAR(opponent, damage: maxHP / 4); + MESSAGE("Foe Wynaut is hurt by spikes!"); + } +} + +SINGLE_BATTLE_TEST("Spikes damage on subsequent switch ins") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_SPIKES); } + TURN { SWITCH(opponent, 1); } + TURN { SWITCH(opponent, 0); } + } SCENE { + s32 maxHP0 = GetMonData(&OPPONENT_PARTY[0], MON_DATA_MAX_HP); + s32 maxHP1 = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); + MESSAGE("2 sent out Wynaut!"); + HP_BAR(opponent, damage: maxHP1 / 8); + MESSAGE("Foe Wynaut is hurt by spikes!"); + MESSAGE("2 sent out Wobbuffet!"); + HP_BAR(opponent, damage: maxHP0 / 8); + MESSAGE("Foe Wobbuffet is hurt by spikes!"); + } +} + +SINGLE_BATTLE_TEST("Spikes do not damage airborne Pokemon") +{ + u32 species = SPECIES_WOBBUFFET; + u32 item = ITEM_NONE; + u32 move1 = MOVE_CELEBRATE; + u32 move2 = MOVE_CELEBRATE; + bool32 airborne; + + ASSUME(gSpeciesInfo[SPECIES_PIDGEY].types[1] == TYPE_FLYING); + PARAMETRIZE { species = SPECIES_PIDGEY; airborne = TRUE; } + PARAMETRIZE { species = SPECIES_PIDGEY; item = ITEM_IRON_BALL; airborne = FALSE; } + PARAMETRIZE { species = SPECIES_PIDGEY; move1 = MOVE_GRAVITY; airborne = FALSE; } + PARAMETRIZE { species = SPECIES_PIDGEY; move1 = MOVE_INGRAIN; airborne = FALSE; } + + ASSUME(gSpeciesInfo[SPECIES_UNOWN].abilities[0] == ABILITY_LEVITATE); + PARAMETRIZE { species = SPECIES_UNOWN; airborne = TRUE; } + PARAMETRIZE { species = SPECIES_UNOWN; item = ITEM_IRON_BALL; airborne = FALSE; } + PARAMETRIZE { species = SPECIES_UNOWN; move1 = MOVE_GRAVITY; airborne = FALSE; } + PARAMETRIZE { species = SPECIES_UNOWN; move1 = MOVE_INGRAIN; airborne = FALSE; } + + PARAMETRIZE { move1 = MOVE_MAGNET_RISE; airborne = TRUE; } + PARAMETRIZE { move1 = MOVE_MAGNET_RISE; item = ITEM_IRON_BALL; airborne = FALSE; } + PARAMETRIZE { move1 = MOVE_MAGNET_RISE; move2 = MOVE_GRAVITY; airborne = FALSE; } + // Magnet Rise fails under Gravity. + // Magnet Rise fails under Ingrain and vice-versa. + + PARAMETRIZE { item = ITEM_AIR_BALLOON; airborne = TRUE; } + PARAMETRIZE { item = ITEM_AIR_BALLOON; move1 = MOVE_GRAVITY; airborne = FALSE; } + PARAMETRIZE { item = ITEM_AIR_BALLOON; move1 = MOVE_INGRAIN; airborne = FALSE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(species) { Item(item); } + } WHEN { + TURN { MOVE(player, MOVE_SPIKES); MOVE(opponent, move1); } + TURN { MOVE(opponent, move2); } + TURN { MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); } + } SCENE { + s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); + if (airborne) { + NOT HP_BAR(opponent, damage: maxHP / 8); + } else { + HP_BAR(opponent, damage: maxHP / 8); + } + } +} diff --git a/test/move_effect_tailwind.c b/test/move_effect_tailwind.c new file mode 100644 index 000000000..7dfffdbe0 --- /dev/null +++ b/test/move_effect_tailwind.c @@ -0,0 +1,55 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TAILWIND].effect == EFFECT_TAILWIND); +} + +SINGLE_BATTLE_TEST("Tailwind applies for 4 turns") +{ + GIVEN { + ASSUME(B_TAILWIND_TURNS >= GEN_5); + PLAYER(SPECIES_WOBBUFFET) { Speed(10); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(15); } + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_TAILWIND); } + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet used Tailwind!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet used Celebrate!"); + } +} + +DOUBLE_BATTLE_TEST("Tailwind affects partner on first turn") +{ + GIVEN { + ASSUME(B_RECALC_TURN_AFTER_ACTIONS); + PLAYER(SPECIES_WOBBUFFET) { Speed(20); } + PLAYER(SPECIES_WYNAUT) { Speed(10); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(15); } + OPPONENT(SPECIES_WYNAUT) { Speed(14); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TAILWIND); } + } SCENE { + MESSAGE("Wobbuffet used Tailwind!"); + MESSAGE("Wynaut used Celebrate!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + } +} diff --git a/test/move_effect_torment.c b/test/move_effect_torment.c new file mode 100644 index 000000000..43f05e29f --- /dev/null +++ b/test/move_effect_torment.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TORMENT].effect == EFFECT_TORMENT); +} + +SINGLE_BATTLE_TEST("Torment prevents consecutive move uses") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } + } WHEN { + TURN { MOVE(player, MOVE_TORMENT); MOVE(opponent, MOVE_SPLASH); } + TURN { MOVE(opponent, MOVE_SPLASH, allowed: FALSE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TORMENT, player); + MESSAGE("Foe Wobbuffet was subjected to torment!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLASH, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } +} + +SINGLE_BATTLE_TEST("Torment forces Struggle if the only move is prevented") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SPLASH); } + } WHEN { + TURN { MOVE(player, MOVE_TORMENT); MOVE(opponent, MOVE_SPLASH); } + TURN { MOVE(opponent, MOVE_SPLASH, allowed: FALSE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLASH, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Torment allows non-consecutive move uses") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TORMENT); MOVE(opponent, MOVE_SPLASH); } + TURN { MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(opponent, MOVE_SPLASH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLASH, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLASH, opponent); + } +} diff --git a/test/move_effect_toxic.c b/test/move_effect_toxic.c new file mode 100644 index 000000000..f71d2a972 --- /dev/null +++ b/test/move_effect_toxic.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC); +} + +SINGLE_BATTLE_TEST("Toxic inflicts bad poison") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, badPoison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Toxic cannot miss if used by a Poison-type") +{ + u32 species; + bool32 hit; + PARAMETRIZE { species = SPECIES_WOBBUFFET; hit = FALSE; } + PARAMETRIZE { species = SPECIES_NIDORAN_M; hit = TRUE; } + GIVEN { + ASSUME(B_TOXIC_NEVER_MISS >= GEN_6); + ASSUME(gSpeciesInfo[SPECIES_NIDORAN_M].types[0] == TYPE_POISON); + PLAYER(species); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC, hit: FALSE); } + } SCENE { + if (hit) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, badPoison: TRUE); + } else { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); + NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + NOT STATUS_ICON(opponent, badPoison: TRUE); + } + } +} diff --git a/test/move_effect_toxic_spikes.c b/test/move_effect_toxic_spikes.c new file mode 100644 index 000000000..44780da21 --- /dev/null +++ b/test/move_effect_toxic_spikes.c @@ -0,0 +1,210 @@ +#include "global.h" +#include "test_battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TOXIC_SPIKES].effect == EFFECT_TOXIC_SPIKES); +} + +SINGLE_BATTLE_TEST("Toxic Spikes inflicts poison on switch in") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { SWITCH(opponent, 1); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, player); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + MESSAGE("2 sent out Wynaut!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Toxic Spikes inflicts bad poison on switch in") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { SWITCH(opponent, 1); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, player); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, player); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + MESSAGE("2 sent out Wynaut!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, badPoison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Toxic Spikes fails after 2 layers") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { SWITCH(opponent, 1); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, player); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, player); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + MESSAGE("Wobbuffet used Toxic Spikes!"); + MESSAGE("But it failed!"); + MESSAGE("2 sent out Wynaut!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, badPoison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Toxic Spikes inflicts poison on subsequent switch ins") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { SWITCH(opponent, 1); } + TURN { SWITCH(opponent, 0); } + TURN {} + } SCENE { + MESSAGE("2 sent out Wynaut!"); + STATUS_ICON(opponent, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Toxic Spikes do not poison airborne Pokemon") +{ + u32 species = SPECIES_WOBBUFFET; + u32 item = ITEM_NONE; + u32 move1 = MOVE_CELEBRATE; + u32 move2 = MOVE_CELEBRATE; + bool32 airborne; + + ASSUME(gSpeciesInfo[SPECIES_PIDGEY].types[1] == TYPE_FLYING); + PARAMETRIZE { species = SPECIES_PIDGEY; airborne = TRUE; } + PARAMETRIZE { species = SPECIES_PIDGEY; item = ITEM_IRON_BALL; airborne = FALSE; } + PARAMETRIZE { species = SPECIES_PIDGEY; move1 = MOVE_GRAVITY; airborne = FALSE; } + PARAMETRIZE { species = SPECIES_PIDGEY; move1 = MOVE_INGRAIN; airborne = FALSE; } + + ASSUME(gSpeciesInfo[SPECIES_UNOWN].abilities[0] == ABILITY_LEVITATE); + PARAMETRIZE { species = SPECIES_UNOWN; airborne = TRUE; } + PARAMETRIZE { species = SPECIES_UNOWN; item = ITEM_IRON_BALL; airborne = FALSE; } + PARAMETRIZE { species = SPECIES_UNOWN; move1 = MOVE_GRAVITY; airborne = FALSE; } + PARAMETRIZE { species = SPECIES_UNOWN; move1 = MOVE_INGRAIN; airborne = FALSE; } + + PARAMETRIZE { move1 = MOVE_MAGNET_RISE; airborne = TRUE; } + PARAMETRIZE { move1 = MOVE_MAGNET_RISE; item = ITEM_IRON_BALL; airborne = FALSE; } + PARAMETRIZE { move1 = MOVE_MAGNET_RISE; move2 = MOVE_GRAVITY; airborne = FALSE; } + // Magnet Rise fails under Gravity. + // Magnet Rise fails under Ingrain and vice-versa. + + PARAMETRIZE { item = ITEM_AIR_BALLOON; airborne = TRUE; } + PARAMETRIZE { item = ITEM_AIR_BALLOON; move1 = MOVE_GRAVITY; airborne = FALSE; } + PARAMETRIZE { item = ITEM_AIR_BALLOON; move1 = MOVE_INGRAIN; airborne = FALSE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(species) { Item(item); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); MOVE(opponent, move1); } + TURN { MOVE(opponent, move2); } + TURN { MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); } + } SCENE { + if (airborne) { + NOT STATUS_ICON(opponent, poison: TRUE); + } else { + STATUS_ICON(opponent, poison: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Toxic Spikes do not affect Steel-types") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_STEELIX].types[0] == TYPE_STEEL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_STEELIX); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + TURN { SWITCH(opponent, 1); } + } SCENE { + NOT STATUS_ICON(opponent, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Toxic Spikes are removed by grounded Poison-types") +{ + u32 species; + u32 item = ITEM_NONE; + u32 move = MOVE_CELEBRATE; + bool32 grounded; + PARAMETRIZE { species = SPECIES_EKANS; grounded = TRUE; } + PARAMETRIZE { species = SPECIES_ZUBAT; grounded = FALSE; } + PARAMETRIZE { species = SPECIES_ZUBAT; item = ITEM_IRON_BALL; grounded = TRUE; } + PARAMETRIZE { species = SPECIES_ZUBAT; move = MOVE_GRAVITY; grounded = TRUE; } + PARAMETRIZE { species = SPECIES_ZUBAT; move = MOVE_INGRAIN; grounded = TRUE; } + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_EKANS].types[0] == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_ZUBAT].types[0] == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_ZUBAT].types[1] == TYPE_FLYING); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(species) { Item(item); } + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES); MOVE(opponent, move); } + TURN { MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); } + TURN { SWITCH(opponent, 0); } + } SCENE { + if (grounded) { + NOT STATUS_ICON(opponent, poison: TRUE); + MESSAGE("The poison spikes disappeared from around the opposing team's feet!"); + NOT STATUS_ICON(opponent, poison: TRUE); + } else { + NOT STATUS_ICON(opponent, poison: TRUE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent); + STATUS_ICON(opponent, poison: TRUE); + } + } +} + +// This would test for what I believe to be a bug in the mainline games. +// A Pokémon that gets passed magnet rise should still remove the Toxic +// Spikes even though it is airborne. +// The test currently fails, because we don't incorporate this bug. +SINGLE_BATTLE_TEST("Toxic Spikes are removed by Poison-types affected by Magnet Rise") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_EKANS].types[0] == TYPE_POISON); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_EKANS); + } WHEN { + TURN { MOVE(opponent, MOVE_MAGNET_RISE); } + TURN { MOVE(player, MOVE_TOXIC_SPIKES); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); } + TURN { SWITCH(opponent, 0); } + } SCENE { + NOT STATUS_ICON(opponent, poison: TRUE); + MESSAGE("The poison spikes disappeared from around the opposing team's feet!"); + NOT STATUS_ICON(opponent, poison: TRUE); + } +} diff --git a/test/status1.c b/test/status1.c new file mode 100644 index 000000000..63a9cd041 --- /dev/null +++ b/test/status1.c @@ -0,0 +1,194 @@ +#include "global.h" +#include "test_battle.h" + +SINGLE_BATTLE_TEST("Sleep prevents the battler from using a move") +{ + u32 turns; + PARAMETRIZE { turns = 1; } + PARAMETRIZE { turns = 2; } + PARAMETRIZE { turns = 3; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP_TURN(turns)); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + for (i = 0; i < turns; i++) + TURN { MOVE(player, MOVE_CELEBRATE); } + } SCENE { + for (i = 0; i < turns - 1; i++) + MESSAGE("Wobbuffet is fast asleep."); + MESSAGE("Wobbuffet woke up!"); + STATUS_ICON(player, none: TRUE); + MESSAGE("Wobbuffet used Celebrate!"); + } +} + +SINGLE_BATTLE_TEST("Poison deals 1/8th damage per turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + for (i = 0; i < 4; i++) + TURN {} + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + for (i = 0; i < 4; i++) + HP_BAR(player, damage: maxHP / 8); + } +} + +SINGLE_BATTLE_TEST("Burn deals 1/16th damage per turn") +{ + GIVEN { + ASSUME(B_BURN_DAMAGE >= GEN_LATEST); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_BURN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + for (i = 0; i < 4; i++) + TURN {} + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + for (i = 0; i < 4; i++) + HP_BAR(player, damage: maxHP / 16); + } +} + +SINGLE_BATTLE_TEST("Burn reduces attack by 50%", s16 damage) +{ + bool32 burned; + PARAMETRIZE { burned = FALSE; } + PARAMETRIZE { burned = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { if (burned) Status1(STATUS1_BURN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Freeze has a 20% chance of being thawed") +{ + PASSES_RANDOMLY(20, 100); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + } SCENE { + STATUS_ICON(player, none: TRUE); + } +} + +SINGLE_BATTLE_TEST("Freeze is thawed by opponent's Fire-type attacks") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_EMBER); } + } SCENE { + MESSAGE("Wobbuffet is frozen solid!"); + MESSAGE("Foe Wobbuffet used Ember!"); + MESSAGE("Wobbuffet was defrosted!"); + STATUS_ICON(player, none: TRUE); + } +} + +SINGLE_BATTLE_TEST("Freeze is thawed by user's Flame Wheel") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_FLAME_WHEEL].flags & FLAG_THAW_USER); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_FREEZE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FLAME_WHEEL); } + } SCENE { + MESSAGE("Wobbuffet was defrosted by Flame Wheel!"); + STATUS_ICON(player, none: TRUE); + MESSAGE("Wobbuffet used Flame Wheel!"); + } +} + +SINGLE_BATTLE_TEST("Paralysis reduces speed by 50%") +{ + u16 playerSpeed; + bool32 playerFirst; + PARAMETRIZE { playerSpeed = 98; playerFirst = FALSE; } + PARAMETRIZE { playerSpeed = 102; playerFirst = TRUE; } + GIVEN { + ASSUME(B_PARALYSIS_SPEED >= GEN_7); + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_PARALYSIS); Speed(playerSpeed); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); } + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + if (playerFirst) { + ONE_OF { + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet is paralyzed! It can't move!"); + } + MESSAGE("Foe Wobbuffet used Celebrate!"); + } else { + MESSAGE("Foe Wobbuffet used Celebrate!"); + ONE_OF { + MESSAGE("Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet is paralyzed! It can't move!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Paralysis has a 25% chance of skipping the turn") +{ + PASSES_RANDOMLY(25, 100); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_PARALYSIS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet is paralyzed! It can't move!"); + } +} + +SINGLE_BATTLE_TEST("Bad poison deals 1/16th cumulative damage per turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_TOXIC_POISON); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + for (i = 0; i < 4; i++) + TURN {} + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + for (i = 0; i < 4; i++) + HP_BAR(player, damage: maxHP / 16 * (i + 1)); + } +} + +SINGLE_BATTLE_TEST("Bad poison cumulative damage resets on switch") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_TOXIC_POISON); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + TURN {} + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); } + TURN {} + TURN {} + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + for (i = 0; i < 2; i++) + HP_BAR(player, damage: maxHP / 16 * (i + 1)); + for (i = 0; i < 2; i++) + HP_BAR(player, damage: maxHP / 16 * (i + 1)); + } +} diff --git a/test/test.h b/test/test.h new file mode 100644 index 000000000..cbcf11717 --- /dev/null +++ b/test/test.h @@ -0,0 +1,142 @@ +#ifndef GUARD_TEST_H +#define GUARD_TEST_H + +#include "test_runner.h" + +#define MAX_PROCESSES 32 // See also tools/mgba-rom-test-hydra/main.c + +enum TestResult +{ + TEST_RESULT_FAIL, + TEST_RESULT_PASS, + TEST_RESULT_SKIP, + TEST_RESULT_INVALID, + TEST_RESULT_ERROR, + TEST_RESULT_TIMEOUT, +}; + +struct TestRunner +{ + u32 (*estimateCost)(void *); + void (*setUp)(void *); + void (*run)(void *); + void (*tearDown)(void *); + bool32 (*checkProgress)(void *); + bool32 (*handleExitWithResult)(void *, enum TestResult); +}; + +struct Test +{ + const char *name; + const char *filename; + const struct TestRunner *runner; + void *data; +}; + +struct TestRunnerState +{ + u8 state; + u8 exitCode; + s32 tests; + s32 passes; + s32 skips; + const char *skipFilename; + const struct Test *test; + u32 processCosts[MAX_PROCESSES]; + + u8 result; + u8 expectedResult; + u32 timeoutSeconds; +}; + +extern const u8 gTestRunnerN; +extern const u8 gTestRunnerI; +extern const char gTestRunnerArgv[256]; + +extern const struct TestRunner gAssumptionsRunner; +extern struct TestRunnerState gTestRunnerState; + +void CB2_TestRunner(void); + +void Test_ExpectedResult(enum TestResult); +void Test_ExitWithResult(enum TestResult, const char *fmt, ...); + +s32 MgbaPrintf_(const char *fmt, ...); + +#define ASSUMPTIONS \ + static void Assumptions(void); \ + __attribute__((section(".tests"))) static const struct Test sAssumptions = \ + { \ + .name = "ASSUMPTIONS: " __FILE__, \ + .filename = __FILE__, \ + .runner = &gAssumptionsRunner, \ + .data = Assumptions, \ + }; \ + static void Assumptions(void) + +#define ASSUME(c) \ + do \ + { \ + if (!(c)) \ + Test_ExitWithResult(TEST_RESULT_SKIP, "%s:%d: ASSUME failed", gTestRunnerState.test->filename, __LINE__); \ + } while (0) + +#define EXPECT(c) \ + do \ + { \ + if (!(c)) \ + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT failed", gTestRunnerState.test->filename, __LINE__); \ + } while (0) + +#define EXPECT_EQ(a, b) \ + do \ + { \ + typeof(a) _a = (a), _b = (b); \ + if (_a != _b) \ + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_EQ(%d, %d) failed", gTestRunnerState.test->filename, __LINE__, _a, _b); \ + } while (0) + +#define EXPECT_NE(a, b) \ + do \ + { \ + typeof(a) _a = (a), _b = (b); \ + if (_a == _b) \ + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_NE(%d, %d) failed", gTestRunnerState.test->filename, __LINE__, _a, _b); \ + } while (0) + +#define EXPECT_LT(a, b) \ + do \ + { \ + typeof(a) _a = (a), _b = (b); \ + if (_a >= _b) \ + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_LT(%d, %d) failed", gTestRunnerState.test->filename, __LINE__, _a, _b); \ + } while (0) + +#define EXPECT_LE(a, b) \ + do \ + { \ + typeof(a) _a = (a), _b = (b); \ + if (_a > _b) \ + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_LE(%d, %d) failed", gTestRunnerState.test->filename, __LINE__, _a, _b); \ + } while (0) + +#define EXPECT_GT(a, b) \ + do \ + { \ + typeof(a) _a = (a), _b = (b); \ + if (_a <= _b) \ + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_GT(%d, %d) failed", gTestRunnerState.test->filename, __LINE__, _a, _b); \ + } while (0) + +#define EXPECT_GE(a, b) \ + do \ + { \ + typeof(a) _a = (a), _b = (b); \ + if (_a < _b) \ + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_GE(%d, %d) failed", gTestRunnerState.test->filename, __LINE__, _a, _b); \ + } while (0) + +#define KNOWN_FAILING \ + Test_ExpectedResult(TEST_RESULT_FAIL) + +#endif diff --git a/test/test_battle.h b/test/test_battle.h new file mode 100644 index 000000000..8fb1ce6d3 --- /dev/null +++ b/test/test_battle.h @@ -0,0 +1,826 @@ +/* Embedded DSL for automated black-box testing of battle mechanics. + * + * To run all the tests use: + * make check + * To run specific tests, e.g. Spikes ones, use: + * make check TESTS='Spikes' + * To build a ROM (pokemerald-test.elf) that can be opened in mgba to + * view specific tests, e.g. Spikes ones, use: + * make pokeemerald-test.elf TESTS='Spikes' + * + * Manually testing a battle mechanic often follows this pattern: + * 1. Create a party which can activate the mechanic. + * 2. Start a battle and play a few turns which activate the mechanic. + * 3. Look at the UI outputs to decide if the mechanic works. + * + * Automated testing follows the same pattern: + * 1. Initialize the party in GIVEN. + * 2. Play the turns in WHEN. + * 3. Check the UI outputs in SCENE. + * + * As a concrete example, to manually test EFFECT_PARALYZE, e.g. the + * effect of Stun Spore you might: + * 1. Put a Wobbuffet that knows Stun Spore in your party. + * 2. Battle a wild Wobbuffet. + * 3. Use Stun Spore. + * 4. Check that the Wobbuffet is paralyzed. + * + * This can be translated to an automated test as follows: + * + * ASSUMPTIONS + * { + * ASSUME(gBattleMoves[MOVE_STUN_SPORE].effect == EFFECT_PARALYZE); + * } + * + * SINGLE_BATTLE_TEST("Stun Spore inflicts paralysis") + * { + * GIVEN { + * PLAYER(SPECIES_WOBBUFFET); // 1. + * OPPONENT(SPECIES_WOBBUFFET); // 2. + * } WHEN { + * TURN { MOVE(player, MOVE_STUN_SPORE); } // 3. + * } SCENE { + * ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player); + * MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); // 4 + * STATUS_ICON(opponent, paralysis: TRUE); // 4. + * } + * } + * + * The ASSUMPTIONS block documents that Stun Spore has EFFECT_PARALYZE. + * If Stun Spore did not have that effect it would cause the tests in + * the file to be skipped. We write our tests like this so that hackers + * can change the effects of moves without causing tests to fail. + * + * SINGLE_BATTLE_TEST defines the name of the test. Related tests should + * start with the same prefix, e.g. Stun Spore tests should start with + * "Stun Spore", this allows just the Stun Spore-related tests to be run + * with: + * make check TESTS='Stun Spore' + * + * GIVEN initializes the parties, PLAYER and OPPONENT add a Pokémon to + * their respective parties. They can both accept a block which further + * customizes the Pokémon's stats, moves, item, ability, etc. + * + * WHEN describes the turns, and TURN describes the choices made in a + * single turn. MOVE causes the player to use Stun Spore and adds the + * move to the Pokémon's moveset if an explicit Moves was not specified. + * Pokémon that are not mentioned in a TURN use Celebrate. + * The test runner attempts to rig the RNG so that the first move used + * in a turn does not miss and activates its secondary effects (if any). + * + * SCENE describes the player-visible output of the battle. In this case + * ANIMATION checks that the Stun Spore animation played, MESSAGE checks + * the paralysis message was shown, and STATUS_ICON checks that the + * opponent's HP bar shows a PRZ icon. + * + * As a second example, to manually test that Stun Spore does not effect + * Grass-types you might: + * 1. Put a Wobbuffet that knows Stun Spore in your party. + * 2. Battle a wild Oddish. + * 3. Use Stun Spore. + * 4. Check that the move animation does not play. + * 5. Check that a "It doesn't affect Foe Oddish…" message is shown. + * + * This can again be translated as follows: + * + * SINGLE_BATTLE_TEST("Stun Spore does not affect Grass-types") + * { + * GIVEN { + * ASSUME(gBattleMoves[MOVE_STUN_SPORE].flags & FLAG_POWDER); + * ASSUME(gSpeciesInfo[SPECIES_ODDISH].types[0] == TYPE_GRASS); + * PLAYER(SPECIES_ODDISH); // 1. + * OPPONENT(SPECIES_ODDISH); // 2. + * } WHEN { + * TURN { MOVE(player, MOVE_STUN_SPORE); } // 3. + * } SCENE { + * NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player); // 4. + * MESSAGE("It doesn't affect Foe Oddish…"); // 5. + * } + * } + * + * The ASSUMEs are documenting the reasons why Stun Spore does not + * affect Oddish, namely that Stun Spore is a powder move, and Oddish + * is a Grass-type. These ASSUMEs function similarly to the ones in + * ASSUMPTIONS but apply only to the one test. + * + * NOT inverts the meaning of a SCENE check, so applying it to ANIMATION + * requires that the Stun Spore animation does not play. MESSAGE checks + * that the message was shown. The checks in SCENE are ordered, so + * together this says "The doesn't affect message is shown, and the Stun + * Spore animation does not play at any time before that". Normally you + * would only test one or the other, or even better, just + * NOT STATUS_ICON(opponent, paralysis: TRUE); to say that Oddish was + * not paralyzed without specifying the exact outputs which led to that. + * + * As a final example, to test that Howl works you might: + * 1. Put a Wobbuffet that knows Howl and Tackle in your party. + * 2. Battle a wild Wobbuffet. + * 3. Use Tackle and note the amount the HP bar reduced. + * 4. Battle a wild Wobbuffet. + * 5. Use Howl and that that the stat change animation and message play. + * 6. Use Tackle and check that the HP bar reduced by more than in 3. + * + * This can be translated to an automated test as follows: + * + * SINGLE_BATTLE_TEST("Howl raises Attack", s16 damage) + * { + * bool32 raiseAttack; + * PARAMETRIZE { raiseAttack = FALSE; } + * PARAMETRIZE { raiseAttack = TRUE; } + * GIVEN { + * ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + * PLAYER(SPECIES_WOBBUFFET); + * OPPONENT(SPECIES_WOBBUFFET); + * } WHEN { + * if (raiseAttack) TURN { MOVE(player, MOVE_HOWL); } // 5. + * TURN { MOVE(player, MOVE_TACKLE); } // 3 & 6. + * } SCENE { + * if (raiseAttack) { + * ANIMATION(ANIM_TYPE_MOVE, MOVE_HOWL, player); + * ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); // 5. + * MESSAGE("Wobbuffet's attack rose!"); // 5. + * } + * ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + * HP_BAR(opponent, captureDamage: &results[i].damage); // 3 & 6. + * } FINALLY { + * EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); // 6. + * } + * } + * + * PARAMETRIZE causes a test to run multiple times, once per PARAMETRIZE + * block (e.g. once with raiseAttack = FALSE and once with raiseAttack = + * TRUE). + * HP_BAR's captureDamage causes the change in HP to be stored in a + * variable, and the variable chosen is results[i].damage. results[i] + * contains all the variables defined at the end of SINGLE_BATTLE_TEST, + * i is the current PARAMETRIZE index. + * FINALLY runs after the last parameter has finished, and uses + * EXPECT_MUL_EQ to check that the second battle deals 1.5× the damage + * of the first battle (with a small tolerance to account for rounding). + * + * You might notice that all the tests check the outputs the player + * could see rather than the internal battle state. e.g. the Howl test + * could have used gBattleMons[B_POSITION_OPPONENT_LEFT].hp instead of + * using HP_BAR to capture the damage. This is a deliberate choice, by + * checking what the player can observe the tests are more robust to + * refactoring, e.g. if gBattleMons got moved into gBattleStruct then + * any test that used it would need to be updated. + * + * REFERENCE + * ========= + * + * ASSUME(cond) + * Causes the test to be skipped if cond is false. Used to document any + * prerequisites of the test, e.g. to test Burn reducing the Attack of a + * Pokémon we can observe the damage of a physical attack with and + * without the burn. To document that this test assumes the attack is + * physical we can use: + * ASSUME(gBattleMoves[MOVE_WHATEVER].split == SPLIT_PHYSICAL); + * + * ASSUMPTIONS + * Should be placed immediately after any #includes and contain any + * ASSUMEs which should apply to the whole file, e.g. to test + * EFFECT_POISON_HIT we need to choose a move with that effect, if + * we chose to use Poison Sting in every test then the top of + * move_effect_poison_hit.c should be: + * ASSUMPTIONS + * { + * ASSUME(gBattleMoves[MOVE_POISON_STING].effect == EFFECT_POISON_HIT); + * } + * + * SINGLE_BATTLE_TEST(name, results...) and DOUBLE_BATTLE_TEST(name, results...) + * Define single- and double- battles. The names should start with the + * name of the mechanic being tested so that it is easier to run all the + * related tests. results contains variable declarations to be placed + * into the results array which is available in PARAMETRIZEd tests. + * The main differences for doubles are: + * - Move targets sometimes need to be explicit. + * - Instead of player and opponent there is playerLeft, playerRight, + * opponentLeft, and opponentRight. + * + * KNOWN_FAILING + * Marks a test as not passing due to a bug. If there is an issue number + * associated with the bug it should be included in a comment. If the + * test passes the developer will be notified to remove KNOWN_FAILING. + * For example: + * SINGLE_BATTLE_TEST("Jump Kick has no recoil if no target") + * { + * KNOWN_FAILING; // #2596. + * + * PARAMETRIZE + * Runs a test multiple times. i will be set to which parameter is + * running, and results will contain an entry for each parameter, e.g.: + * SINGLE_BATTLE_TEST("Blaze boosts Fire-type moves in a pinch", s16 damage) + * { + * u16 hp; + * PARAMETRIZE { hp = 99; } + * PARAMETRIZE { hp = 33; } + * GIVEN { + * ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); + * PLAYER(SPECIES_CHARMANDER) { Ability(ABILITY_BLAZE); MaxHP(99); HP(hp); } + * OPPONENT(SPECIES_WOBBUFFET); + * } WHEN { + * TURN { MOVE(player, MOVE_EMBER); } + * } SCENE { + * HP_BAR(opponent, captureDamage: &results[i].damage); + * } FINALLY { + * EXPECT(results[1].damage > results[0].damage); + * } + * } + * + * PASSES_RANDOMLY(successes, trials) + * Checks that the test passes approximately successes/trials. Used for + * testing RNG-based attacks, e.g.: + * PASSES_RANDOMLY(gBattleMoves[move].accuracy, 100); + * Note that PASSES_RANDOMLY makes the tests run very slowly and should + * be avoided where possible. + * + * GIVEN + * Contains the initial state of the parties before the battle. + * + * RNGSeed(seed) + * Explicitly sets the RNG seed. Try to avoid using this because it is a + * very fragile tool. + * Example: + * GIVEN { + * RNGSeed(0xC0DEIDEA); + * + * PLAYER(species) and OPPONENT(species) + * Adds the species to the player's or opponent's party respectively. + * The Pokémon can be further customized with the following functions: + * - Gender(MON_MALE | MON_FEMALE) + * - Nature(nature) + * - Ability(ability) + * - Level(level) + * - MaxHP(n), HP(n), Attack(n), Defense(n), SpAttack(n), SpDefense(n) + * - Speed(n) + * - Item(item) + * - Moves(moves...) + * - Friendship(friendship) + * - Status1(status1) + * For example to create a Wobbuffet that is poisoned: + * PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + * Note if Speed is specified for any Pokémon then it must be specified + * for all Pokémon. + * Note if Moves is specified then MOVE will not automatically add moves + * to the moveset. + * + * WHEN + * Contains the choices that battlers make during the battle. + * + * TURN + * Groups the choices made by the battlers on a single turn. If Speeds + * have not been explicitly specified then the order of the MOVEs in the + * TURN will be used to infer the Speeds of the Pokémon, e.g.: + * // player's speed will be greater than opponent's speed. + * TURN { MOVE(player, MOVE_SPLASH); MOVE(opponent, MOVE_SPLASH); } + * // opponent's speed will be greater than player's speed. + * TURN { MOVE(opponent, MOVE_SPLASH); MOVE(player, MOVE_SPLASH); } + * The inference process is naive, if your test contains anything that + * modifies the speed of a battler you should specify them explicitly. + * + * MOVE(battler, move | moveSlot:, [megaEvolve:], [hit:], [criticalHit:], [target:], [allowed:]) + * Used when the battler chooses Fight. Either the move ID or move slot + * must be specified. megaEvolve: TRUE causes the battler to Mega Evolve + * if able, hit: FALSE causes the move to miss, criticalHit: TRUE causes + * the move to land a critical hit, target: is used in double battles to + * choose the target (when necessary), and allowed: FALSE is used to + * reject an illegal move e.g. a Disabled one. + * MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); + * If the battler does not have an explicit Moves specified the moveset + * will be populated based on the MOVEs it uses. + * + * FORCED_MOVE(battler) + * Used when the battler chooses Fight and then their move is chosen for + * them, e.g. when affected by Encore. + * FORCED_MOVE(player); + * + * SWITCH(battler, partyIndex) + * Used when the battler chooses Switch. + * SWITCH(player, 1); + * + * SKIP_TURN(battler) + * Used when the battler cannot choose an action, e.g. when locked into + * Thrash. + * SKIP_TURN(player); + * + * SEND_OUT(battler, partyIndex) + * Used when the battler chooses to switch to another Pokémon but not + * via Switch, e.g. after fainting or due to a U-turn. + * SEND_OUT(player, 1); + * + * SCENE + * Contains an abridged description of the UI during the THEN. The order + * of the description must match too, e.g. + * // ABILITY_POPUP followed by a MESSAGE + * ABILITY_POPUP(player, ABILITY_STURDY); + * MESSAGE("Geodude was protected by Sturdy!"); + * + * ABILITY_POPUP(battler, [ability]) + * Causes the test to fail if the battler's ability pop-up is not shown. + * If specified, ability is the ability shown in the pop-up. + * ABILITY_POPUP(opponent, ABILITY_MOLD_BREAKER); + * + * ANIMATION(type, animId, [battler], [target:]) + * Causes the test to fail if the animation does not play. A common use + * of this command is to check if a move was successful, e.g.: + * ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + * target can only be specified for ANIM_TYPE_MOVE. + * + * HP_BAR(battler, [damage: | hp: | captureDamage: | captureHP:]) + * If hp: or damage: are used, causes the test to fail if that amount of + * damage is not dealt, e.g.: + * HP_BAR(player, hp: 0); + * If captureDamage: or captureHP: are used, causes the test to fail if + * the HP bar does not change, and then writes that change to the + * pointer, e.g.: + * s16 damage; + * HP_BAR(player, captureDamage: &damage); + * If none of the above are used, causes the test to fail if the HP + * changes at all. + * + * MESSAGE(pattern) + * Causes the test to fail if the message in pattern is not displayed. + * Spaces in pattern match newlines (\n, \l, and \p) in the message. + * Often used to check that a battler took its turn but it failed, e.g.: + * MESSAGE("Wobbuffet used Dream Eater!"); + * MESSAGE("Foe Wobbuffet wasn't affected!"); + * + * STATUS_ICON(battler, status1 | none: | sleep: | poison: | burn: | freeze: | paralysis:, badPoison:) + * Causes the test to fail if the battler's status is not changed to the + * specified status. + * STATUS_ICON(player, badPoison: TRUE); + * If the expected status icon is parametrized the corresponding STATUS1 + * constant can be provided, e.g.: + * u32 status1; + * PARAMETRIZE { status1 = STATUS1_NONE; } + * PARAMETRIZE { status1 = STATUS1_BURN; } + * ... + * STATUS_ICON(player, status1); + * + * NOT + * Causes the test to fail if the SCENE command succeeds before the + * following command succeeds. + * // Our Wobbuffet does not Celebrate before the foe's. + * NOT MESSAGE("Wobbuffet used Celebrate!"); + * MESSAGE("Foe Wobbuffet used Celebrate!"); + * WARNING: NOT is an alias of NONE_OF, so it behaves surprisingly when + * applied to multiple commands wrapped in braces. + * + * ONE_OF + * Causes the test to fail unless one of the SCENE commands succeeds. + * ONE_OF { + * MESSAGE("Wobbuffet used Celebrate!"); + * MESSAGE("Wobbuffet is paralyzed! It can't move!"); + * } + * + * NONE_OF + * Causes the test to fail if one of the SCENE commands succeeds before + * the command after the NONE_OF succeeds. + * // Our Wobbuffet does not move before the foe's. + * NONE_OF { + * MESSAGE("Wobbuffet used Celebrate!"); + * MESSAGE("Wobbuffet is paralyzed! It can't move!"); + * } + * MESSAGE("Foe Wobbuffet used Celebrate!"); + * + * PLAYER_PARTY and OPPONENT_PARTY + * Refer to the party members defined in GIVEN, e.g.: + * s32 maxHP = GetMonData(&OPPONENT_PARTY[0], MON_DATA_MAX_HP); + * HP_BAR(opponent, damage: maxHP / 2); + * + * THEN + * Contains code to run after the battle has finished. If the test is + * PARAMETRIZEd then EXPECTs between the results should go here. Is also + * occasionally used to check the internal battle state when checking + * the behavior via a SCENE is too difficult, verbose, or error-prone. + * + * FINALLY + * Contains checks to run after all PARAMETERIZEs have run. Prefer to + * write your checks in THEN where possible, because a failure in THEN + * will be tagged with which parameter it corresponds to. + * + * EXPECT(cond) + * Causes the test to fail if cond is false. + * + * EXPECT_EQ(a, b), EXPECT_NE(a, b), EXPECT_LT(a, b), EXPECT_LE(a, b), EXPECT_GT(a, b), EXPECT_GE(a, b) + * Causes the test to fail if a and b compare incorrectly, e.g. + * EXPECT_EQ(results[0].damage, results[1].damage); + * + * EXPECT_MUL_EQ(a, m, b) + * Causes the test to fail if a*m != b (within a threshold), e.g. + * // Expect results[0].damage * 1.5 == results[1].damage. + * EXPECT_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); */ + +#ifndef GUARD_TEST_BATTLE_H +#define GUARD_TEST_BATTLE_H + +#include "battle.h" +#include "battle_anim.h" +#include "data.h" +#include "item.h" +#include "recorded_battle.h" +#include "test.h" +#include "util.h" +#include "constants/abilities.h" +#include "constants/battle_anim.h" +#include "constants/battle_move_effects.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" + +// NOTE: If the stack is too small the test runner will probably crash +// or loop. +#define BATTLE_TEST_STACK_SIZE 1024 +#define MAX_QUEUED_EVENTS 16 + +enum { BATTLE_TEST_SINGLES, BATTLE_TEST_DOUBLES }; + +typedef void (*SingleBattleTestFunction)(void *, u32, struct BattlePokemon *, struct BattlePokemon *); +typedef void (*DoubleBattleTestFunction)(void *, u32, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *); + +struct BattleTest +{ + u8 type; + u16 sourceLine; + union + { + SingleBattleTestFunction singles; + DoubleBattleTestFunction doubles; + } function; + size_t resultsSize; +}; + +enum +{ + QUEUED_ABILITY_POPUP_EVENT, + QUEUED_ANIMATION_EVENT, + QUEUED_HP_EVENT, + QUEUED_MESSAGE_EVENT, + QUEUED_STATUS_EVENT, +}; + +struct QueuedAbilityEvent +{ + u8 battlerId; + u16 ability; +}; + +struct QueuedAnimationEvent +{ + u8 type; + u16 id; + u8 attacker:4; + u8 target:4; +}; + +enum { HP_EVENT_NEW_HP, HP_EVENT_DELTA_HP }; + +struct QueuedHPEvent +{ + u32 battlerId:3; + u32 type:1; + u32 address:28; +}; + +struct QueuedMessageEvent +{ + const u8 *pattern; +}; + +struct QueuedStatusEvent +{ + u32 battlerId:3; + u32 mask:8; + u32 unused_01:21; +}; + +struct QueuedEvent +{ + u8 type; + u8 sourceLineOffset; + u8 groupType:2; + u8 groupSize:6; + union + { + struct QueuedAbilityEvent ability; + struct QueuedAnimationEvent animation; + struct QueuedHPEvent hp; + struct QueuedMessageEvent message; + struct QueuedStatusEvent status; + } as; +}; + +struct BattleTestData +{ + u8 stack[BATTLE_TEST_STACK_SIZE]; + + u8 playerPartySize; + u8 opponentPartySize; + u8 explicitMoves[NUM_BATTLE_SIDES]; + bool8 hasExplicitSpeeds; + u8 explicitSpeeds[NUM_BATTLE_SIDES]; + u16 slowerThan[NUM_BATTLE_SIDES][PARTY_SIZE]; + u8 currentSide; + u8 currentPartyIndex; + struct Pokemon *currentMon; + u8 gender; + u8 nature; + + u8 currentMonIndexes[MAX_BATTLERS_COUNT]; + u8 turnState; + u8 turns; + u8 actionBattlers; + u8 moveBattlers; + bool8 hasRNGActions:1; + + struct RecordedBattleSave recordedBattle; + u8 battleRecordTypes[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; + u8 battleRecordSourceLineOffsets[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; + u16 recordIndexes[MAX_BATTLERS_COUNT]; + u8 lastActionTurn; + u8 nextRNGTurn; + + u8 queuedEventsCount; + u8 queueGroupType; + u8 queueGroupStart; + u8 queuedEvent; + struct QueuedEvent queuedEvents[MAX_QUEUED_EVENTS]; +}; + +struct BattleTestRunnerState +{ + u8 battlersCount; + u8 parametersCount; // Valid only in BattleTest_Setup. + u8 parameters; + u8 runParameter; + u8 trials; + u8 expectedPasses; + u8 observedPasses; + u8 skippedTrials; + u8 runTrial; + bool8 runRandomly:1; + bool8 runGiven:1; + bool8 runWhen:1; + bool8 runScene:1; + bool8 runThen:1; + bool8 runFinally:1; + bool8 runningFinally:1; + struct BattleTestData data; + u8 *results; + u8 checkProgressParameter; + u8 checkProgressTrial; + u8 checkProgressTurn; +}; + +extern const struct TestRunner gBattleTestRunner; +extern struct BattleTestRunnerState *gBattleTestRunnerState; + +#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) +#define MEMBERS_0() +#define MEMBERS_1(a) a; +#define MEMBERS_2(a, b) a; b; +#define MEMBERS_3(a, b, c) a; b; c; +#define MEMBERS_4(a, b, c, d) a; b; c; d; +#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; +#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; +#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; +#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; + +#define APPEND_TRUE(...) VARARG_8(APPEND_TRUE_, __VA_ARGS__) +#define APPEND_TRUE_0() +#define APPEND_TRUE_1(a) a, TRUE +#define APPEND_TRUE_2(a, b) a, TRUE, b, TRUE +#define APPEND_TRUE_3(a, b, c) a, TRUE, b, TRUE, c, TRUE +#define APPEND_TRUE_4(a, b, c, d) a, TRUE, b, TRUE, c, TRUE, d, TRUE +#define APPEND_TRUE_5(a, b, c, d, e) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE +#define APPEND_TRUE_6(a, b, c, d, e, f) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE +#define APPEND_TRUE_7(a, b, c, d, e, f, g) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE, g, TRUE +#define APPEND_TRUE_8(a, b, c, d, e, f, g, h) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE, g, TRUE, h, TRUE + +/* Test */ + +#define SINGLE_BATTLE_TEST(_name, ...) \ + struct CAT(Result, __LINE__) { MEMBERS(__VA_ARGS__) }; \ + static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *, u32, struct BattlePokemon *, struct BattlePokemon *); \ + __attribute__((section(".tests"))) static const struct Test CAT(sTest, __LINE__) = \ + { \ + .name = _name, \ + .filename = __FILE__, \ + .runner = &gBattleTestRunner, \ + .data = (void *)&(const struct BattleTest) \ + { \ + .type = BATTLE_TEST_SINGLES, \ + .sourceLine = __LINE__, \ + .function = { .singles = (SingleBattleTestFunction)CAT(Test, __LINE__) }, \ + .resultsSize = sizeof(struct CAT(Result, __LINE__)), \ + }, \ + }; \ + static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *results, u32 i, struct BattlePokemon *player, struct BattlePokemon *opponent) + +#define DOUBLE_BATTLE_TEST(_name, ...) \ + struct CAT(Result, __LINE__) { MEMBERS(__VA_ARGS__) }; \ + static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *, u32, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *); \ + __attribute__((section(".tests"))) static const struct Test CAT(sTest, __LINE__) = \ + { \ + .name = _name, \ + .filename = __FILE__, \ + .runner = &gBattleTestRunner, \ + .data = (void *)&(const struct BattleTest) \ + { \ + .type = BATTLE_TEST_DOUBLES, \ + .sourceLine = __LINE__, \ + .function = { .doubles = (DoubleBattleTestFunction)CAT(Test, __LINE__) }, \ + .resultsSize = sizeof(struct CAT(Result, __LINE__)), \ + }, \ + }; \ + static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *results, u32 i, struct BattlePokemon *playerLeft, struct BattlePokemon *opponentLeft, struct BattlePokemon *playerRight, struct BattlePokemon *opponentRight) + +/* Parametrize */ + +#define PARAMETRIZE if (gBattleTestRunnerState->parametersCount++ == i) + +/* Randomly */ + +#define PASSES_RANDOMLY(passes, trials) for (; gBattleTestRunnerState->runRandomly; gBattleTestRunnerState->runRandomly = FALSE) Randomly(__LINE__, passes, trials) + +void Randomly(u32 sourceLine, u32 passes, u32 trials); + +/* Given */ + +#define GIVEN for (; gBattleTestRunnerState->runGiven; gBattleTestRunnerState->runGiven = FALSE) + +#define RNGSeed(seed) RNGSeed_(__LINE__, seed) + +#define PLAYER(species) for (OpenPokemon(__LINE__, B_SIDE_PLAYER, species); gBattleTestRunnerState->data.currentMon; ClosePokemon(__LINE__)) +#define OPPONENT(species) for (OpenPokemon(__LINE__, B_SIDE_OPPONENT, species); gBattleTestRunnerState->data.currentMon; ClosePokemon(__LINE__)) + +#define Gender(gender) Gender_(__LINE__, gender) +#define Nature(nature) Nature_(__LINE__, nature) +#define Ability(ability) Ability_(__LINE__, ability) +#define Level(level) Level_(__LINE__, level) +#define MaxHP(maxHP) MaxHP_(__LINE__, maxHP) +#define HP(hp) HP_(__LINE__, hp) +#define Attack(attack) Attack_(__LINE__, attack) +#define Defense(defense) Defense_(__LINE__, defense) +#define SpAttack(spAttack) SpAttack_(__LINE__, spAttack) +#define SpDefense(spDefense) SpDefense_(__LINE__, spDefense) +#define Speed(speed) Speed_(__LINE__, speed) +#define Item(item) Item_(__LINE__, item) +#define Moves(move1, ...) Moves_(__LINE__, (const u16 [MAX_MON_MOVES]) { move1, __VA_ARGS__ }) +#define Friendship(friendship) Friendship_(__LINE__, friendship) +#define Status1(status1) Status1_(__LINE__, status1) + +void OpenPokemon(u32 sourceLine, u32 side, u32 species); +void ClosePokemon(u32 sourceLine); + +void RNGSeed_(u32 sourceLine, u32 seed); +void Gender_(u32 sourceLine, u32 gender); +void Nature_(u32 sourceLine, u32 nature); +void Ability_(u32 sourceLine, u32 ability); +void Level_(u32 sourceLine, u32 level); +void MaxHP_(u32 sourceLine, u32 maxHP); +void HP_(u32 sourceLine, u32 hp); +void Attack_(u32 sourceLine, u32 attack); +void Defense_(u32 sourceLine, u32 defense); +void SpAttack_(u32 sourceLine, u32 spAttack); +void SpDefense_(u32 sourceLine, u32 spDefense); +void Speed_(u32 sourceLine, u32 speed); +void Item_(u32 sourceLine, u32 item); +void Moves_(u32 sourceLine, const u16 moves[MAX_MON_MOVES]); +void Friendship_(u32 sourceLine, u32 friendship); +void Status1_(u32 sourceLine, u32 status1); + +#define PLAYER_PARTY (gBattleTestRunnerState->data.recordedBattle.playerParty) +#define OPPONENT_PARTY (gBattleTestRunnerState->data.recordedBattle.opponentParty) + +/* When */ + +#define WHEN for (; gBattleTestRunnerState->runWhen; gBattleTestRunnerState->runWhen = FALSE) + +enum { TURN_CLOSED, TURN_OPEN, TURN_CLOSING }; + +#define TURN for (OpenTurn(__LINE__); gBattleTestRunnerState->data.turnState == TURN_OPEN; CloseTurn(__LINE__)) + +#define MOVE(battler, ...) Move(__LINE__, battler, (struct MoveContext) { APPEND_TRUE(__VA_ARGS__) }) +#define FORCED_MOVE(battler) ForcedMove(__LINE__, battler) +#define SWITCH(battler, partyIndex) Switch(__LINE__, battler, partyIndex) +#define SKIP_TURN(battler) SkipTurn(__LINE__, battler) +#define SEND_OUT(battler, partyIndex) SendOut(__LINE__, battler, partyIndex) + +struct MoveContext +{ + u16 move; + u16 explicitMove:1; + u16 moveSlot:2; + u16 explicitMoveSlot:1; + u16 hit:1; + u16 explicitHit:1; + u16 criticalHit:1; + u16 explicitCriticalHit:1; + u16 megaEvolve:1; + u16 explicitMegaEvolve:1; + // TODO: u8 zMove:1; + u16 allowed:1; + u16 explicitAllowed:1; + struct BattlePokemon *target; + bool8 explicitTarget; +}; + +void OpenTurn(u32 sourceLine); +void CloseTurn(u32 sourceLine); +void Move(u32 sourceLine, struct BattlePokemon *, struct MoveContext); +void ForcedMove(u32 sourceLine, struct BattlePokemon *); +void Switch(u32 sourceLine, struct BattlePokemon *, u32 partyIndex); +void SkipTurn(u32 sourceLine, struct BattlePokemon *); + +void SendOut(u32 sourceLine, struct BattlePokemon *, u32 partyIndex); + +/* Scene */ + +#define SCENE for (; gBattleTestRunnerState->runScene; gBattleTestRunnerState->runScene = FALSE) + +#define ONE_OF for (OpenQueueGroup(__LINE__, QUEUE_GROUP_ONE_OF); gBattleTestRunnerState->data.queueGroupType != QUEUE_GROUP_NONE; CloseQueueGroup(__LINE__)) +#define NONE_OF for (OpenQueueGroup(__LINE__, QUEUE_GROUP_NONE_OF); gBattleTestRunnerState->data.queueGroupType != QUEUE_GROUP_NONE; CloseQueueGroup(__LINE__)) +#define NOT NONE_OF + +#define ABILITY_POPUP(battler, ...) QueueAbility(__LINE__, battler, (struct AbilityEventContext) { __VA_ARGS__ }) +#define ANIMATION(type, id, ...) QueueAnimation(__LINE__, type, id, (struct AnimationEventContext) { __VA_ARGS__ }) +#define HP_BAR(battler, ...) QueueHP(__LINE__, battler, (struct HPEventContext) { APPEND_TRUE(__VA_ARGS__) }) +#define MESSAGE(pattern) QueueMessage(__LINE__, (const u8 []) _(pattern)) +#define STATUS_ICON(battler, status) QueueStatus(__LINE__, battler, (struct StatusEventContext) { status }) + +enum QueueGroupType +{ + QUEUE_GROUP_NONE, + QUEUE_GROUP_ONE_OF, + QUEUE_GROUP_NONE_OF, +}; + +struct AbilityEventContext +{ + u16 ability; +}; + +struct AnimationEventContext +{ + struct BattlePokemon *attacker; + struct BattlePokemon *target; +}; + +struct HPEventContext +{ + u8 _; + u16 hp; + bool8 explicitHP; + s16 damage; + bool8 explicitDamage; + u16 *captureHP; + bool8 explicitCaptureHP; + s16 *captureDamage; + bool8 explicitCaptureDamage; +}; + +struct StatusEventContext +{ + u8 status1; + bool8 none:1; + bool8 sleep:1; + bool8 poison:1; + bool8 burn:1; + bool8 freeze:1; + bool8 paralysis:1; + bool8 badPoison:1; +}; + +void OpenQueueGroup(u32 sourceLine, enum QueueGroupType); +void CloseQueueGroup(u32 sourceLine); + +void QueueAbility(u32 sourceLine, struct BattlePokemon *battler, struct AbilityEventContext); +void QueueAnimation(u32 sourceLine, u32 type, u32 id, struct AnimationEventContext); +void QueueHP(u32 sourceLine, struct BattlePokemon *battler, struct HPEventContext); +void QueueMessage(u32 sourceLine, const u8 *pattern); +void QueueStatus(u32 sourceLine, struct BattlePokemon *battler, struct StatusEventContext); + +/* Then */ + +#define THEN for (; gBattleTestRunnerState->runThen; gBattleTestRunnerState->runThen = FALSE) + +/* Finally */ + +#define FINALLY for (; gBattleTestRunnerState->runFinally; gBattleTestRunnerState->runFinally = FALSE) if ((gBattleTestRunnerState->runningFinally = TRUE)) + +/* Expect */ + +#define EXPECT_MUL_EQ(a, m, b) \ + do \ + { \ + s32 _a = (a), _m = (m), _b = (b); \ + s32 _am = Q_4_12_TO_INT(_a * _m); \ + s32 _t = Q_4_12_TO_INT(abs(_m) + Q_4_12_ROUND); \ + if (abs(_am-_b) > _t) \ + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_MUL_EQ(%d, %q, %d) failed: %d not in [%d..%d]", gTestRunnerState.test->filename, __LINE__, _a, _m, _b, _am, _b-_t, _b+_t); \ + } while (0) + +#endif diff --git a/test/test_runner.c b/test/test_runner.c new file mode 100644 index 000000000..a10a3a89d --- /dev/null +++ b/test/test_runner.c @@ -0,0 +1,439 @@ +#include +#include "global.h" +#include "characters.h" +#include "gpu_regs.h" +#include "main.h" +#include "malloc.h" +#include "test.h" +#include "test_runner.h" + +#define TIMEOUT_SECONDS 30 + +void CB2_TestRunner(void); + +EWRAM_DATA struct TestRunnerState gTestRunnerState; + +void TestRunner_Battle(const struct Test *); + +static bool32 MgbaOpen_(void); +static void MgbaExit_(u8 exitCode); +static s32 MgbaPuts_(const char *s); +static s32 MgbaVPrintf_(const char *fmt, va_list va); +static void Intr_Timer2(void); + +extern const struct Test __start_tests[]; +extern const struct Test __stop_tests[]; + +static bool32 PrefixMatch(const char *pattern, const char *string) +{ + if (string == NULL) + return TRUE; + + while (TRUE) + { + if (!*pattern) + return TRUE; + if (*pattern != *string) + return FALSE; + pattern++; + string++; + } +} + +enum { STATE_INIT, STATE_NEXT_TEST, STATE_REPORT_RESULT, STATE_EXIT }; + +void CB2_TestRunner(void) +{ + switch (gTestRunnerState.state) + { + case STATE_INIT: + if (!MgbaOpen_()) + { + gTestRunnerState.state = STATE_EXIT; + gTestRunnerState.exitCode = 2; + return; + } + + gIntrTable[7] = Intr_Timer2; + + gTestRunnerState.state = STATE_NEXT_TEST; + gTestRunnerState.exitCode = 0; + gTestRunnerState.tests = 0; + gTestRunnerState.passes = 0; + gTestRunnerState.skips = 0; + gTestRunnerState.skipFilename = NULL; + gTestRunnerState.test = __start_tests - 1; + break; + + case STATE_NEXT_TEST: + gTestRunnerState.test++; + + if (gTestRunnerState.test == __stop_tests) + { + MgbaPrintf_("%s%d/%d PASSED\e[0m", gTestRunnerState.exitCode == 0 ? "\e[32m" : "\e[31m", gTestRunnerState.passes, gTestRunnerState.tests); + if (gTestRunnerState.skips) + { + if (gTestRunnerSkipIsFail) + MgbaPrintf_("\e[31m%d SKIPPED\e[0m", gTestRunnerState.skips); + else + MgbaPrintf_("%d SKIPPED", gTestRunnerState.skips); + } + gTestRunnerState.state = STATE_EXIT; + return; + } + + if (!PrefixMatch(gTestRunnerArgv, gTestRunnerState.test->name)) + return; + + // Greedily assign tests to processes based on estimated cost. + // TODO: Make processCosts a min heap. + if (gTestRunnerState.test->runner != &gAssumptionsRunner) + { + u32 i; + u32 minCost, minCostProcess; + minCost = gTestRunnerState.processCosts[0]; + minCostProcess = 0; + for (i = 1; i < gTestRunnerN; i++) + { + if (gTestRunnerState.processCosts[i] < minCost) + { + minCost = gTestRunnerState.processCosts[i]; + minCostProcess = i; + } + } + + if (gTestRunnerState.test->runner->estimateCost) + gTestRunnerState.processCosts[minCostProcess] += gTestRunnerState.test->runner->estimateCost(gTestRunnerState.test->data); + else + gTestRunnerState.processCosts[minCostProcess] += 1; + + if (minCostProcess != gTestRunnerI) + return; + } + + gTestRunnerState.state = STATE_REPORT_RESULT; + gTestRunnerState.result = TEST_RESULT_PASS; + gTestRunnerState.expectedResult = TEST_RESULT_PASS; + if (gTestRunnerHeadless) + gTestRunnerState.timeoutSeconds = TIMEOUT_SECONDS; + else + gTestRunnerState.timeoutSeconds = UINT_MAX; + InitHeap(gHeap, HEAP_SIZE); + EnableInterrupts(INTR_FLAG_TIMER2); + REG_TM2CNT_L = UINT16_MAX - (274 * 60); // Approx. 1 second. + REG_TM2CNT_H = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK; + + // NOTE: Assumes that the compiler interns __FILE__. + if (gTestRunnerState.skipFilename == gTestRunnerState.test->filename) + { + gTestRunnerState.result = TEST_RESULT_SKIP; + } + else + { + MgbaPrintf_(":N%s", gTestRunnerState.test->name); + if (gTestRunnerState.test->runner->setUp) + gTestRunnerState.test->runner->setUp(gTestRunnerState.test->data); + gTestRunnerState.test->runner->run(gTestRunnerState.test->data); + } + break; + + case STATE_REPORT_RESULT: + REG_TM2CNT_H = 0; + + gTestRunnerState.state = STATE_NEXT_TEST; + + if (gTestRunnerState.test->runner->tearDown) + gTestRunnerState.test->runner->tearDown(gTestRunnerState.test->data); + + if (gTestRunnerState.test->runner == &gAssumptionsRunner) + { + if (gTestRunnerState.result != TEST_RESULT_PASS) + gTestRunnerState.skipFilename = gTestRunnerState.test->filename; + } + else if (gTestRunnerState.result == TEST_RESULT_SKIP) + { + gTestRunnerState.skips++; + if (gTestRunnerSkipIsFail) + gTestRunnerState.exitCode = 1; + } + else + { + const char *color; + const char *result; + + gTestRunnerState.tests++; + + if (gTestRunnerState.result == gTestRunnerState.expectedResult) + { + gTestRunnerState.passes++; + color = "\e[32m"; + MgbaPrintf_(":N%s", gTestRunnerState.test->name); + } + else if (gTestRunnerState.result != TEST_RESULT_SKIP || gTestRunnerSkipIsFail) + { + gTestRunnerState.exitCode = 1; + color = "\e[31m"; + } + else + { + color = ""; + } + + if (gTestRunnerState.result == TEST_RESULT_PASS + && gTestRunnerState.result != gTestRunnerState.expectedResult) + { + MgbaPuts_("\e[31mPlease remove KNOWN_FAILING if this test intentionally PASSes\e[0m"); + } + + switch (gTestRunnerState.result) + { + case TEST_RESULT_FAIL: result = "FAIL"; break; + case TEST_RESULT_PASS: result = "PASS"; break; + case TEST_RESULT_SKIP: result = "SKIP"; break; + case TEST_RESULT_INVALID: result = "INVALID"; break; + case TEST_RESULT_ERROR: result = "ERROR"; break; + case TEST_RESULT_TIMEOUT: result = "TIMEOUT"; break; + default: result = "UNKNOWN"; break; + } + + MgbaPrintf_(":R%s%s\e[0m", color, result); + } + + break; + + case STATE_EXIT: + MgbaExit_(gTestRunnerState.exitCode); + break; + } +} + +void Test_ExpectedResult(enum TestResult result) +{ + gTestRunnerState.expectedResult = result; +} + +static void Assumptions_Run(void *data) +{ + void (*function)(void) = data; + function(); +} + +const struct TestRunner gAssumptionsRunner = +{ + .run = Assumptions_Run, +}; + +#define IRQ_LR (*(vu32 *)0x3007F9C) + +/* Returns to AgbMainLoop. + * Similar to a longjmp except that we only restore sp (and cpsr via + * overwriting the value of lr_irq on the stack). + * + * WARNING: This could potentially be flaky because other global state + * will not be cleaned up, we may decide to Exit on a timeout instead. */ +static NAKED void JumpToAgbMainLoop(void) +{ + asm(".arm\n\ + .word 0xe3104778\n\ + ldr r0, =gAgbMainLoop_sp\n\ + ldr sp, [r0]\n\ + ldr r0, =AgbMainLoop\n\ + bx r0\n\ + .pool"); +} + +void ReinitCallbacks(void) +{ + gMain.callback1 = NULL; + SetMainCallback2(CB2_TestRunner); + gMain.vblankCallback = NULL; + gMain.hblankCallback = NULL; +} + +static void Intr_Timer2(void) +{ + if (--gTestRunnerState.timeoutSeconds == 0) + { + if (gTestRunnerState.test->runner->checkProgress + && gTestRunnerState.test->runner->checkProgress(gTestRunnerState.test->data)) + { + gTestRunnerState.timeoutSeconds = TIMEOUT_SECONDS; + } + else + { + gTestRunnerState.result = TEST_RESULT_TIMEOUT; + ReinitCallbacks(); + IRQ_LR = ((uintptr_t)JumpToAgbMainLoop & ~1) + 4; + } + } +} + +void Test_ExitWithResult(enum TestResult result, const char *fmt, ...) +{ + gTestRunnerState.result = result; + ReinitCallbacks(); + if (gTestRunnerState.test->runner->handleExitWithResult + && !gTestRunnerState.test->runner->handleExitWithResult(gTestRunnerState.test->data, result) + && gTestRunnerState.result != gTestRunnerState.expectedResult) + { + va_list va; + va_start(va, fmt); + MgbaVPrintf_(fmt, va); + } + JumpToAgbMainLoop(); +} + +#define REG_DEBUG_ENABLE (*(vu16 *)0x4FFF780) +#define REG_DEBUG_FLAGS (*(vu16 *)0x4FFF700) +#define REG_DEBUG_STRING ((char *)0x4FFF600) + +static bool32 MgbaOpen_(void) +{ + REG_DEBUG_ENABLE = 0xC0DE; + return REG_DEBUG_ENABLE == 0x1DEA; +} + +static void MgbaExit_(u8 exitCode) +{ + register u32 _exitCode asm("r0") = exitCode; + asm("swi 0x3" :: "r" (_exitCode)); +} + +static s32 MgbaPuts_(const char *s) +{ + return MgbaPrintf_("%s", s); +} + +s32 MgbaPrintf_(const char *fmt, ...) +{ + va_list va; + va_start(va, fmt); + return MgbaVPrintf_(fmt, va); +} + +static s32 MgbaPutchar_(s32 i, s32 c) +{ + REG_DEBUG_STRING[i++] = c; + if (i == 255) + { + REG_DEBUG_STRING[i] = '\0'; + REG_DEBUG_FLAGS = MGBA_LOG_INFO | 0x100; + i = 0; + } + return i; +} + +extern const u8 gWireless_RSEtoASCIITable[]; + +// Bare-bones, only supports plain %s, %S, and %d. +static s32 MgbaVPrintf_(const char *fmt, va_list va) +{ + s32 i = 0; + s32 c, d; + const char *s; + while (*fmt) + { + switch ((c = *fmt++)) + { + case '%': + switch (*fmt++) + { + case '%': + i = MgbaPutchar_(i, '%'); + break; + case 'd': + d = va_arg(va, int); + if (d == 0) + { + i = MgbaPutchar_(i, '0'); + } + else + { + char buffer[10]; + s32 n = 0; + u32 u = abs(d); + if (d < 0) + i = MgbaPutchar_(i, '-'); + while (u > 0) + { + buffer[n++] = '0' + (u % 10); + u /= 10; + } + while (n > 0) + i = MgbaPutchar_(i, buffer[--n]); + } + break; + case 'q': + d = va_arg(va, int); + { + char buffer[10]; + s32 n = 0; + u32 u = abs(d) >> 12; + if (u == 0) + { + i = MgbaPutchar_(i, '0'); + } + else + { + if (d < 0) + i = MgbaPutchar_(i, '-'); + while (u > 0) + { + buffer[n++] = '0' + (u % 10); + u /= 10; + } + while (n > 0) + i = MgbaPutchar_(i, buffer[--n]); + } + + n = 0; + i = MgbaPutchar_(i, '.'); + u = d & 0xFFF; + while (TRUE) + { + u *= 10; + i = MgbaPutchar_(i, '0' + (u >> 12)); + u &= 0xFFF; + if (u == 0) + break; + if (++n == 2) + { + u *= 10; + i = MgbaPutchar_(i, '0' + ((u + UQ_4_12_ROUND) >> 12)); + break; + } + } + } + break; + case 's': + s = va_arg(va, const char *); + while ((c = *s++) != '\0') + i = MgbaPutchar_(i, c); + break; + case 'S': + s = va_arg(va, const u8 *); + while ((c = *s++) != EOS) + { + if ((c = gWireless_RSEtoASCIITable[c]) != '\0') + i = MgbaPutchar_(i, c); + else + i = MgbaPutchar_(i, '?'); + } + break; + } + break; + case '\n': + i = 254; + i = MgbaPutchar_(i, '\0'); + break; + default: + i = MgbaPutchar_(i, c); + break; + } + } + if (i != 0) + { + REG_DEBUG_FLAGS = MGBA_LOG_INFO | 0x100; + } + return i; +} diff --git a/test/test_runner_args.c b/test/test_runner_args.c new file mode 100644 index 000000000..9c0bf2ee5 --- /dev/null +++ b/test/test_runner_args.c @@ -0,0 +1,8 @@ +#include "global.h" + +// These values are patched by patchelf. Therefore we have put them in +// their own TU so that the optimizer cannot inline them. +const bool8 gTestRunnerEnabled = TRUE; +const u8 gTestRunnerN = 0; +const u8 gTestRunnerI = 0; +const char gTestRunnerArgv[256] = {'\0'}; diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c new file mode 100644 index 000000000..e40ed3e50 --- /dev/null +++ b/test/test_runner_battle.c @@ -0,0 +1,1545 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "characters.h" +#include "main.h" +#include "malloc.h" +#include "random.h" +#include "test_battle.h" +#include "window.h" + +#define INVALID(fmt, ...) Test_ExitWithResult(TEST_RESULT_INVALID, "%s:%d: " fmt, gTestRunnerState.test->filename, sourceLine, ##__VA_ARGS__) +#define INVALID_IF(c, fmt, ...) do { if (c) Test_ExitWithResult(TEST_RESULT_INVALID, "%s:%d: " fmt, gTestRunnerState.test->filename, sourceLine, ##__VA_ARGS__); } while (0) + +#define STATE gBattleTestRunnerState +#define DATA gBattleTestRunnerState->data + +/* RNG seeds for controlling the first move of the turn. + * Found via brute force. */ + +/* Default seed, triggers most things. + * The 1st roll % 100 is <= 29, to make 30%+ accuracycheck pass. + * The 2nd roll is not a critical hit at the regular crit stage. + * The 3rd roll is consumed by damagecalc. + * The 4th roll is consumed by adjustdamage. + * The 5th roll % 100 is <= 9, to make 10%+ seteffectwithchance pass + * and % 3 is == 0, to make Poison Point and other 1/3s pass. */ +#define RNG_SEED_DEFAULT 0x000002BE + +/* Causes the first attack to critical hit if B_CRIT_CHANCE >= GEN_6. + * The 2nd roll % 24 == 0 to be a critical hit at any stage. + * The other rolls match RNG_SEED_DEFAULT. */ +#define RNG_SEED_CRITICAL_HIT 0x0000A9F4 + +/* Causes the first attack to miss if possible. + * The 1st roll % 100 is 99, to make 99%- accuracycheck fail. */ +#define RNG_SEED_MISS 0x00000074 + +EWRAM_DATA struct BattleTestRunnerState *gBattleTestRunnerState = NULL; + +static void CB2_BattleTest_NextParameter(void); +static void CB2_BattleTest_NextTrial(void); +static void PushBattlerAction(u32 sourceLine, s32 battlerId, u32 actionType, u32 byte); + +NAKED static void InvokeSingleTestFunctionWithStack(void *results, u32 i, struct BattlePokemon *player, struct BattlePokemon *opponent, SingleBattleTestFunction function, void *stack) +{ + asm("push {r4-r6,lr}\n\ + ldr r4, [sp, #16] @ function\n\ + ldr r5, [sp, #20] @ stack\n\ + mov r6, sp\n\ + mov sp, r5\n\ + push {r6}\n\ + ldr r6, =SingleRestoreSP + 1\n\ + mov lr, r6\n\ + bx r4\n\ + SingleRestoreSP:\n\ + pop {r0}\n\ + mov sp, r0\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .pool"); +} + +NAKED static void InvokeDoubleTestFunctionWithStack(void *results, u32 i, struct BattlePokemon *playerLeft, struct BattlePokemon *opponentLeft, struct BattlePokemon *playerRight, struct BattlePokemon *opponentRight, SingleBattleTestFunction function, void *stack) +{ + asm("push {r4-r7,lr}\n\ + ldr r4, [sp, #28] @ function\n\ + ldr r5, [sp, #32] @ stack\n\ + mov r6, sp\n\ + mov sp, r5\n\ + push {r6}\n\ + add r6, #20\n\ + ldmia r6, {r6, r7} @ playerRight, opponentRight\n\ + push {r6, r7}\n\ + ldr r6, =DoubleRestoreSP + 1\n\ + mov lr, r6\n\ + bx r4\n\ + DoubleRestoreSP:\n\ + add sp, #8\n\ + pop {r0}\n\ + mov sp, r0\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool"); +} + +// Calls test->function, but pointing its stack at DATA.stack so that +// local variables are live after the function returns (and so can be +// referenced by HP_BAR, or the next call, etc). +// NOTE: This places the stack in EWRAM which has longer waitstates than +// IWRAM so could be much slower, but a) not that much code executes, +// and b) mga-rom-test isn't meaningfully limited by the GBA frame rate. +static void InvokeTestFunction(const struct BattleTest *test) +{ + STATE->parametersCount = 0; + switch (test->type) + { + case BATTLE_TEST_SINGLES: + InvokeSingleTestFunctionWithStack(STATE->results, STATE->runParameter, &gBattleMons[B_POSITION_PLAYER_LEFT], &gBattleMons[B_POSITION_OPPONENT_LEFT], test->function.singles, &DATA.stack[BATTLE_TEST_STACK_SIZE]); + break; + case BATTLE_TEST_DOUBLES: + InvokeDoubleTestFunctionWithStack(STATE->results, STATE->runParameter, &gBattleMons[B_POSITION_PLAYER_LEFT], &gBattleMons[B_POSITION_OPPONENT_LEFT], &gBattleMons[B_POSITION_PLAYER_RIGHT], &gBattleMons[B_POSITION_OPPONENT_RIGHT], test->function.singles, &DATA.stack[BATTLE_TEST_STACK_SIZE]); + break; + } +} + +static u32 SourceLine(u32 sourceLineOffset) +{ + const struct BattleTest *test = gTestRunnerState.test->data; + return test->sourceLine + sourceLineOffset; +} + +static u32 SourceLineOffset(u32 sourceLine) +{ + const struct BattleTest *test = gTestRunnerState.test->data; + if (sourceLine - test->sourceLine > 0xFF) + return 0; + else + return sourceLine - test->sourceLine; +} + +static u32 BattleTest_EstimateCost(void *data) +{ + u32 cost; + const struct BattleTest *test = data; + STATE = AllocZeroed(sizeof(*STATE)); + if (!STATE) + return 0; + STATE->runRandomly = TRUE; + DATA.recordedBattle.rngSeed = RNG_SEED_DEFAULT; + InvokeTestFunction(test); + cost = 1; + if (STATE->parametersCount != 0) + cost *= STATE->parametersCount; + if (STATE->trials != 0) + cost *= STATE->trials; + FREE_AND_SET_NULL(STATE); + return cost; +} + +static void BattleTest_SetUp(void *data) +{ + const struct BattleTest *test = data; + STATE = AllocZeroed(sizeof(*STATE)); + if (!STATE) + Test_ExitWithResult(TEST_RESULT_ERROR, "OOM: STATE = AllocZerod(%d)", sizeof(*STATE)); + InvokeTestFunction(test); + STATE->parameters = STATE->parametersCount; + STATE->results = AllocZeroed(test->resultsSize * STATE->parameters); + if (!STATE->results) + Test_ExitWithResult(TEST_RESULT_ERROR, "OOM: STATE->results = AllocZerod(%d)", sizeof(test->resultsSize * STATE->parameters)); + switch (test->type) + { + case BATTLE_TEST_SINGLES: + STATE->battlersCount = 2; + break; + case BATTLE_TEST_DOUBLES: + STATE->battlersCount = 4; + break; + } +} + +// This does not take into account priority, statuses, or any other +// modifiers. +static void SetImplicitSpeeds(void) +{ + s32 i, j; + u32 speed = 12; + u32 hasSpeeds = 0; + u32 allSpeeds = ((1 << DATA.playerPartySize) - 1) | (((1 << DATA.opponentPartySize) - 1) << 6); + bool32 madeProgress; + while (hasSpeeds != allSpeeds) + { + madeProgress = FALSE; + for (i = 0; i < DATA.playerPartySize; i++) + { + if (!(hasSpeeds & (1 << i)) + && !(DATA.slowerThan[B_SIDE_PLAYER][i] & ~hasSpeeds)) + { + SetMonData(&DATA.recordedBattle.playerParty[i], MON_DATA_SPEED, &speed); + speed--; + hasSpeeds |= 1 << i; + madeProgress = TRUE; + } + } + for (i = 0; i < DATA.opponentPartySize; i++) + { + if (!(hasSpeeds & ((1 << 6) << i)) + && !(DATA.slowerThan[B_SIDE_OPPONENT][i] & ~hasSpeeds)) + { + SetMonData(&DATA.recordedBattle.opponentParty[i], MON_DATA_SPEED, &speed); + speed--; + hasSpeeds |= (1 << 6) << i; + madeProgress = TRUE; + } + } + if (!madeProgress) + Test_ExitWithResult(TEST_RESULT_INVALID, "TURNs have contradictory speeds"); + } +} + +static void BattleTest_Run(void *data) +{ + s32 i; + u32 requiredPlayerPartySize; + u32 requiredOpponentPartySize; + const struct BattleTest *test = data; + + memset(&DATA, 0, sizeof(DATA)); + + DATA.recordedBattle.rngSeed = RNG_SEED_DEFAULT; + + DATA.recordedBattle.textSpeed = OPTIONS_TEXT_SPEED_FAST; + DATA.recordedBattle.battleFlags = BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_IS_MASTER; + if (test->type == BATTLE_TEST_DOUBLES) + DATA.recordedBattle.battleFlags |= BATTLE_TYPE_DOUBLE; + for (i = 0; i < STATE->battlersCount; i++) + { + DATA.recordedBattle.playersName[i][0] = CHAR_1 + i; + DATA.recordedBattle.playersName[i][1] = EOS; + DATA.recordedBattle.playersLanguage[i] = GAME_LANGUAGE; + DATA.recordedBattle.playersBattlers[i] = i; + + DATA.currentMonIndexes[i] = (i & BIT_FLANK) == B_FLANK_LEFT ? 0 : 1; + } + + STATE->runRandomly = TRUE; + STATE->runGiven = TRUE; + STATE->runWhen = TRUE; + STATE->runScene = TRUE; + InvokeTestFunction(test); + STATE->runRandomly = FALSE; + STATE->runGiven = FALSE; + STATE->runWhen = FALSE; + STATE->runScene = FALSE; + + requiredPlayerPartySize = 0; + requiredOpponentPartySize = 0; + for (i = 0; i < STATE->battlersCount; i++) + { + if ((i & BIT_SIDE) == B_SIDE_PLAYER) + requiredPlayerPartySize = DATA.currentMonIndexes[i] + 1; + else + requiredOpponentPartySize = DATA.currentMonIndexes[i] + 1; + } + if (DATA.playerPartySize < requiredPlayerPartySize) + Test_ExitWithResult(TEST_RESULT_INVALID, "%d PLAYER Pokemon required", requiredPlayerPartySize); + if (DATA.opponentPartySize < requiredOpponentPartySize) + Test_ExitWithResult(TEST_RESULT_INVALID, "%d OPPONENT Pokemon required", requiredOpponentPartySize); + + for (i = 0; i < STATE->battlersCount; i++) + PushBattlerAction(0, i, RECORDED_BYTE, 0xFF); + + if (DATA.hasExplicitSpeeds) + { + if (DATA.explicitSpeeds[B_SIDE_PLAYER] != (1 << DATA.playerPartySize) - 1 + && DATA.explicitSpeeds[B_SIDE_OPPONENT] != (1 << DATA.opponentPartySize) - 1) + { + Test_ExitWithResult(TEST_RESULT_INVALID, "Speed required for all PLAYERs and OPPONENTs"); + } + } + else + { + SetImplicitSpeeds(); + } + + SetVariablesForRecordedBattle(&DATA.recordedBattle); + + if (STATE->trials) + gMain.savedCallback = CB2_BattleTest_NextTrial; + else if (STATE->parameters) + gMain.savedCallback = CB2_BattleTest_NextParameter; + else + gMain.savedCallback = CB2_TestRunner; + SetMainCallback2(CB2_InitBattle); + + STATE->checkProgressParameter = 0; + STATE->checkProgressTrial = 0; + STATE->checkProgressTurn = 0; + + if (STATE->trials && STATE->parameters) + MgbaPrintf_(":N%s %d/%d (%d/%d)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1, STATE->trials); + else if (STATE->trials) + MgbaPrintf_(":N%s (%d/%d)", gTestRunnerState.test->name, STATE->runTrial + 1, STATE->trials); + else if (STATE->parameters) + MgbaPrintf_(":N%s %d/%d", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters); +} + +static s32 TryAbilityPopUp(s32 i, s32 n, u32 battlerId, u32 ability) +{ + struct QueuedAbilityEvent *event; + s32 iMax = i + n; + for (; i < iMax; i++) + { + if (DATA.queuedEvents[i].type != QUEUED_ABILITY_POPUP_EVENT) + continue; + + event = &DATA.queuedEvents[i].as.ability; + + if (event->battlerId == battlerId + && (event->ability == ABILITY_NONE || event->ability == ability)) + return i; + } + return -1; +} + +void TestRunner_Battle_RecordAbilityPopUp(u32 battlerId, u32 ability) +{ + s32 queuedEvent; + s32 match; + struct QueuedEvent *event; + + if (DATA.queuedEvent == DATA.queuedEventsCount) + return; + + event = &DATA.queuedEvents[DATA.queuedEvent]; + switch (event->groupType) + { + case QUEUE_GROUP_NONE: + case QUEUE_GROUP_ONE_OF: + if (TryAbilityPopUp(DATA.queuedEvent, event->groupSize, battlerId, ability) != -1) + DATA.queuedEvent += event->groupSize; + break; + case QUEUE_GROUP_NONE_OF: + queuedEvent = DATA.queuedEvent; + do + { + if ((match = TryAbilityPopUp(queuedEvent, event->groupSize, battlerId, ability)) != -1) + { + const char *filename = gTestRunnerState.test->filename; + u32 line = SourceLine(DATA.queuedEvents[match].sourceLineOffset); + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Matched ABILITY_POPUP", filename, line); + } + + queuedEvent += event->groupSize; + if (queuedEvent == DATA.queuedEventsCount) + break; + + event = &DATA.queuedEvents[queuedEvent]; + if (event->groupType == QUEUE_GROUP_NONE_OF) + continue; + + if (TryAbilityPopUp(queuedEvent, event->groupSize, battlerId, ability) != -1) + DATA.queuedEvent = queuedEvent + event->groupSize; + } while (FALSE); + break; + } +} + +static s32 TryAnimation(s32 i, s32 n, u32 animType, u32 animId) +{ + struct QueuedAnimationEvent *event; + s32 iMax = i + n; + for (; i < iMax; i++) + { + if (DATA.queuedEvents[i].type != QUEUED_ANIMATION_EVENT) + continue; + + event = &DATA.queuedEvents[i].as.animation; + + if (event->type == animType + && event->id == animId + && (event->attacker == 0xF || event->attacker == gBattleAnimAttacker) + && (event->target == 0xF || event->target == gBattleAnimTarget)) + return i; + } + return -1; +} + +void TestRunner_Battle_RecordAnimation(u32 animType, u32 animId) +{ + s32 queuedEvent; + s32 match; + struct QueuedEvent *event; + + if (DATA.queuedEvent == DATA.queuedEventsCount) + return; + + event = &DATA.queuedEvents[DATA.queuedEvent]; + switch (event->groupType) + { + case QUEUE_GROUP_NONE: + case QUEUE_GROUP_ONE_OF: + if (TryAnimation(DATA.queuedEvent, event->groupSize, animType, animId) != -1) + DATA.queuedEvent += event->groupSize; + break; + case QUEUE_GROUP_NONE_OF: + queuedEvent = DATA.queuedEvent; + do + { + if ((match = TryAnimation(queuedEvent, event->groupSize, animType, animId)) != -1) + { + const char *filename = gTestRunnerState.test->filename; + u32 line = SourceLine(DATA.queuedEvents[match].sourceLineOffset); + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Matched ANIMATION", filename, line); + } + + queuedEvent += event->groupSize; + if (queuedEvent == DATA.queuedEventsCount) + break; + + event = &DATA.queuedEvents[queuedEvent]; + if (event->groupType == QUEUE_GROUP_NONE_OF) + continue; + + if (TryAnimation(queuedEvent, event->groupSize, animType, animId) != -1) + DATA.queuedEvent = queuedEvent + event->groupSize; + } while (FALSE); + break; + } +} + +static s32 TryHP(s32 i, s32 n, u32 battlerId, u32 oldHP, u32 newHP) +{ + struct QueuedHPEvent *event; + s32 iMax = i + n; + for (; i < iMax; i++) + { + if (DATA.queuedEvents[i].type != QUEUED_HP_EVENT) + continue; + + event = &DATA.queuedEvents[i].as.hp; + + if (event->battlerId == battlerId) + { + if (event->address <= 0xFFFF) + { + switch (event->type) + { + case HP_EVENT_NEW_HP: + if (event->address == newHP) + return i; + break; + case HP_EVENT_DELTA_HP: + if (event->address == 0) + return i; + else if ((s16)event->address == oldHP - newHP) + return i; + break; + } + } + else + { + switch (event->type) + { + case HP_EVENT_NEW_HP: + *(u16 *)event->address = newHP; + break; + case HP_EVENT_DELTA_HP: + *(s16 *)event->address = oldHP - newHP; + break; + } + return i; + } + } + } + return -1; +} + +void TestRunner_Battle_RecordHP(u32 battlerId, u32 oldHP, u32 newHP) +{ + s32 queuedEvent; + s32 match; + struct QueuedEvent *event; + + if (DATA.queuedEvent == DATA.queuedEventsCount) + return; + + event = &DATA.queuedEvents[DATA.queuedEvent]; + switch (event->groupType) + { + case QUEUE_GROUP_NONE: + case QUEUE_GROUP_ONE_OF: + if (TryHP(DATA.queuedEvent, event->groupSize, battlerId, oldHP, newHP) != -1) + DATA.queuedEvent += event->groupSize; + break; + case QUEUE_GROUP_NONE_OF: + queuedEvent = DATA.queuedEvent; + do + { + if ((match = TryHP(queuedEvent, event->groupSize, battlerId, oldHP, newHP)) != -1) + { + const char *filename = gTestRunnerState.test->filename; + u32 line = SourceLine(DATA.queuedEvents[match].sourceLineOffset); + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Matched HP_BAR", filename, line); + } + + queuedEvent += event->groupSize; + if (queuedEvent == DATA.queuedEventsCount) + break; + + event = &DATA.queuedEvents[queuedEvent]; + if (event->groupType == QUEUE_GROUP_NONE_OF) + continue; + + if (TryHP(queuedEvent, event->groupSize, battlerId, oldHP, newHP) != -1) + DATA.queuedEvent = queuedEvent + event->groupSize; + } while (FALSE); + break; + } +} + +static s32 TryMessage(s32 i, s32 n, const u8 *string) +{ + s32 j, k; + struct QueuedMessageEvent *event; + s32 iMax = i + n; + for (; i < iMax; i++) + { + if (DATA.queuedEvents[i].type != QUEUED_MESSAGE_EVENT) + continue; + + event = &DATA.queuedEvents[i].as.message; + for (j = k = 0; ; j++, k++) + { + if (event->pattern[k] == CHAR_SPACE) + { + switch (string[j]) + { + case CHAR_SPACE: + case CHAR_PROMPT_SCROLL: + case CHAR_PROMPT_CLEAR: + case CHAR_NEWLINE: + j++; + k++; + break; + } + } + if (event->pattern[k] == EOS) + { + // Consume any trailing '\p'. + if (string[j] == CHAR_PROMPT_CLEAR) + j++; + } + if (string[j] != event->pattern[k]) + { + break; + } + else if (string[j] == EOS) + { + return i; + } + } + } + return -1; +} + +void TestRunner_Battle_RecordMessage(const u8 *string) +{ + s32 queuedEvent; + s32 match; + struct QueuedEvent *event; + + if (DATA.queuedEvent == DATA.queuedEventsCount) + return; + + event = &DATA.queuedEvents[DATA.queuedEvent]; + switch (event->groupType) + { + case QUEUE_GROUP_NONE: + case QUEUE_GROUP_ONE_OF: + if (TryMessage(DATA.queuedEvent, event->groupSize, string) != -1) + DATA.queuedEvent += event->groupSize; + break; + case QUEUE_GROUP_NONE_OF: + queuedEvent = DATA.queuedEvent; + do + { + if ((match = TryMessage(queuedEvent, event->groupSize, string)) != -1) + { + const char *filename = gTestRunnerState.test->filename; + u32 line = SourceLine(DATA.queuedEvents[match].sourceLineOffset); + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Matched MESSAGE", filename, line); + } + + queuedEvent += event->groupSize; + if (queuedEvent == DATA.queuedEventsCount) + break; + + event = &DATA.queuedEvents[queuedEvent]; + if (event->groupType == QUEUE_GROUP_NONE_OF) + continue; + + if (TryMessage(queuedEvent, event->groupSize, string) != -1) + DATA.queuedEvent = queuedEvent + event->groupSize; + } while (FALSE); + break; + } +} + +static s32 TryStatus(s32 i, s32 n, u32 battlerId, u32 status1) +{ + struct QueuedStatusEvent *event; + s32 iMax = i + n; + for (; i < iMax; i++) + { + if (DATA.queuedEvents[i].type != QUEUED_STATUS_EVENT) + continue; + + event = &DATA.queuedEvents[i].as.status; + + if (event->battlerId == battlerId) + { + if (event->mask == 0 && status1 == STATUS1_NONE) + return i; + else if (event->mask & status1) + return i; + } + } + return -1; +} + +void TestRunner_Battle_RecordStatus1(u32 battlerId, u32 status1) +{ + s32 queuedEvent; + s32 match; + struct QueuedEvent *event; + + if (DATA.queuedEvent == DATA.queuedEventsCount) + return; + + event = &DATA.queuedEvents[DATA.queuedEvent]; + switch (event->groupType) + { + case QUEUE_GROUP_NONE: + case QUEUE_GROUP_ONE_OF: + if (TryStatus(DATA.queuedEvent, event->groupSize, battlerId, status1) != -1) + DATA.queuedEvent += event->groupSize; + break; + case QUEUE_GROUP_NONE_OF: + queuedEvent = DATA.queuedEvent; + do + { + if ((match = TryStatus(queuedEvent, event->groupSize, battlerId, status1)) != -1) + { + const char *filename = gTestRunnerState.test->filename; + u32 line = SourceLine(DATA.queuedEvents[match].sourceLineOffset); + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Matched STATUS_ICON", filename, line); + } + + queuedEvent += event->groupSize; + if (queuedEvent == DATA.queuedEventsCount) + break; + + event = &DATA.queuedEvents[queuedEvent]; + if (event->groupType == QUEUE_GROUP_NONE_OF) + continue; + + if (TryStatus(queuedEvent, event->groupSize, battlerId, status1) != -1) + DATA.queuedEvent = queuedEvent + event->groupSize; + } while (FALSE); + break; + } +} + +static const char *const sEventTypeMacros[] = +{ + [QUEUED_ABILITY_POPUP_EVENT] = "ABILITY_POPUP", + [QUEUED_ANIMATION_EVENT] = "ANIMATION", + [QUEUED_HP_EVENT] = "HP_BAR", + [QUEUED_MESSAGE_EVENT] = "MESSAGE", + [QUEUED_STATUS_EVENT] = "STATUS_ICON", +}; + +void TestRunner_Battle_AfterLastTurn(void) +{ + const struct BattleTest *test = gTestRunnerState.test->data; + + if (DATA.turns - 1 != DATA.lastActionTurn) + { + const char *filename = gTestRunnerState.test->filename; + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: %d TURNs specified, but %d ran", filename, SourceLine(0), DATA.turns, DATA.lastActionTurn + 1); + } + + while (DATA.queuedEvent < DATA.queuedEventsCount + && DATA.queuedEvents[DATA.queuedEvent].groupType == QUEUE_GROUP_NONE_OF) + { + DATA.queuedEvent += DATA.queuedEvents[DATA.queuedEvent].groupSize; + } + if (DATA.queuedEvent != DATA.queuedEventsCount) + { + const char *filename = gTestRunnerState.test->filename; + u32 line = SourceLine(DATA.queuedEvents[DATA.queuedEvent].sourceLineOffset); + const char *macro = sEventTypeMacros[DATA.queuedEvents[DATA.queuedEvent].type]; + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Unmatched %s", filename, line, macro); + } + + STATE->runThen = TRUE; + STATE->runFinally = STATE->runParameter + 1 == STATE->parameters; + InvokeTestFunction(test); + STATE->runThen = FALSE; + STATE->runFinally = FALSE; +} + +static void CB2_BattleTest_NextParameter(void) +{ + if (++STATE->runParameter >= STATE->parameters) + SetMainCallback2(CB2_TestRunner); + else + BattleTest_Run(gTestRunnerState.test->data); +} + +static void CB2_BattleTest_NextTrial(void) +{ + FreeMonSpritesGfx(); + FreeBattleSpritesData(); + FreeBattleResources(); + FreeAllWindowBuffers(); + + SetMainCallback2(CB2_BattleTest_NextParameter); + + if (++STATE->runTrial < STATE->trials) + { + switch (gTestRunnerState.result) + { + case TEST_RESULT_FAIL: + break; + case TEST_RESULT_PASS: + STATE->observedPasses++; + break; + case TEST_RESULT_SKIP: + STATE->skippedTrials++; + if (STATE->skippedTrials > STATE->trials / 4) + Test_ExitWithResult(TEST_RESULT_INVALID, "25%% of the trials were SKIPed"); + break; + default: + return; + } + if (STATE->parameters) + MgbaPrintf_(":N%s %d/%d (%d/%d)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1, STATE->trials); + else + MgbaPrintf_(":N%s (%d/%d)", gTestRunnerState.test->name, STATE->runTrial + 1, STATE->trials); + gTestRunnerState.result = TEST_RESULT_PASS; + DATA.recordedBattle.rngSeed = ISO_RANDOMIZE1(STATE->runTrial); + DATA.queuedEvent = 0; + DATA.lastActionTurn = 0; + DATA.nextRNGTurn = 0; + SetVariablesForRecordedBattle(&DATA.recordedBattle); + SetMainCallback2(CB2_InitBattle); + } + else + { + // This is a tolerance of +/- 4%. + if (abs(STATE->observedPasses - STATE->expectedPasses) <= 2) + gTestRunnerState.result = TEST_RESULT_PASS; + else + Test_ExitWithResult(TEST_RESULT_FAIL, "Expected %d/%d passes, observed %d/%d", STATE->expectedPasses, STATE->trials, STATE->observedPasses, STATE->trials); + } +} + +static void BattleTest_TearDown(void *data) +{ + if (STATE) + { + FREE_AND_SET_NULL(STATE->results); + FREE_AND_SET_NULL(STATE); + } +} + +static bool32 BattleTest_CheckProgress(void *data) +{ + bool32 madeProgress + = STATE->checkProgressParameter < STATE->runParameter + || STATE->checkProgressTrial < STATE->runTrial + || STATE->checkProgressTurn < gBattleResults.battleTurnCounter; + STATE->checkProgressParameter = STATE->runParameter; + STATE->checkProgressTrial = STATE->runTrial; + STATE->checkProgressTurn = gBattleResults.battleTurnCounter; + return madeProgress; +} + +static bool32 BattleTest_HandleExitWithResult(void *data, enum TestResult result) +{ + if (result != TEST_RESULT_INVALID + && result != TEST_RESULT_ERROR + && result != TEST_RESULT_TIMEOUT + && STATE->runTrial < STATE->trials) + { + SetMainCallback2(CB2_BattleTest_NextTrial); + return TRUE; + } + else + { + return FALSE; + } +} + +void Randomly(u32 sourceLine, u32 passes, u32 trials) +{ + INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); + // This is a precision of 2%. + STATE->trials = 50; + STATE->expectedPasses = STATE->trials * passes / trials; + STATE->observedPasses = 0; + STATE->skippedTrials = 0; + STATE->runTrial = 0; + DATA.recordedBattle.rngSeed = 0; +} + +void RNGSeed_(u32 sourceLine, u32 seed) +{ + INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); + DATA.recordedBattle.rngSeed = seed; +} + +const struct TestRunner gBattleTestRunner = +{ + .estimateCost = BattleTest_EstimateCost, + .setUp = BattleTest_SetUp, + .run = BattleTest_Run, + .tearDown = BattleTest_TearDown, + .checkProgress = BattleTest_CheckProgress, + .handleExitWithResult = BattleTest_HandleExitWithResult, +}; + +void OpenPokemon(u32 sourceLine, u32 side, u32 species) +{ + s32 i, data; + u8 *partySize; + struct Pokemon *party; + INVALID_IF(species >= SPECIES_EGG, "Invalid species: %d", species); + if (side == B_SIDE_PLAYER) + { + partySize = &DATA.playerPartySize; + party = DATA.recordedBattle.playerParty; + } + else + { + partySize = &DATA.opponentPartySize; + party = DATA.recordedBattle.opponentParty; + } + INVALID_IF(*partySize == PARTY_SIZE, "Too many Pokemon in party"); + DATA.currentSide = side; + DATA.currentPartyIndex = *partySize; + DATA.currentMon = &party[DATA.currentPartyIndex]; + DATA.gender = MON_MALE; + DATA.nature = NATURE_HARDY; + (*partySize)++; + + CreateMon(DATA.currentMon, species, 100, 0, TRUE, 0, OT_ID_PRESET, 0); + data = MOVE_NONE; + for (i = 0; i < MAX_MON_MOVES; i++) + SetMonData(DATA.currentMon, MON_DATA_MOVE1 + i, &data); +} + +// (sNaturePersonalities[i] % NUM_NATURES) == i +// (sNaturePersonalities[i] & 0xFF) == 0 +// NOTE: Using 25 << 8 rather than 0 << 8 to prevent shiny females. +static const u16 sNaturePersonalities[NUM_NATURES] = +{ + 25 << 8, 21 << 8, 17 << 8, 13 << 8, 9 << 8, + 5 << 8, 1 << 8, 22 << 8, 18 << 8, 14 << 8, + 10 << 8, 6 << 8, 2 << 8, 23 << 8, 19 << 8, + 15 << 8, 11 << 8, 7 << 8, 3 << 8, 24 << 8, + 20 << 8, 16 << 8, 12 << 8, 8 << 8, 4 << 8, +}; + +static u32 GenerateNature(u32 nature, u32 offset) +{ + int i; + if (offset <= nature) + nature -= offset; + else + nature = nature + NUM_NATURES - offset; + return sNaturePersonalities[nature]; +} + +void ClosePokemon(u32 sourceLine) +{ + s32 i; + INVALID_IF(DATA.hasExplicitSpeeds && !(DATA.explicitSpeeds[DATA.currentSide] & (1 << DATA.currentPartyIndex)), "Speed required"); + for (i = 0; i < STATE->battlersCount; i++) + { + if ((i & BIT_SIDE) == DATA.currentSide + && DATA.currentMonIndexes[i] == DATA.currentPartyIndex) + { + INVALID_IF(GetMonData(DATA.currentMon, MON_DATA_HP) == 0, "Battlers cannot be fainted"); + } + } + UpdateMonPersonality(&DATA.currentMon->box, GenerateNature(DATA.nature, DATA.gender % NUM_NATURES) | DATA.gender); + DATA.currentMon = NULL; +} + +void Gender_(u32 sourceLine, u32 gender) +{ + const struct SpeciesInfo *info; + INVALID_IF(!DATA.currentMon, "Gender outside of PLAYER/OPPONENT"); + info = &gSpeciesInfo[GetMonData(DATA.currentMon, MON_DATA_SPECIES)]; + switch (gender) + { + case MON_MALE: + DATA.gender = 0xFF; + INVALID_IF(info->genderRatio == MON_GENDERLESS || info->genderRatio == MON_FEMALE, "Illegal male"); + break; + case MON_FEMALE: + DATA.gender = 0x00; + INVALID_IF(info->genderRatio == MON_GENDERLESS || info->genderRatio == MON_MALE, "Illegal female"); + break; + case MON_GENDERLESS: + INVALID_IF(info->genderRatio != gender, "Illegal genderless"); + break; + } +} + +void Nature_(u32 sourceLine, u32 nature) +{ + INVALID_IF(!DATA.currentMon, "Nature outside of PLAYER/OPPONENT"); + INVALID_IF(nature >= NUM_NATURES, "Illegal nature: %d", nature); + DATA.nature = nature; +} + +void Ability_(u32 sourceLine, u32 ability) +{ + s32 i; + u32 species; + const struct SpeciesInfo *info; + INVALID_IF(!DATA.currentMon, "Ability outside of PLAYER/OPPONENT"); + species = GetMonData(DATA.currentMon, MON_DATA_SPECIES); + info = &gSpeciesInfo[species]; + for (i = 0; i < NUM_ABILITY_SLOTS; i++) + { + if (info->abilities[i] == ability) + { + SetMonData(DATA.currentMon, MON_DATA_ABILITY_NUM, &i); + break; + } + } + INVALID_IF(i == NUM_ABILITY_SLOTS, "%S cannot have %S", gSpeciesNames[species], gAbilityNames[ability]); +} + +void Level_(u32 sourceLine, u32 level) +{ + // TODO: Preserve any explicitly-set stats. + INVALID_IF(!DATA.currentMon, "Level outside of PLAYER/OPPONENT"); + INVALID_IF(level == 0 || level > MAX_LEVEL, "Illegal level: %d", level); + SetMonData(DATA.currentMon, MON_DATA_LEVEL, &level); +} + +void MaxHP_(u32 sourceLine, u32 maxHP) +{ + INVALID_IF(!DATA.currentMon, "MaxHP outside of PLAYER/OPPONENT"); + INVALID_IF(maxHP == 0, "Illegal max HP: %d", maxHP); + SetMonData(DATA.currentMon, MON_DATA_MAX_HP, &maxHP); +} + +void HP_(u32 sourceLine, u32 hp) +{ + INVALID_IF(!DATA.currentMon, "HP outside of PLAYER/OPPONENT"); + if (hp > GetMonData(DATA.currentMon, MON_DATA_MAX_HP)) + SetMonData(DATA.currentMon, MON_DATA_MAX_HP, &hp); + SetMonData(DATA.currentMon, MON_DATA_HP, &hp); +} + +void Attack_(u32 sourceLine, u32 attack) +{ + INVALID_IF(!DATA.currentMon, "Attack outside of PLAYER/OPPONENT"); + INVALID_IF(attack == 0, "Illegal attack: %d", attack); + SetMonData(DATA.currentMon, MON_DATA_ATK, &attack); +} + +void Defense_(u32 sourceLine, u32 defense) +{ + INVALID_IF(!DATA.currentMon, "Defense outside of PLAYER/OPPONENT"); + INVALID_IF(defense == 0, "Illegal defense: %d", defense); + SetMonData(DATA.currentMon, MON_DATA_DEF, &defense); +} + +void SpAttack_(u32 sourceLine, u32 spAttack) +{ + INVALID_IF(!DATA.currentMon, "SpAttack outside of PLAYER/OPPONENT"); + INVALID_IF(spAttack == 0, "Illegal special attack: %d", spAttack); + SetMonData(DATA.currentMon, MON_DATA_SPATK, &spAttack); +} + +void SpDefense_(u32 sourceLine, u32 spDefense) +{ + INVALID_IF(!DATA.currentMon, "SpDefense outside of PLAYER/OPPONENT"); + INVALID_IF(spDefense == 0, "Illegal special defense: %d", spDefense); + SetMonData(DATA.currentMon, MON_DATA_SPDEF, &spDefense); +} + +void Speed_(u32 sourceLine, u32 speed) +{ + INVALID_IF(!DATA.currentMon, "Speed outside of PLAYER/OPPONENT"); + INVALID_IF(speed == 0, "Illegal speed: %d", speed); + SetMonData(DATA.currentMon, MON_DATA_SPEED, &speed); + DATA.hasExplicitSpeeds = TRUE; + DATA.explicitSpeeds[DATA.currentSide] |= 1 << DATA.currentPartyIndex; +} + +void Item_(u32 sourceLine, u32 item) +{ + INVALID_IF(!DATA.currentMon, "Item outside of PLAYER/OPPONENT"); + INVALID_IF(item >= ITEMS_COUNT, "Illegal item: %d", item); + SetMonData(DATA.currentMon, MON_DATA_HELD_ITEM, &item); +} + +void Moves_(u32 sourceLine, const u16 moves[MAX_MON_MOVES]) +{ + s32 i; + INVALID_IF(!DATA.currentMon, "Moves outside of PLAYER/OPPONENT"); + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moves[i] == MOVE_NONE) + break; + INVALID_IF(moves[i] >= MOVES_COUNT, "Illegal move: %d", moves[i]); + SetMonData(DATA.currentMon, MON_DATA_MOVE1 + i, &moves[i]); + SetMonData(DATA.currentMon, MON_DATA_PP1 + i, &gBattleMoves[moves[i]].pp); + } + DATA.explicitMoves[DATA.currentSide] |= 1 << DATA.currentPartyIndex; +} + +void Friendship_(u32 sourceLine, u32 friendship) +{ + INVALID_IF(!DATA.currentMon, "Friendship outside of PLAYER/OPPONENT"); + SetMonData(DATA.currentMon, MON_DATA_FRIENDSHIP, &friendship); +} + +void Status1_(u32 sourceLine, u32 status1) +{ + INVALID_IF(!DATA.currentMon, "Status1 outside of PLAYER/OPPONENT"); + INVALID_IF(status1 & STATUS1_TOXIC_COUNTER, "Illegal status1: has TOXIC_TURN"); + SetMonData(DATA.currentMon, MON_DATA_STATUS, &status1); +} + +static void PushBattlerAction(u32 sourceLine, s32 battlerId, u32 actionType, u32 byte) +{ + u32 recordIndex = DATA.recordIndexes[battlerId]++; + if (recordIndex >= BATTLER_RECORD_SIZE) + Test_ExitWithResult(TEST_RESULT_INVALID, "Too many actions"); + DATA.battleRecordTypes[battlerId][recordIndex] = actionType; + DATA.battleRecordSourceLineOffsets[battlerId][recordIndex] = SourceLineOffset(sourceLine); + DATA.recordedBattle.battleRecord[battlerId][recordIndex] = byte; +} + +void BattleTest_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType) +{ + // TODO: Support explicit seeds for each turn? + if (DATA.nextRNGTurn == gBattleResults.battleTurnCounter + && (DATA.recordedBattle.rngSeed == RNG_SEED_DEFAULT + || DATA.recordedBattle.rngSeed == RNG_SEED_CRITICAL_HIT + || DATA.recordedBattle.rngSeed == RNG_SEED_MISS)) + { + gRngValue = DATA.recordedBattle.rngSeed; + DATA.nextRNGTurn++; + } + + // An illegal move choice will cause the battle to request a new + // move slot and target. This detects the move slot. + if (actionType == RECORDED_MOVE_SLOT + && recordIndex > 0 + && DATA.battleRecordTypes[battlerId][recordIndex-1] != RECORDED_ACTION_TYPE) + { + s32 i; + const char *filename = gTestRunnerState.test->filename; + for (i = recordIndex; i > 0; i--) + { + if (DATA.battleRecordTypes[battlerId][i-1] == RECORDED_ACTION_TYPE + && DATA.recordedBattle.battleRecord[battlerId][i-1] == B_ACTION_USE_MOVE) + { + u32 line = SourceLine(DATA.battleRecordSourceLineOffsets[battlerId][i-1]); + Test_ExitWithResult(TEST_RESULT_INVALID, "%s:%d: Illegal MOVE", filename, line); + } + } + Test_ExitWithResult(TEST_RESULT_INVALID, "%s:%d: Illegal MOVE", filename, SourceLine(0)); + } + + if (DATA.battleRecordTypes[battlerId][recordIndex] != RECORDED_BYTE) + { + DATA.lastActionTurn = gBattleResults.battleTurnCounter; + + if (actionType != DATA.battleRecordTypes[battlerId][recordIndex]) + { + const char *actualMacro = NULL; + const char *filename = gTestRunnerState.test->filename; + u32 line = SourceLine(DATA.battleRecordSourceLineOffsets[battlerId][recordIndex]); + + switch (DATA.battleRecordTypes[battlerId][recordIndex]) + { + case RECORDED_ACTION_TYPE: + switch (DATA.recordedBattle.battleRecord[battlerId][recordIndex]) + { + case B_ACTION_USE_MOVE: + actualMacro = "MOVE"; + break; + case B_ACTION_SWITCH: + actualMacro = "SWITCH"; + break; + } + break; + case RECORDED_PARTY_INDEX: + actualMacro = "SEND_OUT"; + break; + } + + if (actualMacro) + { + switch (actionType) + { + case RECORDED_ACTION_TYPE: + Test_ExitWithResult(TEST_RESULT_INVALID, "%s:%d: Expected MOVE/SWITCH, got %s", filename, line, actualMacro); + case RECORDED_PARTY_INDEX: + Test_ExitWithResult(TEST_RESULT_INVALID, "%s:%d: Expected SEND_OUT, got %s", filename, line, actualMacro); + } + } + + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: Illegal battle record", filename, line); + } + } + else + { + if (DATA.lastActionTurn == gBattleResults.battleTurnCounter) + { + const char *filename = gTestRunnerState.test->filename; + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: TURN %d incomplete", filename, SourceLine(0), gBattleResults.battleTurnCounter + 1); + } + } +} + +void OpenTurn(u32 sourceLine) +{ + INVALID_IF(DATA.turnState != TURN_CLOSED, "Nested TURN"); + DATA.turnState = TURN_OPEN; + DATA.actionBattlers = 0x00; + DATA.moveBattlers = 0x00; + DATA.hasRNGActions = FALSE; +} + +static void SetSlowerThan(s32 battlerId) +{ + s32 i, slowerThan; + slowerThan = 0; + for (i = 0; i < STATE->battlersCount; i++) + { + if (i == battlerId) + continue; + if (DATA.moveBattlers & (1 << i)) + { + if ((i & BIT_SIDE) == B_SIDE_PLAYER) + slowerThan |= 1 << DATA.currentMonIndexes[i]; + else + slowerThan |= (1 << 6) << DATA.currentMonIndexes[i]; + } + } + DATA.slowerThan[battlerId & BIT_SIDE][DATA.currentMonIndexes[battlerId]] |= slowerThan; +} + +void CloseTurn(u32 sourceLine) +{ + s32 i; + INVALID_IF(DATA.turnState != TURN_OPEN, "Nested TURN"); + DATA.turnState = TURN_CLOSING; + for (i = 0; i < STATE->battlersCount; i++) + { + if (!(DATA.actionBattlers & (1 << i))) + Move(sourceLine, &gBattleMons[i], (struct MoveContext) { move: MOVE_CELEBRATE, explicitMove: TRUE }); + } + DATA.turnState = TURN_CLOSED; + DATA.turns++; +} + +static struct Pokemon *CurrentMon(s32 battlerId) +{ + struct Pokemon *party; + if ((battlerId & BIT_SIDE) == B_SIDE_PLAYER) + party = DATA.recordedBattle.playerParty; + else + party = DATA.recordedBattle.opponentParty; + return &party[DATA.currentMonIndexes[battlerId]]; +} + +void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) +{ + s32 i; + s32 battlerId = battler - gBattleMons; + struct Pokemon *mon = CurrentMon(battlerId); + u32 moveId, moveSlot; + s32 target; + + INVALID_IF(DATA.turnState == TURN_CLOSED, "MOVE outside TURN"); + + if (ctx.explicitMove) + { + INVALID_IF(ctx.move == MOVE_NONE || ctx.move >= MOVES_COUNT, "Illegal move: %d", ctx.move); + for (i = 0; i < MAX_MON_MOVES; i++) + { + moveId = GetMonData(mon, MON_DATA_MOVE1 + i); + if (moveId == ctx.move) + { + moveSlot = i; + break; + } + else if (moveId == MOVE_NONE) + { + INVALID_IF(DATA.explicitMoves[battlerId & BIT_SIDE] & (1 << DATA.currentMonIndexes[battlerId]), "Missing explicit %S", gMoveNames[ctx.move]); + INVALID_IF(i == MAX_MON_MOVES, "Too many different moves"); + SetMonData(mon, MON_DATA_MOVE1 + i, &ctx.move); + SetMonData(DATA.currentMon, MON_DATA_PP1 + i, &gBattleMoves[ctx.move].pp); + moveSlot = i; + moveId = ctx.move; + break; + } + } + } + else if (ctx.explicitMoveSlot) + { + moveSlot = ctx.moveSlot; + moveId = GetMonData(mon, MON_DATA_MOVE1 + moveSlot); + INVALID_IF(moveId == MOVE_NONE, "Empty moveSlot: %d", ctx.moveSlot); + } + else + { + INVALID("No move or moveSlot"); + } + + if (ctx.explicitMegaEvolve && ctx.megaEvolve) + moveSlot |= RET_MEGA_EVOLUTION; + + if (ctx.explicitTarget) + { + target = ctx.target - gBattleMons; + } + else + { + const struct BattleMove *move = &gBattleMoves[moveId]; + if (move->target == MOVE_TARGET_RANDOM + || move->target == MOVE_TARGET_BOTH + || move->target == MOVE_TARGET_FOES_AND_ALLY + || move->target == MOVE_TARGET_OPPONENTS_FIELD + || move->target == MOVE_TARGET_ALL_BATTLERS) + { + target = BATTLE_OPPOSITE(battlerId); + } + else if (move->target == MOVE_TARGET_SELECTED) + { + INVALID_IF(STATE->battlersCount > 2, "%S requires explicit target", gMoveNames[moveId]); + + target = BATTLE_OPPOSITE(battlerId); + } + else if (move->target == MOVE_TARGET_USER) + { + target = battlerId; + } + else if (move->target == MOVE_TARGET_ALLY) + { + target = BATTLE_PARTNER(battlerId); + } + else + { + INVALID("%S requires explicit target", gMoveNames[moveId]); + } + } + + if (ctx.explicitHit && !ctx.hit) + { + if (DATA.hasRNGActions != 0) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: hit only supported on the first move", gTestRunnerState.test->filename, sourceLine); + INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); + DATA.recordedBattle.rngSeed = RNG_SEED_MISS; + } + + if (ctx.explicitCriticalHit && ctx.criticalHit) + { + if (DATA.hasRNGActions != 0) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: criticalHit only supported on the first move", gTestRunnerState.test->filename, sourceLine); + INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); + DATA.recordedBattle.rngSeed = RNG_SEED_CRITICAL_HIT; + } + + if (!(DATA.actionBattlers & (1 << battlerId))) + { + PushBattlerAction(sourceLine, battlerId, RECORDED_ACTION_TYPE, B_ACTION_USE_MOVE); + } + + if (!ctx.explicitAllowed || ctx.allowed) + { + PushBattlerAction(sourceLine, battlerId, RECORDED_MOVE_SLOT, moveSlot); + PushBattlerAction(sourceLine, battlerId, RECORDED_MOVE_TARGET, target); + } + + if (DATA.turnState == TURN_OPEN) + { + if (!DATA.hasExplicitSpeeds) + SetSlowerThan(battlerId); + + DATA.actionBattlers |= 1 << battlerId; + DATA.moveBattlers |= 1 << battlerId; + } + + // WARNING: Approximation. The move could still cause the RNG to + // advance. + if (gBattleMoves[moveId].accuracy != 0 + || gBattleMoves[moveId].split != SPLIT_STATUS) + { + DATA.hasRNGActions = TRUE; + } +} + +void ForcedMove(u32 sourceLine, struct BattlePokemon *battler) +{ + s32 battlerId = battler - gBattleMons; + INVALID_IF(DATA.turnState == TURN_CLOSED, "SKIP_TURN outside TURN"); + PushBattlerAction(sourceLine, battlerId, RECORDED_ACTION_TYPE, B_ACTION_USE_MOVE); + if (DATA.turnState == TURN_OPEN) + { + if (!DATA.hasExplicitSpeeds) + SetSlowerThan(battlerId); + + DATA.actionBattlers |= 1 << battlerId; + DATA.moveBattlers |= 1 << battlerId; + } +} + +void Switch(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) +{ + s32 i; + s32 battlerId = battler - gBattleMons; + INVALID_IF(DATA.turnState == TURN_CLOSED, "SWITCH outside TURN"); + INVALID_IF(DATA.actionBattlers & (1 << battlerId), "Multiple battler actions"); + INVALID_IF(partyIndex >= ((battlerId & BIT_SIDE) == B_SIDE_PLAYER ? DATA.playerPartySize : DATA.opponentPartySize), "SWITCH to invalid party index"); + + for (i = 0; i < STATE->battlersCount; i++) + { + if (battlerId != i && (battlerId & BIT_SIDE) == (i & BIT_SIDE)) + INVALID_IF(DATA.currentMonIndexes[i] == partyIndex, "SWITCH to battler"); + } + + PushBattlerAction(sourceLine, battlerId, RECORDED_ACTION_TYPE, B_ACTION_SWITCH); + PushBattlerAction(sourceLine, battlerId, RECORDED_PARTY_INDEX, partyIndex); + DATA.currentMonIndexes[battlerId] = partyIndex; + + DATA.actionBattlers |= 1 << battlerId; +} + +void SkipTurn(u32 sourceLine, struct BattlePokemon *battler) +{ + s32 battlerId = battler - gBattleMons; + INVALID_IF(DATA.turnState == TURN_CLOSED, "SKIP_TURN outside TURN"); + DATA.actionBattlers |= 1 << battlerId; +} + +void SendOut(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) +{ + s32 i; + s32 battlerId = battler - gBattleMons; + INVALID_IF(DATA.turnState == TURN_CLOSED, "SEND_OUT outside TURN"); + INVALID_IF(partyIndex >= ((battlerId & BIT_SIDE) == B_SIDE_PLAYER ? DATA.playerPartySize : DATA.opponentPartySize), "SWITCH to invalid party index"); + for (i = 0; i < STATE->battlersCount; i++) + { + if (battlerId != i && (battlerId & BIT_SIDE) == (i & BIT_SIDE)) + INVALID_IF(DATA.currentMonIndexes[i] == partyIndex, "SEND_OUT to battler"); + } + if (!(DATA.actionBattlers & (1 << battlerId))) + Move(sourceLine, battler, (struct MoveContext) { move: MOVE_CELEBRATE, explicitMove: TRUE }); + PushBattlerAction(sourceLine, battlerId, RECORDED_PARTY_INDEX, partyIndex); + DATA.currentMonIndexes[battlerId] = partyIndex; +} + +static const char *const sQueueGroupTypeMacros[] = +{ + [QUEUE_GROUP_NONE] = NULL, + [QUEUE_GROUP_ONE_OF] = "ONE_OF", + [QUEUE_GROUP_NONE_OF] = "NONE_OF", +}; + +void OpenQueueGroup(u32 sourceLine, enum QueueGroupType type) +{ + INVALID_IF(DATA.queueGroupType, "%s inside %s", sQueueGroupTypeMacros[type], sQueueGroupTypeMacros[DATA.queueGroupType]); + DATA.queueGroupType = type; + DATA.queueGroupStart = DATA.queuedEventsCount; +} + +void CloseQueueGroup(u32 sourceLine) +{ + u32 groupSize = DATA.queuedEventsCount - DATA.queueGroupStart; + if (groupSize > 0) + { + DATA.queuedEvents[DATA.queueGroupStart].groupType = DATA.queueGroupType; + DATA.queuedEvents[DATA.queueGroupStart].groupSize = groupSize; + DATA.queueGroupType = QUEUE_GROUP_NONE; + } +} + +void QueueAbility(u32 sourceLine, struct BattlePokemon *battler, struct AbilityEventContext ctx) +{ +#if B_ABILITY_POP_UP + s32 battlerId = battler - gBattleMons; + INVALID_IF(!STATE->runScene, "ABILITY_POPUP outside of SCENE"); + if (DATA.queuedEventsCount == MAX_QUEUED_EVENTS) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: ABILITY exceeds MAX_QUEUED_EVENTS", gTestRunnerState.test->filename, sourceLine); + DATA.queuedEvents[DATA.queuedEventsCount++] = (struct QueuedEvent) { + .type = QUEUED_ABILITY_POPUP_EVENT, + .sourceLineOffset = SourceLineOffset(sourceLine), + .groupType = QUEUE_GROUP_NONE, + .groupSize = 1, + .as = { .ability = { + .battlerId = battlerId, + .ability = ctx.ability, + }}, + }; +#endif +} + +void QueueAnimation(u32 sourceLine, u32 type, u32 id, struct AnimationEventContext ctx) +{ + s32 attackerId, targetId; + + INVALID_IF(!STATE->runScene, "ANIMATION outside of SCENE"); + if (DATA.queuedEventsCount == MAX_QUEUED_EVENTS) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: ANIMATION exceeds MAX_QUEUED_EVENTS", gTestRunnerState.test->filename, sourceLine); + + attackerId = ctx.attacker ? ctx.attacker - gBattleMons : 0xF; + if (type == ANIM_TYPE_MOVE) + { + targetId = ctx.target ? ctx.target - gBattleMons : 0xF; + } + else + { + INVALID_IF(ctx.target, "ANIMATION target set for non-ANIM_TYPE_MOVE"); + targetId = 0xF; + } + + DATA.queuedEvents[DATA.queuedEventsCount++] = (struct QueuedEvent) { + .type = QUEUED_ANIMATION_EVENT, + .sourceLineOffset = SourceLineOffset(sourceLine), + .groupType = QUEUE_GROUP_NONE, + .groupSize = 1, + .as = { .animation = { + .type = type, + .id = id, + .attacker = attackerId, + .target = targetId, + }}, + }; +} + +void QueueHP(u32 sourceLine, struct BattlePokemon *battler, struct HPEventContext ctx) +{ + s32 battlerId = battler - gBattleMons; + u32 type; + uintptr_t address; + + INVALID_IF(!STATE->runScene, "HP_BAR outside of SCENE"); + if (DATA.queuedEventsCount == MAX_QUEUED_EVENTS) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: HP_BAR exceeds MAX_QUEUED_EVENTS", gTestRunnerState.test->filename, sourceLine); + + if (ctx.explicitHP) + { + type = HP_EVENT_NEW_HP; + address = (u16)ctx.hp; + } + else if (ctx.explicitDamage) + { + INVALID_IF(ctx.damage == 0, "damage is 0"); + type = HP_EVENT_DELTA_HP; + address = (u16)ctx.damage; + } + else if (ctx.explicitCaptureHP) + { + INVALID_IF(ctx.captureHP == NULL, "captureHP is NULL"); + type = HP_EVENT_NEW_HP; + address = (uintptr_t)ctx.captureHP; + } + else if (ctx.explicitCaptureDamage) + { + INVALID_IF(ctx.captureDamage == NULL, "captureDamage is NULL"); + type = HP_EVENT_DELTA_HP; + *ctx.captureDamage = 0; + address = (uintptr_t)ctx.captureDamage; + } + else + { + type = HP_EVENT_DELTA_HP; + address = 0; + } + + DATA.queuedEvents[DATA.queuedEventsCount++] = (struct QueuedEvent) { + .type = QUEUED_HP_EVENT, + .sourceLineOffset = SourceLineOffset(sourceLine), + .groupType = QUEUE_GROUP_NONE, + .groupSize = 1, + .as = { .hp = { + .battlerId = battlerId, + .type = type, + .address = address, + }}, + }; +} + +void QueueMessage(u32 sourceLine, const u8 *pattern) +{ + INVALID_IF(!STATE->runScene, "MESSAGE outside of SCENE"); + if (DATA.queuedEventsCount == MAX_QUEUED_EVENTS) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: MESSAGE exceeds MAX_QUEUED_EVENTS", gTestRunnerState.test->filename, sourceLine); + DATA.queuedEvents[DATA.queuedEventsCount++] = (struct QueuedEvent) { + .type = QUEUED_MESSAGE_EVENT, + .sourceLineOffset = SourceLineOffset(sourceLine), + .groupType = QUEUE_GROUP_NONE, + .groupSize = 1, + .as = { .message = { + .pattern = pattern, + }}, + }; +} + + +void QueueStatus(u32 sourceLine, struct BattlePokemon *battler, struct StatusEventContext ctx) +{ + s32 battlerId = battler - gBattleMons; + u32 mask; + + INVALID_IF(!STATE->runScene, "STATUS_ICON outside of SCENE"); + if (DATA.queuedEventsCount == MAX_QUEUED_EVENTS) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: STATUS_ICON exceeds MAX_QUEUED_EVENTS", gTestRunnerState.test->filename, sourceLine); + + if (ctx.none) + mask = 0; + else if (ctx.sleep) + mask = STATUS1_SLEEP; + else if (ctx.poison) + mask = STATUS1_POISON; + else if (ctx.burn) + mask = STATUS1_BURN; + else if (ctx.freeze) + mask = STATUS1_FREEZE; + else if (ctx.paralysis) + mask = STATUS1_PARALYSIS; + else if (ctx.badPoison) + mask = STATUS1_TOXIC_POISON; + else + mask = ctx.status1; + + DATA.queuedEvents[DATA.queuedEventsCount++] = (struct QueuedEvent) { + .type = QUEUED_STATUS_EVENT, + .sourceLineOffset = SourceLineOffset(sourceLine), + .groupType = QUEUE_GROUP_NONE, + .groupSize = 1, + .as = { .status = { + .battlerId = battlerId, + .mask = mask, + }}, + }; +} diff --git a/tools/gbagfx/convert_png.c b/tools/gbagfx/convert_png.c index 4f1b39e6d..a5fefbd8b 100644 --- a/tools/gbagfx/convert_png.c +++ b/tools/gbagfx/convert_png.c @@ -62,10 +62,7 @@ static unsigned char *ConvertBitDepth(unsigned char *src, int srcBitDepth, int d for (j = 8 - srcBitDepth; j >= 0; j -= srcBitDepth) { - unsigned char pixel = (srcByte >> j) % (1 << srcBitDepth); - - if (pixel >= (1 << destBitDepth)) - FATAL_ERROR("Image exceeds the maximum color value for a %ibpp image.\n", destBitDepth); + unsigned char pixel = (srcByte >> j) % (1 << destBitDepth); *dest |= pixel << destBit; destBit -= destBitDepth; if (destBit < 0) diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp index 71814269c..dc8b9080a 100644 --- a/tools/mapjson/mapjson.cpp +++ b/tools/mapjson/mapjson.cpp @@ -60,13 +60,41 @@ void write_text_file(string filepath, string text) { out_file.close(); } + +string json_to_string(const Json &data, const string &field = "") { + const Json value = !field.empty() ? data[field] : data; + string output = ""; + switch (value.type()) { + case Json::Type::STRING: + output = value.string_value(); + break; + case Json::Type::NUMBER: + output = std::to_string(value.int_value()); + break; + case Json::Type::BOOL: + output = value.bool_value() ? "TRUE" : "FALSE"; + break; + default:{ + string s = !field.empty() ? ("Value for '" + field + "'") : "JSON field"; + FATAL_ERROR("%s is unexpected type; expected string, number, or bool.\n", s.c_str()); + } + } + + if (output.empty()){ + string s = !field.empty() ? ("Value for '" + field + "'") : "JSON field"; + FATAL_ERROR("%s cannot be empty.\n", s.c_str()); + } + + return output; +} + string generate_map_header_text(Json map_data, Json layouts_data, string version) { - string map_layout_id = map_data["layout"].string_value(); + string map_layout_id = json_to_string(map_data, "layout"); vector matched; for (auto &field : layouts_data["layouts"].array_items()) { - if (map_layout_id == field["id"].string_value()) + if (map_layout_id == json_to_string(field, "id")) matched.push_back(field); } @@ -77,47 +105,47 @@ string generate_map_header_text(Json map_data, Json layouts_data, string version ostringstream text; - text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" - << map_data["name"].string_value() - << "/map.json\n@\n\n"; + string mapName = json_to_string(map_data, "name"); - text << map_data["name"].string_value() << ":\n" - << "\t.4byte " << layout["name"].string_value() << "\n"; + text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" << mapName << "/map.json\n@\n\n"; + + text << mapName << ":\n" + << "\t.4byte " << json_to_string(layout, "name") << "\n"; if (map_data.object_items().find("shared_events_map") != map_data.object_items().end()) - text << "\t.4byte " << map_data["shared_events_map"].string_value() << "_MapEvents\n"; + text << "\t.4byte " << json_to_string(map_data, "shared_events_map") << "_MapEvents\n"; else - text << "\t.4byte " << map_data["name"].string_value() << "_MapEvents\n"; + text << "\t.4byte " << mapName << "_MapEvents\n"; if (map_data.object_items().find("shared_scripts_map") != map_data.object_items().end()) - text << "\t.4byte " << map_data["shared_scripts_map"].string_value() << "_MapScripts\n"; + text << "\t.4byte " << json_to_string(map_data, "shared_scripts_map") << "_MapScripts\n"; else - text << "\t.4byte " << map_data["name"].string_value() << "_MapScripts\n"; + text << "\t.4byte " << mapName << "_MapScripts\n"; if (map_data.object_items().find("connections") != map_data.object_items().end() && map_data["connections"].array_items().size() > 0) - text << "\t.4byte " << map_data["name"].string_value() << "_MapConnections\n"; + text << "\t.4byte " << mapName << "_MapConnections\n"; else text << "\t.4byte 0x0\n"; - text << "\t.2byte " << map_data["music"].string_value() << "\n" - << "\t.2byte " << layout["id"].string_value() << "\n" - << "\t.byte " << map_data["region_map_section"].string_value() << "\n" - << "\t.byte " << map_data["requires_flash"].bool_value() << "\n" - << "\t.byte " << map_data["weather"].string_value() << "\n" - << "\t.byte " << map_data["map_type"].string_value() << "\n" + text << "\t.2byte " << json_to_string(map_data, "music") << "\n" + << "\t.2byte " << json_to_string(layout, "id") << "\n" + << "\t.byte " << json_to_string(map_data, "region_map_section") << "\n" + << "\t.byte " << json_to_string(map_data, "requires_flash") << "\n" + << "\t.byte " << json_to_string(map_data, "weather") << "\n" + << "\t.byte " << json_to_string(map_data, "map_type") << "\n" << "\t.2byte 0\n"; if (version == "ruby") - text << "\t.byte " << map_data["show_map_name"].bool_value() << "\n"; + text << "\t.byte " << json_to_string(map_data, "show_map_name") << "\n"; else if (version == "emerald") text << "\tmap_header_flags " - << "allow_cycling=" << map_data["allow_cycling"].bool_value() << ", " - << "allow_escaping=" << map_data["allow_escaping"].bool_value() << ", " - << "allow_running=" << map_data["allow_running"].bool_value() << ", " - << "show_map_name=" << map_data["show_map_name"].bool_value() << "\n"; + << "allow_cycling=" << json_to_string(map_data, "allow_cycling") << ", " + << "allow_escaping=" << json_to_string(map_data, "allow_escaping") << ", " + << "allow_running=" << json_to_string(map_data, "allow_running") << ", " + << "show_map_name=" << json_to_string(map_data, "show_map_name") << "\n"; - text << "\t.byte " << map_data["battle_scene"].string_value() << "\n\n"; + text << "\t.byte " << json_to_string(map_data, "battle_scene") << "\n\n"; return text.str(); } @@ -128,22 +156,22 @@ string generate_map_connections_text(Json map_data) { ostringstream text; - text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" - << map_data["name"].string_value() - << "/map.json\n@\n\n"; + string mapName = json_to_string(map_data, "name"); - text << map_data["name"].string_value() << "_MapConnectionsList:\n"; + text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" << mapName << "/map.json\n@\n\n"; + + text << mapName << "_MapConnectionsList:\n"; for (auto &connection : map_data["connections"].array_items()) { text << "\tconnection " - << connection["direction"].string_value() << ", " - << connection["offset"].int_value() << ", " - << connection["map"].string_value() << "\n"; + << json_to_string(connection, "direction") << ", " + << json_to_string(connection, "offset") << ", " + << json_to_string(connection, "map") << "\n"; } - text << "\n" << map_data["name"].string_value() << "_MapConnections:\n" + text << "\n" << mapName << "_MapConnections:\n" << "\t.4byte " << map_data["connections"].array_items().size() << "\n" - << "\t.4byte " << map_data["name"].string_value() << "_MapConnectionsList\n\n"; + << "\t.4byte " << mapName << "_MapConnectionsList\n\n"; return text.str(); } @@ -154,29 +182,29 @@ string generate_map_events_text(Json map_data) { ostringstream text; - text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" - << map_data["name"].string_value() - << "/map.json\n@\n\n"; + string mapName = json_to_string(map_data, "name"); + + text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" << mapName << "/map.json\n@\n\n"; string objects_label, warps_label, coords_label, bgs_label; if (map_data["object_events"].array_items().size() > 0) { - objects_label = map_data["name"].string_value() + "_ObjectEvents"; + objects_label = mapName + "_ObjectEvents"; text << objects_label << ":\n"; for (unsigned int i = 0; i < map_data["object_events"].array_items().size(); i++) { auto obj_event = map_data["object_events"].array_items()[i]; text << "\tobject_event " << i + 1 << ", " - << obj_event["graphics_id"].string_value() << ", 0, " - << obj_event["x"].int_value() << ", " - << obj_event["y"].int_value() << ", " - << obj_event["elevation"].int_value() << ", " - << obj_event["movement_type"].string_value() << ", " - << obj_event["movement_range_x"].int_value() << ", " - << obj_event["movement_range_y"].int_value() << ", " - << obj_event["trainer_type"].string_value() << ", " - << obj_event["trainer_sight_or_berry_tree_id"].string_value() << ", " - << obj_event["script"].string_value() << ", " - << obj_event["flag"].string_value() << "\n"; + << json_to_string(obj_event, "graphics_id") << ", 0, " + << json_to_string(obj_event, "x") << ", " + << json_to_string(obj_event, "y") << ", " + << json_to_string(obj_event, "elevation") << ", " + << json_to_string(obj_event, "movement_type") << ", " + << json_to_string(obj_event, "movement_range_x") << ", " + << json_to_string(obj_event, "movement_range_y") << ", " + << json_to_string(obj_event, "trainer_type") << ", " + << json_to_string(obj_event, "trainer_sight_or_berry_tree_id") << ", " + << json_to_string(obj_event, "script") << ", " + << json_to_string(obj_event, "flag") << "\n"; } text << "\n"; } else { @@ -184,15 +212,15 @@ string generate_map_events_text(Json map_data) { } if (map_data["warp_events"].array_items().size() > 0) { - warps_label = map_data["name"].string_value() + "_MapWarps"; + warps_label = mapName + "_MapWarps"; text << warps_label << ":\n"; for (auto &warp_event : map_data["warp_events"].array_items()) { text << "\twarp_def " - << warp_event["x"].int_value() << ", " - << warp_event["y"].int_value() << ", " - << warp_event["elevation"].int_value() << ", " - << warp_event["dest_warp_id"].string_value() << ", " - << warp_event["dest_map"].string_value() << "\n"; + << json_to_string(warp_event, "x") << ", " + << json_to_string(warp_event, "y") << ", " + << json_to_string(warp_event, "elevation") << ", " + << json_to_string(warp_event, "dest_warp_id") << ", " + << json_to_string(warp_event, "dest_map") << "\n"; } text << "\n"; } else { @@ -200,24 +228,24 @@ string generate_map_events_text(Json map_data) { } if (map_data["coord_events"].array_items().size() > 0) { - coords_label = map_data["name"].string_value() + "_MapCoordEvents"; + coords_label = mapName + "_MapCoordEvents"; text << coords_label << ":\n"; for (auto &coord_event : map_data["coord_events"].array_items()) { - if (coord_event["type"].string_value() == "trigger") { + if (json_to_string(coord_event, "type") == "trigger") { text << "\tcoord_event " - << coord_event["x"].int_value() << ", " - << coord_event["y"].int_value() << ", " - << coord_event["elevation"].int_value() << ", " - << coord_event["var"].string_value() << ", " - << coord_event["var_value"].string_value() << ", " - << coord_event["script"].string_value() << "\n"; + << json_to_string(coord_event, "x") << ", " + << json_to_string(coord_event, "y") << ", " + << json_to_string(coord_event, "elevation") << ", " + << json_to_string(coord_event, "var") << ", " + << json_to_string(coord_event, "var_value") << ", " + << json_to_string(coord_event, "script") << "\n"; } else if (coord_event["type"] == "weather") { text << "\tcoord_weather_event " - << coord_event["x"].int_value() << ", " - << coord_event["y"].int_value() << ", " - << coord_event["elevation"].int_value() << ", " - << coord_event["weather"].string_value() << "\n"; + << json_to_string(coord_event, "x") << ", " + << json_to_string(coord_event, "y") << ", " + << json_to_string(coord_event, "elevation") << ", " + << json_to_string(coord_event, "weather") << "\n"; } } text << "\n"; @@ -226,31 +254,31 @@ string generate_map_events_text(Json map_data) { } if (map_data["bg_events"].array_items().size() > 0) { - bgs_label = map_data["name"].string_value() + "_MapBGEvents"; + bgs_label = mapName + "_MapBGEvents"; text << bgs_label << ":\n"; for (auto &bg_event : map_data["bg_events"].array_items()) { if (bg_event["type"] == "sign") { text << "\tbg_sign_event " - << bg_event["x"].int_value() << ", " - << bg_event["y"].int_value() << ", " - << bg_event["elevation"].int_value() << ", " - << bg_event["player_facing_dir"].string_value() << ", " - << bg_event["script"].string_value() << "\n"; + << json_to_string(bg_event, "x") << ", " + << json_to_string(bg_event, "y") << ", " + << json_to_string(bg_event, "elevation") << ", " + << json_to_string(bg_event, "player_facing_dir") << ", " + << json_to_string(bg_event, "script") << "\n"; } else if (bg_event["type"] == "hidden_item") { text << "\tbg_hidden_item_event " - << bg_event["x"].int_value() << ", " - << bg_event["y"].int_value() << ", " - << bg_event["elevation"].int_value() << ", " - << bg_event["item"].string_value() << ", " - << bg_event["flag"].string_value() << "\n"; + << json_to_string(bg_event, "x") << ", " + << json_to_string(bg_event, "y") << ", " + << json_to_string(bg_event, "elevation") << ", " + << json_to_string(bg_event, "item") << ", " + << json_to_string(bg_event, "flag") << "\n"; } else if (bg_event["type"] == "secret_base") { text << "\tbg_secret_base_event " - << bg_event["x"].int_value() << ", " - << bg_event["y"].int_value() << ", " - << bg_event["elevation"].int_value() << ", " - << bg_event["secret_base_id"].string_value() << "\n"; + << json_to_string(bg_event, "x") << ", " + << json_to_string(bg_event, "y") << ", " + << json_to_string(bg_event, "elevation") << ", " + << json_to_string(bg_event, "secret_base_id") << "\n"; } } text << "\n"; @@ -258,7 +286,7 @@ string generate_map_events_text(Json map_data) { bgs_label = "0x0"; } - text << map_data["name"].string_value() << "_MapEvents::\n" + text << mapName << "_MapEvents::\n" << "\tmap_events " << objects_label << ", " << warps_label << ", " << coords_label << ", " << bgs_label << "\n\n"; @@ -301,17 +329,17 @@ string generate_groups_text(Json groups_data) { text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n"; for (auto &key : groups_data["group_order"].array_items()) { - string group = key.string_value(); + string group = json_to_string(key); text << group << "::\n"; auto maps = groups_data[group].array_items(); for (Json &map_name : maps) - text << "\t.4byte " << map_name.string_value() << "\n"; + text << "\t.4byte " << json_to_string(map_name) << "\n"; text << "\n"; } text << "\t.align 2\n" << "gMapGroups::\n"; for (auto &group : groups_data["group_order"].array_items()) - text << "\t.4byte " << group.string_value() << "\n"; + text << "\t.4byte " << json_to_string(group) << "\n"; text << "\n"; return text.str(); @@ -321,7 +349,7 @@ string generate_connections_text(Json groups_data) { vector map_names; for (auto &group : groups_data["group_order"].array_items()) - for (auto map_name : groups_data[group.string_value()].array_items()) + for (auto map_name : groups_data[json_to_string(group)].array_items()) map_names.push_back(map_name); vector connections_include_order = groups_data["connections_include_order"].array_items(); @@ -342,7 +370,7 @@ string generate_connections_text(Json groups_data) { text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n"; for (Json map_name : map_names) - text << "\t.include \"data/maps/" << map_name.string_value() << "/connections.inc\"\n"; + text << "\t.include \"data/maps/" << json_to_string(map_name) << "/connections.inc\"\n"; return text.str(); } @@ -351,8 +379,8 @@ string generate_headers_text(Json groups_data) { vector map_names; for (auto &group : groups_data["group_order"].array_items()) - for (auto map_name : groups_data[group.string_value()].array_items()) - map_names.push_back(map_name.string_value()); + for (auto map_name : groups_data[json_to_string(group)].array_items()) + map_names.push_back(json_to_string(map_name)); ostringstream text; @@ -368,8 +396,8 @@ string generate_events_text(Json groups_data) { vector map_names; for (auto &group : groups_data["group_order"].array_items()) - for (auto map_name : groups_data[group.string_value()].array_items()) - map_names.push_back(map_name.string_value()); + for (auto map_name : groups_data[json_to_string(group)].array_items()) + map_names.push_back(json_to_string(map_name)); ostringstream text; @@ -397,25 +425,28 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { vector map_count_vec; //DEBUG for (auto &group : groups_data["group_order"].array_items()) { - text << "// " << group.string_value() << "\n"; + string groupName = json_to_string(group); + text << "// " << groupName << "\n"; vector map_ids; size_t max_length = 0; int map_count = 0; //DEBUG - for (auto &map_name : groups_data[group.string_value()].array_items()) { - string header_filepath = file_dir + map_name.string_value() + dir_separator + "map.json"; + for (auto &map_name : groups_data[groupName].array_items()) { + string header_filepath = file_dir + json_to_string(map_name) + dir_separator + "map.json"; string err_str; Json map_data = Json::parse(read_text_file(header_filepath), err_str); map_ids.push_back(map_data["id"]); - if (map_data["id"].string_value().length() > max_length) - max_length = map_data["id"].string_value().length(); + string id = json_to_string(map_data, "id"); + if (id.length() > max_length) + max_length = id.length(); map_count++; //DEBUG } int map_id_num = 0; for (Json map_id : map_ids) { - text << "#define " << map_id.string_value() << string((max_length - map_id.string_value().length() + 1), ' ') + string id = json_to_string(map_id); + text << "#define " << id << string((max_length - id.length() + 1), ' ') << "(" << map_id_num++ << " | (" << group_num << " << 8))\n"; } text << "\n"; @@ -467,20 +498,21 @@ string generate_layout_headers_text(Json layouts_data) { text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n@\n\n"; for (auto &layout : layouts_data["layouts"].array_items()) { - string border_label = layout["name"].string_value() + "_Border"; - string blockdata_label = layout["name"].string_value() + "_Blockdata"; + string layoutName = json_to_string(layout, "name"); + string border_label = layoutName + "_Border"; + string blockdata_label = layoutName + "_Blockdata"; text << border_label << "::\n" - << "\t.incbin \"" << layout["border_filepath"].string_value() << "\"\n\n" + << "\t.incbin \"" << json_to_string(layout, "border_filepath") << "\"\n\n" << blockdata_label << "::\n" - << "\t.incbin \"" << layout["blockdata_filepath"].string_value() << "\"\n\n" + << "\t.incbin \"" << json_to_string(layout, "blockdata_filepath") << "\"\n\n" << "\t.align 2\n" - << layout["name"].string_value() << "::\n" - << "\t.4byte " << layout["width"].int_value() << "\n" - << "\t.4byte " << layout["height"].int_value() << "\n" + << layoutName << "::\n" + << "\t.4byte " << json_to_string(layout, "width") << "\n" + << "\t.4byte " << json_to_string(layout, "height") << "\n" << "\t.4byte " << border_label << "\n" << "\t.4byte " << blockdata_label << "\n" - << "\t.4byte " << layout["primary_tileset"].string_value() << "\n" - << "\t.4byte " << layout["secondary_tileset"].string_value() << "\n\n"; + << "\t.4byte " << json_to_string(layout, "primary_tileset") << "\n" + << "\t.4byte " << json_to_string(layout, "secondary_tileset") << "\n\n"; } return text.str(); @@ -492,10 +524,10 @@ string generate_layouts_table_text(Json layouts_data) { text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n@\n\n"; text << "\t.align 2\n" - << layouts_data["layouts_table_label"].string_value() << "::\n"; + << json_to_string(layouts_data, "layouts_table_label") << "::\n"; for (auto &layout : layouts_data["layouts"].array_items()) - text << "\t.4byte " << layout["name"].string_value() << "\n"; + text << "\t.4byte " << json_to_string(layout, "name") << "\n"; return text.str(); } @@ -510,7 +542,7 @@ string generate_layouts_constants_text(Json layouts_data) { int i = 0; for (auto &layout : layouts_data["layouts"].array_items()) - text << "#define " << layout["id"].string_value() << " " << ++i << "\n"; + text << "#define " << json_to_string(layout, "id") << " " << ++i << "\n"; text << "\n#endif // GUARD_CONSTANTS_LAYOUTS_H\n"; diff --git a/tools/mgba-rom-test-hydra/.gitignore b/tools/mgba-rom-test-hydra/.gitignore new file mode 100644 index 000000000..b3b89034b --- /dev/null +++ b/tools/mgba-rom-test-hydra/.gitignore @@ -0,0 +1 @@ +mgba-rom-test-hydra diff --git a/tools/mgba-rom-test-hydra/Makefile b/tools/mgba-rom-test-hydra/Makefile new file mode 100644 index 000000000..5f33f001b --- /dev/null +++ b/tools/mgba-rom-test-hydra/Makefile @@ -0,0 +1,18 @@ +.PHONY: all clean + +SRCS = main.c + +ifeq ($(OS),Windows_NT) +EXE := .exe +else +EXE := +endif + +all: mgba-rom-test-hydra$(EXE) + @: + +mgba-rom-test-hydra$(EXE): $(SRCS) + $(CC) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) mgba-rom-test-hydra$(EXE) diff --git a/tools/mgba-rom-test-hydra/main.c b/tools/mgba-rom-test-hydra/main.c new file mode 100644 index 000000000..f9c51d505 --- /dev/null +++ b/tools/mgba-rom-test-hydra/main.c @@ -0,0 +1,421 @@ +/* mgba-rom-test-hydra. Runs multiple mgba-rom-test processes and + * parses the output to display human-readable progress. + * + * Output lines starting with "GBA Debug: :" are parsed as commands to + * Hydra, other output lines starting with "GBA Debug: " are parsed as + * output from the current test, and any other lines are parsed as + * output from the mgba-rom-test process itself. + * + * COMMANDS + * N: Sets the test name to the remainder of the line. + * R: Sets the result to the remainder of the line, and flushes any + * output buffered since the previous R. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MAX_PROCESSES 32 // See also test/test.h + +struct Runner +{ + pid_t pid; + int outfd; + char rom_path[L_tmpnam]; + char test_name[256]; + size_t input_buffer_size; + size_t input_buffer_capacity; + char *input_buffer; + size_t output_buffer_size; + size_t output_buffer_capacity; + char *output_buffer; +}; + +static unsigned nrunners = 0; +static struct Runner *runners = NULL; + +static void handle_read(struct Runner *runner) +{ + char *sol = runner->input_buffer; + char *eol; + size_t consumed = 0; + size_t remaining = runner->input_buffer_size; + while ((eol = memchr(sol, '\n', remaining))) + { + eol++; + size_t n = eol - sol; + if (runner->input_buffer_size >= strlen("GBA Debug: ") + && !strncmp(sol, "GBA Debug: ", strlen("GBA Debug: "))) + { + char *soc = sol + strlen("GBA Debug: "); + if (soc[0] == ':') + { + switch (soc[1]) + { + case 'N': + soc += 2; + if (sizeof(runner->test_name) <= eol - soc - 1) + { + fprintf(stderr, "test_name too long\n"); + exit(2); + } + strncpy(runner->test_name, soc, eol - soc - 1); + runner->test_name[eol - soc - 1] = '\0'; + break; + + case 'R': + soc += 2; + fprintf(stdout, "%s: ", runner->test_name); + fwrite(soc, 1, eol - soc, stdout); + fwrite(runner->output_buffer, 1, runner->output_buffer_size, stdout); + strcpy(runner->test_name, "WAITING..."); + runner->output_buffer_size = 0; + break; + + default: + goto buffer_output; + } + } + else + { +buffer_output: + if (runner->output_buffer_size + eol - soc >= runner->output_buffer_capacity) + { + runner->output_buffer_capacity *= 2; + if (runner->output_buffer_capacity < runner->output_buffer_size + eol - soc) + runner->output_buffer_capacity = runner->output_buffer_size + eol - soc; + runner->output_buffer = realloc(runner->output_buffer, runner->output_buffer_capacity); + if (!runner->output_buffer) + { + perror("realloc output_buffer failed"); + exit(2); + } + } + memcpy(runner->output_buffer + runner->output_buffer_size, soc, eol - soc); + runner->output_buffer_size += eol - soc; + } + } + else + { + if (write(STDOUT_FILENO, sol, eol - sol) == -1) + { + perror("write failed"); + exit(2); + } + } + sol += n; + consumed += n; + remaining -= n; + } + + memcpy(runner->input_buffer, sol, remaining); + runner->input_buffer_size -= consumed; + + if (runner->input_buffer_size == runner->input_buffer_capacity) + { + runner->input_buffer_capacity *= 2; + runner->input_buffer = realloc(runner->input_buffer, runner->input_buffer_capacity); + if (!runner->input_buffer) + { + perror("realloc input_buffer failed"); + exit(2); + } + } +} + +static void unlink_roms(void) +{ + for (int i = 0; i < nrunners; i++) + { + if (runners[i].rom_path[0]) + { + if (unlink(runners[i].rom_path) == -1) + perror("unlink rom_path failed"); + } + } +} + +static void exit2(int _) +{ + exit(2); +} + +int main(int argc, char *argv[]) +{ + if (argc < 3) + { + fprintf(stderr, "usage %s mgba-rom-test rom\n", argv[0]); + exit(2); + } + + bool tty = isatty(STDOUT_FILENO); + if (!tty) + { + const char *v = getenv("MAKE_TERMOUT"); + tty = v && v[0] == '\0'; + } + + if (tty) + { + char *stdout_buffer = malloc(64 * 1024); + if (!stdout_buffer) + { + perror("malloc stdout_buffer failed"); + exit(2); + } + setvbuf(stdout, stdout_buffer, _IOFBF, 64 * 1024); + } + else + { + setvbuf(stdout, NULL, _IONBF, 0); + } + + int elffd; + if ((elffd = open(argv[2], O_RDONLY)) == -1) + { + perror("open elffd failed"); + exit(2); + } + + struct stat elfst; + if (fstat(elffd, &elfst) == -1) + { + perror("stat elffd failed"); + exit(2); + } + + void *elf; + if ((elf = mmap(NULL, elfst.st_size, PROT_READ, MAP_PRIVATE, elffd, 0)) == MAP_FAILED) + { + perror("mmap elffd failed"); + exit(2); + } + + nrunners = sysconf(_SC_NPROCESSORS_ONLN); + if (nrunners > MAX_PROCESSES) + nrunners = MAX_PROCESSES; + runners = calloc(nrunners, sizeof(*runners)); + if (!runners) + { + perror("calloc runners failed"); + exit(2); + } + for (int i = 0; i < nrunners; i++) + { + runners[i].input_buffer_capacity = 4096; + runners[i].input_buffer = malloc(runners[i].input_buffer_capacity); + runners[i].output_buffer_capacity = 4096; + runners[i].output_buffer = malloc(runners[i].output_buffer_capacity); + strcpy(runners[i].test_name, "WAITING..."); + if (tty) + fprintf(stdout, "%s\n", runners[i].test_name); + } + fflush(stdout); + atexit(unlink_roms); + signal(SIGINT, exit2); + signal(SIGTERM, exit2); + + // Start test runners. + pid_t parent_pid = getpid(); + for (int i = 0; i < nrunners; i++) + { + int pipefds[2]; + if (pipe(pipefds) == -1) + { + perror("pipe failed"); + exit(2); + } + if (!tmpnam(runners[i].rom_path)) + { + perror("tmpnam rom_path failed"); + exit(2); + } + int tmpfd; + if ((tmpfd = open(runners[i].rom_path, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR)) == -1) + { + perror("open tmpfd failed"); + _exit(2); + } + if ((write(tmpfd, elf, elfst.st_size)) == -1) + { + perror("write tmpfd failed"); + _exit(2); + } + pid_t patchelfpid = fork(); + if (patchelfpid == -1) + { + perror("fork patchelf failed"); + _exit(2); + } + else if (patchelfpid == 0) + { + char n_arg[5], i_arg[5]; + snprintf(n_arg, sizeof(n_arg), "\\x%02x", nrunners); + snprintf(i_arg, sizeof(i_arg), "\\x%02x", i); + if (execlp("tools/patchelf/patchelf", "tools/patchelf/patchelf", runners[i].rom_path, "gTestRunnerN", n_arg, "gTestRunnerI", i_arg, NULL) == -1) + { + perror("execlp patchelf failed"); + _exit(2); + } + } + else + { + int wstatus; + if (waitpid(patchelfpid, &wstatus, 0) == -1) + { + perror("waitpid patchelfpid failed"); + _exit(2); + } + if (!WIFEXITED(wstatus) || WEXITSTATUS(wstatus) != 0) + { + fprintf(stderr, "patchelf exited with an error\n"); + _exit(2); + } + } + pid_t pid = fork(); + if (pid == -1) { + perror("fork mgba-rom-test failed"); + exit(2); + } else if (pid == 0) { + if (prctl(PR_SET_PDEATHSIG, SIGTERM) == -1) + { + perror("prctl failed"); + _exit(2); + } + if (getppid() != parent_pid) // Parent died. + { + _exit(2); + } + if (close(pipefds[0]) == -1) + { + perror("close pipefds[0] failed"); + _exit(2); + } + if (dup2(pipefds[1], STDOUT_FILENO) == -1) + { + perror("dup2 stdout failed"); + _exit(2); + } + if (close(pipefds[1]) == -1) + { + perror("close pipefds[1] failed"); + _exit(2); + } + // stdbuf is required because otherwise mgba never flushes + // stdout. + if (execlp("stdbuf", "stdbuf", "-oL", argv[1], "-l15", "-ClogLevel.gba.dma=16", "-Rr0", runners[i].rom_path, NULL) == -1) + { + perror("execl stdbuf mgba-rom-test failed"); + _exit(2); + } + } else { + runners[i].pid = pid; + runners[i].outfd = pipefds[0]; + if (close(pipefds[1]) == -1) + { + perror("close pipefds[1] failed"); + exit(2); + } + } + } + + // Process test runner output. + int openfds = nrunners; + struct pollfd *pollfds = calloc(nrunners, sizeof(*pollfds)); + if (!pollfds) + { + perror("calloc pollfds failed"); + exit(2); + } + for (int i = 0; i < nrunners; i++) + { + pollfds[i].fd = runners[i].outfd; + pollfds[i].events = POLLIN; + } + while (openfds > 0) + { + if (tty) + { + struct winsize winsize; + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) == -1) + { + perror("ioctl TIOCGWINSZ failed"); + exit(2); + } + int scrollback = 0; + for (int i = 0; i < nrunners; i++) + { + if (runners[i].outfd >= 0) + scrollback += (strlen(runners[i].test_name) + winsize.ws_col - 1) / winsize.ws_col; + } + if (scrollback > 0) + fprintf(stdout, "\e[%dF\e[J", scrollback); + } + + if (poll(pollfds, nrunners, -1) == -1) + { + perror("poll failed"); + exit(2); + } + for (int i = 0; i < nrunners; i++) + { + if (pollfds[i].revents & POLLIN) + { + int n; + if ((n = read(pollfds[i].fd, runners[i].input_buffer + runners[i].input_buffer_size, runners[i].input_buffer_capacity - runners[i].input_buffer_size)) == -1) + { + perror("read pollfds[i] failed"); + exit(2); + } + runners[i].input_buffer_size += n; + handle_read(&runners[i]); + } + + if (pollfds[i].revents & (POLLERR | POLLHUP)) + { + if (close(pollfds[i].fd) == -1) + { + perror("close pollfds[i] failed"); + exit(2); + } + runners[i].outfd = pollfds[i].fd = -pollfds[i].fd; + openfds--; + } + } + + if (tty) + { + for (int i = 0; i < nrunners; i++) + { + if (runners[i].outfd >= 0) + fprintf(stdout, "%s\n", runners[i].test_name); + } + + fflush(stdout); + } + } + + // Reap test runners and collate exit codes. + int exit_code = 0; + for (int i = 0; i < nrunners; i++) + { + int wstatus; + if (waitpid(runners[i].pid, &wstatus, 0) == -1) + { + perror("waitpid runners[i] failed"); + exit(2); + } + if (WIFEXITED(wstatus) && WEXITSTATUS(wstatus) > exit_code) + exit_code = WEXITSTATUS(wstatus); + } + return exit_code; +} diff --git a/tools/mgba/README.md b/tools/mgba/README.md new file mode 100644 index 000000000..617e6e058 --- /dev/null +++ b/tools/mgba/README.md @@ -0,0 +1,7 @@ +# mGBA + +The binaries in this folder are built from `mGBA`, an emulator for running Game Boy Advance games. The source code is available here: . +The source code for these specific builds is available from: + + - Windows: + - Linux: diff --git a/tools/mgba/mgba-rom-test b/tools/mgba/mgba-rom-test new file mode 100755 index 000000000..09c683a2f Binary files /dev/null and b/tools/mgba/mgba-rom-test differ diff --git a/tools/mgba/mgba-rom-test.exe b/tools/mgba/mgba-rom-test.exe new file mode 100755 index 000000000..5b25e16f6 Binary files /dev/null and b/tools/mgba/mgba-rom-test.exe differ diff --git a/tools/patchelf/.gitignore b/tools/patchelf/.gitignore new file mode 100644 index 000000000..fca468008 --- /dev/null +++ b/tools/patchelf/.gitignore @@ -0,0 +1 @@ +patchelf diff --git a/tools/patchelf/Makefile b/tools/patchelf/Makefile new file mode 100644 index 000000000..4e60bd631 --- /dev/null +++ b/tools/patchelf/Makefile @@ -0,0 +1,18 @@ +.PHONY: all clean + +SRCS = patchelf.c + +ifeq ($(OS),Windows_NT) +EXE := .exe +else +EXE := +endif + +all: patchelf$(EXE) + @: + +patchelf$(EXE): $(SRCS) + $(CC) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) patchelf$(EXE) diff --git a/tools/patchelf/patchelf.c b/tools/patchelf/patchelf.c new file mode 100644 index 000000000..19363c55f --- /dev/null +++ b/tools/patchelf/patchelf.c @@ -0,0 +1,191 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static bool try_patch_value(const char *sym, char *dest, const char *source, size_t size); + +int main(int argc, char *argv[]) +{ + int exit_code = 1; + + int fd = -1; + char *f = MAP_FAILED; + + if (argc < 2 || argc % 2 != 0) + { + fprintf(stderr, "Usage: %s [ ]...\n", argv[0]); + goto error; + } + + if ((fd = open(argv[1], O_RDWR)) == -1) + { + fprintf(stderr, "open(%s, O_RDWR) failed: %s\n", argv[1], strerror(errno)); + goto error; + } + + struct stat st; + if (fstat(fd, &st) == -1) + { + perror("stat failed"); + goto error; + } + + if ((f = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) + { + perror("mmap failed"); + goto error; + } + + if (memcmp(f, ELFMAG, 4) != 0) + { + fprintf(stderr, "not an ELF file\n"); + goto error; + } + + const Elf32_Ehdr *ehdr = (Elf32_Ehdr *)f; + const Elf32_Shdr *shdrs = (Elf32_Shdr *)(f + ehdr->e_shoff); + + if (ehdr->e_shstrndx == SHN_UNDEF) + { + fprintf(stderr, "no section name string table\n"); + goto error; + } + const Elf32_Shdr *shdr_shstr = &shdrs[ehdr->e_shstrndx]; + const char *shstr = (const char *)(f + shdr_shstr->sh_offset); + const Elf32_Shdr *shdr_symtab = NULL; + const Elf32_Shdr *shdr_strtab = NULL; + for (int i = 0; i < ehdr->e_shnum; i++) + { + const char *sh_name = shstr + shdrs[i].sh_name; + if (strcmp(sh_name, ".symtab") == 0) + shdr_symtab = &shdrs[i]; + else if (strcmp(sh_name, ".strtab") == 0) + shdr_strtab = &shdrs[i]; + } + if (!shdr_symtab) + { + fprintf(stderr, "no .symtab section\n"); + goto error; + } + if (!shdr_strtab) + { + fprintf(stderr, "no .strtab section\n"); + goto error; + } + + const Elf32_Sym *symtab = (Elf32_Sym *)(f + shdr_symtab->sh_offset); + const char *strtab = (const char *)(f + shdr_strtab->sh_offset); + for (int i = 0; i < shdr_symtab->sh_size / shdr_symtab->sh_entsize; i++) + { + if (symtab[i].st_name == 0) continue; + if (symtab[i].st_shndx > ehdr->e_shnum) continue; + const char *st_name = strtab + symtab[i].st_name; + const Elf32_Shdr *shdr = &shdrs[symtab[i].st_shndx]; + uint32_t sym_offset = symtab[i].st_value - shdr->sh_addr; + for (int j = 2; j < argc; j += 2) + { + const char *arg_name = argv[j + 0]; + const char *arg_value = argv[j + 1]; + if (strcmp(st_name, arg_name) == 0) + { + char *value = (char *)(f + shdr->sh_offset + sym_offset); + if (!try_patch_value(st_name, value, arg_value, symtab[i].st_size)) + goto error; + } + } + } + + exit_code = 0; + +error: + if (f != MAP_FAILED) + { + if (msync(f, st.st_size, MS_SYNC) == -1) + { + perror("msync failed"); + f = MAP_FAILED; + } + } + if (f != MAP_FAILED) + { + if (munmap(f, st.st_size) == -1) + { + perror("munmap failed"); + } + } + if (fd != -1) + { + if (close(fd) == -1) + { + perror("close failed"); + } + } + + return exit_code; +} + +static int parsexdigit(char c) +{ + if ('0' <= c && c <= '9') + return c - '0'; + else if ('a' <= c && c <= 'f') + return c - 'a' + 10; + else if ('A' <= c && c <= 'F') + return c - 'A' + 10; + else + return -1; +} + +static bool try_patch_value(const char *sym, char *dest, const char *source, size_t size) +{ + int i = 0; + while (*source) + { + if (i == size) + { + fprintf(stderr, "%s: overflows size (%lu)\n", sym, size); + return false; + } + char c, value; + switch ((c = *source++)) + { + case '\\': + switch ((c = *source++)) + { + case '0': + value = 0; + break; + case 'x': + if (!isxdigit((c = *source++))) + { + fprintf(stderr, "%s: illegal escape \\x%c\n", sym, c); + return false; + } + value = parsexdigit(c); + if (!isxdigit((c = *source++))) + { + fprintf(stderr, "%s: illegal escape \\x%c%c\n", sym, *(source - 2), c); + return false; + } + value = value * 16 + parsexdigit(c); + break; + default: + fprintf(stderr, "%s: illegal escape \\%c\n", sym, c); + return false; + } + break; + default: + value = c; + break; + } + dest[i++] = value; + } + return true; +}