diff --git a/INSTALL.md b/INSTALL.md index ee4706c6cf..53d2841072 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/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 1006694655..06a24c5928 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 diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index 4e7284fd06..24f81323f1 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/specials.inc b/data/specials.inc index a1b2fd2016..cb49a935d1 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -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/sprite.c b/gflib/sprite.c index cbcd6fb7c0..c489eb6a4c 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 a3c225c89d..e6fff76ae9 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/ball_caught_indicator.png b/graphics/battle_interface/ball_caught_indicator.png index 4eb765d280..5473d53df8 100644 Binary files a/graphics/battle_interface/ball_caught_indicator.png and b/graphics/battle_interface/ball_caught_indicator.png differ diff --git a/graphics/battle_interface/status.png b/graphics/battle_interface/status.png new file mode 100644 index 0000000000..9fae45b71f 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 a412e160e5..af7ce05d3b 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 8a0db03219..d0febfb17c 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 e267940be7..9704a36119 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 8f13fe6de2..0000000000 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 ce10db3e4e..0000000000 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 904b13242f..0000000000 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 700e7038a1..0000000000 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 bcbd16d1db..0000000000 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 13ea34e59e..0000000000 --- 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 6e43adb27b..6a57360a71 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 d543b4cce9..0000000000 --- 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 f268ea9904..6a21ca3542 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 5e3b404621..f4ad5b8544 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 3fb1747902..0000000000 --- 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 869aef9e1f..0000000000 --- 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 106b975cf4..bb6aa701e8 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 6e4e7ee183..114ed3a008 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 86ac1fe4a6..708b52ccb9 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 ec43e37f98..0785945d3c 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 8285e69c42..2929e300bf 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 8c1ca34a52..599517ceb1 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 163b2d6dd7..2970d4d3b3 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 cf637918af..81f50d94d5 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 2d9b7d3190..12a1760690 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 1283395eac..c82b5a6781 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 dc9c6bcee9..a143b8c590 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 204a47612e..aff9a0f58d 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 2bfcff098b..0000000000 --- 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 520c34b3dd..9e7c59c970 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 5d2b4467f9..64061d45a9 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 b16d008cb3..a7439e2a06 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 95145b854d..0000000000 --- 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 0419014633..df9f920ba5 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 69ac6a51e0..c851953d21 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 0b4b30f81c..0000000000 --- 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 c58f3aae98..21d1e5ef10 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 72e9d0ab76..2a9c2d644c 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 33f2baf094..cd2910c388 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 38e6ba209a..6d689c918d 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 2f04105ff0..bfa6c0dd9e 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 93fbf373f5..4c8c4fe605 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 c7db2e3be6..4efccc288e 100644 Binary files a/graphics/picture_frame/tough.png and b/graphics/picture_frame/tough.png differ diff --git a/graphics/pokemon_storage/box_bg1.pal b/graphics/pokemon_storage/box_bg1.pal deleted file mode 100644 index 52ac12110c..0000000000 --- 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 f7ab30276e..d0b90c5780 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 a0140dc87b..27b4dc10a8 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 743e524414..734101a55e 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 204c075048..0a1ca913b0 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 0000000000..a827cfd457 --- /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 8be861a267..228e9ce6f7 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 4b1a354ce6..0000000000 --- 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 a253f47ccd..be49741039 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 56a9d31d02..0000000000 --- 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 08aa5989d6..035ec7fdfa 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 86bfbbbc0a..0000000000 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 838fa5f4c7..0000000000 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 0000000000..175b30f9d1 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 badbfe53b3..0000000000 --- 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 2f9f8db855..915742f1a7 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 eab8272464..0000000000 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 2fea60d09b..0000000000 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 4e1d56b549..0000000000 --- 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 0000000000..5d2b11467f 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 ebd175e974..4e1d56b549 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 0000000000..ebd175e974 --- /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 0000000000..c12c7c2b4b 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 a8b945eb98..56ceb4f4d9 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 1bad6fe534..9a745b4f61 100644 --- a/include/battle.h +++ b/include/battle.h @@ -686,11 +686,11 @@ struct BattleStruct gBattleMons[battlerId].type2 = type; \ gBattleMons[battlerId].type3 = TYPE_MYSTERY; \ } -#define RESTORE_BATTLER_TYPE(battlerId) \ -{ \ - gBattleMons[battlerId].type1 = gSpeciesInfo[gBattleMons[battlerId].species].type1; \ - gBattleMons[battlerId].type2 = gSpeciesInfo[gBattleMons[battlerId].species].type2; \ - 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; \ } diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 0e8aaea83c..4316191a2e 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/easy_chat.h b/include/constants/easy_chat.h index f98cedbb71..b5875b8814 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/maps.h b/include/constants/maps.h index 626054b43f..1bf11fa5cc 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 86f35ce50d..1f6d4e87cb 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/mystery_gift.h b/include/constants/mystery_gift.h index 8ff71c3aa1..13eb7f1033 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 be32c74982..e0b08f4475 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 6d96e9a9e7..82caf56e68 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/global.h b/include/global.h index 22dc82ecb3..8e307e8677 100644 --- a/include/global.h +++ b/include/global.h @@ -864,9 +864,9 @@ struct TrainerHillSave struct WonderNewsMetadata { u8 newsType:2; - u8 sentCounter:3; - u8 getCounter:3; - u8 rand; + u8 sentRewardCounter:3; + u8 rewardCounter:3; + u8 berry; //u8 padding[2]; }; diff --git a/include/graphics.h b/include/graphics.h index df3f16e8f9..e5a47ca88d 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -10315,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 7fa5e3fae6..f27cddc620 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/palette.h b/include/palette.h index 736fde96bb..29723ef6c8 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 d04d44bbb0..e15faa3c36 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -302,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; @@ -318,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 diff --git a/include/starter_choose.h b/include/starter_choose.h index 7a4f6e967b..1bee42a2e8 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/wonder_news.h b/include/wonder_news.h index 68fd59e4ce..f499709dfe 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/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index e7657cc4e0..5bcd17716e 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 ef97ab9a1c..9da8dd5ad9 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -2433,8 +2433,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 f949065f28..fe95c5bb56 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -749,8 +749,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 +784,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 +1251,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 75e4107e9a..2400c22aaf 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 ea36b2eac9..761a1886c4 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 489c5c747d..8aaab10a5c 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 552fcf5170..c7dca55f10 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -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 bc411f6e52..9a68f929bb 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 f21654e3e8..bf2c6a42b7 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 e3b4e59d1e..3712fb7271 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 aa8e4e2ac1..5f52d6cd67 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 dfe2666a6f..c512b67df9 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_rock.c b/src/battle_anim_rock.c index b1ccc9a582..2257f9c04a 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 fb2f979565..6b194cbcd3 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -316,7 +316,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]++; diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index e3e8f9ac1a..a3197d4477 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 096912c3b6..c569d54e86 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 48d1dc6d6a..a82398ce21 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 7fb8b6e599..de34b423f6 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 c2c17d9fab..e56884b55d 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_partner.c b/src/battle_controller_link_partner.c index d90acd11e8..1ef5d63555 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -1553,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 b6044491b0..0a9626a13c 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1165,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 aab5ad04e4..a57bd2995b 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -3196,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 d17aeaa931..88bc4f974d 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -1551,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] @@ -1805,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) { @@ -1815,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_player.c b/src/battle_controller_recorded_player.c index f2e1fc2950..82d0a43344 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -1671,7 +1671,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 da4b8754ef..ae20c54ecf 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -1439,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_dome.c b/src/battle_dome.c index 7005890d83..d9acbef2b7 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); @@ -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 77f5013877..667b6c606a 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 6f9a2efb3a..15f74831c6 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 0c26fdfda8..afc297745f 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -586,7 +586,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 +594,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 +642,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) @@ -901,15 +901,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 +918,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 +970,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 e8bc316088..b45f7d4097 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2249,11 +2249,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) { diff --git a/src/battle_main.c b/src/battle_main.c index cc7c756950..3393c8d9b0 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -2137,7 +2137,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(); @@ -3257,8 +3257,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); @@ -3360,8 +3360,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; diff --git a/src/battle_pike.c b/src/battle_pike.c index dd30289239..61e2892437 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -848,24 +848,24 @@ static bool8 DoesTypePreventStatus(u16 species, u32 status) switch (status) { case STATUS1_TOXIC_POISON: - if (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 4f72a7463f..d580cf6800 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 6cab28d21b..4463a9ebfc 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 3250c3b190..7cc2eaed60 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6062,8 +6062,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); @@ -7642,7 +7642,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); @@ -8101,8 +8101,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) diff --git a/src/battle_transition.c b/src/battle_transition.c index 3675421ee1..4066f72e58 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 088865dbab..2527211296 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_util.c b/src/battle_util.c index 11f733e134..54982dab80 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9889,9 +9889,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); diff --git a/src/berry_blender.c b/src/berry_blender.c index 52daa1721f..f4c3c16774 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 cea63751cb..c0a72713a2 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 96f14d6e4e..7066f9d95c 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 d359a0fc1b..862a466e04 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 dd1da31762..4eb4c30804 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 ed5461d918..39f9e1a0fc 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 b9ec9add6d..6771f47d6e 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 f891946d67..40bad724e7 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 1adb0d28bd..07bced4142 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 a857e05806..e88773c2e4 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/easy_chat/easy_chat_group_actions.h b/src/data/easy_chat/easy_chat_group_actions.h index 06a8e73030..6ad297efcf 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 1c74741180..619dff6213 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 0f97f50c93..2a2420b2f1 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 a8d8ee8740..d0636f1628 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 afaea48cb1..ffa5108a91 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 8d9cf7e24c..0fbbcc4a78 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 2dda718081..55fe9d00c5 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 4df08bf7dc..fb95f7939d 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 fcd73d0174..dd507e21b9 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 9ed60025d2..5819d0f2e4 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 fbc9a70698..aa8f84406d 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 17d2d53393..2ddd3c9d9c 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 013b454c0b..a0874a33a5 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 d4958c3ad7..af2292b446 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 691dde70c0..061abffd49 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 a4e1ddfd6b..87966c9771 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 46ce1201ae..938073f7f8 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 6dad874ec3..3ebbafd252 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 a89f228fe8..32d98e8066 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/pokemon/species_info.h b/src/data/pokemon/species_info.h index 95ccf90aa3..ee2230b94a 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/daycare.c b/src/daycare.c index aeeded43d3..2a96ca7a91 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1115,8 +1115,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 8ec80415b5..6d95cfbdc3 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 a30d715546..4f62644924 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 268b930ae8..e23c04c1ad 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 054c65c0fb..afbfebe54b 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -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 b7ae2e2ceb..725ea52dd1 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -532,7 +532,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 +556,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 +678,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 b6bf7133a0..ea5cface42 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 a4039253c6..07fcea6583 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 39cf8e4c23..a3639d4c74 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 4b651b2a30..d62b2f5955 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 43055174fa..4c94172d57 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 57f8cc52e4..616444116c 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 b73a418212..22c5caaec0 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; @@ -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 891dbb1d1b..92863dee5f 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 fa82a983ff..89d6b602c2 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 abdca2a88a..87d0117410 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 d25cb34cff..61bd1d4091 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/graphics.c b/src/graphics.c index c0ca2ff3a6..c8040a827d 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_caught_indicator.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/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 42e17e93db..2be4132f5b 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 de08556e3e..fd9c124670 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 cf193018a4..7593a296e8 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 2746fcf927..4c66b09239 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: @@ -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/link.c b/src/link.c index 06907005fe..de857af339 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/list_menu.c b/src/list_menu.c index c240564c65..546ec6f6cd 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 e20a53cba7..575be70617 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_menu.c b/src/main_menu.c index 39554d188c..9d510c0272 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 866072a2c3..07e4f98708 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 4f6a7b9821..a9d18b3477 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 4afda8cc89..ca61f8b876 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 a5c52a474e..6c153772f7 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 e35a5b29ac..924428aea4 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/move_relearner.c b/src/move_relearner.c index 3c8b06a785..9b4498a3a6 100644 --- a/src/move_relearner.c +++ b/src/move_relearner.c @@ -405,7 +405,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 +430,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 0af051ab77..92b07d45b7 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 c4e63bfbb8..ee601059f8 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 f5d2b0401d..3ac48822cd 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 fcd7f568d0..0bad35eb0f 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 43605564e0..4ac0489bb2 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 c283827554..14a75166fa 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/option_menu.c b/src/option_menu.c index 3ca9857e84..67169b1f9b 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 e00ae14a46..7be838d624 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 481f84c4a3..3f0b3b5c5f 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 46355e1464..9a7ce414d6 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 ef71d31294..2388626ff4 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 406d1377d6..ed53ebf1ec 100644 --- a/src/pokedex_cry_screen.c +++ b/src/pokedex_cry_screen.c @@ -258,7 +258,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 +458,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 9cc2c7407a..15f9b15a09 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; diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 8901a666e4..c7518ba23e 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" @@ -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 b0027f6385..0758ea37d3 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -2870,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 ccd3125e4c..f7438f1395 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 1146d0789b..de6a40c3ef 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -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[] = { @@ -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 1e1727f5ea..2d42002adb 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1417,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: @@ -1442,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; @@ -3903,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 @@ -4098,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 5631f5bb2a..e382cbf699 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 f1d4421111..db24220309 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 c51ab10bae..bfc5ba0cb4 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 fd5b36fae0..626e584b70 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 291c10ce9e..0c664a0d07 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 036ea5ff10..50f01345c8 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 cf5f99104e..075bcc7ce2 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 3bc7cb236c..f9432c8349 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 83298b03df..c984dfec8a 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/region_map.c b/src/region_map.c index 67f1643d6c..d55afb9618 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/roulette.c b/src/roulette.c index 52efc8779f..283cceebfe 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 877482728f..f7f0162ff4 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 745e0d8822..7b51df9f92 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 ef0f07b389..8fea1e1178 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 8a67acae36..2fc0e2c035 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 3e5025f8f8..ea8123ef9a 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 cbe0c7ee61..3d5291e887 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/text_window.c b/src/text_window.c index 798b791ced..df06837299 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 fd3982ea1f..12701fb5f0 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 689c96863d..bb73df5bc5 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 03a05681ee..b1aa60e10b 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 04b8f686ab..4da1d938a8 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 ac73c3fae8..f6ee9e8182 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 dcc6647182..7707e59cc1 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 41534a55d8..9496e119b4 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 2a170e3042..c622ee04a6 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 ed8a52ef58..4d5f7d8278 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 eb902fbe68..af4ec2721f 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 2f16f220aa..be6fc89349 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 5e0fae3a13..571748d114 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 2c9730cd5e..d228b87a14 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 d18df8bc7c..14ee1cf993 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 e083575d95..ae71946d64 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,129 @@ 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; + itemId = data->berry + 132; + 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/tools/gbagfx/convert_png.c b/tools/gbagfx/convert_png.c index 4f1b39e6dd..a5fefbd8b6 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)