Merge pull request #3 from cawtds/feature/updated-pokemon-structs

Feature/updated pokemon structs
This commit is contained in:
cawtds 2024-05-02 15:40:49 +02:00 committed by GitHub
commit 0a81036b62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
105 changed files with 53555 additions and 41328 deletions

View File

@ -325,13 +325,13 @@
.macro if_effect byte:req, ptr:req
.byte 0x37
.byte \byte
.2byte \byte
.4byte \ptr
.endm
.macro if_not_effect byte:req, ptr:req
.byte 0x38
.byte \byte
.2byte \byte
.4byte \ptr
.endm
@ -396,14 +396,14 @@
.macro if_has_move_with_effect battler:req, effect:req, ptr:req
.byte 0x41
.byte \battler
.byte \effect
.2byte \effect
.4byte \ptr
.endm
.macro if_doesnt_have_move_with_effect battler:req, effect:req, ptr:req
.byte 0x42
.byte \battler
.byte \effect
.2byte \effect
.4byte \ptr
.endm

File diff suppressed because it is too large Load Diff

View File

@ -406,6 +406,8 @@ B_DEF_PREFIX3 = FD 2D
B_TRAINER2_LOSE_TEXT = FD 2E
B_TRAINER2_WIN_TEXT = FD 2F
B_BUFF3 = FD 30
B_ATK_TEAM2 = FD 38
B_DEF_TEAM2 = FD 3B
@ indicates the end of a town/city name (before " TOWN" or " CITY")
NAME_END = FC 00

View File

@ -1 +1,2 @@
gRngValue
gRng2Value

View File

@ -1811,69 +1811,69 @@ AI_CV_Encore_End::
end
AI_CV_Encore_EncouragedMovesToEncore::
.byte EFFECT_DREAM_EATER
.byte EFFECT_ATTACK_UP
.byte EFFECT_DEFENSE_UP
.byte EFFECT_SPEED_UP
.byte EFFECT_SPECIAL_ATTACK_UP
.byte EFFECT_HAZE
.byte EFFECT_ROAR
.byte EFFECT_CONVERSION
.byte EFFECT_TOXIC
.byte EFFECT_LIGHT_SCREEN
.byte EFFECT_REST
.byte EFFECT_SUPER_FANG
.byte EFFECT_SPECIAL_DEFENSE_UP_2
.byte EFFECT_CONFUSE
.byte EFFECT_POISON
.byte EFFECT_PARALYZE
.byte EFFECT_LEECH_SEED
.byte EFFECT_SPLASH
.byte EFFECT_ATTACK_UP_2
.byte EFFECT_ENCORE
.byte EFFECT_CONVERSION_2
.byte EFFECT_LOCK_ON
.byte EFFECT_HEAL_BELL
.byte EFFECT_MEAN_LOOK
.byte EFFECT_NIGHTMARE
.byte EFFECT_PROTECT
.byte EFFECT_SKILL_SWAP
.byte EFFECT_FORESIGHT
.byte EFFECT_PERISH_SONG
.byte EFFECT_SANDSTORM
.byte EFFECT_ENDURE
.byte EFFECT_SWAGGER
.byte EFFECT_ATTRACT
.byte EFFECT_SAFEGUARD
.byte EFFECT_RAIN_DANCE
.byte EFFECT_SUNNY_DAY
.byte EFFECT_BELLY_DRUM
.byte EFFECT_PSYCH_UP
.byte EFFECT_FUTURE_SIGHT
.byte EFFECT_FAKE_OUT
.byte EFFECT_STOCKPILE
.byte EFFECT_SPIT_UP
.byte EFFECT_SWALLOW
.byte EFFECT_HAIL
.byte EFFECT_TORMENT
.byte EFFECT_WILL_O_WISP
.byte EFFECT_FOLLOW_ME
.byte EFFECT_CHARGE
.byte EFFECT_TRICK
.byte EFFECT_ROLE_PLAY
.byte EFFECT_INGRAIN
.byte EFFECT_RECYCLE
.byte EFFECT_KNOCK_OFF
.byte EFFECT_SKILL_SWAP
.byte EFFECT_IMPRISON
.byte EFFECT_REFRESH
.byte EFFECT_GRUDGE
.byte EFFECT_TEETER_DANCE
.byte EFFECT_MUD_SPORT
.byte EFFECT_WATER_SPORT
.byte EFFECT_DRAGON_DANCE
.byte EFFECT_CAMOUFLAGE
.byte -1
.2byte EFFECT_DREAM_EATER
.2byte EFFECT_ATTACK_UP
.2byte EFFECT_DEFENSE_UP
.2byte EFFECT_SPEED_UP
.2byte EFFECT_SPECIAL_ATTACK_UP
.2byte EFFECT_HAZE
.2byte EFFECT_ROAR
.2byte EFFECT_CONVERSION
.2byte EFFECT_TOXIC
.2byte EFFECT_LIGHT_SCREEN
.2byte EFFECT_REST
.2byte EFFECT_SUPER_FANG
.2byte EFFECT_SPECIAL_DEFENSE_UP_2
.2byte EFFECT_CONFUSE
.2byte EFFECT_POISON
.2byte EFFECT_PARALYZE
.2byte EFFECT_LEECH_SEED
.2byte EFFECT_SPLASH
.2byte EFFECT_ATTACK_UP_2
.2byte EFFECT_ENCORE
.2byte EFFECT_CONVERSION_2
.2byte EFFECT_LOCK_ON
.2byte EFFECT_HEAL_BELL
.2byte EFFECT_MEAN_LOOK
.2byte EFFECT_NIGHTMARE
.2byte EFFECT_PROTECT
.2byte EFFECT_SKILL_SWAP
.2byte EFFECT_FORESIGHT
.2byte EFFECT_PERISH_SONG
.2byte EFFECT_SANDSTORM
.2byte EFFECT_ENDURE
.2byte EFFECT_SWAGGER
.2byte EFFECT_ATTRACT
.2byte EFFECT_SAFEGUARD
.2byte EFFECT_RAIN_DANCE
.2byte EFFECT_SUNNY_DAY
.2byte EFFECT_BELLY_DRUM
.2byte EFFECT_PSYCH_UP
.2byte EFFECT_FUTURE_SIGHT
.2byte EFFECT_FAKE_OUT
.2byte EFFECT_STOCKPILE
.2byte EFFECT_SPIT_UP
.2byte EFFECT_SWALLOW
.2byte EFFECT_HAIL
.2byte EFFECT_TORMENT
.2byte EFFECT_WILL_O_WISP
.2byte EFFECT_FOLLOW_ME
.2byte EFFECT_CHARGE
.2byte EFFECT_TRICK
.2byte EFFECT_ROLE_PLAY
.2byte EFFECT_INGRAIN
.2byte EFFECT_RECYCLE
.2byte EFFECT_KNOCK_OFF
.2byte EFFECT_SKILL_SWAP
.2byte EFFECT_IMPRISON
.2byte EFFECT_REFRESH
.2byte EFFECT_GRUDGE
.2byte EFFECT_TEETER_DANCE
.2byte EFFECT_MUD_SPORT
.2byte EFFECT_WATER_SPORT
.2byte EFFECT_DRAGON_DANCE
.2byte EFFECT_CAMOUFLAGE
.2byte -1
AI_CV_PainSplit::
if_hp_less_than AI_TARGET, 80, AI_CV_PainSplit_ScoreDown1
@ -2504,23 +2504,23 @@ AI_CV_ChangeSelfAbility_End::
end
AI_CV_ChangeSelfAbility_AbilitiesToEncourage::
.byte ABILITY_SPEED_BOOST
.byte ABILITY_BATTLE_ARMOR
.byte ABILITY_SAND_VEIL
.byte ABILITY_STATIC
.byte ABILITY_FLASH_FIRE
.byte ABILITY_WONDER_GUARD
.byte ABILITY_EFFECT_SPORE
.byte ABILITY_SWIFT_SWIM
.byte ABILITY_HUGE_POWER
.byte ABILITY_RAIN_DISH
.byte ABILITY_CUTE_CHARM
.byte ABILITY_SHED_SKIN
.byte ABILITY_MARVEL_SCALE
.byte ABILITY_PURE_POWER
.byte ABILITY_CHLOROPHYLL
.byte ABILITY_SHIELD_DUST
.byte -1
.2byte ABILITY_SPEED_BOOST
.2byte ABILITY_BATTLE_ARMOR
.2byte ABILITY_SAND_VEIL
.2byte ABILITY_STATIC
.2byte ABILITY_FLASH_FIRE
.2byte ABILITY_WONDER_GUARD
.2byte ABILITY_EFFECT_SPORE
.2byte ABILITY_SWIFT_SWIM
.2byte ABILITY_HUGE_POWER
.2byte ABILITY_RAIN_DISH
.2byte ABILITY_CUTE_CHARM
.2byte ABILITY_SHED_SKIN
.2byte ABILITY_MARVEL_SCALE
.2byte ABILITY_PURE_POWER
.2byte ABILITY_CHLOROPHYLL
.2byte ABILITY_SHIELD_DUST
.2byte -1
AI_CV_Superpower::
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Superpower_ScoreDown1
@ -2579,7 +2579,7 @@ AI_CV_Recycle_ItemsToEncourage::
.2byte ITEM_CHESTO_BERRY
.2byte ITEM_LUM_BERRY
.2byte ITEM_STARF_BERRY
.byte -1
.2byte -1
AI_CV_Revenge::
if_status AI_TARGET, STATUS1_SLEEP, AI_CV_Revenge_ScoreDown2
@ -2803,62 +2803,62 @@ AI_SetupFirstTurn_End::
end
AI_SetupFirstTurn_SetupEffectsToEncourage::
.byte EFFECT_ATTACK_UP
.byte EFFECT_DEFENSE_UP
.byte EFFECT_SPEED_UP
.byte EFFECT_SPECIAL_ATTACK_UP
.byte EFFECT_SPECIAL_DEFENSE_UP
.byte EFFECT_ACCURACY_UP
.byte EFFECT_EVASION_UP
.byte EFFECT_ATTACK_DOWN
.byte EFFECT_DEFENSE_DOWN
.byte EFFECT_SPEED_DOWN
.byte EFFECT_SPECIAL_ATTACK_DOWN
.byte EFFECT_SPECIAL_DEFENSE_DOWN
.byte EFFECT_ACCURACY_DOWN
.byte EFFECT_EVASION_DOWN
.byte EFFECT_CONVERSION
.byte EFFECT_LIGHT_SCREEN
.byte EFFECT_SPECIAL_DEFENSE_UP_2
.byte EFFECT_FOCUS_ENERGY
.byte EFFECT_CONFUSE
.byte EFFECT_ATTACK_UP_2
.byte EFFECT_DEFENSE_UP_2
.byte EFFECT_SPEED_UP_2
.byte EFFECT_SPECIAL_ATTACK_UP_2
.byte EFFECT_SPECIAL_DEFENSE_UP_2
.byte EFFECT_ACCURACY_UP_2
.byte EFFECT_EVASION_UP_2
.byte EFFECT_ATTACK_DOWN_2
.byte EFFECT_DEFENSE_DOWN_2
.byte EFFECT_SPEED_DOWN_2
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.byte EFFECT_ACCURACY_DOWN_2
.byte EFFECT_EVASION_DOWN_2
.byte EFFECT_REFLECT
.byte EFFECT_POISON
.byte EFFECT_PARALYZE
.byte EFFECT_SUBSTITUTE
.byte EFFECT_LEECH_SEED
.byte EFFECT_MINIMIZE
.byte EFFECT_CURSE
.byte EFFECT_SWAGGER
.byte EFFECT_CAMOUFLAGE
.byte EFFECT_YAWN
.byte EFFECT_DEFENSE_CURL
.byte EFFECT_TORMENT
.byte EFFECT_FLATTER
.byte EFFECT_WILL_O_WISP
.byte EFFECT_INGRAIN
.byte EFFECT_IMPRISON
.byte EFFECT_TEETER_DANCE
.byte EFFECT_TICKLE
.byte EFFECT_COSMIC_POWER
.byte EFFECT_BULK_UP
.byte EFFECT_CALM_MIND
.byte EFFECT_CAMOUFLAGE
.byte -1
.2byte EFFECT_ATTACK_UP
.2byte EFFECT_DEFENSE_UP
.2byte EFFECT_SPEED_UP
.2byte EFFECT_SPECIAL_ATTACK_UP
.2byte EFFECT_SPECIAL_DEFENSE_UP
.2byte EFFECT_ACCURACY_UP
.2byte EFFECT_EVASION_UP
.2byte EFFECT_ATTACK_DOWN
.2byte EFFECT_DEFENSE_DOWN
.2byte EFFECT_SPEED_DOWN
.2byte EFFECT_SPECIAL_ATTACK_DOWN
.2byte EFFECT_SPECIAL_DEFENSE_DOWN
.2byte EFFECT_ACCURACY_DOWN
.2byte EFFECT_EVASION_DOWN
.2byte EFFECT_CONVERSION
.2byte EFFECT_LIGHT_SCREEN
.2byte EFFECT_SPECIAL_DEFENSE_UP_2
.2byte EFFECT_FOCUS_ENERGY
.2byte EFFECT_CONFUSE
.2byte EFFECT_ATTACK_UP_2
.2byte EFFECT_DEFENSE_UP_2
.2byte EFFECT_SPEED_UP_2
.2byte EFFECT_SPECIAL_ATTACK_UP_2
.2byte EFFECT_SPECIAL_DEFENSE_UP_2
.2byte EFFECT_ACCURACY_UP_2
.2byte EFFECT_EVASION_UP_2
.2byte EFFECT_ATTACK_DOWN_2
.2byte EFFECT_DEFENSE_DOWN_2
.2byte EFFECT_SPEED_DOWN_2
.2byte EFFECT_SPECIAL_ATTACK_DOWN_2
.2byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.2byte EFFECT_ACCURACY_DOWN_2
.2byte EFFECT_EVASION_DOWN_2
.2byte EFFECT_REFLECT
.2byte EFFECT_POISON
.2byte EFFECT_PARALYZE
.2byte EFFECT_SUBSTITUTE
.2byte EFFECT_LEECH_SEED
.2byte EFFECT_MINIMIZE
.2byte EFFECT_CURSE
.2byte EFFECT_SWAGGER
.2byte EFFECT_CAMOUFLAGE
.2byte EFFECT_YAWN
.2byte EFFECT_DEFENSE_CURL
.2byte EFFECT_TORMENT
.2byte EFFECT_FLATTER
.2byte EFFECT_WILL_O_WISP
.2byte EFFECT_INGRAIN
.2byte EFFECT_IMPRISON
.2byte EFFECT_TEETER_DANCE
.2byte EFFECT_TICKLE
.2byte EFFECT_COSMIC_POWER
.2byte EFFECT_BULK_UP
.2byte EFFECT_CALM_MIND
.2byte EFFECT_CAMOUFLAGE
.2byte -1
AI_PreferStrongestMove::
get_how_powerful_move_is
@ -2879,26 +2879,26 @@ AI_Risky_End::
end
AI_Risky_EffectsToEncourage::
.byte EFFECT_SLEEP
.byte EFFECT_EXPLOSION
.byte EFFECT_MIRROR_MOVE
.byte EFFECT_OHKO
.byte EFFECT_HIGH_CRITICAL
.byte EFFECT_CONFUSE
.byte EFFECT_METRONOME
.byte EFFECT_PSYWAVE
.byte EFFECT_COUNTER
.byte EFFECT_DESTINY_BOND
.byte EFFECT_SWAGGER
.byte EFFECT_ATTRACT
.byte EFFECT_PRESENT
.byte EFFECT_ALL_STATS_UP_HIT
.byte EFFECT_BELLY_DRUM
.byte EFFECT_MIRROR_COAT
.byte EFFECT_FOCUS_PUNCH
.byte EFFECT_REVENGE
.byte EFFECT_TEETER_DANCE
.byte -1
.2byte EFFECT_SLEEP
.2byte EFFECT_EXPLOSION
.2byte EFFECT_MIRROR_MOVE
.2byte EFFECT_OHKO
.2byte EFFECT_HIGH_CRITICAL
.2byte EFFECT_CONFUSE
.2byte EFFECT_METRONOME
.2byte EFFECT_PSYWAVE
.2byte EFFECT_COUNTER
.2byte EFFECT_DESTINY_BOND
.2byte EFFECT_SWAGGER
.2byte EFFECT_ATTRACT
.2byte EFFECT_PRESENT
.2byte EFFECT_ALL_STATS_UP_HIT
.2byte EFFECT_BELLY_DRUM
.2byte EFFECT_MIRROR_COAT
.2byte EFFECT_FOCUS_PUNCH
.2byte EFFECT_REVENGE
.2byte EFFECT_TEETER_DANCE
.2byte -1
AI_PreferBatonPass::
count_alive_pokemon AI_USER
@ -2999,222 +2999,222 @@ AI_HPAware_End::
end
AI_HPAware_DiscouragedEffectsWhenHighHP::
.byte EFFECT_EXPLOSION
.byte EFFECT_RESTORE_HP
.byte EFFECT_REST
.byte EFFECT_DESTINY_BOND
.byte EFFECT_FLAIL
.byte EFFECT_ENDURE
.byte EFFECT_MORNING_SUN
.byte EFFECT_SYNTHESIS
.byte EFFECT_MOONLIGHT
.byte EFFECT_SOFTBOILED
.byte EFFECT_MEMENTO
.byte EFFECT_GRUDGE
.byte EFFECT_OVERHEAT
.byte -1
.2byte EFFECT_EXPLOSION
.2byte EFFECT_RESTORE_HP
.2byte EFFECT_REST
.2byte EFFECT_DESTINY_BOND
.2byte EFFECT_FLAIL
.2byte EFFECT_ENDURE
.2byte EFFECT_MORNING_SUN
.2byte EFFECT_SYNTHESIS
.2byte EFFECT_MOONLIGHT
.2byte EFFECT_SOFTBOILED
.2byte EFFECT_MEMENTO
.2byte EFFECT_GRUDGE
.2byte EFFECT_OVERHEAT
.2byte -1
AI_HPAware_DiscouragedEffectsWhenMediumHP::
.byte EFFECT_EXPLOSION
.byte EFFECT_ATTACK_UP
.byte EFFECT_DEFENSE_UP
.byte EFFECT_SPEED_UP
.byte EFFECT_SPECIAL_ATTACK_UP
.byte EFFECT_SPECIAL_DEFENSE_UP
.byte EFFECT_ACCURACY_UP
.byte EFFECT_EVASION_UP
.byte EFFECT_ATTACK_DOWN
.byte EFFECT_DEFENSE_DOWN
.byte EFFECT_SPEED_DOWN
.byte EFFECT_SPECIAL_ATTACK_DOWN
.byte EFFECT_SPECIAL_DEFENSE_DOWN
.byte EFFECT_ACCURACY_DOWN
.byte EFFECT_EVASION_DOWN
.byte EFFECT_BIDE
.byte EFFECT_CONVERSION
.byte EFFECT_LIGHT_SCREEN
.byte EFFECT_MIST
.byte EFFECT_FOCUS_ENERGY
.byte EFFECT_ATTACK_UP_2
.byte EFFECT_DEFENSE_UP_2
.byte EFFECT_SPEED_UP_2
.byte EFFECT_SPECIAL_ATTACK_UP_2
.byte EFFECT_SPECIAL_DEFENSE_UP_2
.byte EFFECT_ACCURACY_UP_2
.byte EFFECT_EVASION_UP_2
.byte EFFECT_ATTACK_DOWN_2
.byte EFFECT_DEFENSE_DOWN_2
.byte EFFECT_SPEED_DOWN_2
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.byte EFFECT_ACCURACY_DOWN_2
.byte EFFECT_EVASION_DOWN_2
.byte EFFECT_CONVERSION_2
.byte EFFECT_SAFEGUARD
.byte EFFECT_BELLY_DRUM
.byte EFFECT_TICKLE
.byte EFFECT_COSMIC_POWER
.byte EFFECT_BULK_UP
.byte EFFECT_CALM_MIND
.byte EFFECT_DRAGON_DANCE
.byte -1
.2byte EFFECT_EXPLOSION
.2byte EFFECT_ATTACK_UP
.2byte EFFECT_DEFENSE_UP
.2byte EFFECT_SPEED_UP
.2byte EFFECT_SPECIAL_ATTACK_UP
.2byte EFFECT_SPECIAL_DEFENSE_UP
.2byte EFFECT_ACCURACY_UP
.2byte EFFECT_EVASION_UP
.2byte EFFECT_ATTACK_DOWN
.2byte EFFECT_DEFENSE_DOWN
.2byte EFFECT_SPEED_DOWN
.2byte EFFECT_SPECIAL_ATTACK_DOWN
.2byte EFFECT_SPECIAL_DEFENSE_DOWN
.2byte EFFECT_ACCURACY_DOWN
.2byte EFFECT_EVASION_DOWN
.2byte EFFECT_BIDE
.2byte EFFECT_CONVERSION
.2byte EFFECT_LIGHT_SCREEN
.2byte EFFECT_MIST
.2byte EFFECT_FOCUS_ENERGY
.2byte EFFECT_ATTACK_UP_2
.2byte EFFECT_DEFENSE_UP_2
.2byte EFFECT_SPEED_UP_2
.2byte EFFECT_SPECIAL_ATTACK_UP_2
.2byte EFFECT_SPECIAL_DEFENSE_UP_2
.2byte EFFECT_ACCURACY_UP_2
.2byte EFFECT_EVASION_UP_2
.2byte EFFECT_ATTACK_DOWN_2
.2byte EFFECT_DEFENSE_DOWN_2
.2byte EFFECT_SPEED_DOWN_2
.2byte EFFECT_SPECIAL_ATTACK_DOWN_2
.2byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.2byte EFFECT_ACCURACY_DOWN_2
.2byte EFFECT_EVASION_DOWN_2
.2byte EFFECT_CONVERSION_2
.2byte EFFECT_SAFEGUARD
.2byte EFFECT_BELLY_DRUM
.2byte EFFECT_TICKLE
.2byte EFFECT_COSMIC_POWER
.2byte EFFECT_BULK_UP
.2byte EFFECT_CALM_MIND
.2byte EFFECT_DRAGON_DANCE
.2byte -1
AI_HPAware_DiscouragedEffectsWhenLowHP::
.byte EFFECT_ATTACK_UP
.byte EFFECT_DEFENSE_UP
.byte EFFECT_SPEED_UP
.byte EFFECT_SPECIAL_ATTACK_UP
.byte EFFECT_SPECIAL_DEFENSE_UP
.byte EFFECT_ACCURACY_UP
.byte EFFECT_EVASION_UP
.byte EFFECT_ATTACK_DOWN
.byte EFFECT_DEFENSE_DOWN
.byte EFFECT_SPEED_DOWN
.byte EFFECT_SPECIAL_ATTACK_DOWN
.byte EFFECT_SPECIAL_DEFENSE_DOWN
.byte EFFECT_ACCURACY_DOWN
.byte EFFECT_EVASION_DOWN
.byte EFFECT_BIDE
.byte EFFECT_CONVERSION
.byte EFFECT_LIGHT_SCREEN
.byte EFFECT_MIST
.byte EFFECT_FOCUS_ENERGY
.byte EFFECT_ATTACK_UP_2
.byte EFFECT_DEFENSE_UP_2
.byte EFFECT_SPEED_UP_2
.byte EFFECT_SPECIAL_ATTACK_UP_2
.byte EFFECT_SPECIAL_DEFENSE_UP_2
.byte EFFECT_ACCURACY_UP_2
.byte EFFECT_EVASION_UP_2
.byte EFFECT_ATTACK_DOWN_2
.byte EFFECT_DEFENSE_DOWN_2
.byte EFFECT_SPEED_DOWN_2
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.byte EFFECT_ACCURACY_DOWN_2
.byte EFFECT_EVASION_DOWN_2
.byte EFFECT_RAGE
.byte EFFECT_CONVERSION_2
.byte EFFECT_LOCK_ON
.byte EFFECT_SAFEGUARD
.byte EFFECT_BELLY_DRUM
.byte EFFECT_PSYCH_UP
.byte EFFECT_MIRROR_COAT
.byte EFFECT_SOLAR_BEAM
.byte EFFECT_ERUPTION
.byte EFFECT_TICKLE
.byte EFFECT_COSMIC_POWER
.byte EFFECT_BULK_UP
.byte EFFECT_CALM_MIND
.byte EFFECT_DRAGON_DANCE
.byte -1
.2byte EFFECT_ATTACK_UP
.2byte EFFECT_DEFENSE_UP
.2byte EFFECT_SPEED_UP
.2byte EFFECT_SPECIAL_ATTACK_UP
.2byte EFFECT_SPECIAL_DEFENSE_UP
.2byte EFFECT_ACCURACY_UP
.2byte EFFECT_EVASION_UP
.2byte EFFECT_ATTACK_DOWN
.2byte EFFECT_DEFENSE_DOWN
.2byte EFFECT_SPEED_DOWN
.2byte EFFECT_SPECIAL_ATTACK_DOWN
.2byte EFFECT_SPECIAL_DEFENSE_DOWN
.2byte EFFECT_ACCURACY_DOWN
.2byte EFFECT_EVASION_DOWN
.2byte EFFECT_BIDE
.2byte EFFECT_CONVERSION
.2byte EFFECT_LIGHT_SCREEN
.2byte EFFECT_MIST
.2byte EFFECT_FOCUS_ENERGY
.2byte EFFECT_ATTACK_UP_2
.2byte EFFECT_DEFENSE_UP_2
.2byte EFFECT_SPEED_UP_2
.2byte EFFECT_SPECIAL_ATTACK_UP_2
.2byte EFFECT_SPECIAL_DEFENSE_UP_2
.2byte EFFECT_ACCURACY_UP_2
.2byte EFFECT_EVASION_UP_2
.2byte EFFECT_ATTACK_DOWN_2
.2byte EFFECT_DEFENSE_DOWN_2
.2byte EFFECT_SPEED_DOWN_2
.2byte EFFECT_SPECIAL_ATTACK_DOWN_2
.2byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.2byte EFFECT_ACCURACY_DOWN_2
.2byte EFFECT_EVASION_DOWN_2
.2byte EFFECT_RAGE
.2byte EFFECT_CONVERSION_2
.2byte EFFECT_LOCK_ON
.2byte EFFECT_SAFEGUARD
.2byte EFFECT_BELLY_DRUM
.2byte EFFECT_PSYCH_UP
.2byte EFFECT_MIRROR_COAT
.2byte EFFECT_SOLAR_BEAM
.2byte EFFECT_ERUPTION
.2byte EFFECT_TICKLE
.2byte EFFECT_COSMIC_POWER
.2byte EFFECT_BULK_UP
.2byte EFFECT_CALM_MIND
.2byte EFFECT_DRAGON_DANCE
.2byte -1
AI_HPAware_DiscouragedEffectsWhenTargetHighHP::
.byte -1
.2byte -1
AI_HPAware_DiscouragedEffectsWhenTargetMediumHP::
.byte EFFECT_ATTACK_UP
.byte EFFECT_DEFENSE_UP
.byte EFFECT_SPEED_UP
.byte EFFECT_SPECIAL_ATTACK_UP
.byte EFFECT_SPECIAL_DEFENSE_UP
.byte EFFECT_ACCURACY_UP
.byte EFFECT_EVASION_UP
.byte EFFECT_ATTACK_DOWN
.byte EFFECT_DEFENSE_DOWN
.byte EFFECT_SPEED_DOWN
.byte EFFECT_SPECIAL_ATTACK_DOWN
.byte EFFECT_SPECIAL_DEFENSE_DOWN
.byte EFFECT_ACCURACY_DOWN
.byte EFFECT_EVASION_DOWN
.byte EFFECT_MIST
.byte EFFECT_FOCUS_ENERGY
.byte EFFECT_ATTACK_UP_2
.byte EFFECT_DEFENSE_UP_2
.byte EFFECT_SPEED_UP_2
.byte EFFECT_SPECIAL_ATTACK_UP_2
.byte EFFECT_SPECIAL_DEFENSE_UP_2
.byte EFFECT_ACCURACY_UP_2
.byte EFFECT_EVASION_UP_2
.byte EFFECT_ATTACK_DOWN_2
.byte EFFECT_DEFENSE_DOWN_2
.byte EFFECT_SPEED_DOWN_2
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.byte EFFECT_ACCURACY_DOWN_2
.byte EFFECT_EVASION_DOWN_2
.byte EFFECT_POISON
.byte EFFECT_PAIN_SPLIT
.byte EFFECT_PERISH_SONG
.byte EFFECT_SAFEGUARD
.byte EFFECT_TICKLE
.byte EFFECT_COSMIC_POWER
.byte EFFECT_BULK_UP
.byte EFFECT_CALM_MIND
.byte EFFECT_DRAGON_DANCE
.byte -1
.2byte EFFECT_ATTACK_UP
.2byte EFFECT_DEFENSE_UP
.2byte EFFECT_SPEED_UP
.2byte EFFECT_SPECIAL_ATTACK_UP
.2byte EFFECT_SPECIAL_DEFENSE_UP
.2byte EFFECT_ACCURACY_UP
.2byte EFFECT_EVASION_UP
.2byte EFFECT_ATTACK_DOWN
.2byte EFFECT_DEFENSE_DOWN
.2byte EFFECT_SPEED_DOWN
.2byte EFFECT_SPECIAL_ATTACK_DOWN
.2byte EFFECT_SPECIAL_DEFENSE_DOWN
.2byte EFFECT_ACCURACY_DOWN
.2byte EFFECT_EVASION_DOWN
.2byte EFFECT_MIST
.2byte EFFECT_FOCUS_ENERGY
.2byte EFFECT_ATTACK_UP_2
.2byte EFFECT_DEFENSE_UP_2
.2byte EFFECT_SPEED_UP_2
.2byte EFFECT_SPECIAL_ATTACK_UP_2
.2byte EFFECT_SPECIAL_DEFENSE_UP_2
.2byte EFFECT_ACCURACY_UP_2
.2byte EFFECT_EVASION_UP_2
.2byte EFFECT_ATTACK_DOWN_2
.2byte EFFECT_DEFENSE_DOWN_2
.2byte EFFECT_SPEED_DOWN_2
.2byte EFFECT_SPECIAL_ATTACK_DOWN_2
.2byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.2byte EFFECT_ACCURACY_DOWN_2
.2byte EFFECT_EVASION_DOWN_2
.2byte EFFECT_POISON
.2byte EFFECT_PAIN_SPLIT
.2byte EFFECT_PERISH_SONG
.2byte EFFECT_SAFEGUARD
.2byte EFFECT_TICKLE
.2byte EFFECT_COSMIC_POWER
.2byte EFFECT_BULK_UP
.2byte EFFECT_CALM_MIND
.2byte EFFECT_DRAGON_DANCE
.2byte -1
AI_HPAware_DiscouragedEffectsWhenTargetLowHP::
.byte EFFECT_SLEEP
.byte EFFECT_EXPLOSION
.byte EFFECT_ATTACK_UP
.byte EFFECT_DEFENSE_UP
.byte EFFECT_SPEED_UP
.byte EFFECT_SPECIAL_ATTACK_UP
.byte EFFECT_SPECIAL_DEFENSE_UP
.byte EFFECT_ACCURACY_UP
.byte EFFECT_EVASION_UP
.byte EFFECT_ATTACK_DOWN
.byte EFFECT_DEFENSE_DOWN
.byte EFFECT_SPEED_DOWN
.byte EFFECT_SPECIAL_ATTACK_DOWN
.byte EFFECT_SPECIAL_DEFENSE_DOWN
.byte EFFECT_ACCURACY_DOWN
.byte EFFECT_EVASION_DOWN
.byte EFFECT_BIDE
.byte EFFECT_CONVERSION
.byte EFFECT_TOXIC
.byte EFFECT_LIGHT_SCREEN
.byte EFFECT_OHKO
.byte EFFECT_SUPER_FANG @ Maybe supposed to be EFFECT_RAZOR_WIND
.byte EFFECT_SUPER_FANG
.byte EFFECT_MIST
.byte EFFECT_FOCUS_ENERGY
.byte EFFECT_CONFUSE
.byte EFFECT_ATTACK_UP_2
.byte EFFECT_DEFENSE_UP_2
.byte EFFECT_SPEED_UP_2
.byte EFFECT_SPECIAL_ATTACK_UP_2
.byte EFFECT_SPECIAL_DEFENSE_UP_2
.byte EFFECT_ACCURACY_UP_2
.byte EFFECT_EVASION_UP_2
.byte EFFECT_ATTACK_DOWN_2
.byte EFFECT_DEFENSE_DOWN_2
.byte EFFECT_SPEED_DOWN_2
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.byte EFFECT_ACCURACY_DOWN_2
.byte EFFECT_EVASION_DOWN_2
.byte EFFECT_POISON
.byte EFFECT_PARALYZE
.byte EFFECT_PAIN_SPLIT
.byte EFFECT_CONVERSION_2
.byte EFFECT_LOCK_ON
.byte EFFECT_SPITE
.byte EFFECT_PERISH_SONG
.byte EFFECT_SWAGGER
.byte EFFECT_FURY_CUTTER
.byte EFFECT_ATTRACT
.byte EFFECT_SAFEGUARD
.byte EFFECT_PSYCH_UP
.byte EFFECT_MIRROR_COAT
.byte EFFECT_WILL_O_WISP
.byte EFFECT_TICKLE
.byte EFFECT_COSMIC_POWER
.byte EFFECT_BULK_UP
.byte EFFECT_CALM_MIND
.byte EFFECT_DRAGON_DANCE
.byte -1
.2byte EFFECT_SLEEP
.2byte EFFECT_EXPLOSION
.2byte EFFECT_ATTACK_UP
.2byte EFFECT_DEFENSE_UP
.2byte EFFECT_SPEED_UP
.2byte EFFECT_SPECIAL_ATTACK_UP
.2byte EFFECT_SPECIAL_DEFENSE_UP
.2byte EFFECT_ACCURACY_UP
.2byte EFFECT_EVASION_UP
.2byte EFFECT_ATTACK_DOWN
.2byte EFFECT_DEFENSE_DOWN
.2byte EFFECT_SPEED_DOWN
.2byte EFFECT_SPECIAL_ATTACK_DOWN
.2byte EFFECT_SPECIAL_DEFENSE_DOWN
.2byte EFFECT_ACCURACY_DOWN
.2byte EFFECT_EVASION_DOWN
.2byte EFFECT_BIDE
.2byte EFFECT_CONVERSION
.2byte EFFECT_TOXIC
.2byte EFFECT_LIGHT_SCREEN
.2byte EFFECT_OHKO
.2byte EFFECT_SUPER_FANG @ Maybe supposed to be EFFECT_RAZOR_WIND
.2byte EFFECT_SUPER_FANG
.2byte EFFECT_MIST
.2byte EFFECT_FOCUS_ENERGY
.2byte EFFECT_CONFUSE
.2byte EFFECT_ATTACK_UP_2
.2byte EFFECT_DEFENSE_UP_2
.2byte EFFECT_SPEED_UP_2
.2byte EFFECT_SPECIAL_ATTACK_UP_2
.2byte EFFECT_SPECIAL_DEFENSE_UP_2
.2byte EFFECT_ACCURACY_UP_2
.2byte EFFECT_EVASION_UP_2
.2byte EFFECT_ATTACK_DOWN_2
.2byte EFFECT_DEFENSE_DOWN_2
.2byte EFFECT_SPEED_DOWN_2
.2byte EFFECT_SPECIAL_ATTACK_DOWN_2
.2byte EFFECT_SPECIAL_DEFENSE_DOWN_2
.2byte EFFECT_ACCURACY_DOWN_2
.2byte EFFECT_EVASION_DOWN_2
.2byte EFFECT_POISON
.2byte EFFECT_PARALYZE
.2byte EFFECT_PAIN_SPLIT
.2byte EFFECT_CONVERSION_2
.2byte EFFECT_LOCK_ON
.2byte EFFECT_SPITE
.2byte EFFECT_PERISH_SONG
.2byte EFFECT_SWAGGER
.2byte EFFECT_FURY_CUTTER
.2byte EFFECT_ATTRACT
.2byte EFFECT_SAFEGUARD
.2byte EFFECT_PSYCH_UP
.2byte EFFECT_MIRROR_COAT
.2byte EFFECT_WILL_O_WISP
.2byte EFFECT_TICKLE
.2byte EFFECT_COSMIC_POWER
.2byte EFFECT_BULK_UP
.2byte EFFECT_CALM_MIND
.2byte EFFECT_DRAGON_DANCE
.2byte -1
AI_Unknown::
if_not_effect EFFECT_SUNNY_DAY, AI_Unknown_End

View File

@ -982,7 +982,7 @@ gBattleAnims_StatusConditions::
.align 2
gBattleAnims_General::
.4byte General_CastformChange @ B_ANIM_CASTFORM_CHANGE
.4byte General_FormChange @ B_ANIM_FORM_CHANGE
.4byte General_StatsChange @ B_ANIM_STATS_CHANGE
.4byte General_SubstituteFade @ B_ANIM_SUBSTITUTE_FADE
.4byte General_SubstituteAppear @ B_ANIM_SUBSTITUTE_APPEAR
@ -991,7 +991,7 @@ gBattleAnims_General::
.4byte General_TurnTrap @ B_ANIM_TURN_TRAP
.4byte General_HeldItemEffect @ B_ANIM_HELD_ITEM_EFFECT
.4byte General_SmokeballEscape @ B_ANIM_SMOKEBALL_ESCAPE
.4byte General_FocusBand @ B_ANIM_FOCUS_BAND
.4byte General_FocusBand @ B_ANIM_HANGED_ON
.4byte General_Rain @ B_ANIM_RAIN_CONTINUES
.4byte General_Sun @ B_ANIM_SUN_CONTINUES
.4byte General_Sandstorm @ B_ANIM_SANDSTORM_CONTINUES
@ -1010,6 +1010,8 @@ gBattleAnims_General::
.4byte General_SilphScoped @ B_ANIM_SILPH_SCOPED
.4byte General_SafariRockThrow @ B_ANIM_ROCK_THROW
.4byte General_SafariReaction @ B_ANIM_SAFARI_REACTION
.4byte General_RestoreBg @ B_ANIM_RESTORE_BG
.4byte General_SlideOffScreen @ B_ANIM_SLIDE_OFFSCREEN
.align 2
gBattleAnims_Special::
@ -11696,16 +11698,9 @@ Status_Nightmare:
clearmonbg ANIM_DEF_PARTNER
end
General_CastformChange:
createvisualtask AnimTask_IsMonInvisible, 2
jumpreteq TRUE, CastformChangeSkipAnim
goto CastformChangeContinue
CastformChangeContinue:
General_FormChange:
monbg ANIM_ATTACKER
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
createvisualtask AnimTask_TransformMon, 2, 1
createvisualtask AnimTask_TransformMon, 2, 1, 0
waitforvisualfinish
clearmonbg ANIM_ATTACKER
end
@ -12278,3 +12273,17 @@ Special_SubstituteToMon:
Special_MonToSubstitute:
createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, FALSE
end
General_RestoreBg:
restorebg
waitbgfadein
end
General_SlideOffScreen:
createvisualtask AnimTask_SlideOffScreen, 5, ANIM_TARGET, 3
waitforvisualfinish
createvisualtask AnimTask_SetInvisible, 1, ANIM_TARGET, TRUE
waitforvisualfinish
end

File diff suppressed because it is too large Load Diff

View File

@ -71,56 +71,51 @@ BattleScript_UseItemMessage:
waitmessage B_WAIT_TIME_LONG
moveendcase 15
return
BattleScript_ItemRestoreHPRet:
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
return
BattleScript_ItemRestoreHP::
call BattleScript_UseItemMessage
itemrestorehp
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
moveendcase 15
end
call BattleScript_UseItemMessage
itemrestorehp BattleScript_ItemRestoreHPEnd
call BattleScript_ItemRestoreHPRet
BattleScript_ItemRestoreHPEnd:
end
BattleScript_ItemRestoreHP_Party::
jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
end
jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
end
BattleScript_ItemRestoreHP_SendOutRevivedBattler:
switchinanim BS_SCRIPTING, FALSE
waitstate
switchineffects BS_SCRIPTING
end
switchinanim BS_SCRIPTING, FALSE
waitstate
switchineffects BS_SCRIPTING
end
BattleScript_ItemCureStatus::
call BattleScript_UseItemMessage
itemcurestatus
updatestatusicon BS_SCRIPTING
printstring STRINGID_ITEMCUREDSPECIESSTATUS
waitmessage B_WAIT_TIME_LONG
moveendcase 15
end
call BattleScript_UseItemMessage
BattleScript_ItemCureStatusAfterItemMsg:
itemcurestatus BattleScript_ItemCureStatusEnd
updatestatusicon BS_SCRIPTING
printstring STRINGID_ITEMCUREDSPECIESSTATUS
waitmessage B_WAIT_TIME_LONG
BattleScript_ItemCureStatusEnd:
end
BattleScript_ItemHealAndCureStatus::
call BattleScript_UseItemMessage
itemrestorehp
itemcurestatus
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
updatestatusicon BS_SCRIPTING
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
moveendcase 15
end
call BattleScript_UseItemMessage
itemrestorehp BattleScript_ItemCureStatusAfterItemMsg
call BattleScript_ItemRestoreHPRet
goto BattleScript_ItemCureStatusAfterItemMsg
BattleScript_ItemIncreaseStat::
call BattleScript_UseItemMessage

View File

@ -95,6 +95,9 @@ ViridianCity_Mart_Items::
.2byte ITEM_PROTEIN
.2byte ITEM_ABILITY_CAPSULE
.2byte ITEM_ABILITY_PATCH
.2byte ITEM_STICKY_BARB
.2byte ITEM_ORAN_BERRY
.2byte ITEM_BEAST_BALL
.2byte ITEM_NONE
release
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -4,6 +4,7 @@
#include <limits.h>
#include "global.h"
#include "constants/battle.h"
#include "constants/form_change_types.h"
#include "constants/battle_script_commands.h"
#include "battle_util.h"
#include "battle_script_commands.h"
@ -48,6 +49,25 @@
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF
// Special indicator value for shellBellDmg in SpecialStatus
#define IGNORE_SHELL_BELL 0xFFFF
// For defining EFFECT_HIT etc. with battle TV scores and flags etc.
struct __attribute__((packed, aligned(2))) BattleMoveEffect
{
const u8 *battleScript;
u16 encourageEncore:1;
u16 twoTurnEffect:1;
u16 semiInvulnerableEffect:1;
u16 usesProtectCounter:1;
u16 padding:12;
};
#define GET_MOVE_BATTLESCRIPT(move) gBattleMoveEffects[gMovesInfo[move].effect].battleScript
#define MAX_TRAINER_ITEMS 4
enum {
@ -56,18 +76,6 @@ enum {
BATTLER_AFFINE_RETURN,
};
#define MOVE_TARGET_SELECTED 0
#define MOVE_TARGET_DEPENDS (1 << 0)
#define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
#define MOVE_TARGET_RANDOM (1 << 2)
#define MOVE_TARGET_BOTH (1 << 3)
#define MOVE_TARGET_USER (1 << 4)
#define MOVE_TARGET_FOES_AND_ALLY (1 << 5)
#define MOVE_TARGET_OPPONENTS_FIELD (1 << 6)
// For the second argument of GetMoveTarget, when no target override is needed
#define NO_TARGET_OVERRIDE 0
struct TrainerMonNoItemDefaultMoves
{
u16 iv;
@ -131,106 +139,181 @@ extern const struct Trainer gTrainers[];
struct ResourceFlags
{
u32 flags[4];
u32 flags[MAX_BATTLERS_COUNT];
};
#define RESOURCE_FLAG_FLASH_FIRE 1
#define RESOURCE_FLAG_FLASH_FIRE 0x1
#define RESOURCE_FLAG_ROOST 0x2
#define RESOURCE_FLAG_UNBURDEN 0x4
#define RESOURCE_FLAG_UNUSED 0x8
#define RESOURCE_FLAG_TRACED 0x10
#define RESOURCE_FLAG_EMERGENCY_EXIT 0x20
#define RESOURCE_FLAG_NEUTRALIZING_GAS 0x40
#define RESOURCE_FLAG_ICE_FACE 0x80
struct DisableStruct
{
/*0x00*/ u32 transformedMonPersonality;
/*0x04*/ u16 disabledMove;
/*0x06*/ u16 encoredMove;
/*0x08*/ u8 protectUses;
/*0x09*/ u8 stockpileCounter;
/*0x0A*/ u8 substituteHP;
/*0x0B*/ u8 disableTimer : 4;
/*0x0B*/ u8 disableTimerStartValue : 4;
/*0x0C*/ u8 encoredMovePos;
/*0x0D*/ u8 unkD;
/*0x0E*/ u8 encoreTimer : 4;
/*0x0E*/ u8 encoreTimerStartValue : 4;
/*0x0F*/ u8 perishSongTimer : 4;
/*0x0F*/ u8 perishSongTimerStartValue : 4;
/*0x10*/ u8 furyCutterCounter;
/*0x11*/ u8 rolloutTimer : 4;
/*0x11*/ u8 rolloutTimerStartValue : 4;
/*0x12*/ u8 chargeTimer : 4;
/*0x12*/ u8 chargeTimerStartValue : 4;
/*0x13*/ u8 tauntTimer:4;
/*0x13*/ u8 tauntTimer2:4;
/*0x14*/ u8 battlerPreventingEscape;
/*0x15*/ u8 battlerWithSureHit;
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
/*0x18*/ u8 truantSwitchInHack : 1; // Unused here, but used in pokeemerald
/*0x18*/ u8 unk18_a_2 : 2;
/*0x18*/ u8 mimickedMoves : 4;
/*0x19*/ u8 rechargeTimer;
/*0x1A*/ u8 unk1A[1];
u32 transformedMonPersonality;
bool8 transformedMonShininess;
u16 disabledMove;
u16 encoredMove;
u8 protectUses:4;
u8 stockpileCounter:4;
s8 stockpileDef;
s8 stockpileSpDef;
s8 stockpileBeforeDef;
s8 stockpileBeforeSpDef;
u8 substituteHP;
u8 encoredMovePos;
u8 disableTimer:4;
u8 encoreTimer:4;
u8 perishSongTimer:4;
u8 furyCutterCounter;
u8 rolloutTimer:4;
u8 rolloutTimerStartValue:4;
u8 chargeTimer:4;
u8 tauntTimer:4;
u8 battlerPreventingEscape;
u8 battlerWithSureHit;
u8 isFirstTurn;
u8 truantCounter:1;
u8 truantSwitchInHack:1;
u8 mimickedMoves:4;
u8 rechargeTimer;
u8 autotomizeCount;
u8 slowStartTimer;
u8 embargoTimer;
u8 magnetRiseTimer;
u8 telekinesisTimer;
u8 healBlockTimer;
u8 laserFocusTimer;
u8 throatChopTimer;
u8 wrapTurns;
u8 tormentTimer:4; // used for G-Max Meltdown
u8 usedMoves:4;
u8 noRetreat:1;
u8 tarShot:1;
u8 octolock:1;
u8 cudChew:1;
u8 spikesDone:1;
u8 toxicSpikesDone:1;
u8 stickyWebDone:1;
u8 stealthRockDone:1;
u8 syrupBombTimer;
u8 syrupBombIsShiny:1;
u8 steelSurgeDone:1;
u8 weatherAbilityDone:1;
u8 terrainAbilityDone:1;
u8 usedProteanLibero:1;
};
extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
struct ProtectStruct
{
/* field_0 */
u32 protected:1;
u32 spikyShielded:1;
u32 kingsShielded:1;
u32 banefulBunkered:1;
u32 obstructed:1;
u32 endured:1;
u32 noValidMoves:1;
u32 helpingHand:1;
u32 bounceMove:1;
u32 stealMove:1;
u32 flag0Unknown:1;
u32 prlzImmobility:1;
/* field_1 */
u32 confusionSelfDmg:1;
u32 targetNotAffected:1;
u32 targetAffected:1;
u32 chargingTurn:1;
u32 fleeType:2; // for RunAway and Smoke Ball
u32 fleeType:2; // 0: Normal, 1: FLEE_ITEM, 2: FLEE_ABILITY
u32 usedImprisonedMove:1;
u32 loveImmobility:1;
u32 usedDisabledMove:1;
/* field_2 */
u32 usedTauntedMove:1; // 0x1
u32 flag2Unknown:1; // 0x2
u32 flinchImmobility:1; // 0x4
u32 notFirstStrike:1; // 0x8
u32 flag_x10 : 1; // 0x10
u32 flag_x20 : 1; // 0x20
u32 flag_x40 : 1; // 0x40
u32 flag_x80 : 1; // 0x80
u32 field3 : 8;
u32 usedTauntedMove:1;
u32 flag2Unknown:1; // Only set to 0 once. Checked in 'WasUnableToUseMove' function.
u32 flinchImmobility:1;
u32 notFirstStrike:1;
u32 palaceUnableToUseMove:1;
u32 usesBouncedMove:1;
u32 usedHealBlockedMove:1;
u32 usedGravityPreventedMove:1;
u32 powderSelfDmg:1;
u32 usedThroatChopPreventedMove:1;
u32 statRaised:1;
u32 usedMicleBerry:1;
u32 usedCustapBerry:1; // also quick claw
u32 touchedProtectLike:1;
// End of 32-bit bitfield
u16 disableEjectPack:1;
u16 statFell:1;
u16 pranksterElevated:1;
u16 quickDraw:1;
u16 beakBlastCharge:1;
u16 quash:1;
u16 shellTrap:1;
u16 maxGuarded:1;
u16 silkTrapped:1;
u16 burningBulwarked:1;
u16 eatMirrorHerb:1;
u16 activateOpportunist:2; // 2 - to copy stats. 1 - stats copied (do not repeat). 0 - no stats to copy
u16 usedAllySwitch:1;
u32 physicalDmg;
u32 specialDmg;
u8 physicalBattlerId;
u8 specialBattlerId;
u16 fieldE;
// pokefirered
/* field_0 */
/* field_1 */
u32 targetNotAffected:1;
/* field_2 */
};
extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
struct SpecialStatus
{
u8 statLowered:1; // 0x1
u8 lightningRodRedirected:1; // 0x2
u8 restoredBattlerSprite:1; // 0x4
u8 intimidatedMon:1; // 0x8
u8 traced:1; // 0x10
u8 ppNotAffectedByPressure:1;
u8 faintedHasReplacement:1;
u8 focusBanded:1;
u8 field1[3];
s32 dmg;
s32 shellBellDmg;
s32 physicalDmg;
s32 specialDmg;
u8 physicalBattlerId;
u8 specialBattlerId;
u8 field12;
u8 field13;
u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self.
u8 statLowered:1;
u8 lightningRodRedirected:1;
u8 restoredBattlerSprite: 1;
u8 traced:1;
u8 faintedHasReplacement:1;
u8 focusBanded:1;
u8 focusSashed:1;
// End of byte
u8 sturdied:1;
u8 stormDrainRedirected:1;
u8 switchInAbilityDone:1;
u8 switchInItemDone:1;
u8 instructedChosenTarget:3;
u8 berryReduced:1;
// End of byte
u8 gemParam;
// End of byte
u8 gemBoost:1;
u8 rototillerAffected:1; // to be affected by rototiller
u8 parentalBondState:2;
u8 multiHitOn:1;
u8 announceNeutralizingGas:1; // See Cmd_switchineffects
u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS
u8 affectionEndured:1;
// End of byte
u8 damagedMons:4; // Mons that have been damaged directly by using a move, includes substitute.
u8 dancerUsedMove:1;
u8 dancerOriginalTarget:3;
// End of byte
u8 emergencyExited:1;
u8 afterYou:1;
u8 preventLifeOrbDamage:1; // So that Life Orb doesn't activate various effects.
// pokeemrald
u8 intimidatedMon:1; // 0x8
u8 ppNotAffectedByPressure:1;
s32 dmg;
};
extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
@ -249,20 +332,54 @@ struct SideTimer
/*0x09*/ u8 followmeTarget;
/*0x0A*/ u8 spikesAmount;
/*0x0B*/ u8 fieldB;
// pokeemerald
u8 retaliateTimer;
u8 stealthRockAmount;
u8 stickyWebAmount;
u8 stickyWebBattlerId;
u8 stickyWebBattlerSide; // Used for Court Change
u8 tailwindTimer;
u8 tailwindBattlerId;
u8 auroraVeilTimer;
u8 auroraVeilBattlerId;
u8 toxicSpikesAmount;
u8 followmePowder:1; // Rage powder, does not affect grass type pokemon.
u8 steelsurgeAmount;
u8 luckyChantTimer;
u8 luckyChantBattlerId;
u8 damageNonTypesTimer;
u8 damageNonTypesType;
u8 rainbowTimer;
u8 seaOfFireTimer;
u8 swampTimer;
};
extern struct SideTimer gSideTimers[];
struct FieldTimer
{
u8 mudSportTimer;
u8 waterSportTimer;
u8 wonderRoomTimer;
u8 magicRoomTimer;
u8 trickRoomTimer;
u8 terrainTimer;
u8 gravityTimer;
u8 fairyLockTimer;
};
struct WishFutureKnock
{
u8 futureSightCounter[MAX_BATTLERS_COUNT];
u8 futureSightAttacker[MAX_BATTLERS_COUNT];
s32 futureSightDmg[MAX_BATTLERS_COUNT];
u8 futureSightBattlerIndex[MAX_BATTLERS_COUNT];
u8 futureSightPartyIndex[MAX_BATTLERS_COUNT];
u8 futureSightAttacker[MAX_BATTLERS_COUNT]; // pokefirered, remove
s32 futureSightDmg[MAX_BATTLERS_COUNT]; // pokefirered, remove
u16 futureSightMove[MAX_BATTLERS_COUNT];
u8 wishCounter[MAX_BATTLERS_COUNT];
u8 wishMonId[MAX_BATTLERS_COUNT];
u8 wishPartyId[MAX_BATTLERS_COUNT];
u8 weatherDuration;
u8 knockedOffMons[2];
u8 knockedOffMons[NUM_BATTLE_SIDES];
};
extern struct WishFutureKnock gWishFutureKnock;
@ -293,13 +410,18 @@ struct UsedMoves
u16 unknown[MAX_BATTLERS_COUNT];
};
#define AI_MOVE_HISTORY_COUNT 3
struct BattleHistory
{
/*0x00*/ u16 usedMoves[2][8]; // 0xFFFF means move not used (confuse self hit, etc)
/*0x20*/ u16 abilities[MAX_BATTLERS_COUNT / 2];
/*0x22*/ u8 itemEffects[MAX_BATTLERS_COUNT / 2];
u16 abilities[MAX_BATTLERS_COUNT];
/*0x22*/ u8 itemEffects[MAX_BATTLERS_COUNT];
/*0x24*/ u16 trainerItems[MAX_BATTLERS_COUNT];
/*0x2C*/ u8 itemsNo;
u16 moveHistory[MAX_BATTLERS_COUNT][AI_MOVE_HISTORY_COUNT]; // 3 last used moves for each battler
u8 moveHistoryIndex[MAX_BATTLERS_COUNT];
u16 heldItems[MAX_BATTLERS_COUNT];
};
struct BattleScriptsStack
@ -371,6 +493,74 @@ struct LinkBattlerHeader
struct BattleEnigmaBerry battleEnigmaBerry;
};
struct MegaEvolutionData
{
u8 toEvolve; // As flags using gBitTable.
bool8 alreadyEvolved[4]; // Array id is used for mon position.
u8 battlerId;
bool8 playerSelect;
u8 triggerSpriteId;
};
struct UltraBurstData
{
u8 toBurst; // As flags using gBitTable.
bool8 alreadyBursted[4]; // Array id is used for mon position.
u8 battlerId;
bool8 playerSelect;
u8 triggerSpriteId;
};
struct Illusion
{
u8 on;
u8 set;
u8 broken;
u8 partyId;
struct Pokemon *mon;
};
struct ZMoveData
{
u8 viable:1; // current move can become a z move
u8 viewing:1; // if player is viewing the z move name instead of regular moves
u8 active:1; // is z move being used this turn
u8 zStatusActive:1;
u8 healReplacement:1;
u8 activeCategory:2; // active z move category
u8 zUnused:1;
u8 triggerSpriteId;
u8 possibleZMoves[MAX_BATTLERS_COUNT];
u16 chosenZMove; // z move of move cursor is on
u8 effect;
u8 used[MAX_BATTLERS_COUNT]; //one per bank for multi-battles
u16 toBeUsed[MAX_BATTLERS_COUNT]; // z moves per battler to be used
u16 baseMoves[MAX_BATTLERS_COUNT];
u8 categories[MAX_BATTLERS_COUNT];
};
struct DynamaxData
{
bool8 playerSelect;
u8 triggerSpriteId;
u8 toDynamax; // flags using gBitTable
bool8 alreadyDynamaxed[NUM_BATTLE_SIDES];
bool8 dynamaxed[MAX_BATTLERS_COUNT];
u8 dynamaxTurns[MAX_BATTLERS_COUNT];
u8 usingMaxMove[MAX_BATTLERS_COUNT];
u8 activeCategory;
u8 categories[MAX_BATTLERS_COUNT];
u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move
u16 lastUsedBaseMove;
u16 levelUpHP;
};
struct LostItem
{
u16 originalItem:15;
u16 stolen:1;
};
struct BattleStruct
{
u8 turnEffectsTracker;
@ -384,7 +574,6 @@ struct BattleStruct
u8 wildVictorySong;
u8 dynamicMoveType;
u8 wrappedBy[MAX_BATTLERS_COUNT];
u16 assistPossibleMoves[PARTY_SIZE * MAX_MON_MOVES]; // 6 mons, each of them knowing 4 moves
u8 focusPunchBattlerId;
u8 battlerPreventingSwitchout;
u8 moneyMultiplier;
@ -393,7 +582,7 @@ struct BattleStruct
u8 faintedActionsState;
u8 faintedActionsBattlerId;
// balign 2
u16 expValue;
u32 expValue;
u8 scriptPartyIdx; // for printing the nickname
u8 sentInPokes;
bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
@ -403,8 +592,8 @@ struct BattleStruct
u8 runTries;
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1];
u8 field_78; // unused
u8 safariRockThrowCounter;
u8 safariBaitThrowCounter;
u8 safariRockThrowCounter; // safariGoNearCounter in pokeemerald
u8 safariBaitThrowCounter; // safariPkblThrowCounter in pokeemerald
u8 safariEscapeFactor;
u8 safariCatchFactor;
u8 linkBattleVsSpriteId_V;
@ -430,11 +619,11 @@ struct BattleStruct
u8 hpScale;
u16 savedBattleTypeFlags;
void (*savedCallback)(void);
u8 synchronizeMoveEffect;
u16 synchronizeMoveEffect;
u8 multiplayerId;
u8 overworldWeatherDone;
u8 atkCancellerTracker;
u16 usedHeldItems[MAX_BATTLERS_COUNT];
u16 usedHeldItems[PARTY_SIZE][NUM_BATTLE_SIDES]; // For each party member and side. For harvest, recycle
u8 chosenItem[MAX_BATTLERS_COUNT]; // why is this an u8?
u8 AI_itemType[2];
u8 AI_itemFlags[2];
@ -446,7 +635,7 @@ struct BattleStruct
u8 turnSideTracker;
u8 fillerDC[0xDF-0xDC];
u8 givenExpMons;
u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2];
u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT];
u16 castformPalette[MAX_BATTLERS_COUNT][16];
u8 wishPerishSongState;
u8 wishPerishSongBattlerId;
@ -459,42 +648,134 @@ struct BattleStruct
u8 itemPartyIndex[MAX_BATTLERS_COUNT];
u8 itemMoveIndex[MAX_BATTLERS_COUNT];
u8 padding_1E4[0x14];
}; // size == 0x200 bytes
// pokeemerald
u8 isSkyBattle:1;
u8 isAtkCancelerForCalledMove:1; // Certain cases in atk canceler should only be checked once, when the original move is called, however others need to be checked the twice.
u8 swapDamageCategory:1; // Photon Geyser, Shell Side Arm, Light That Burns the Sky
u8 beatUpSlot:3;
u8 pledgeMove:1;
u8 magnitudeBasePower;
u8 presentBasePower;
u8 sameMoveTurns[MAX_BATTLERS_COUNT]; // For Metronome, number of times the same moves has been SUCCESFULLY used.
u8 lastMoveFailed; // as bits for each battler, for the sake of Stomping Tantrum
bool8 ateBoost[MAX_BATTLERS_COUNT];
u8 timesGotHit[NUM_BATTLE_SIDES][PARTY_SIZE];
u8 supremeOverlordCounter[MAX_BATTLERS_COUNT];
struct Illusion illusion[MAX_BATTLERS_COUNT];
u8 trainerSlideFirstSTABMoveMsgState:2;
u8 blunderPolicy:1; // should blunder policy activate
u8 skyDropTargets[MAX_BATTLERS_COUNT]; // For Sky Drop, to account for if multiple Pokemon use Sky Drop in a double battle.
u8 bonusCritStages[MAX_BATTLERS_COUNT]; // G-Max Chi Strike boosts crit stages of allies.
u8 enduredDamage;
u16 changedSpecies[NUM_BATTLE_SIDES][PARTY_SIZE]; // For forms when multiple mons can change into the same pokemon.
u8 trainerSlideFirstCriticalHitMsgState:2;
u8 trainerSlideFirstSuperEffectiveHitMsgState:2;
u8 additionalEffectsCounter:4; // A counter for the additionalEffects applied by the current move in Cmd_setadditionaleffects
u8 targetsDone[MAX_BATTLERS_COUNT]; // Each battler as a bit.
u16 moveEffect2; // For Knock Off
u8 stolenStats[NUM_BATTLE_STATS]; // hp byte is used for which stats to raise, other inform about by how many stages
u8 stickySyrupdBy[MAX_BATTLERS_COUNT];
u8 moneyMultiplierMove:1;
struct LostItem itemLost[PARTY_SIZE]; // Player's team that had items consumed or stolen (two bytes per party member)
u8 savedBattlerTarget;
u8 ateBerry[2]; // array id determined by side, each party pokemon as bit
u16 overwrittenAbilities[MAX_BATTLERS_COUNT]; // abilities overwritten during battle (keep separate from battle history in case of switching)
struct MegaEvolutionData mega;
struct UltraBurstData burst;
struct ZMoveData zmove;
struct DynamaxData dynamax;
u8 appearedInBattle; // Bitfield to track which Pokemon appeared in battle. Used for Burmy's form change
bool8 allowedToChangeFormInWeather[PARTY_SIZE][NUM_BATTLE_SIDES]; // For each party member and side, used by Ice Face.
u8 startingStatus; // status to apply at battle start. defined in constants/battle.h
u8 startingStatusTimer;
u8 transformZeroToHero[NUM_BATTLE_SIDES];
u8 supersweetSyrup[NUM_BATTLE_SIDES];
u8 intrepidSwordBoost[NUM_BATTLE_SIDES];
u8 dauntlessShieldBoost[NUM_BATTLE_SIDES];
u16 tracedAbility[MAX_BATTLERS_COUNT];
u16 hpBefore[MAX_BATTLERS_COUNT]; // Hp of battlers before using a move. For Berserk and Anger Shell.
u8 friskedBattler; // Frisk needs to identify 2 battlers in double battles.
bool8 friskedAbility; // If identifies two mons, show the ability pop-up only once.
bool8 spriteIgnore0Hp;
u8 moneyMultiplierItem:1;
u8 expGettersOrder[PARTY_SIZE]; // First battlers which were sent out, then via exp-share
u32 expShareExpValue;
u8 expOrderId:3;
u8 expSentInMons; // As bits for player party mons - not including exp share mons.
u8 teamGotExpMsgPrinted:1; // The 'Rest of your team got msg' has been printed.
u8 roostTypes[MAX_BATTLERS_COUNT][2];
u8 lastMoveTarget[MAX_BATTLERS_COUNT]; // The last target on which each mon used a move, for the sake of Instruct
u8 attackerBeforeBounce:2;
bool8 hitSwitchTargetFailed:1;
u8 storedHealingWish:4; // Each battler as a bit.
u8 storedLunarDance:4; // Each battler as a bit.
u8 forcedSwitch:4; // For each battler
u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed Pokémon.
u8 soulheartBattlerId;
const u8 *trainerSlideMsg;
u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party.
// pokeemerald unknown use
u8 field_93; // related to choosing pokemon? probably related to recording
};
extern struct BattleStruct *gBattleStruct;
#define F_DYNAMIC_TYPE_1 (1 << 6)
#define F_DYNAMIC_TYPE_2 (1 << 7)
#define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1)
#define DYNAMIC_TYPE_MASK ((1 << 6) - 1)
#define F_DYNAMIC_TYPE_IGNORE_PHYSICALITY (1 << 6) // If set, the dynamic type's physicality won't be used for certain move effects.
#define F_DYNAMIC_TYPE_SET (1 << 7) // Set for all dynamic types to distinguish a dynamic type of Normal (0) from no dynamic type.
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
typeArg = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; \
else \
typeArg = gBattleMoves[move].type; \
typeArg = gMovesInfo[move].type; \
}
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
#define IS_MOVE_PHYSICAL(move)(GetBattleMoveCategory(move) == DAMAGE_CATEGORY_PHYSICAL)
#define IS_MOVE_SPECIAL(move)(GetBattleMoveCategory(move) == DAMAGE_CATEGORY_SPECIAL)
#define IS_MOVE_STATUS(move)(gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS)
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0))
#define IS_MOVE_RECOIL(move)(gMovesInfo[move].recoil > 0 || gMovesInfo[move].effect == EFFECT_RECOIL_IF_MISS)
#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type))
#define SET_BATTLER_TYPE(battlerId, type) \
{ \
gBattleMons[battlerId].type1 = type; \
gBattleMons[battlerId].type2 = type; \
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY) // TODO: remove
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY) // TODO: remove
#define BATTLER_MAX_HP(battlerId)(gBattleMons[battlerId].hp == gBattleMons[battlerId].maxHP)
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0) || (gBattleStruct->enduredDamage & gBitTable[gBattlerTarget]))
#define BATTLER_TURN_DAMAGED(battlerId) ((gSpecialStatuses[battlerId].physicalDmg != 0 || gSpecialStatuses[battlerId].specialDmg != 0) || (gBattleStruct->enduredDamage & gBitTable[battler]))
#define IS_BATTLER_OF_TYPE(battlerId, type)((GetBattlerType(battlerId, 0) == type || GetBattlerType(battlerId, 1) == type || (GetBattlerType(battlerId, 2) != TYPE_MYSTERY && GetBattlerType(battlerId, 2) == type)))
#define SET_BATTLER_TYPE(battlerId, type) \
{ \
gBattleMons[battlerId].type1 = type; \
gBattleMons[battlerId].type2 = type; \
gBattleMons[battlerId].type3 = TYPE_MYSTERY; \
}
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE2(n)((n & 0xF0))
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
#define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_WIDE_GUARD \
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_QUICK_GUARD \
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_CRAFTY_SHIELD \
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_MAT_BLOCK \
|| gProtectStructs[battlerId].spikyShielded \
|| gProtectStructs[battlerId].kingsShielded \
|| gProtectStructs[battlerId].banefulBunkered \
|| gProtectStructs[battlerId].burningBulwarked \
|| gProtectStructs[battlerId].obstructed \
|| gProtectStructs[battlerId].silkTrapped)
#define GET_STAT_BUFF_ID(n)((n & 7)) // first three bits 0x1, 0x2, 0x4
#define GET_STAT_BUFF_VALUE_WITH_SIGN(n)((n & 0xF8))
#define GET_STAT_BUFF_VALUE(n)(((n >> 3) & 0xF)) // 0x8, 0x10, 0x20, 0x40
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0))
#define SET_STAT_BUFF_VALUE(n)((((n) << 3) & 0xF8))
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
#define SET_STATCHANGER2(dst, statId, stage, goesDown)(dst = (statId) + ((stage) << 3) + (goesDown << 7))
// TODO: change in battle script(?) from stage << 4 to stage << 3
// NOTE: The members of this struct have hard-coded offsets
// in include/constants/battle_script_commands.h
@ -503,14 +784,14 @@ struct BattleScripting
s32 painSplitHp;
s32 bideDmg;
u8 multihitString[6];
u8 dmgMultiplier;
u8 twoTurnsMoveStringId;
bool8 expOnCatch;
u8 unused;
u8 animArg1;
u8 animArg2;
u16 tripleKickPower;
u16 savedStringId;
u8 moveendState;
u8 battlerWithAbility;
u8 multihitMoveEffect;
u8 savedStatChanger; // For further use, if attempting to change stat two times(ex. Moody)
u8 shiftSwitched; // When the game tells you the next enemy's pokemon and you switch. Option for noobs but oh well.
u8 battler;
u8 animTurn;
u8 animTargetsHit;
@ -520,10 +801,26 @@ struct BattleScripting
u8 battleStyle;
u8 drawlvlupboxState;
u8 learnMoveState;
u8 pursuitDoublesAttacker;
u8 savedBattler;
u8 reshowMainState;
u8 reshowHelperState;
u8 levelUpHP;
u8 windowsType; // B_WIN_TYPE_*
u8 multiplayerId;
u8 specialTrainerBattleType;
bool8 monCaught;
s32 savedDmg;
u16 savedMoveEffect; // For moves hitting multiple targets.
u16 moveEffect;
u16 multihitMoveEffect;
u8 illusionNickHack; // To properly display nick in STRINGID_ENEMYABOUTTOSWITCHPKMN.
bool8 fixedPopup; // Force ability popup to stick until manually called back
u16 abilityPopupOverwrite;
u8 switchCase; // Special switching conditions, eg. red card
u8 overrideBerryRequirements;
u8 stickyWebStatDrop; // To prevent Defiant activating on a Court Change'd Sticky Web
// TODO: remove pokefirered members
u8 dmgMultiplier;
};
struct BattleSpriteInfo
@ -545,7 +842,9 @@ struct BattleAnimationInfo
u8 field_5;
u8 field_6;
u8 field_7;
u8 ballThrowCaseId;
u8 ballThrowCaseId:6;
u8 isCriticalCapture:1;
u8 criticalCaptureSuccess:1;
u8 introAnimActive:1;
u8 wildMonInvisible:1;
u8 field_9_x1C:3;
@ -615,7 +914,8 @@ struct MonSpritesGfx
void *sprites[MAX_BATTLERS_COUNT];
struct SpriteTemplate templates[MAX_BATTLERS_COUNT];
struct SpriteFrameImage images[MAX_BATTLERS_COUNT][4];
u8 field_F4[0x80]; // unused
u8 field_F4[0x80 - (4 * MAX_BATTLERS_COUNT)]; // unused, original - spritesGfx
u8 *spritesGfx[MAX_BATTLERS_COUNT];
u8 *barFontGfx;
void *field_178; // freed but never allocated
u16 *multiUseBuffer;
@ -630,6 +930,12 @@ struct PokedudeBattlerState
u8 saved_bg0y;
};
struct QueuedStatBoost
{
u8 stats; // bitfield for each battle stat that is set if the stat changes
s8 statChanges[NUM_BATTLE_STATS - 1]; // highest bit being set decreases the stat
}; /* size = 8 */
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
extern u16 gBattle_BG1_X;
@ -648,6 +954,7 @@ extern u16 gLastUsedItem;
extern u32 gBattleTypeFlags;
extern struct MonSpritesGfx *gMonSpritesGfxPtr;
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
extern u16 gMoveToLearn;
extern u16 gBattleMovePower;
extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
@ -695,7 +1002,7 @@ extern const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT];
extern u16 gLastMoves[MAX_BATTLERS_COUNT];
extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT];
extern u16 gSideStatuses[2];
extern u32 gSideStatuses[NUM_BATTLE_SIDES];
extern u32 gHitMarker;
extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
extern u8 gMoveResultFlags;
@ -726,6 +1033,20 @@ extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT];
extern u8 gBattleTerrain;
extern struct MultiBattlePokemonTx gMultiPartnerParty[3];
extern u16 gRandomTurnNumber;
extern u8 gPartyCriticalHits[PARTY_SIZE];
extern const struct BattleMoveEffect gBattleMoveEffects[];
extern u32 gFieldStatuses;
extern u8 gBattlerAbility;
extern s32 gBideDmg[MAX_BATTLERS_COUNT];
extern u8 gBideTarget[MAX_BATTLERS_COUNT];
extern u16 gLastUsedMove;
extern u8 gIsCriticalHit;
extern struct FieldTimer gFieldTimers;
extern bool8 gHasFetchedBall;
extern u8 gLastUsedBall;
extern u16 gLastThrownBall;
extern u16 gBallToDisplay;
extern struct QueuedStatBoost gQueuedStatBoosts[MAX_BATTLERS_COUNT];
static inline u32 GetBattlerPosition(u32 battler)
{

View File

@ -12,9 +12,9 @@ void BattleAI_HandleItemUseBeforeAISetup(void);
void BattleAI_SetupAIData(void);
u8 BattleAI_ChooseMoveOrAction(void);
void ClearBankMoveHistory(u8 bank);
void RecordAbilityBattle(u8 bank, u16 abilityId);
void RecordAbilityBattle(u32 bank, u32 abilityId);
void ClearBankAbilityHistory(u8 bank);
void RecordItemEffectBattle(u8 bank, u8 itemEffect);
void RecordItemEffectBattle(u32 bank, u32 itemEffect);
void ClearBankItemEffectHistory(u8 bank);
u8 BattleAI_ChooseMoveOrAction(void);

View File

@ -185,6 +185,12 @@ extern const u8 *const gBattleAnims_StatusConditions[];
extern const u8 *const gBattleAnims_Moves[];
extern const u16 gMovesWithQuietBGM[];
u8 GetAnimBattlerId(u8 wantedBattler);
// battle_anim_throw.c
bool32 IsCriticalCapture(void);
//
void MoveBattlerSpriteToBG(u8 battlerId, u8);
void ResetBattleAnimBg(u8);
void ClearBattleAnimationVars(void);

View File

@ -181,7 +181,7 @@ enum
CONTROLLER_HITANIMATION,
CONTROLLER_CANTSWITCH,
CONTROLLER_PLAYSE,
CONTROLLER_PLAYFANFARE,
CONTROLLER_PLAYFANFAREORBGM,
CONTROLLER_FAINTINGCRY,
CONTROLLER_INTROSLIDE,
CONTROLLER_INTROTRAINERBALLTHROW,
@ -206,6 +206,7 @@ void SetUpBattleVars(void);
void InitBattleControllers(void);
void TryReceiveLinkBattleData(void);
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
bool32 IsValidForBattle(struct Pokemon *mon);
// emitters
void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck);
@ -218,7 +219,7 @@ void BtlController_EmitTrainerSlide(u8 bufferId);
void BtlController_EmitTrainerSlideBack(u8 bufferId);
void BtlController_EmitFaintAnimation(u8 bufferId);
void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId);
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr);
void BtlController_EmitMoveAnimation(u32 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId);
@ -237,7 +238,7 @@ void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
void BtlController_EmitHitAnimation(u8 bufferId);
void BtlController_EmitCantSwitch(u8 bufferId);
void BtlController_EmitPlaySE(u8 bufferId, u16 songId);
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId);
void BtlController_EmitPlayFanfareOrBGM(u32 bufferId, u16 songId, bool8 playBGM);
void BtlController_EmitFaintingCry(u8 bufferId);
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
@ -245,7 +246,7 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus *h
void BtlController_EmitHidePartyStatusSummary(u8 bufferId);
void BtlController_EmitEndBounceEffect(u8 bufferId);
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
void BtlController_EmitBattleAnimation(u32 bufferId, u8 animationId, struct DisableStruct* disableStructPtr, u16 argument);
void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 mode);
void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void BtlController_EmitEndLinkBattle(u8 bufferId, u8 battleOutcome);

92
include/battle_dynamax.h Normal file
View File

@ -0,0 +1,92 @@
#ifndef GUARD_BATTLE_DYNAMAX_H
#define GUARD_BATTLE_DYNAMAX_H
#define DYNAMAX_TURNS_COUNT 3
enum MaxMoveEffect
{
MAX_EFFECT_NONE,
MAX_EFFECT_RAISE_TEAM_ATTACK,
MAX_EFFECT_RAISE_TEAM_DEFENSE,
MAX_EFFECT_RAISE_TEAM_SPEED,
MAX_EFFECT_RAISE_TEAM_SP_ATK,
MAX_EFFECT_RAISE_TEAM_SP_DEF,
MAX_EFFECT_LOWER_ATTACK,
MAX_EFFECT_LOWER_DEFENSE,
MAX_EFFECT_LOWER_SPEED,
MAX_EFFECT_LOWER_SP_ATK,
MAX_EFFECT_LOWER_SP_DEF,
MAX_EFFECT_SUN,
MAX_EFFECT_RAIN,
MAX_EFFECT_SANDSTORM,
MAX_EFFECT_HAIL,
MAX_EFFECT_MISTY_TERRAIN,
MAX_EFFECT_GRASSY_TERRAIN,
MAX_EFFECT_ELECTRIC_TERRAIN,
MAX_EFFECT_PSYCHIC_TERRAIN,
MAX_EFFECT_VINE_LASH,
MAX_EFFECT_WILDFIRE,
MAX_EFFECT_CANNONADE,
MAX_EFFECT_EFFECT_SPORE_FOES,
MAX_EFFECT_PARALYZE_FOES,
MAX_EFFECT_CONFUSE_FOES_PAY_DAY,
MAX_EFFECT_CRIT_PLUS,
MAX_EFFECT_MEAN_LOOK,
MAX_EFFECT_AURORA_VEIL,
MAX_EFFECT_INFATUATE_FOES,
MAX_EFFECT_RECYCLE_BERRIES,
MAX_EFFECT_POISON_FOES,
MAX_EFFECT_STEALTH_ROCK,
MAX_EFFECT_DEFOG,
MAX_EFFECT_POISON_PARALYZE_FOES,
MAX_EFFECT_HEAL_TEAM,
MAX_EFFECT_SPITE,
MAX_EFFECT_GRAVITY,
MAX_EFFECT_VOLCALITH,
MAX_EFFECT_SANDBLAST_FOES,
MAX_EFFECT_YAWN_FOE,
MAX_EFFECT_LOWER_EVASIVENESS_FOES,
MAX_EFFECT_AROMATHERAPY,
MAX_EFFECT_CONFUSE_FOES,
MAX_EFFECT_STEELSURGE,
MAX_EFFECT_TORMENT_FOES,
MAX_EFFECT_LOWER_SPEED_2_FOES,
MAX_EFFECT_FIRE_SPIN_FOES,
MAX_EFFECT_FIXED_POWER,
MAX_EFFECT_BYPASS_PROTECT,
};
// bool32 IsDynamaxed(u16 battlerId);
// bool32 CanDynamax(u16 battlerId);
// bool32 IsGigantamaxed(u16 battlerId);
// void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon);
// void PrepareBattlerForDynamax(u16 battlerId);
// u16 GetNonDynamaxHP(u16 battlerId);
// u16 GetNonDynamaxMaxHP(u32 battlerId);
// void UndoDynamax(u16 battlerId);
// bool32 IsMoveBlockedByMaxGuard(u16 move);
// bool32 IsMoveBlockedByDynamax(u16 move);
// bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove);
// u16 GetMaxMove(u16 battlerId, u16 baseMove);
// u8 GetMaxMovePower(u16 move);
// bool32 IsMaxMove(u16 move);
// void ChooseDamageNonTypesString(u8 type);
// void BS_UpdateDynamax(void);
// void BS_SetMaxMoveEffect(void);
// void BS_SetSteelsurge(void);
// void BS_TrySetStatus1(void);
// void BS_TrySetStatus2(void);
// void BS_DamageNonTypes(void);
// void BS_HealOneSixth(void);
// void BS_TryRecycleBerry(void);
// void BS_JumpIfDynamaxed(void);
// void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId);
// void CreateDynamaxTriggerSprite(u8, bool8);
// void HideDynamaxTriggerSprite(void);
// bool32 IsDynamaxTriggerSpriteActive(void);
// void DestroyDynamaxTriggerSprite(void);
#endif

View File

@ -23,9 +23,6 @@ struct MultiBattlePokemonTx
/*0x1D*/ u8 language;
};
#define TYPE_NAME_LENGTH 6
#define ABILITY_NAME_LENGTH 12
// defines for the u8 array gTypeEffectiveness
#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
@ -59,8 +56,6 @@ extern const u8 gStatusConditionString_LoveJpn[8];
extern const u8 *const gStatusConditionStringsTable[7][2];
extern const u8 gTypeEffectiveness[372];
extern const struct TrainerMoney gTrainerMoneyTable[];
extern const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT];
extern const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1];
void CB2_InitBattle(void);
void BattleMainCB2(void);
@ -84,15 +79,20 @@ void SpriteCB_PlayerThrowInit(struct Sprite *sprite);
void UpdatePlayerPosInThrowAnim(struct Sprite *sprite);
void BeginBattleIntroDummy(void);
void BeginBattleIntro(void);
void SwitchInClearSetData(void);
void FaintClearSetData(void);
void SwitchInClearSetData(u32 battler);
const u8* FaintClearSetData(u32 battler);
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
void UpdatePartyOwnerOnSwitch_NonMulti(u8 battler);
u8 IsRunningFromBattleImpossible(u32 battler);
void SwitchPartyOrder(u32 battlerId);
void SwapTurnOrder(u8 id1, u8 id2);
u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battler);
s8 GetMovePriority(u32 battlerId, u16 move);
s8 GetChosenMovePriority(u32 battlerId);
u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect);
u32 GetBattlerTotalSpeedStat(u32 battler);
void SpecialStatusesClear(void);
#endif // GUARD_BATTLE_MAIN_H

View File

@ -55,6 +55,8 @@
#define B_TXT_TRAINER2_LOSE_TEXT 0x2E
#define B_TXT_TRAINER2_WIN_TEXT 0x2F
#define B_TXT_BUFF3 0x30
#define B_TXT_ATK_TEAM2 0x38 // your/the opposing
#define B_TXT_DEF_TEAM2 0x3B // your/the opposing
// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3
@ -152,7 +154,7 @@
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
textVar[1] = B_BUFF_MOVE; \
textVar[2] = move; \
textVar[2] = (move & 0xFF); \
textVar[3] = (move & 0xFF00) >> 8; \
textVar[4] = B_BUFF_EOS; \
}
@ -233,7 +235,6 @@ extern const u8 *const gRefereeStringsTable[];
extern const u8 *const gStatNamesTable2[];
extern const u16 gMissStringIds[];
extern const u16 gTrappingMoves[];
extern const u8 gText_Sleep[];
extern const u8 gText_Poison[];

View File

@ -7,11 +7,26 @@
#define WINDOW_CLEAR (1 << 0)
#define WINDOW_BG1 (1 << 7)
// Arguments for 'xStart, yStart, xEnd, yEnd' in HandleBattleWindow
#define YESNOBOX_X_Y 23, 8, 29, 13
struct StatFractions
{
u8 dividend;
u8 divisor;
};
struct PickupItem
{
u16 itemId;
u8 percentage[10];
};
void AI_CalcDmg(u8 attacker, u8 defender);
u8 TypeCalc(u16 move, u8 attacker, u8 defender);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u16 targetAbility);
u8 GetBattlerTurnOrderNum(u8 battlerId);
void SetMoveEffect(bool8 primary, u8 certain);
void SetMoveEffect(bool32 primary, u32 certain);
bool32 IsMonGettingExpSentOut(void);
void BattleDestroyYesNoCursorAt(void);
void BattleCreateYesNoCursorAt(void);
@ -19,7 +34,27 @@ void BufferMoveToLearnIntoBattleTextBuff2(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
bool8 UproarWakeUpCheck(u8 battlerId);
u8 GetCatchingBattler(void);
bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler);
u32 GetHighestStatId(u32 battlerId);
u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect);
bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move);
bool32 DoesDisguiseBlockMove(u32 battler, u32 move);
bool32 CanPoisonType(u8 battlerAttacker, u8 battlerTarget);
bool32 CanParalyzeType(u8 battlerAttacker, u8 battlerTarget);
bool32 NoAliveMonsForPlayer(void);
bool32 NoAliveMonsForEitherParty(void);
void StealTargetItem(u8 battlerStealer, u8 battlerItem);
u32 IsFlowerVeilProtected(u32 battler);
u32 IsLeafGuardProtected(u32 battler);
bool32 IsShieldsDownProtected(u32 battler);
u32 IsAbilityStatusProtected(u32 battler);
bool32 TryResetBattlerStatChanges(u8 battler);
bool32 CanBattlerSwitch(u32 battlerId);
u8 GetFirstFaintedPartyIndex(u8 battlerId);
u16 GetNaturePowerMove(void);
bool32 CanCamouflage(u8 battlerId);
extern void (* const gBattleScriptingCommandsTable[])(void);
extern const struct StatFractions gAccuracyStageRatios[];
#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H

File diff suppressed because it is too large Load Diff

View File

@ -9,63 +9,120 @@
#define MOVE_LIMITATION_TORMENTED (1 << 3)
#define MOVE_LIMITATION_TAUNT (1 << 4)
#define MOVE_LIMITATION_IMPRISON (1 << 5)
#define MOVE_LIMITATIONS_ALL 0xFF
#define MOVE_LIMITATION_ENCORE (1 << 6)
#define MOVE_LIMITATION_CHOICE_ITEM (1 << 7)
#define MOVE_LIMITATION_ASSAULT_VEST (1 << 8)
#define MOVE_LIMITATION_GRAVITY (1 << 9)
#define MOVE_LIMITATION_HEAL_BLOCK (1 << 10)
#define MOVE_LIMITATION_BELCH (1 << 11)
#define MOVE_LIMITATION_THROAT_CHOP (1 << 12)
#define MOVE_LIMITATION_STUFF_CHEEKS (1 << 13)
#define MOVE_LIMITATION_CANT_USE_TWICE (1 << 14)
#define MOVE_LIMITATION_PLACEHOLDER (1 << 15)
#define MOVE_LIMITATIONS_ALL 0xFFFF
#define ABILITYEFFECT_ON_SWITCHIN 0
#define ABILITYEFFECT_ENDTURN 1
#define ABILITYEFFECT_MOVES_BLOCK 2
#define ABILITYEFFECT_ABSORBING 3
#define ABILITYEFFECT_ON_DAMAGE 4
#define ABILITYEFFECT_IMMUNITY 5
#define ABILITYEFFECT_FORECAST 6
#define ABILITYEFFECT_MOVE_END_ATTACKER 4
#define ABILITYEFFECT_MOVE_END 5
#define ABILITYEFFECT_IMMUNITY 6
#define ABILITYEFFECT_SYNCHRONIZE 7
#define ABILITYEFFECT_ATK_SYNCHRONIZE 8
#define ABILITYEFFECT_INTIMIDATE1 9
#define ABILITYEFFECT_INTIMIDATE2 10
#define ABILITYEFFECT_TRACE 11
#define ABILITYEFFECT_CHECK_OTHER_SIDE 12
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 13
#define ABILITYEFFECT_FIELD_SPORT 14
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 15
#define ABILITYEFFECT_COUNT_OTHER_SIDE 16
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 17
#define ABILITYEFFECT_COUNT_ON_FIELD 18
#define ABILITYEFFECT_CHECK_ON_FIELD 19
#define ABILITYEFFECT_MUD_SPORT 253
#define ABILITYEFFECT_WATER_SPORT 254
#define ABILITYEFFECT_SWITCH_IN_WEATHER 255
#define ABILITYEFFECT_TRACE1 9
#define ABILITYEFFECT_TRACE2 10
#define ABILITYEFFECT_MOVE_END_OTHER 11
#define ABILITYEFFECT_NEUTRALIZINGGAS 12
#define ABILITYEFFECT_FIELD_SPORT 13 // Only used if B_SPORT_TURNS >= GEN_6
#define ABILITYEFFECT_ON_WEATHER 14
#define ABILITYEFFECT_ON_TERRAIN 15
#define ABILITYEFFECT_SWITCH_IN_TERRAIN 16
#define ABILITYEFFECT_SWITCH_IN_WEATHER 17
#define ABILITYEFFECT_OPPORTUNIST 18
#define ABILITYEFFECT_SWITCH_IN_STATUSES 19
// pokefirered
#define ABILITYEFFECT_CHECK_OTHER_SIDE 20
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 21
#define ABILITYEFFECT_INTIMIDATE1 22
#define ABILITYEFFECT_INTIMIDATE2 23
#define ABILITYEFFECT_TRACE 24
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 25
#define ABILITYEFFECT_CHECK_ON_FIELD 26
#define ABILITYEFFECT_ON_DAMAGE 27
#define ABILITYEFFECT_FORECAST 28
#define ABILITYEFFECT_COUNT_OTHER_SIDE 29
// Special cases
#define ABILITYEFFECT_MUD_SPORT 252 // Only used if B_SPORT_TURNS >= GEN_6
#define ABILITYEFFECT_WATER_SPORT 253 // Only used if B_SPORT_TURNS >= GEN_6
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
#define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
/// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
#define ITEMEFFECT_ON_SWITCH_IN 0
#define ITEMEFFECT_NORMAL 1
#define ITEMEFFECT_DUMMY 2 // Unused, empty
#define ITEMEFFECT_MOVE_END 3
#define ITEMEFFECT_KINGSROCK_SHELLBELL 4
#define ITEMEFFECT_KINGSROCK 4
#define ITEMEFFECT_TARGET 5
#define ITEMEFFECT_ORBS 6
#define ITEMEFFECT_LIFEORB_SHELLBELL 7
#define ITEMEFFECT_USE_LAST_ITEM 8 // move end effects for just the battler, not whole field
#define ITEMEFFECT_STATS_CHANGED 9 // For White Herb and Eject Pack
#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
#define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0)))
#define BS_GET_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
#define BS_GET_SCRIPTING_BANK 10
#define BS_GET_PLAYER1 11
#define BS_GET_OPPONENT1 12
#define BS_GET_PLAYER2 13
#define BS_GET_OPPONENT2 14
#define IS_WHOLE_SIDE_ALIVE(battler) ((IsBattlerAlive(battler) && IsBattlerAlive(BATTLE_PARTNER(battler))))
#define IS_ALIVE_AND_PRESENT(battler) (IsBattlerAlive(battler) && IsBattlerSpritePresent(battler))
// for Natural Gift and Fling
struct TypePower
{
u8 type;
u8 power;
u16 effect;
};
enum
{
CANCELLER_FLAGS,
CANCELLER_SKY_DROP,
CANCELLER_ASLEEP,
CANCELLER_FROZEN,
CANCELLER_TRUANT,
CANCELLER_RECHARGE,
CANCELLER_FLINCH,
CANCELLER_DISABLED,
CANCELLER_GRAVITY,
CANCELLER_HEAL_BLOCKED,
CANCELLER_TAUNTED,
CANCELLER_IMPRISONED,
CANCELLER_CONFUSED,
CANCELLER_PARALYSED,
CANCELLER_GHOST,
CANCELLER_IN_LOVE,
CANCELLER_BIDE,
CANCELLER_THAW,
CANCELLER_POWDER_MOVE,
CANCELLER_POWDER_STATUS,
CANCELLER_THROAT_CHOP,
CANCELLER_MULTIHIT_MOVES,
CANCELLER_Z_MOVES,
CANCELLER_END,
CANCELLER_PSYCHIC_TERRAIN,
CANCELLER_END2,
};
u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 target, u8 attacker, u16 move);
void PressurePPLoseOnUsingImprison(u8 attacker);
void PressurePPLoseOnUsingPerishSong(u8 attacker);
void MarkBattlerForControllerExec(u8 battlerId);
void MarkBattlerReceivedLinkData(u8 battlerId);
void CancelMultiTurnMoves(u8 battler);
bool8 WasUnableToUseMove(u8 battler);
const u8* CancelMultiTurnMoves(u32 battler);
bool32 WasUnableToUseMove(u32 battler);
void PrepareStringBattle(u16 stringId, u8 battler);
void ResetSentPokesToOpponentValue(void);
void OpponentSwitchInResetSentPokesToOpponentValue(u8 battler);
@ -74,7 +131,7 @@ void BattleScriptPush(const u8 *bsPtr);
void BattleScriptPushCursor(void);
void BattleScriptPop(void);
u8 TrySetCantSelectMoveBattleScript(void);
u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check);
u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check);
bool8 AreAllMovesUnusable(void);
u8 GetImprisonedMovesCount(u8 battlerId, u16 move);
u8 DoFieldEndTurnEffects(void);
@ -82,20 +139,117 @@ u8 DoBattlerEndTurnEffects(void);
bool8 HandleWishPerishSongOnTurnEnd(void);
bool8 HandleFaintedMonActions(void);
void TryClearRageStatuses(void);
u8 AtkCanceller_UnableToUseMove(void);
bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2);
u8 AtkCanceller_UnableToUseMove(u32 moveType);
bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2);
u8 CastformDataTypeChange(u8 battler);
u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 moveArg);
u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 moveArg);
void BattleScriptExecute(const u8 *BS_ptr);
void BattleScriptPushCursorAndCallback(const u8 *BS_ptr);
u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn);
u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn);
void ClearFuryCutterDestinyBondGrudge(u8 battlerId);
void HandleAction_RunBattleScript(void);
u8 GetMoveTarget(u16 move, u8 setTarget);
u8 IsMonDisobedient(void);
void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1);
// new
u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating);
bool32 IsAffectedByFollowMe(u32 battlerAtk, u32 defSide, u32 move);
bool32 IsNeutralizingGasOnField(void);
bool32 IsMyceliumMightOnField(void);
bool32 IsMoldBreakerTypeAbility(u32 ability);
u32 GetBattlerAbility(u32 battler);
u32 IsAbilityOnSide(u32 battler, u32 ability);
u32 IsAbilityOnOpposingSide(u32 battler, u32 ability);
u32 IsAbilityOnField(u32 ability);
u32 IsAbilityOnFieldExcept(u32 battler, u32 ability);
u32 IsAbilityPreventingEscape(u32 battler);
bool32 IsBattlerAlive(u32 battler);
bool32 CompareStat(u32 battler, u8 statId, u8 cmpTo, u8 cmpKind);
u32 CalcSecondaryEffectChance(u32 battler, u32 battlerAbility, const struct AdditionalEffect *additionalEffect);
bool32 MoveHasAdditionalEffect(u32 move, u32 moveEffect);
u8 GetBattleMoveCategory(u32 moveId);
u32 GetBattlerMoveTargetType(u32 battler, u32 move);
bool32 IsBattlerTerrainAffected(u32 battler, u32 terrainFlag);
bool32 IsBattlerGrounded(u32 battler);
u8 AtkCanceller_UnableToUseMove2(void);
void SetAtkCancellerForCalledMove(void);
bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 checkTarget);
bool32 IsBattlerProtected(u32 battler, u32 move);
bool32 IsMoveMakingContact(u32 move, u32 battlerAtk);
bool32 IsHealBlockPreventingMove(u32 battler, u32 move);
s32 CalculateMoveDamage(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, s32 fixedBasePower, bool32 isCrit, bool32 randomFactor, bool32 updateFlags);
bool32 MoveHasAdditionalEffectSelfArg(u32 move, u32 moveEffect, u32 argument);
u32 GetMoveSlot(u16 *moves, u32 move);
u32 GetBattlerWeight(u32 battler);
u32 CountBattlerStatIncreases(u32 battler, bool32 countEvasionAcc);
bool32 ShouldGetStatBadgeBoost(u16 flagId, u32 battler);
bool32 IsBattlerWeatherAffected(u32 battler, u32 weatherFlags);
bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId);
bool32 MoveIsAffectedBySheerForce(u32 move);
u8 GetBattlerGender(u32 battler);
bool32 AreBattlersOfOppositeGender(u32 battler1, u32 battler2);
bool32 AreBattlersOfSameGender(u32 battler1, u32 battler2);
u32 GetBattlerHoldEffectParam(u32 battler);
uq4_12_t CalcTypeEffectivenessMultiplier(u32 move, u32 moveType, u32 battlerAtk, u32 battlerDef, u32 defAbility, bool32 recordAbilities);
bool32 MoveHasAdditionalEffectSelf(u32 move, u32 moveEffect);
uq4_12_t GetTypeModifier(u32 atkType, u32 defType);
u8 GetBattlerType(u32 battler, u8 typeIndex);
u32 GetIllusionMonSpecies(u32 battler);
struct Pokemon *GetIllusionMonPtr(u32 battler);
void ClearIllusionMon(u32 battler);
bool32 SetIllusionMon(struct Pokemon *mon, u32 battler);
u32 GetBattlerAffectionHearts(u32 battler);
u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating);
u32 GetBattlerHoldEffectIgnoreAbility(u32 battler, bool32 checkNegating);
u32 GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 checkAbility);
void RecalcBattlerStats(u32 battler, struct Pokemon *mon);
bool32 TestIfSheerForceAffected(u32 battler, u16 move);
bool32 CanSleep(u32 battler);
bool32 CanBePoisoned(u32 battlerAttacker, u32 battlerTarget);
bool32 CanBeBurned(u32 battler);
bool32 CanBeParalyzed(u32 battler);
bool32 CanBeFrozen(u32 battler);
bool32 CanGetFrostbite(u32 battler);
bool32 CanBeConfused(u32 battler);
bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item);
void TrySaveExchangedItem(u32 battler, u16 stolenItem);
void RemoveBattlerType(u32 battler, u8 type);
bool32 IsBattlerMegaEvolved(u32 battler);
bool32 IsBattlerPrimalReverted(u32 battler);
bool32 IsBattlerUltraBursted(u32 battler);
u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method);
bool32 TryBattleFormChange(u32 battler, u16 method);
bool32 TryChangeBattleWeather(u32 battler, u32 weatherEnumId, bool32 viaAbility);
u16 GetUsedHeldItem(u32 battler);
void RemoveConfusionStatus(u32 battler);
bool32 ChangeTypeBasedOnTerrain(u32 battler);
bool32 TryRoomService(u32 battler);
void BufferStatChange(u32 battler, u8 statId, u8 stringId);
s32 GetDrainedBigRootHp(u32 battler, s32 hp);
u8 TryHandleSeed(u32 battler, u32 terrainFlag, u8 statId, u16 itemId, bool32 execute);
bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId);
bool32 IsGen6ExpShareEnabled(void);
void CopyMonLevelAndBaseStatsToBattleMon(u32 battler, struct Pokemon *mon);
void SortBattlersBySpeed(u8 *battlers, bool32 slowToFast);
bool32 CanBattlerEscape(u32 battler); // no ability check
bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes);
bool32 TryPrimalReversion(u32 battler);
s32 GetStealthHazardDamage(u8 hazardType, u32 battler);
s32 GetStealthHazardDamageByTypesAndHP(u8 hazardType, u8 type1, u8 type2, u32 maxHp);
bool32 DoBattlersShareType(u32 battler1, u32 battler2);
bool32 MoveHasChargeTurnAdditionalEffect(u32 move);
bool32 IsPartnerMonFromSameTrainer(u32 battler);
// battle_ai_util.h
bool32 IsHealingMove(u32 move);
void RecordKnownMove(u32 battlerId, u32 move);
s32 CountUsablePartyMons(u32 battlerId);
bool32 IsAiVsAiBattle(void);
void RecordLastUsedMoveBy(u32 battlerId, u32 move);
bool32 BattlerHasAi(u32 battlerId);
void ClearBattlerItemEffectHistory(u32 battlerId);
bool32 IsAffectedByPowder(u32 battler, u32 ability, u32 holdEffect);
void RecordAllMoves(u32 battler);
// end battle_ai_util.h
#endif // GUARD_BATTLE_UTIL_H

View File

@ -3,6 +3,6 @@
#include "global.h"
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
// s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u32 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
#endif // GUARD_CALCULATE_BASE_DAMAGE_H

View File

@ -1,8 +1,6 @@
#ifndef GUARD_CONFIG_H
#define GUARD_CONFIG_H
#include "global.h"
// In the Generation 3 games, Asserts were used in various debug builds.
// Ruby/Sapphire and Emerald do not have these asserts while Fire Red
// still has them in the ROM. This is because the developers forgot

View File

@ -46,10 +46,12 @@
#define B_PRANKSTER_DARK_TYPES GEN_LATEST // In Gen7+, Prankster-elevated status moves do not affect Dark type Pokémon.
#define B_SHEER_COLD_IMMUNITY GEN_LATEST // In Gen7+, Ice-types are immune to Sheer Cold
#define B_ROOST_PURE_FLYING GEN_LATEST // In Gen5+, Roost makes pure Flying-types into Normal-type.
#define B_STATUS_TYPE_IMMUNITY GEN_LATEST // In Gen1, Pokémon were immune to paralysis/freeze/burn side effects of attacking moves, if they shared a type with the move.
// Turn settings
#define B_BINDING_TURNS GEN_LATEST // In Gen5+, binding moves last for 4-5 turns instead of 2-5 turns. (With Grip Claw, 7 and 5 turns respectively.)
#define B_UPROAR_TURNS GEN_LATEST // In Gen5+, Uproar lasts for 3 turns instead of 2-5 turns.
#define B_UPROAR_IGNORE_SOUNDPROOF GEN_LATEST // In Gen5+, Uproar status ignores Soundproof.
#define B_DISABLE_TURNS GEN_LATEST // Disable's turns. See Cmd_disablelastusedattack.
#define B_TAILWIND_TURNS GEN_LATEST // In Gen5+, Tailwind lasts 4 turns instead of 3.
#define B_SLEEP_TURNS GEN_LATEST // In Gen5+, sleep lasts for 1-3 turns instead of 2-5 turns.
@ -60,7 +62,7 @@
#define B_FAINT_SWITCH_IN GEN_LATEST // In Gen4+, sending out a new Pokémon after the previous one fainted happens at the end of the turn. Before, it would happen after each action.
// Move data settings
#define B_UPDATED_MOVE_DATA GEN_LATEST // Updates move data in gBattleMoves, including Power, Accuracy, PP, stat changes, targets and chances of secondary effects.
#define B_UPDATED_MOVE_DATA GEN_LATEST // Updates move data in gMovesInfo, including Power, Accuracy, PP, stat changes, targets and chances of secondary effects.
#define B_UPDATED_MOVE_TYPES GEN_LATEST // Updates move types.
#define B_UPDATED_MOVE_FLAGS GEN_LATEST // Updates move flags.
#define B_PHYSICAL_SPECIAL_SPLIT GEN_LATEST // In Gen3, the move's type determines if it will do physical or special damage. The split icon in the summary will reflect this.
@ -70,6 +72,9 @@
#define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5.
#define B_EXTRAPOLATED_MOVE_FLAGS TRUE // Adds move flags to moves that they don't officially have but would likely have if they were in the latest core series game.
// Ability data settings
#define B_UPDATED_ABILITY_DATA GEN_LATEST // Affects flags
// Move accuracy settings
#define B_TOXIC_NEVER_MISS GEN_LATEST // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss.
#define B_MINIMIZE_DMG_ACC GEN_LATEST // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks.
@ -98,7 +103,7 @@
// Draining abilities will not heal but will prevent damage. In Gen6+, Heal Block prevents the use of most HP-draining moves.
#define B_ROOTED_GROUNDING GEN_LATEST // In Gen4+, Ingrain causes the affected Pokémon to become grounded.
#define B_METRONOME_MOVES GEN_LATEST // This config will determine up to which generation will Metronome pull moves from.
#define B_TELEPORT_BEHAVIOR GEN_LATEST // In Gen7+, starting with Pokémon LGPE, Teleport allows the user to swap out with another party member.
#define B_TELEPORT_BEHAVIOR GEN_LATEST // In LGPE onwards (Gen8+ here), Teleport allows the user to swap out with another party member.
#define B_BEAT_UP GEN_LATEST // In Gen5+, Beat Up uses a different formula to calculate its damage, and deals Dark-type damage. Prior to Gen 5, each hit also announces the party member's name.
#define B_DARK_VOID_FAIL GEN_LATEST // In Gen7+, only Darkrai can use Dark Void.
#define B_BURN_HIT_THAW GEN_LATEST // In Gen6+, damaging moves with a chance of burn will thaw the target, regardless if they're fire-type moves or not.
@ -111,10 +116,11 @@
#define B_WIDE_GUARD GEN_LATEST // In Gen5 only, Wide Guard has a chance to fail if used consecutively.
#define B_QUICK_GUARD GEN_LATEST // In Gen5 only, Quick Guard has a chance to fail if used consecutively.
#define B_IMPRISON GEN_LATEST // In Gen5+, Imprison doesn't fail if opposing pokemon don't have any moves the user knows.
#define B_ALLY_SWITCH_FAIL_CHANCE GEN_LATEST // In Gen9, using Ally Switch consecutively decreases the chance of success for each consecutive use.
#define B_SKETCH_BANS GEN_LATEST // In Gen9+, Sketch is unable to copy more moves than in previous generations.
// Ability settings
#define B_EXPANDED_ABILITY_NAMES FALSE // If TRUE, ability names are increased from 12 characters to 16 characters.
#define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters.
#define B_ABILITY_WEATHER GEN_LATEST // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability.
#define B_GALE_WINGS GEN_LATEST // In Gen7+ requires full HP to trigger.
#define B_STANCE_CHANGE_FAIL GEN_LATEST // In Gen7+, Stance Change fails if the Pokémon is unable to use a move because of confusion, paralysis, etc. In Gen6, it doesn't.
@ -137,6 +143,7 @@
#define B_PROTEAN_LIBERO GEN_LATEST // In Gen9+, Protean and Libero change the user's type only once per Battle.
#define B_INTREPID_SWORD GEN_LATEST // In Gen9+, Intrepid Sword raises Attack by one stage only once per Battle.
#define B_DAUNTLESS_SHIELD GEN_LATEST // In Gen9+, Dauntless Shield raises Defense by one stage only once per Battle.
#define B_DISGUISE_HP_LOSS GEN_LATEST // In Gen8+, when a Disguised Mimikyu's Disguise is busted, upon changing to its Busted Form it loses HP equal to 1/8 of its maximum HP.
// Item settings
#define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore HP activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn.
@ -145,7 +152,7 @@
#define B_X_ITEMS_BUFF GEN_LATEST // In Gen7+, the X Items raise a stat by 2 stages instead of 1.
#define B_MENTAL_HERB GEN_LATEST // In Gen5+, the Mental Herb cures Taunt, Encore, Torment, Heal Block, and Disable in addition to Infatuation from before.
#define B_TRAINERS_KNOCK_OFF_ITEMS TRUE // If TRUE, trainers can steal/swap your items (non-berries are restored after battle). In vanilla games trainers cannot steal items.
#define B_RESTORE_HELD_BATTLE_ITEMS TRUE // In Gen9 all non berry items are restored after battle.
#define B_RESTORE_HELD_BATTLE_ITEMS GEN_LATEST // In Gen9, all non-berry items are restored after battle.
#define B_SOUL_DEW_BOOST GEN_LATEST // In Gens3-6, Soul Dew boosts Latis' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead.
#define B_NET_BALL_MODIFIER GEN_LATEST // In Gen7+, Net Ball's catch multiplier is x5 instead of x3.
#define B_DIVE_BALL_MODIFIER GEN_LATEST // In Gen4+, Dive Ball's effectiveness increases by when Surfing or Fishing.
@ -154,10 +161,11 @@
#define B_TIMER_BALL_MODIFIER GEN_LATEST // In Gen5+, Timer Ball's effectiveness increases by x0.3 per turn instead of x0.1
#define B_DUSK_BALL_MODIFIER GEN_LATEST // In Gen7+, Dusk Ball's catch multiplier is x3 instead of x3.5.
#define B_QUICK_BALL_MODIFIER GEN_LATEST // In Gen5+, Quick Ball's catch multiplier is x5 instead of x4.
#define B_LURE_BALL_MODIFIER GEN_LATEST // In Gen7+, Lure Ball's catch multiplier is x5 instead of x3.
#define B_LURE_BALL_MODIFIER GEN_LATEST // In Gen8+, Lure Ball's catch multiplier is x4. In Gen7, it's x5. In Gen6 and earlier, it's x3.
#define B_HEAVY_BALL_MODIFIER GEN_LATEST // In Gen7+, Heavy Ball's ranges change. See Cmd_handleballthrow.
#define B_DREAM_BALL_MODIFIER GEN_LATEST // In Gen8, Dream Ball's catch multiplier is x4 when the target is asleep or has the ability Comatose.
#define B_SPORT_BALL_MODIFIER GEN_LATEST // In Gen8, Sport Ball's catch multiplier was reduced from x1.5 to x1.
#define B_DREAM_BALL_MODIFIER GEN_LATEST // In Gen8+, Dream Ball's catch multiplier is x4 when the target is asleep or has the ability Comatose.
#define B_SPORT_BALL_MODIFIER GEN_LATEST // In Gen8+, Sport Ball's catch multiplier was reduced from x1.5 to x1.
#define B_SAFARI_BALL_MODIFIER GEN_LATEST // In Gen8+, Safari Ball's catch multiplier was reduced from x1.5 to x1.
#define B_SERENE_GRACE_BOOST GEN_LATEST // In Gen5+, Serene Grace boosts the added flinch chance of King's Rock and Razor Fang.
// Flag settings
@ -173,15 +181,15 @@
// Var Settings
// To use the following features in scripting, replace the 0s with the var ID you're assigning it to.
// Eg: Replace with VAR_UNUSED_0x40F7 so you can use VAR_TERRAIN for that feature.
#define VAR_TERRAIN 0 // If this var has a value, assigning a STATUS_FIELD_xx_TERRAIN to it before battle causes the battle to start with that terrain active
// Eg: Replace with VAR_UNUSED_0x40F7 so you can use B_VAR_STARTING_STATUS for that feature.
#define B_VAR_STARTING_STATUS 0 // If this var has a value, assigning a STATUS_FIELD_xx_TERRAIN to it before battle causes the battle to start with that terrain active.
#define B_VAR_STARTING_STATUS_TIMER 0 // If this var has a value greater or equal than 1 field terrains will last that number of turns, otherwise they will last until they're overwritten.
#define B_VAR_WILD_AI_FLAGS 0 // If not 0, you can use this var to add to default wild AI flags. NOT usable with flags above (1 << 15)
// Sky Battles
#define B_FLAG_SKY_BATTLE 0 // If this flag has a value, the player will be able to engage in scripted Sky Battles.
#define B_VAR_SKY_BATTLE 0 // If this var has a value, the game will remember the positions of Pokémon used in Sky Battles.
#define B_SKY_BATTLE_STRICT_ELIGIBILITY FALSE //If TRUE, Sky Battles will use the eligibility from Pokémon XY. If FALSE, all Flying-types or Pokémon with Levitate are allowed.
#define B_FLAG_SKY_BATTLE 0 // If this flag has a value, the player will be able to engage in scripted Sky Battles.
#define B_VAR_SKY_BATTLE 0 // If this var has a value, the game will remember the positions of Pokémon used in Sky Battles.
#define B_SKY_BATTLE_STRICT_ELIGIBILITY FALSE // If TRUE, Sky Battles will use the eligibility from Pokémon XY. If FALSE, all Flying-types or Pokémon with Levitate are allowed.
// Flag and Var settings
#define B_RESET_FLAGS_VARS_AFTER_WHITEOUT TRUE // If TRUE, Overworld_ResetBattleFlagsAndVars will reset battle-related Flags and Vars when the player whites out.
@ -191,7 +199,7 @@
#define B_THUNDERSTORM_TERRAIN TRUE // If TRUE, overworld Thunderstorm generates Rain and Electric Terrain as in Gen 8.
#define B_FOG_TERRAIN TRUE // If TRUE, overworld Fog generates Misty Terrain as in Gen 8.
#define B_TERRAIN_TYPE_BOOST GEN_LATEST // In Gen8, damage is boosted by 30% instead of 50%.
#define B_SECRET_POWER_EFFECT GEN_LATEST // Secret Power's effects change depending on terrain and generation. See GetSecretPowerMoveEffect.
#define B_SECRET_POWER_EFFECT GEN_LATEST // Secret Power's effects change depending on terrain and generation. See MOVE_EFFECT_SECRET_POWER's case in `SetMoveEffect`.
#define B_SECRET_POWER_ANIMATION GEN_LATEST // Secret Power's animations change depending on terrain and generation.
#define B_NATURE_POWER_MOVES GEN_LATEST // Nature Power calls different moves depending on terrain and generation. See sNaturePowerMoves.
#define B_CAMOUFLAGE_TYPES GEN_LATEST // Camouflage changes the user to different types depending on terrain and generation. See sTerrainToType.
@ -201,7 +209,7 @@
#define B_FAST_INTRO TRUE // If set to TRUE, battle intro texts print at the same time as animation of a Pokémon, as opposing to waiting for the animation to end.
#define B_FAST_HP_DRAIN TRUE // If set to TRUE, HP bars will move faster to accomodate higher max HP amounts.
#define B_SHOW_TARGETS TRUE // If set to TRUE, all available targets, for moves hitting 2 or 3 Pokémon, will be shown before selecting a move.
#define B_SHOW_SPLIT_ICON TRUE // If set to TRUE, it will show an icon in the summary showing the move's category split.
#define B_SHOW_CATEGORY_ICON TRUE // If set to TRUE, it will show an icon in the summary showing the move's category.
#define B_HIDE_HEALTHBOX_IN_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations.
#define B_EXPANDED_MOVE_NAMES FALSE // If set to TRUE, move names are increased from 12 characters to 16 characters.
#define B_WAIT_TIME_MULTIPLIER 16 // This determines how long text pauses in battle last. Vanilla is 16. Lower values result in faster battles.
@ -223,6 +231,7 @@
#define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper)
#define B_AFFECTION_MECHANICS TRUE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead.
#define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class.
#define B_TRAINER_MON_RANDOM_ABILITY FALSE // If this is set to TRUE a random legal ability will be generated for a trainer mon
#define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level
#define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config.
#define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail.

View File

@ -12,7 +12,7 @@
#define P_GEN_4_POKEMON FALSE // Generation 4 Pokémon (DPPt, HGSS)
#define P_GEN_5_POKEMON FALSE // Generation 5 Pokémon (BW, B2W2)
#define P_GEN_6_POKEMON FALSE // Generation 6 Pokémon (XY, ORAS)
#define P_GEN_7_POKEMON FALSE // Generation 7 Pokémon (SM, USUM, LGPE)
#define P_GEN_7_POKEMON TRUE // Generation 7 Pokémon (SM, USUM, LGPE)
#define P_GEN_8_POKEMON FALSE // Generation 8 Pokémon (SwSh, BDSP, LA)
#define P_GEN_9_POKEMON FALSE // Generation 9 Pokémon (SV)

View File

@ -332,10 +332,10 @@
#define ABILITY_EMBODY_ASPECT_CORNERSTONE 304
#define ABILITY_TOXIC_CHAIN 305
#define ABILITY_SUPERSWEET_SYRUP 306
#define ABILITY_307 307
#define ABILITY_308 308
#define ABILITY_309 309
#define ABILITY_310 310
#define ABILITY_TERA_SHIFT 307
#define ABILITY_TERA_SHELL 308
#define ABILITY_TERAFORM_ZERO 309
#define ABILITY_POISON_PUPPETEER 310
#define ABILITIES_COUNT_GEN9 311

View File

@ -31,11 +31,12 @@
#define B_POSITION_OPPONENT_RIGHT 3
// These macros can be used with either battler ID or positions to get the partner or the opposite mon
#define BATTLE_OPPOSITE(id) ((id) ^ 1)
#define BATTLE_PARTNER(id) ((id) ^ 2)
#define BATTLE_OPPOSITE(id) ((id) ^ BIT_SIDE)
#define BATTLE_PARTNER(id) ((id) ^ BIT_FLANK)
#define B_SIDE_PLAYER 0
#define B_SIDE_OPPONENT 1
#define NUM_BATTLE_SIDES 2
#define B_FLANK_LEFT 0
#define B_FLANK_RIGHT 1
@ -65,9 +66,15 @@
#define BATTLE_TYPE_WILD_SCRIPTED (1 << 17) // Used in pokeemerald as BATTLE_TYPE_PALACE.
#define BATTLE_TYPE_LEGENDARY_FRLG (1 << 18) // Used in pokeemerald as BATTLE_TYPE_ARENA.
#define BATTLE_TYPE_TRAINER_TOWER (1 << 19) // Used in pokeemerald as BATTLE_TYPE_FACTORY.
// pokeemerald
#define BATTLE_TYPE_INGAME_PARTNER (1 << 20)
#define BATTLE_TYPE_TOWER_LINK_MULTI (1 << 21)
#define BATTLE_TYPE_TWO_OPPONENTS (1 << 22)
#define IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && !((flags) & BATTLE_TYPE_GHOST_UNVEILED))
#define IS_BATTLE_TYPE_GHOST_WITH_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && (flags) & BATTLE_TYPE_GHOST_UNVEILED)
#define WILD_DOUBLE_BATTLE ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER))))
#define BATTLE_TWO_VS_ONE_OPPONENT ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gTrainerBattleOpponent_B == 0xFFFF))
#define RIVAL_BATTLE_HEAL_AFTER 1
#define RIVAL_BATTLE_TUTORIAL 3
@ -86,7 +93,10 @@
#define B_OUTCOME_LINK_BATTLE_RAN (1 << 7) // 128
// Non-volatile status conditions
// These persist remain outside of battle and after switching out
// These remain outside of battle and after switching out.
// If a new STATUS1 is added here, it should also be added to
// sCompressedStatuses in src/pokemon.c or else it will be lost outside
// of battle.
#define STATUS1_NONE 0
#define STATUS1_SLEEP (1 << 0 | 1 << 1 | 1 << 2) // First 3 bits (Number of turns to sleep)
#define STATUS1_SLEEP_TURN(num) ((num) << 0) // Just for readability (or if rearranging statuses)
@ -108,7 +118,7 @@
#define STATUS2_FLINCHED (1 << 3)
#define STATUS2_UPROAR (1 << 4 | 1 << 5 | 1 << 6)
#define STATUS2_UPROAR_TURN(num) ((num) << 4)
#define STATUS2_UNUSED (1 << 7)
#define STATUS2_TORMENT (1 << 7)
#define STATUS2_BIDE (1 << 8 | 1 << 9)
#define STATUS2_BIDE_TURN(num) (((num) << 8) & STATUS2_BIDE)
#define STATUS2_LOCK_CONFUSE (1 << 10 | 1 << 11) // e.g. Thrash
@ -118,7 +128,7 @@
#define STATUS2_POWDER (1 << 14)
#define STATUS2_INFATUATION (1 << 16 | 1 << 17 | 1 << 18 | 1 << 19) // 4 bits, one for every battler
#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
#define STATUS2_FOCUS_ENERGY (1 << 20)
#define STATUS2_DEFENSE_CURL (1 << 20)
#define STATUS2_TRANSFORMED (1 << 21)
#define STATUS2_RECHARGE (1 << 22)
#define STATUS2_RAGE (1 << 23)
@ -128,10 +138,10 @@
#define STATUS2_NIGHTMARE (1 << 27)
#define STATUS2_CURSED (1 << 28)
#define STATUS2_FORESIGHT (1 << 29)
#define STATUS2_DEFENSE_CURL (1 << 30)
#define STATUS2_TORMENT (1 << 31)
#define STATUS2_DRAGON_CHEER (1 << 30)
#define STATUS2_FOCUS_ENERGY (1 << 31)
#define STATUS2_FOCUS_ENERGY_ANY (STATUS2_DRAGON_CHEER | STATUS2_FOCUS_ENERGY)
// Seems like per-battler statuses. Not quite sure how to categorize these
#define STATUS3_LEECHSEED_BATTLER (1 << 0 | 1 << 1) // The battler to receive HP from Leech Seed
#define STATUS3_LEECHSEED (1 << 2)
#define STATUS3_ALWAYS_HITS (1 << 3 | 1 << 4)
@ -146,7 +156,7 @@
#define STATUS3_YAWN_TURN(num) (((num) << 11) & STATUS3_YAWN)
#define STATUS3_IMPRISONED_OTHERS (1 << 13)
#define STATUS3_GRUDGE (1 << 14)
#define STATUS3_CANT_SCORE_A_CRIT (1 << 15)
#define STATUS3_CANT_SCORE_A_CRIT (1 << 15) // unused?
#define STATUS3_GASTRO_ACID (1 << 16)
#define STATUS3_EMBARGO (1 << 17)
#define STATUS3_UNDERWATER (1 << 18)
@ -175,9 +185,9 @@
// Not really sure what a "hitmarker" is.
#define HITMARKER_WAKE_UP_CLEAR (1 << 4) // Cleared when waking up. Never set or checked.
#define HITMARKER_SKIP_DMG_TRACK (1 << 5)
#define HITMARKER_IGNORE_BIDE (1 << 5)
#define HITMARKER_DESTINYBOND (1 << 6)
#define HITMARKER_NO_ANIMATIONS (1 << 7)
#define HITMARKER_NO_ANIMATIONS (1 << 7) // set from battleSceneOff. Never changed during battle
#define HITMARKER_IGNORE_SUBSTITUTE (1 << 8)
#define HITMARKER_NO_ATTACKSTRING (1 << 9)
#define HITMARKER_ATTACKSTRING_PRINTED (1 << 10)
@ -186,9 +196,9 @@
#define HITMARKER_STATUS_ABILITY_EFFECT (1 << 13)
#define HITMARKER_SYNCHRONISE_EFFECT (1 << 14)
#define HITMARKER_RUN (1 << 15)
#define HITMARKER_IGNORE_ON_AIR (1 << 16)
#define HITMARKER_IGNORE_UNDERGROUND (1 << 17)
#define HITMARKER_IGNORE_UNDERWATER (1 << 18)
#define HITMARKER_IGNORE_DISGUISE (1 << 16)
#define HITMARKER_DISABLE_ANIMATION (1 << 17) // disable animations during battle scripts, e.g. for Bug Bite
// 3 free spots because of change in handling of UNDERGROUND/UNDERWATER/ON AIR
#define HITMARKER_UNABLE_TO_USE_MOVE (1 << 19)
#define HITMARKER_PASSIVE_DAMAGE (1 << 20)
#define HITMARKER_DISOBEDIENT_MOVE (1 << 21)
@ -200,42 +210,108 @@
#define HITMARKER_CHARGING (1 << 27)
#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 28)
#define HITMARKER_FAINTED2(battler) ((1 << 28) << battler)
#define HITMARKER_STRING_PRINTED (1 << 29)
// TODO: old hitmarkers for compatability, remove with new battle system
#define HITMARKER_SKIP_DMG_TRACK (1 << 30)
#define HITMARKER_IGNORE_ON_AIR (1 << 31)
#define HITMARKER_IGNORE_UNDERGROUND (1 << 0)
#define HITMARKER_IGNORE_UNDERWATER (1 << 1)
// Per-side statuses that affect an entire party
#define SIDE_STATUS_REFLECT (1 << 0)
#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
#define SIDE_STATUS_X4 (1 << 2)
#define SIDE_STATUS_SPIKES (1 << 4)
#define SIDE_STATUS_SAFEGUARD (1 << 5)
#define SIDE_STATUS_FUTUREATTACK (1 << 6)
#define SIDE_STATUS_MIST (1 << 8)
#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
#define SIDE_STATUS_REFLECT (1 << 0)
#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
#define SIDE_STATUS_STICKY_WEB (1 << 2)
#define SIDE_STATUS_SPIKES (1 << 4)
#define SIDE_STATUS_SAFEGUARD (1 << 5)
#define SIDE_STATUS_FUTUREATTACK (1 << 6)
#define SIDE_STATUS_MIST (1 << 8)
#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) // TODO: remove with new battle system
// (1 << 9) previously was SIDE_STATUS_SPIKES_DAMAGED
#define SIDE_STATUS_TAILWIND (1 << 10)
#define SIDE_STATUS_AURORA_VEIL (1 << 11)
#define SIDE_STATUS_LUCKY_CHANT (1 << 12)
#define SIDE_STATUS_TOXIC_SPIKES (1 << 13)
#define SIDE_STATUS_STEALTH_ROCK (1 << 14)
// Missing flags previously were SIDE_STATUS_TOXIC_SPIKES_DAMAGED, SIDE_STATUS_STEALTH_ROCK_DAMAGED, SIDE_STATUS_STICKY_WEB_DAMAGED
#define SIDE_STATUS_QUICK_GUARD (1 << 18)
#define SIDE_STATUS_WIDE_GUARD (1 << 19)
#define SIDE_STATUS_CRAFTY_SHIELD (1 << 20)
#define SIDE_STATUS_MAT_BLOCK (1 << 21)
#define SIDE_STATUS_STEELSURGE (1 << 22)
#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 23)
#define SIDE_STATUS_RAINBOW (1 << 24)
#define SIDE_STATUS_SEA_OF_FIRE (1 << 25)
#define SIDE_STATUS_SWAMP (1 << 26)
#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE)
#define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL)
#define SIDE_STATUS_PLEDGE_ANY (SIDE_STATUS_RAINBOW | SIDE_STATUS_SEA_OF_FIRE | SIDE_STATUS_SWAMP)
// Field affecting statuses.
#define STATUS_FIELD_MAGIC_ROOM (1 << 0)
#define STATUS_FIELD_TRICK_ROOM (1 << 1)
#define STATUS_FIELD_WONDER_ROOM (1 << 2)
#define STATUS_FIELD_MUDSPORT (1 << 3)
#define STATUS_FIELD_WATERSPORT (1 << 4)
#define STATUS_FIELD_GRAVITY (1 << 5)
#define STATUS_FIELD_GRASSY_TERRAIN (1 << 6)
#define STATUS_FIELD_MISTY_TERRAIN (1 << 7)
#define STATUS_FIELD_ELECTRIC_TERRAIN (1 << 8)
#define STATUS_FIELD_PSYCHIC_TERRAIN (1 << 9)
#define STATUS_FIELD_ION_DELUGE (1 << 10)
#define STATUS_FIELD_FAIRY_LOCK (1 << 11)
#define STATUS_FIELD_TERRAIN_PERMANENT (1 << 12) // Overworld thunderstorm generates electric terrain
#define STATUS_FIELD_TERRAIN_ANY (STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN)
// Flags describing move's result
#define MOVE_RESULT_MISSED (1 << 0)
#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
#define MOVE_RESULT_FAILED (1 << 5)
#define MOVE_RESULT_FOE_ENDURED (1 << 6)
#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
#define MOVE_RESULT_MISSED (1 << 0)
#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
#define MOVE_RESULT_FAILED (1 << 5)
#define MOVE_RESULT_FOE_ENDURED (1 << 6)
#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
#define MOVE_RESULT_STURDIED (1 << 8)
#define MOVE_RESULT_FOE_ENDURED_AFFECTION (1 << 9)
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
// Battle Weather flags
#define B_WEATHER_NONE 0
#define B_WEATHER_RAIN_TEMPORARY (1 << 0)
#define B_WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
#define B_WEATHER_RAIN_PERMANENT (1 << 2)
#define B_WEATHER_RAIN (B_WEATHER_RAIN_TEMPORARY | B_WEATHER_RAIN_DOWNPOUR | B_WEATHER_RAIN_PERMANENT)
#define B_WEATHER_SANDSTORM_TEMPORARY (1 << 3)
#define B_WEATHER_SANDSTORM_PERMANENT (1 << 4)
#define B_WEATHER_RAIN_PRIMAL (1 << 3)
#define B_WEATHER_RAIN (B_WEATHER_RAIN_TEMPORARY | B_WEATHER_RAIN_DOWNPOUR | B_WEATHER_RAIN_PERMANENT | B_WEATHER_RAIN_PRIMAL)
#define B_WEATHER_SANDSTORM_TEMPORARY (1 << 4)
#define B_WEATHER_SANDSTORM_PERMANENT (1 << 5)
#define B_WEATHER_SANDSTORM (B_WEATHER_SANDSTORM_TEMPORARY | B_WEATHER_SANDSTORM_PERMANENT)
#define B_WEATHER_SUN_TEMPORARY (1 << 5)
#define B_WEATHER_SUN_PERMANENT (1 << 6)
#define B_WEATHER_SUN (B_WEATHER_SUN_TEMPORARY | B_WEATHER_SUN_PERMANENT)
#define B_WEATHER_HAIL_TEMPORARY (1 << 7)
#define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY)
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL)
#define B_WEATHER_SUN_TEMPORARY (1 << 6)
#define B_WEATHER_SUN_PERMANENT (1 << 7)
#define B_WEATHER_SUN_PRIMAL (1 << 8)
#define B_WEATHER_SUN (B_WEATHER_SUN_TEMPORARY | B_WEATHER_SUN_PERMANENT | B_WEATHER_SUN_PRIMAL)
#define B_WEATHER_HAIL_TEMPORARY (1 << 9)
#define B_WEATHER_HAIL_PERMANENT (1 << 10)
#define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY | B_WEATHER_HAIL_PERMANENT)
#define B_WEATHER_STRONG_WINDS (1 << 11)
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS | B_WEATHER_SNOW)
#define B_WEATHER_PRIMAL_ANY (B_WEATHER_RAIN_PRIMAL | B_WEATHER_SUN_PRIMAL | B_WEATHER_STRONG_WINDS)
#define B_WEATHER_SNOW_TEMPORARY (1 << 12)
#define B_WEATHER_SNOW_PERMANENT (1 << 13)
#define B_WEATHER_SNOW (B_WEATHER_SNOW_TEMPORARY | B_WEATHER_SNOW_PERMANENT)
// Battle Weather as enum
#define ENUM_WEATHER_NONE 0
#define ENUM_WEATHER_RAIN 1
#define ENUM_WEATHER_SUN 2
#define ENUM_WEATHER_SANDSTORM 3
#define ENUM_WEATHER_HAIL 4
#define ENUM_WEATHER_SUN_PRIMAL 5
#define ENUM_WEATHER_RAIN_PRIMAL 6
#define ENUM_WEATHER_STRONG_WINDS 7
#define ENUM_WEATHER_SNOW 8
// Move Effects
#define MOVE_EFFECT_SLEEP 1
@ -244,15 +320,16 @@
#define MOVE_EFFECT_FREEZE 4
#define MOVE_EFFECT_PARALYSIS 5
#define MOVE_EFFECT_TOXIC 6
#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_TOXIC // All above move effects apply primary status
#define MOVE_EFFECT_CONFUSION 7
#define MOVE_EFFECT_FLINCH 8
#define MOVE_EFFECT_TRI_ATTACK 9
#define MOVE_EFFECT_UPROAR 10
#define MOVE_EFFECT_PAYDAY 11
#define MOVE_EFFECT_CHARGING 12
#define MOVE_EFFECT_WRAP 13
#define MOVE_EFFECT_RECOIL_25 14
#define MOVE_EFFECT_FROSTBITE 7
#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_FROSTBITE // All above move effects apply primary status
#define MOVE_EFFECT_FREEZE_OR_FROSTBITE (B_USE_FROSTBITE == TRUE ? MOVE_EFFECT_FROSTBITE : MOVE_EFFECT_FREEZE)
#define MOVE_EFFECT_CONFUSION 8
#define MOVE_EFFECT_FLINCH 9
#define MOVE_EFFECT_TRI_ATTACK 10
#define MOVE_EFFECT_UPROAR 11
#define MOVE_EFFECT_PAYDAY 12
#define MOVE_EFFECT_CHARGING 13
#define MOVE_EFFECT_WRAP 14
#define MOVE_EFFECT_ATK_PLUS_1 15
#define MOVE_EFFECT_DEF_PLUS_1 16
#define MOVE_EFFECT_SPD_PLUS_1 17
@ -267,16 +344,16 @@
#define MOVE_EFFECT_SP_DEF_MINUS_1 26
#define MOVE_EFFECT_ACC_MINUS_1 27
#define MOVE_EFFECT_EVS_MINUS_1 28
#define MOVE_EFFECT_RECHARGE 29
#define MOVE_EFFECT_RAGE 30
#define MOVE_EFFECT_STEAL_ITEM 31
#define MOVE_EFFECT_PREVENT_ESCAPE 32
#define MOVE_EFFECT_NIGHTMARE 33
#define MOVE_EFFECT_ALL_STATS_UP 34
#define MOVE_EFFECT_RAPIDSPIN 35
#define MOVE_EFFECT_REMOVE_PARALYSIS 36
#define MOVE_EFFECT_ATK_DEF_DOWN 37
#define MOVE_EFFECT_RECOIL_33 38
#define MOVE_EFFECT_REMOVE_ARG_TYPE 29
#define MOVE_EFFECT_RECHARGE 30
#define MOVE_EFFECT_RAGE 31
#define MOVE_EFFECT_STEAL_ITEM 32
#define MOVE_EFFECT_PREVENT_ESCAPE 33
#define MOVE_EFFECT_NIGHTMARE 34
#define MOVE_EFFECT_ALL_STATS_UP 35
#define MOVE_EFFECT_RAPID_SPIN 36
#define MOVE_EFFECT_REMOVE_STATUS 37
#define MOVE_EFFECT_ATK_DEF_DOWN 38
#define MOVE_EFFECT_ATK_PLUS_2 39
#define MOVE_EFFECT_DEF_PLUS_2 40
#define MOVE_EFFECT_SPD_PLUS_2 41
@ -291,43 +368,86 @@
#define MOVE_EFFECT_SP_DEF_MINUS_2 50
#define MOVE_EFFECT_ACC_MINUS_2 51
#define MOVE_EFFECT_EVS_MINUS_2 52
#define MOVE_EFFECT_THRASH 53
#define MOVE_EFFECT_KNOCK_OFF 54
#define MOVE_EFFECT_NOTHING_37 55
#define MOVE_EFFECT_NOTHING_38 56
#define MOVE_EFFECT_NOTHING_39 57
#define MOVE_EFFECT_NOTHING_3A 58
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 59
#define NUM_MOVE_EFFECTS 60
#define MOVE_EFFECT_SCALE_SHOT 53
#define MOVE_EFFECT_THRASH 54
#define MOVE_EFFECT_KNOCK_OFF 55
#define MOVE_EFFECT_DEF_SPDEF_DOWN 56
#define MOVE_EFFECT_CLEAR_SMOG 57
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 58
#define MOVE_EFFECT_SMACK_DOWN 59
#define MOVE_EFFECT_FLAME_BURST 60
#define MOVE_EFFECT_FEINT 61
#define MOVE_EFFECT_SPECTRAL_THIEF 62
#define MOVE_EFFECT_V_CREATE 63
#define MOVE_EFFECT_HAPPY_HOUR 64
#define MOVE_EFFECT_CORE_ENFORCER 65
#define MOVE_EFFECT_THROAT_CHOP 66
#define MOVE_EFFECT_INCINERATE 67
#define MOVE_EFFECT_BUG_BITE 68
#define MOVE_EFFECT_RECOIL_HP_25 69
#define MOVE_EFFECT_TRAP_BOTH 70
#define MOVE_EFFECT_ROUND 71
#define MOVE_EFFECT_STOCKPILE_WORE_OFF 72
#define MOVE_EFFECT_DIRE_CLAW 73
#define MOVE_EFFECT_STEALTH_ROCK 74
#define MOVE_EFFECT_SPIKES 75
#define MOVE_EFFECT_SYRUP_BOMB 76
#define MOVE_EFFECT_FLORAL_HEALING 77
#define MOVE_EFFECT_SECRET_POWER 78
#define MOVE_EFFECT_PSYCHIC_NOISE 79
// TODO: old pokefirered move effects, remove with new battle system
#define MOVE_EFFECT_RECOIL_25 80
#define MOVE_EFFECT_RAPIDSPIN 81
#define MOVE_EFFECT_REMOVE_PARALYSIS 82
#define MOVE_EFFECT_RECOIL_33 83
#define MOVE_EFFECT_AFFECTS_USER (1 << 6) // 64
#define MOVE_EFFECT_CERTAIN (1 << 7) // 128
#define NUM_MOVE_EFFECTS 84
#define MOVE_EFFECT_AFFECTS_USER 0x2000
#define MOVE_EFFECT_CERTAIN 0x4000
#define MOVE_EFFECT_CONTINUE 0x8000
// Battle terrain defines for gBattleTerrain.
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
#define BATTLE_TERRAIN_LINK 10
#define BATTLE_TERRAIN_GYM 11
#define BATTLE_TERRAIN_LEADER 12
#define BATTLE_TERRAIN_INDOOR_2 13
#define BATTLE_TERRAIN_INDOOR_1 14
#define BATTLE_TERRAIN_LORELEI 15
#define BATTLE_TERRAIN_BRUNO 16
#define BATTLE_TERRAIN_AGATHA 17
#define BATTLE_TERRAIN_LANCE 18
#define BATTLE_TERRAIN_CHAMPION 19
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
// New battle terrains are used for Secret Power but not fully implemented.
#define BATTLE_TERRAIN_SOARING 10
#define BATTLE_TERRAIN_SKY_PILLAR 11
#define BATTLE_TERRAIN_BURIAL_GROUND 12
#define BATTLE_TERRAIN_PUDDLE 13
#define BATTLE_TERRAIN_MARSH 14
#define BATTLE_TERRAIN_SWAMP 15
#define BATTLE_TERRAIN_SNOW 16
#define BATTLE_TERRAIN_ICE 17
#define BATTLE_TERRAIN_VOLCANO 18
#define BATTLE_TERRAIN_DISTORTION_WORLD 19
#define BATTLE_TERRAIN_SPACE 20
#define BATTLE_TERRAIN_ULTRA_SPACE 21
#define BATTLE_TERRAIN_LINK 22
#define BATTLE_TERRAIN_GYM 23
#define BATTLE_TERRAIN_LEADER 24
#define BATTLE_TERRAIN_INDOOR_2 25
#define BATTLE_TERRAIN_INDOOR_1 26
#define BATTLE_TERRAIN_LORELEI 27
#define BATTLE_TERRAIN_BRUNO 28
#define BATTLE_TERRAIN_AGATHA 29
#define BATTLE_TERRAIN_LANCE 30
#define BATTLE_TERRAIN_CHAMPION 31
#define B_WAIT_TIME_LONG 64
#define B_WAIT_TIME_MED 48
#define B_WAIT_TIME_SHORT 32
#define BATTLE_TERRAIN_COUNT 32
#define B_WAIT_TIME_LONG 64
#define B_WAIT_TIME_MED 48
#define B_WAIT_TIME_SHORT 32
#define B_WAIT_TIME_SHORTEST 16
#define CASTFORM_NORMAL 0
#define CASTFORM_FIRE 1
@ -377,4 +497,44 @@
// Indicator for the party summary bar to display an empty slot.
#define HP_EMPTY_SLOT 0xFFFF
#define MOVE_TARGET_SELECTED 0
#define MOVE_TARGET_DEPENDS (1 << 0)
#define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
#define MOVE_TARGET_RANDOM (1 << 2)
#define MOVE_TARGET_BOTH (1 << 3)
#define MOVE_TARGET_USER (1 << 4)
#define MOVE_TARGET_FOES_AND_ALLY (1 << 5)
#define MOVE_TARGET_OPPONENTS_FIELD (1 << 6)
#define MOVE_TARGET_ALLY (1 << 7)
#define MOVE_TARGET_ALL_BATTLERS ((1 << 8) | MOVE_TARGET_USER)
// For the second argument of GetMoveTarget, when no target override is needed
#define NO_TARGET_OVERRIDE 0
// Constants for Parental Bond
#define PARENTAL_BOND_1ST_HIT 2
#define PARENTAL_BOND_2ND_HIT 1
#define PARENTAL_BOND_OFF 0
// Constants for if HandleScriptMegaPrimalBurst should handle Mega Evolution, Primal Reversion, or Ultra Burst.
#define HANDLE_TYPE_MEGA_EVOLUTION 0
#define HANDLE_TYPE_PRIMAL_REVERSION 1
#define HANDLE_TYPE_ULTRA_BURST 2
// Constants for Torment
#define PERMANENT_TORMENT 0xF
// Constants for B_VAR_STARTING_STATUS
// Timer value controlled by B_VAR_STARTING_STATUS_TIMER
#define STARTING_STATUS_NONE 0
#define STARTING_STATUS_ELECTRIC_TERRAIN 1
#define STARTING_STATUS_MISTY_TERRAIN 2
#define STARTING_STATUS_GRASSY_TERRAIN 3
#define STARTING_STATUS_PSYCHIC_TERRAIN 4
#define STARTING_STATUS_TRICK_ROOM 5
#define STARTING_STATUS_MAGIC_ROOM 6
#define STARTING_STATUS_WONDER_ROOM 7
#define STARTING_STATUS_TAILWIND_PLAYER 8
#define STARTING_STATUS_TAILWIND_OPPONENT 9
#endif // GUARD_CONSTANTS_BATTLE_H

View File

@ -303,6 +303,13 @@
#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_OPPONENT_LEFT (MAX_BATTLERS_COUNT + 1)
#define ANIM_PLAYER_RIGHT (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]
//
// 0
@ -347,7 +354,7 @@
#define BG_SOLAR_BEAM_CONTESTS 26
// table ids for general animations (gBattleAnims_General)
#define B_ANIM_CASTFORM_CHANGE 0
#define B_ANIM_FORM_CHANGE 0
#define B_ANIM_STATS_CHANGE 1
#define B_ANIM_SUBSTITUTE_FADE 2
#define B_ANIM_SUBSTITUTE_APPEAR 3
@ -356,7 +363,7 @@
#define B_ANIM_TURN_TRAP 6
#define B_ANIM_HELD_ITEM_EFFECT 7
#define B_ANIM_SMOKEBALL_ESCAPE 8
#define B_ANIM_FOCUS_BAND 9
#define B_ANIM_HANGED_ON 9
#define B_ANIM_RAIN_CONTINUES 10
#define B_ANIM_SUN_CONTINUES 11
#define B_ANIM_SANDSTORM_CONTINUES 12
@ -375,6 +382,8 @@
#define B_ANIM_SILPH_SCOPED 25
#define B_ANIM_ROCK_THROW 26
#define B_ANIM_SAFARI_REACTION 27
#define B_ANIM_RESTORE_BG 28 // for Terrain Endings
#define B_ANIM_SLIDE_OFFSCREEN 29 // for Emergency Exit
// special animations table (gBattleAnims_Special)
#define B_ANIM_LVL_UP 0

View File

@ -1,219 +1,476 @@
#ifndef GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
#define GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
#define EFFECT_HIT 0
#define EFFECT_SLEEP 1
#define EFFECT_POISON_HIT 2
#define EFFECT_ABSORB 3
#define EFFECT_BURN_HIT 4
#define EFFECT_FREEZE_HIT 5
#define EFFECT_PARALYZE_HIT 6
#define EFFECT_EXPLOSION 7
#define EFFECT_DREAM_EATER 8
#define EFFECT_MIRROR_MOVE 9
#define EFFECT_ATTACK_UP 10
#define EFFECT_DEFENSE_UP 11
#define EFFECT_SPEED_UP 12
#define EFFECT_SPECIAL_ATTACK_UP 13
#define EFFECT_SPECIAL_DEFENSE_UP 14
#define EFFECT_ACCURACY_UP 15
#define EFFECT_EVASION_UP 16
#define EFFECT_ALWAYS_HIT 17
#define EFFECT_ATTACK_DOWN 18
#define EFFECT_DEFENSE_DOWN 19
#define EFFECT_SPEED_DOWN 20
#define EFFECT_SPECIAL_ATTACK_DOWN 21 // unused
#define EFFECT_SPECIAL_DEFENSE_DOWN 22 // unused
#define EFFECT_ACCURACY_DOWN 23
#define EFFECT_EVASION_DOWN 24
#define EFFECT_HAZE 25
#define EFFECT_BIDE 26
#define EFFECT_RAMPAGE 27
#define EFFECT_ROAR 28
#define EFFECT_MULTI_HIT 29
#define EFFECT_CONVERSION 30
#define EFFECT_FLINCH_HIT 31
#define EFFECT_RESTORE_HP 32
#define EFFECT_TOXIC 33
#define EFFECT_PAY_DAY 34
#define EFFECT_LIGHT_SCREEN 35
#define EFFECT_TRI_ATTACK 36
#define EFFECT_REST 37
#define EFFECT_OHKO 38
#define EFFECT_RAZOR_WIND 39
#define EFFECT_SUPER_FANG 40
#define EFFECT_DRAGON_RAGE 41
#define EFFECT_TRAP 42
#define EFFECT_HIGH_CRITICAL 43
#define EFFECT_DOUBLE_HIT 44
#define EFFECT_RECOIL_IF_MISS 45
#define EFFECT_MIST 46
#define EFFECT_FOCUS_ENERGY 47
#define EFFECT_RECOIL 48
#define EFFECT_CONFUSE 49
#define EFFECT_ATTACK_UP_2 50
#define EFFECT_DEFENSE_UP_2 51
#define EFFECT_SPEED_UP_2 52
#define EFFECT_SPECIAL_ATTACK_UP_2 53
#define EFFECT_SPECIAL_DEFENSE_UP_2 54
#define EFFECT_ACCURACY_UP_2 55
#define EFFECT_EVASION_UP_2 56
#define EFFECT_TRANSFORM 57
#define EFFECT_ATTACK_DOWN_2 58
#define EFFECT_DEFENSE_DOWN_2 59
#define EFFECT_SPEED_DOWN_2 60
#define EFFECT_SPECIAL_ATTACK_DOWN_2 61
#define EFFECT_SPECIAL_DEFENSE_DOWN_2 62
#define EFFECT_ACCURACY_DOWN_2 63
#define EFFECT_EVASION_DOWN_2 64
#define EFFECT_REFLECT 65
#define EFFECT_POISON 66
#define EFFECT_PARALYZE 67
#define EFFECT_ATTACK_DOWN_HIT 68
#define EFFECT_DEFENSE_DOWN_HIT 69
#define EFFECT_SPEED_DOWN_HIT 70
#define EFFECT_SPECIAL_ATTACK_DOWN_HIT 71
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT 72
#define EFFECT_ACCURACY_DOWN_HIT 73
#define EFFECT_EVASION_DOWN_HIT 74
#define EFFECT_SKY_ATTACK 75
#define EFFECT_CONFUSE_HIT 76
#define EFFECT_TWINEEDLE 77
#define EFFECT_VITAL_THROW 78
#define EFFECT_SUBSTITUTE 79
#define EFFECT_RECHARGE 80
#define EFFECT_RAGE 81
#define EFFECT_MIMIC 82
#define EFFECT_METRONOME 83
#define EFFECT_LEECH_SEED 84
#define EFFECT_SPLASH 85
#define EFFECT_DISABLE 86
#define EFFECT_LEVEL_DAMAGE 87
#define EFFECT_PSYWAVE 88
#define EFFECT_COUNTER 89
#define EFFECT_ENCORE 90
#define EFFECT_PAIN_SPLIT 91
#define EFFECT_SNORE 92
#define EFFECT_CONVERSION_2 93
#define EFFECT_LOCK_ON 94
#define EFFECT_SKETCH 95
#define EFFECT_UNUSED_60 96 // thaw
#define EFFECT_SLEEP_TALK 97
#define EFFECT_DESTINY_BOND 98
#define EFFECT_FLAIL 99
#define EFFECT_SPITE 100
#define EFFECT_FALSE_SWIPE 101
#define EFFECT_HEAL_BELL 102
#define EFFECT_QUICK_ATTACK 103
#define EFFECT_TRIPLE_KICK 104
#define EFFECT_THIEF 105
#define EFFECT_MEAN_LOOK 106
#define EFFECT_NIGHTMARE 107
#define EFFECT_MINIMIZE 108
#define EFFECT_CURSE 109
#define EFFECT_UNUSED_6E 110
#define EFFECT_PROTECT 111
#define EFFECT_SPIKES 112
#define EFFECT_FORESIGHT 113
#define EFFECT_PERISH_SONG 114
#define EFFECT_SANDSTORM 115
#define EFFECT_ENDURE 116
#define EFFECT_ROLLOUT 117
#define EFFECT_SWAGGER 118
#define EFFECT_FURY_CUTTER 119
#define EFFECT_ATTRACT 120
#define EFFECT_RETURN 121
#define EFFECT_PRESENT 122
#define EFFECT_FRUSTRATION 123
#define EFFECT_SAFEGUARD 124
#define EFFECT_THAW_HIT 125
#define EFFECT_MAGNITUDE 126
#define EFFECT_BATON_PASS 127
#define EFFECT_PURSUIT 128
#define EFFECT_RAPID_SPIN 129
#define EFFECT_SONICBOOM 130
#define EFFECT_UNUSED_83 131
#define EFFECT_MORNING_SUN 132
#define EFFECT_SYNTHESIS 133
#define EFFECT_MOONLIGHT 134
#define EFFECT_HIDDEN_POWER 135
#define EFFECT_RAIN_DANCE 136
#define EFFECT_SUNNY_DAY 137
#define EFFECT_DEFENSE_UP_HIT 138
#define EFFECT_ATTACK_UP_HIT 139
#define EFFECT_ALL_STATS_UP_HIT 140
#define EFFECT_UNUSED_8D 141 // incomplete fake out in gen 2
#define EFFECT_BELLY_DRUM 142
#define EFFECT_PSYCH_UP 143
#define EFFECT_MIRROR_COAT 144
#define EFFECT_SKULL_BASH 145
#define EFFECT_TWISTER 146
#define EFFECT_EARTHQUAKE 147
#define EFFECT_FUTURE_SIGHT 148
#define EFFECT_GUST 149
#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_SOLAR_BEAM 151
#define EFFECT_THUNDER 152
#define EFFECT_TELEPORT 153
#define EFFECT_BEAT_UP 154
#define EFFECT_SEMI_INVULNERABLE 155
#define EFFECT_DEFENSE_CURL 156
#define EFFECT_SOFTBOILED 157
#define EFFECT_FAKE_OUT 158
#define EFFECT_UPROAR 159
#define EFFECT_STOCKPILE 160
#define EFFECT_SPIT_UP 161
#define EFFECT_SWALLOW 162
#define EFFECT_UNUSED_A3 163
#define EFFECT_HAIL 164
#define EFFECT_TORMENT 165
#define EFFECT_FLATTER 166
#define EFFECT_WILL_O_WISP 167
#define EFFECT_MEMENTO 168
#define EFFECT_FACADE 169
#define EFFECT_FOCUS_PUNCH 170
#define EFFECT_SMELLINGSALT 171
#define EFFECT_FOLLOW_ME 172
#define EFFECT_NATURE_POWER 173
#define EFFECT_CHARGE 174
#define EFFECT_TAUNT 175
#define EFFECT_HELPING_HAND 176
#define EFFECT_TRICK 177
#define EFFECT_ROLE_PLAY 178
#define EFFECT_WISH 179
#define EFFECT_ASSIST 180
#define EFFECT_INGRAIN 181
#define EFFECT_SUPERPOWER 182
#define EFFECT_MAGIC_COAT 183
#define EFFECT_RECYCLE 184
#define EFFECT_REVENGE 185
#define EFFECT_BRICK_BREAK 186
#define EFFECT_YAWN 187
#define EFFECT_KNOCK_OFF 188
#define EFFECT_ENDEAVOR 189
#define EFFECT_ERUPTION 190
#define EFFECT_SKILL_SWAP 191
#define EFFECT_IMPRISON 192
#define EFFECT_REFRESH 193
#define EFFECT_GRUDGE 194
#define EFFECT_SNATCH 195
#define EFFECT_LOW_KICK 196
#define EFFECT_SECRET_POWER 197
#define EFFECT_DOUBLE_EDGE 198
#define EFFECT_TEETER_DANCE 199
#define EFFECT_BLAZE_KICK 200
#define EFFECT_MUD_SPORT 201
#define EFFECT_POISON_FANG 202
#define EFFECT_WEATHER_BALL 203
#define EFFECT_OVERHEAT 204
#define EFFECT_TICKLE 205
#define EFFECT_COSMIC_POWER 206
#define EFFECT_SKY_UPPERCUT 207
#define EFFECT_BULK_UP 208
#define EFFECT_POISON_TAIL 209
#define EFFECT_WATER_SPORT 210
#define EFFECT_CALM_MIND 211
#define EFFECT_DRAGON_DANCE 212
#define EFFECT_CAMOUFLAGE 213
#define EFFECT_PLACEHOLDER 0
#define EFFECT_HIT 1
#define EFFECT_SLEEP 2
#define EFFECT_ABSORB 3
#define EFFECT_EXPLOSION 4
#define EFFECT_DREAM_EATER 5
#define EFFECT_MIRROR_MOVE 6
#define EFFECT_ATTACK_UP 7
#define EFFECT_DEFENSE_UP 8
#define EFFECT_SPEED_UP 9
#define EFFECT_SPECIAL_ATTACK_UP 10
#define EFFECT_SPECIAL_DEFENSE_UP 11
#define EFFECT_ACCURACY_UP 12
#define EFFECT_EVASION_UP 13
#define EFFECT_SPECIAL_ATTACK_UP_3 14
#define EFFECT_ATTACK_DOWN 15
#define EFFECT_DEFENSE_DOWN 16
#define EFFECT_SPEED_DOWN 17
#define EFFECT_SPECIAL_ATTACK_DOWN 18
#define EFFECT_SPECIAL_DEFENSE_DOWN 19
#define EFFECT_ACCURACY_DOWN 20
#define EFFECT_EVASION_DOWN 21
#define EFFECT_HAZE 22
#define EFFECT_BIDE 23
#define EFFECT_ROAR 24
#define EFFECT_MULTI_HIT 25
#define EFFECT_CONVERSION 26
#define EFFECT_RESTORE_HP 27
#define EFFECT_TOXIC 28
#define EFFECT_LIGHT_SCREEN 29
#define EFFECT_REST 30
#define EFFECT_OHKO 31
#define EFFECT_FUSION_COMBO 32
#define EFFECT_SUPER_FANG 33
#define EFFECT_FIXED_DAMAGE_ARG 34
#define EFFECT_HEAL_BLOCK 35
#define EFFECT_RECOIL_IF_MISS 36
#define EFFECT_MIST 37
#define EFFECT_FOCUS_ENERGY 38
#define EFFECT_CONFUSE 39
#define EFFECT_ATTACK_UP_2 40
#define EFFECT_DEFENSE_UP_2 41
#define EFFECT_SPEED_UP_2 42
#define EFFECT_SPECIAL_ATTACK_UP_2 43
#define EFFECT_SPECIAL_DEFENSE_UP_2 44
#define EFFECT_ACCURACY_UP_2 45
#define EFFECT_EVASION_UP_2 46
#define EFFECT_TRANSFORM 47
#define EFFECT_ATTACK_DOWN_2 48
#define EFFECT_DEFENSE_DOWN_2 49
#define EFFECT_SPEED_DOWN_2 50
#define EFFECT_SPECIAL_ATTACK_DOWN_2 51
#define EFFECT_SPECIAL_DEFENSE_DOWN_2 52
#define EFFECT_ACCURACY_DOWN_2 53
#define EFFECT_EVASION_DOWN_2 54
#define EFFECT_REFLECT 55
#define EFFECT_POISON 56
#define EFFECT_PARALYZE 57
#define EFFECT_TWO_TURNS_ATTACK 58
#define EFFECT_SUBSTITUTE 59
#define EFFECT_RAGE 60
#define EFFECT_MIMIC 61
#define EFFECT_METRONOME 62
#define EFFECT_LEECH_SEED 63
#define EFFECT_DO_NOTHING 64
#define EFFECT_DISABLE 65
#define EFFECT_LEVEL_DAMAGE 66
#define EFFECT_PSYWAVE 67
#define EFFECT_COUNTER 68
#define EFFECT_ENCORE 69
#define EFFECT_PAIN_SPLIT 70
#define EFFECT_SNORE 71
#define EFFECT_CONVERSION_2 72
#define EFFECT_LOCK_ON 73
#define EFFECT_SKETCH 74
#define EFFECT_SLEEP_TALK 75
#define EFFECT_DESTINY_BOND 76
#define EFFECT_FLAIL 77
#define EFFECT_SPITE 78
#define EFFECT_FALSE_SWIPE 79
#define EFFECT_HEAL_BELL 80
#define EFFECT_TRIPLE_KICK 81
#define EFFECT_MEAN_LOOK 82
#define EFFECT_NIGHTMARE 83
#define EFFECT_MINIMIZE 84
#define EFFECT_CURSE 85
#define EFFECT_HEALING_WISH 86
#define EFFECT_PROTECT 87
#define EFFECT_SPIKES 88
#define EFFECT_FORESIGHT 89
#define EFFECT_PERISH_SONG 90
#define EFFECT_SANDSTORM 91
#define EFFECT_ENDURE 92
#define EFFECT_ROLLOUT 93
#define EFFECT_SWAGGER 94
#define EFFECT_FURY_CUTTER 95
#define EFFECT_ATTRACT 96
#define EFFECT_RETURN 97
#define EFFECT_PRESENT 98
#define EFFECT_FRUSTRATION 99
#define EFFECT_SAFEGUARD 100
#define EFFECT_MAGNITUDE 101
#define EFFECT_BATON_PASS 102
#define EFFECT_PURSUIT 103
#define EFFECT_CAPTIVATE 104
#define EFFECT_MORNING_SUN 105
#define EFFECT_SYNTHESIS 106
#define EFFECT_MOONLIGHT 107
#define EFFECT_HIDDEN_POWER 108
#define EFFECT_RAIN_DANCE 109
#define EFFECT_SUNNY_DAY 110
#define EFFECT_FELL_STINGER 111
#define EFFECT_BELLY_DRUM 112
#define EFFECT_PSYCH_UP 113
#define EFFECT_MIRROR_COAT 114
#define EFFECT_EARTHQUAKE 115
#define EFFECT_FUTURE_SIGHT 116
#define EFFECT_SOLAR_BEAM 117
#define EFFECT_THUNDER 118
#define EFFECT_TELEPORT 119
#define EFFECT_BEAT_UP 120
#define EFFECT_SEMI_INVULNERABLE 121
#define EFFECT_DEFENSE_CURL 122
#define EFFECT_SOFTBOILED 123 // differences vs Recover - can be used outside of battle to restore HP
#define EFFECT_FIRST_TURN_ONLY 124
#define EFFECT_UPROAR 125
#define EFFECT_STOCKPILE 126
#define EFFECT_SPIT_UP 127
#define EFFECT_SWALLOW 128
#define EFFECT_WORRY_SEED 129
#define EFFECT_HAIL 130
#define EFFECT_TORMENT 131
#define EFFECT_FLATTER 132
#define EFFECT_WILL_O_WISP 133
#define EFFECT_MEMENTO 134
#define EFFECT_FACADE 135
#define EFFECT_FOCUS_PUNCH 136
#define EFFECT_DOUBLE_POWER_ON_ARG_STATUS 137
#define EFFECT_FOLLOW_ME 138
#define EFFECT_NATURE_POWER 139
#define EFFECT_CHARGE 140
#define EFFECT_TAUNT 141
#define EFFECT_HELPING_HAND 142
#define EFFECT_TRICK 143
#define EFFECT_ROLE_PLAY 144
#define EFFECT_WISH 145
#define EFFECT_ASSIST 146
#define EFFECT_INGRAIN 147
#define EFFECT_MAGIC_COAT 148
#define EFFECT_RECYCLE 149
#define EFFECT_REVENGE 150
#define EFFECT_BRICK_BREAK 151
#define EFFECT_YAWN 152
#define EFFECT_KNOCK_OFF 153
#define EFFECT_ENDEAVOR 154
#define EFFECT_ERUPTION 155
#define EFFECT_SKILL_SWAP 156
#define EFFECT_IMPRISON 157
#define EFFECT_REFRESH 158
#define EFFECT_GRUDGE 159
#define EFFECT_SNATCH 160
#define EFFECT_LOW_KICK 161
#define EFFECT_HIT_ESCAPE 162
#define EFFECT_MUD_SPORT 163
#define EFFECT_WEATHER_BALL 164
#define EFFECT_TICKLE 165
#define EFFECT_COSMIC_POWER 166
#define EFFECT_BULK_UP 167
#define EFFECT_WATER_SPORT 168
#define EFFECT_CALM_MIND 169
#define EFFECT_DRAGON_DANCE 170
#define EFFECT_CAMOUFLAGE 171
#define EFFECT_PLEDGE 172
#define EFFECT_FLING 173
#define EFFECT_NATURAL_GIFT 174
#define EFFECT_VARY_POWER_BASED_ON_HP 175
#define EFFECT_ASSURANCE 176
#define EFFECT_TRUMP_CARD 177
#define EFFECT_ACROBATICS 178
#define EFFECT_HEAT_CRASH 179
#define EFFECT_PUNISHMENT 180
#define EFFECT_STORED_POWER 181
#define EFFECT_ELECTRO_BALL 182
#define EFFECT_GYRO_BALL 183
#define EFFECT_ECHOED_VOICE 184
#define EFFECT_PAYBACK 185
#define EFFECT_ROUND 186
#define EFFECT_BRINE 187
#define EFFECT_RETALIATE 188
#define EFFECT_BULLDOZE 189
#define EFFECT_FOUL_PLAY 190
#define EFFECT_PSYSHOCK 191
#define EFFECT_ROOST 192
#define EFFECT_GRAVITY 193
#define EFFECT_MIRACLE_EYE 194
#define EFFECT_TAILWIND 195
#define EFFECT_EMBARGO 196
#define EFFECT_AQUA_RING 197
#define EFFECT_TRICK_ROOM 198
#define EFFECT_WONDER_ROOM 199
#define EFFECT_MAGIC_ROOM 200
#define EFFECT_MAGNET_RISE 201
#define EFFECT_TOXIC_SPIKES 202
#define EFFECT_GASTRO_ACID 203
#define EFFECT_STEALTH_ROCK 204
#define EFFECT_TELEKINESIS 205
#define EFFECT_POWER_SWAP 206
#define EFFECT_GUARD_SWAP 207
#define EFFECT_HEART_SWAP 208
#define EFFECT_POWER_SPLIT 209
#define EFFECT_GUARD_SPLIT 210
#define EFFECT_STICKY_WEB 211
#define EFFECT_METAL_BURST 212
#define EFFECT_LUCKY_CHANT 213
#define EFFECT_SUCKER_PUNCH 214
#define EFFECT_SIMPLE_BEAM 215
#define EFFECT_ENTRAINMENT 216
#define EFFECT_HEAL_PULSE 217
#define EFFECT_QUASH 218
#define EFFECT_ION_DELUGE 219
#define EFFECT_FREEZE_DRY 220
#define EFFECT_TOPSY_TURVY 221
#define EFFECT_MISTY_TERRAIN 222
#define EFFECT_GRASSY_TERRAIN 223
#define EFFECT_ELECTRIC_TERRAIN 224
#define EFFECT_PSYCHIC_TERRAIN 225
#define EFFECT_ATTACK_ACCURACY_UP 226
#define EFFECT_ATTACK_SPATK_UP 227
#define EFFECT_TWO_TYPED_MOVE 228
#define EFFECT_ME_FIRST 229
#define EFFECT_QUIVER_DANCE 230
#define EFFECT_COIL 231
#define EFFECT_ELECTRIFY 232
#define EFFECT_REFLECT_TYPE 233
#define EFFECT_SOAK 234
#define EFFECT_GROWTH 235
#define EFFECT_LAST_RESORT 236
#define EFFECT_SHELL_SMASH 237
#define EFFECT_SHIFT_GEAR 238
#define EFFECT_DEFENSE_UP_3 239
#define EFFECT_NOBLE_ROAR 240
#define EFFECT_VENOM_DRENCH 241
#define EFFECT_TOXIC_THREAD 242
#define EFFECT_HIT_SWITCH_TARGET 243
#define EFFECT_FINAL_GAMBIT 244
#define EFFECT_CHANGE_TYPE_ON_ITEM 245
#define EFFECT_AUTOTOMIZE 246
#define EFFECT_COPYCAT 247
#define EFFECT_DEFOG 248
#define EFFECT_HIT_ENEMY_HEAL_ALLY 249
#define EFFECT_SYNCHRONOISE 250
#define EFFECT_PSYCHO_SHIFT 251
#define EFFECT_POWER_TRICK 252
#define EFFECT_AFTER_YOU 253
#define EFFECT_BESTOW 254
#define EFFECT_ROTOTILLER 255
#define EFFECT_FLOWER_SHIELD 256
#define EFFECT_SPEED_SWAP 257
#define EFFECT_REVELATION_DANCE 258
#define EFFECT_AURORA_VEIL 259
#define EFFECT_THIRD_TYPE 260
#define EFFECT_ACUPRESSURE 261
#define EFFECT_AROMATIC_MIST 262
#define EFFECT_POWDER 263
#define EFFECT_BELCH 264
#define EFFECT_PARTING_SHOT 265
#define EFFECT_MAT_BLOCK 266
#define EFFECT_STOMPING_TANTRUM 267
#define EFFECT_INSTRUCT 268
#define EFFECT_LASER_FOCUS 269
#define EFFECT_MAGNETIC_FLUX 270
#define EFFECT_GEAR_UP 271
#define EFFECT_STRENGTH_SAP 272
#define EFFECT_MIND_BLOWN 273
#define EFFECT_PURIFY 274
#define EFFECT_FAIL_IF_NOT_ARG_TYPE 275
#define EFFECT_SHORE_UP 276
#define EFFECT_GEOMANCY 277
#define EFFECT_FAIRY_LOCK 278
#define EFFECT_ALLY_SWITCH 279
#define EFFECT_RELIC_SONG 280
#define EFFECT_BODY_PRESS 281
#define EFFECT_EERIE_SPELL 282
#define EFFECT_JUNGLE_HEALING 283
#define EFFECT_COACHING 284
#define EFFECT_LASH_OUT 285
#define EFFECT_GRASSY_GLIDE 286
#define EFFECT_DYNAMAX_DOUBLE_DMG 287
#define EFFECT_DECORATE 288
#define EFFECT_SNIPE_SHOT 289
#define EFFECT_RECOIL_HP_25 290
#define EFFECT_STUFF_CHEEKS 291
#define EFFECT_GRAV_APPLE 292
#define EFFECT_GLITZY_GLOW 293
#define EFFECT_BADDY_BAD 294
#define EFFECT_SAPPY_SEED 295
#define EFFECT_FREEZY_FROST 296
#define EFFECT_SPARKLY_SWIRL 297
#define EFFECT_PLASMA_FISTS 298
#define EFFECT_HYPERSPACE_FURY 299
#define EFFECT_AURA_WHEEL 300
#define EFFECT_PHOTON_GEYSER 301
#define EFFECT_SHELL_SIDE_ARM 302
#define EFFECT_TERRAIN_PULSE 303
#define EFFECT_NO_RETREAT 304
#define EFFECT_TAR_SHOT 305
#define EFFECT_POLTERGEIST 306
#define EFFECT_OCTOLOCK 307
#define EFFECT_CLANGOROUS_SOUL 308
#define EFFECT_BOLT_BEAK 309
#define EFFECT_SKY_DROP 310
#define EFFECT_EXPANDING_FORCE 311
#define EFFECT_RISING_VOLTAGE 312
#define EFFECT_BEAK_BLAST 313
#define EFFECT_COURT_CHANGE 314
#define EFFECT_MAX_HP_50_RECOIL 315
#define EFFECT_EXTREME_EVOBOOST 316
#define EFFECT_HIT_SET_REMOVE_TERRAIN 317
#define EFFECT_DARK_VOID 318
#define EFFECT_VICTORY_DANCE 319
#define EFFECT_TEATIME 320
#define EFFECT_ATTACK_UP_USER_ALLY 321
#define EFFECT_SHELL_TRAP 322
#define EFFECT_PSYBLADE 323
#define EFFECT_HYDRO_STEAM 324
#define EFFECT_REVIVAL_BLESSING 325
#define EFFECT_SNOWSCAPE 326
#define EFFECT_TAKE_HEART 327
#define EFFECT_COLLISION_COURSE 328
#define EFFECT_CORROSIVE_GAS 329
#define EFFECT_POPULATION_BOMB 330
#define EFFECT_SALT_CURE 331
#define EFFECT_CHILLY_RECEPTION 332
#define EFFECT_MAX_MOVE 333
#define EFFECT_GLAIVE_RUSH 334
#define EFFECT_RAGING_BULL 335
#define EFFECT_RAGE_FIST 336
#define EFFECT_DOODLE 337
#define EFFECT_FILLET_AWAY 338
#define EFFECT_IVY_CUDGEL 339
#define EFFECT_FICKLE_BEAM 340
#define EFFECT_BLIZZARD 341
#define EFFECT_RAIN_ALWAYS_HIT 342 // Unlike EFFECT_THUNDER it doesn't get its accuracy reduced under sun.
#define EFFECT_SHED_TAIL 343
#define EFFECT_UPPER_HAND 344
#define EFFECT_DRAGON_CHEER 345
#define EFFECT_LAST_RESPECTS 346
#define EFFECT_TIDY_UP 347
// leftovers from original so game doesnt break
#define EFFECT_POISON_HIT 349
#define EFFECT_BURN_HIT 350
#define EFFECT_FREEZE_HIT 351
#define EFFECT_PARALYZE_HIT 352
#define EFFECT_ALWAYS_HIT 353
#define EFFECT_RAMPAGE 354
#define EFFECT_FLINCH_HIT 355
#define EFFECT_PAY_DAY 356
#define EFFECT_TRI_ATTACK 357
#define EFFECT_RAZOR_WIND 358
#define EFFECT_DRAGON_RAGE 359
#define EFFECT_TRAP 360
#define EFFECT_HIGH_CRITICAL 361
#define EFFECT_DOUBLE_HIT 362
#define EFFECT_RECOIL 363
#define EFFECT_ATTACK_DOWN_HIT 364
#define EFFECT_DEFENSE_DOWN_HIT 365
#define EFFECT_SPEED_DOWN_HIT 366
#define EFFECT_SPECIAL_ATTACK_DOWN_HIT 367
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT 368
#define EFFECT_ACCURACY_DOWN_HIT 369
#define EFFECT_EVASION_DOWN_HIT 370
#define EFFECT_SKY_ATTACK 371
#define EFFECT_CONFUSE_HIT 372
#define EFFECT_TWINEEDLE 373
#define EFFECT_VITAL_THROW 374
#define EFFECT_RECHARGE 375
#define EFFECT_SPLASH 376
#define EFFECT_UNUSED_60 377
#define EFFECT_QUICK_ATTACK 378
#define EFFECT_THIEF 379
#define EFFECT_UNUSED_6E 380
#define EFFECT_THAW_HIT 381
#define EFFECT_RAPID_SPIN 382
#define EFFECT_SONICBOOM 383
#define EFFECT_UNUSED_83 384
#define EFFECT_DEFENSE_UP_HIT 385
#define EFFECT_ATTACK_UP_HIT 386
#define EFFECT_ALL_STATS_UP_HIT 387
#define EFFECT_UNUSED_8D 388 // incomplete fake out in gen 2
#define EFFECT_SKULL_BASH 389
#define EFFECT_TWISTER 390
#define EFFECT_GUST 391
#define EFFECT_FLINCH_MINIMIZE_HIT 392 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_FAKE_OUT 393
#define EFFECT_UNUSED_A3 394
#define EFFECT_SMELLINGSALT 395
#define EFFECT_SUPERPOWER 396
#define EFFECT_SECRET_POWER 397
#define EFFECT_DOUBLE_EDGE 398
#define EFFECT_TEETER_DANCE 399
#define EFFECT_BLAZE_KICK 400
#define EFFECT_POISON_FANG 401
#define EFFECT_OVERHEAT 402
#define EFFECT_SKY_UPPERCUT 403
#define EFFECT_POISON_TAIL 404
#define NUM_BATTLE_MOVE_EFFECTS 405
// enum {
// EFFECT_POISON_HIT,
// EFFECT_BURN_HIT ,
// EFFECT_FREEZE_HIT ,
// EFFECT_PARALYZE_HIT ,
// EFFECT_ALWAYS_HIT ,
// EFFECT_RAMPAGE ,
// EFFECT_FLINCH_HIT ,
// EFFECT_PAY_DAY ,
// EFFECT_TRI_ATTACK ,
// EFFECT_RAZOR_WIND ,
// EFFECT_DRAGON_RAGE ,
// EFFECT_TRAP ,
// EFFECT_HIGH_CRITICAL ,
// EFFECT_DOUBLE_HIT ,
// EFFECT_RECOIL ,
// EFFECT_ATTACK_DOWN_HIT ,
// EFFECT_DEFENSE_DOWN_HIT ,
// EFFECT_SPEED_DOWN_HIT ,
// EFFECT_SPECIAL_ATTACK_DOWN_HIT ,
// EFFECT_SPECIAL_DEFENSE_DOWN_HIT ,
// EFFECT_ACCURACY_DOWN_HIT ,
// EFFECT_EVASION_DOWN_HIT ,
// EFFECT_SKY_ATTACK ,
// EFFECT_CONFUSE_HIT ,
// EFFECT_TWINEEDLE ,
// EFFECT_VITAL_THROW ,
// EFFECT_RECHARGE ,
// EFFECT_SPLASH ,
// EFFECT_UNUSED_60,
// EFFECT_QUICK_ATTACK ,
// EFFECT_THIEF ,
// EFFECT_UNUSED_6E ,
// EFFECT_THAW_HIT ,
// EFFECT_RAPID_SPIN ,
// EFFECT_SONICBOOM ,
// EFFECT_UNUSED_83 ,
// EFFECT_DEFENSE_UP_HIT ,
// EFFECT_ATTACK_UP_HIT ,
// EFFECT_ALL_STATS_UP_HIT ,
// EFFECT_UNUSED_8D , // incomplete fake out in gen 2
// EFFECT_SKULL_BASH ,
// EFFECT_TWISTER ,
// EFFECT_GUST ,
// EFFECT_FLINCH_MINIMIZE_HIT , // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
// EFFECT_FAKE_OUT ,
// EFFECT_UNUSED_A3 ,
// EFFECT_SMELLINGSALT ,
// EFFECT_SUPERPOWER ,
// EFFECT_SECRET_POWER ,
// EFFECT_DOUBLE_EDGE ,
// EFFECT_TEETER_DANCE ,
// EFFECT_BLAZE_KICK ,
// EFFECT_POISON_FANG ,
// EFFECT_OVERHEAT ,
// EFFECT_SKY_UPPERCUT ,
// EFFECT_POISON_TAIL
// }
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H

View File

@ -2,30 +2,45 @@
#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
// The following correspond to the struct members of BattleScripting by adding their offset
#define sPAINSPLIT_HP gBattleScripting + 0x00 // painSplitHp
#define sBIDE_DMG gBattleScripting + 0x04 // bideDmg
#define sMULTIHIT_STRING gBattleScripting + 0x08 // multihitString
#define sDMG_MULTIPLIER gBattleScripting + 0x0E // dmgMultiplier
#define sTWOTURN_STRINGID gBattleScripting + 0x0F // twoTurnsMoveStringId
#define sB_ANIM_ARG1 gBattleScripting + 0x10 // animArg1
#define sB_ANIM_ARG2 gBattleScripting + 0x11 // animArg2
#define sTRIPLE_KICK_POWER gBattleScripting + 0x12 // tripleKickPower
#define sMOVEEND_STATE gBattleScripting + 0x14 // moveendState
#define sBATTLER_WITH_ABILITY gBattleScripting + 0x15 // battlerWithAbility
#define sMULTIHIT_EFFECT gBattleScripting + 0x16 // multihitMoveEffect
#define sBATTLER gBattleScripting + 0x17 // battler
#define sB_ANIM_TURN gBattleScripting + 0x18 // animTurn
#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19 // animTargetsHit
#define sSTATCHANGER gBattleScripting + 0x1A // statChanger
#define sSTAT_ANIM_PLAYED gBattleScripting + 0x1B // statAnimPlayed
#define sGIVEEXP_STATE gBattleScripting + 0x1C // getexpState
#define sBATTLE_STYLE gBattleScripting + 0x1D // battleStyle
#define sLVLBOX_STATE gBattleScripting + 0x1E // drawlvlupboxState
#define sLEARNMOVE_STATE gBattleScripting + 0x1F // learnMoveState
#define sPURSUIT_DOUBLES_ATTACKER gBattleScripting + 0x20 // pursuitDoublesAttacker
#define sRESHOW_MAIN_STATE gBattleScripting + 0x21 // reshowMainState
#define sRESHOW_HELPER_STATE gBattleScripting + 0x22 // reshowHelperState
#define sLVLUP_HP gBattleScripting + 0x23 // levelUpHP
#define sPAINSPLIT_HP (gBattleScripting + 0x00) // painSplitHp
#define sBIDE_DMG (gBattleScripting + 0x04) // bideDmg
#define sMULTIHIT_STRING (gBattleScripting + 0x08) // multihitString
#define sEXP_CATCH (gBattleScripting + 0x0E) // expOnCatch
#define sUNUSED (gBattleScripting + 0x0F) // unused
#define sB_ANIM_ARG1 (gBattleScripting + 0x10) // animArg1
#define sB_ANIM_ARG2 (gBattleScripting + 0x11) // animArg2
#define sSAVED_STRINID (gBattleScripting + 0x12) // savedStringId
#define sMOVEEND_STATE (gBattleScripting + 0x14) // moveendState
#define sSAVED_STAT_CHANGER (gBattleScripting + 0x15) // savedStatChanger
#define sSHIFT_SWITCHED (gBattleScripting + 0x16) // shiftSwitched
#define sBATTLER (gBattleScripting + 0x17) // battler
#define sB_ANIM_TURN (gBattleScripting + 0x18) // animTurn
#define sB_ANIM_TARGETS_HIT (gBattleScripting + 0x19) // animTargetsHit
#define sSTATCHANGER (gBattleScripting + 0x1A) // statChanger
#define sSTAT_ANIM_PLAYED (gBattleScripting + 0x1B) // statAnimPlayed
#define sGIVEEXP_STATE (gBattleScripting + 0x1C) // getexpState
#define sBATTLE_STYLE (gBattleScripting + 0x1D) // battleStyle
#define sLVLBOX_STATE (gBattleScripting + 0x1E) // drawlvlupboxState
#define sLEARNMOVE_STATE (gBattleScripting + 0x1F) // learnMoveState
#define sSAVED_BATTLER (gBattleScripting + 0x20) // savedBattler
#define sRESHOW_MAIN_STATE (gBattleScripting + 0x21) // reshowMainState
#define sRESHOW_HELPER_STATE (gBattleScripting + 0x22) // reshowHelperState
#define sLVLUP_HP (gBattleScripting + 0x23) // levelUpHP
#define sWINDOWS_TYPE (gBattleScripting + 0x24) // windowsType
#define sMULTIPLAYER_ID (gBattleScripting + 0x25) // multiplayerId
#define sSPECIAL_TRAINER_BATTLE_TYPE (gBattleScripting + 0x26) // specialTrainerBattleType
#define sMON_CAUGHT (gBattleScripting + 0x27) // monCaught
#define sSAVED_DMG (gBattleScripting + 0x28) // savedDmg
#define sSAVED_MOVE_EFFECT (gBattleScripting + 0x2C) // savedMoveEffect
#define sMOVE_EFFECT (gBattleScripting + 0x2E) // moveEffect
#define sMULTIHIT_EFFECT (gBattleScripting + 0x30) // multihitMoveEffect
#define sILLUSION_NICK_HACK (gBattleScripting + 0x32) // illusionNickHack
#define sFIXED_ABILITY_POPUP (gBattleScripting + 0x33) // fixedPopup
#define sABILITY_OVERWRITE (gBattleScripting + 0x34) // abilityPopupOverwrite
#define sSWITCH_CASE (gBattleScripting + 0x36) // switchCase
#define sBERRY_OVERRIDE (gBattleScripting + 0x37) // overrideBerryRequirements
#define sSTICKY_WEB_STAT_DROP (gBattleScripting + 0x38) // stickyWebStatDrop
#define sDMG_MULTIPLIER (gBattleScripting + 0x39) // dmgMultiplier
// Array entries for battle communication
#define MULTIUSE_STATE 0
@ -40,7 +55,6 @@
#define MSG_DISPLAY 7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 8
#define cEFFECT_CHOOSER (gBattleCommunication + MOVE_EFFECT_BYTE)
#define cMULTISTRING_CHOOSER (gBattleCommunication + MULTISTRING_CHOOSER)
#define cMISS_TYPE (gBattleCommunication + MISS_TYPE)
@ -54,12 +68,14 @@
#define BS_FAINTED_LINK_MULTIPLE_2 6 // for openpartyscreen
#define BS_BATTLER_0 7
#define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability
#define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability
#define BS_TARGET_SIDE 9 // for Cmd_jumpifability
#define BS_SCRIPTING 10
#define BS_PLAYER1 11
#define BS_OPPONENT1 12
#define BS_PLAYER2 13 // for Cmd_updatestatusicon
#define BS_OPPONENT2 14
#define BS_ABILITY_BATTLER 15
#define BS_ATTACKER_PARTNER 16
// atk 01, accuracy calc
#define NO_ACC_CALC 0xFFFE
@ -76,32 +92,180 @@
// TODO: documentation
// atk76, various
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
#define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_GET_BATTLER_FAINTED 4
#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
#define VARIOUS_RESET_PLAYER_FAINTED 7
#define VARIOUS_GET_BATTLERS_FOR_RECALL 8
#define VARIOUS_RETURN_OPPONENT_MON1 9
#define VARIOUS_RETURN_OPPONENT_MON2 10
#define VARIOUS_CHECK_POKEFLUTE 11
#define VARIOUS_WAIT_FANFARE 12
#define VARIOUS_PLAY_MOVE_ANIMATION 36
// pokeemerald
// Cmd_various
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
#define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_GET_BATTLER_FAINTED 4
#define VARIOUS_RESET_SWITCH_IN_ABILITY_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
#define VARIOUS_RESET_PLAYER_FAINTED 7
#define VARIOUS_PALACE_FLAVOR_TEXT 8 // unused from pokeemerald
#define VARIOUS_ARENA_JUDGMENT_WINDOW 9 // unused, from pokeemerald
#define VARIOUS_ARENA_OPPONENT_MON_LOST 10 // unused, from pokeemerald
#define VARIOUS_ARENA_PLAYER_MON_LOST 11 // unused, from pokeemerald
#define VARIOUS_ARENA_BOTH_MONS_LOST 12 // unused, from pokeemerald
#define VARIOUS_EMIT_YESNOBOX 13 // unused, from pokeemerald
#define VARIOUS_DRAW_ARENA_REF_TEXT_BOX 14 // unused, from pokeemerald
#define VARIOUS_ERASE_ARENA_REF_TEXT_BOX 15 // unused, from pokeemerald
#define VARIOUS_ARENA_JUDGMENT_STRING 16 // unused, from pokeemerald
#define VARIOUS_ARENA_WAIT_STRING 17 // unused, from pokeemerald
#define VARIOUS_WAIT_CRY 18
#define VARIOUS_RETURN_OPPONENT_MON1 19
#define VARIOUS_RETURN_OPPONENT_MON2 20
#define VARIOUS_VOLUME_DOWN 21
#define VARIOUS_VOLUME_UP 22
#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23
#define VARIOUS_PALACE_TRY_ESCAPE_STATUS 24 // unused from pokeemerald
#define VARIOUS_SET_TELEPORT_OUTCOME 25
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
#define VARIOUS_STAT_TEXT_BUFFER 27
#define VARIOUS_SWITCHIN_ABILITIES 28
#define VARIOUS_SAVE_TARGET 29
#define VARIOUS_RESTORE_TARGET 30
#define VARIOUS_INSTANT_HP_DROP 31
#define VARIOUS_CLEAR_STATUS 32
#define VARIOUS_RESTORE_PP 33
#define VARIOUS_TRY_ACTIVATE_MOXIE 34
#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 35
#define VARIOUS_PLAY_MOVE_ANIMATION 36
#define VARIOUS_SET_LUCKY_CHANT 37
#define VARIOUS_SUCKER_PUNCH_CHECK 38
#define VARIOUS_SET_SIMPLE_BEAM 39
#define VARIOUS_TRY_ENTRAINMENT 40
#define VARIOUS_SET_LAST_USED_ABILITY 41
#define VARIOUS_INVERT_STAT_STAGES 42
#define VARIOUS_TRY_ME_FIRST 43
#define VARIOUS_JUMP_IF_BATTLE_END 44
#define VARIOUS_TRY_ELECTRIFY 45
#define VARIOUS_TRY_REFLECT_TYPE 46
#define VARIOUS_TRY_SOAK 47
#define VARIOUS_HANDLE_MEGA_EVO 48
#define VARIOUS_TRY_LAST_RESORT 49
#define VARIOUS_SET_ARG_TO_BATTLE_DAMAGE 50
#define VARIOUS_TRY_HIT_SWITCH_TARGET 51
#define VARIOUS_TRY_AUTOTOMIZE 52
#define VARIOUS_ABILITY_POPUP 53
#define VARIOUS_JUMP_IF_TARGET_ALLY 54
#define VARIOUS_TRY_SYNCHRONOISE 55
#define VARIOUS_PSYCHO_SHIFT 56
#define VARIOUS_CURE_STATUS 57
#define VARIOUS_POWER_TRICK 58
#define VARIOUS_AFTER_YOU 59
#define VARIOUS_BESTOW 60
#define VARIOUS_JUMP_IF_NOT_GROUNDED 61
#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 62
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 63
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 64
#define VARIOUS_SET_AURORA_VEIL 65
#define VARIOUS_TRY_THIRD_TYPE 66
#define VARIOUS_ACUPRESSURE 67
#define VARIOUS_SET_POWDER 68
#define VARIOUS_SPECTRAL_THIEF 69
#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 70
#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 71
#define VARIOUS_JUMP_IF_ROAR_FAILS 72
#define VARIOUS_TRY_INSTRUCT 73
#define VARIOUS_JUMP_IF_NOT_BERRY 74
#define VARIOUS_TRACE_ABILITY 75
#define VARIOUS_UPDATE_NICK 76
#define VARIOUS_TRY_ILLUSION_OFF 77
#define VARIOUS_SET_SPRITEIGNORE0HP 78
#define VARIOUS_HANDLE_FORM_CHANGE 79
#define VARIOUS_GET_STAT_VALUE 80
#define VARIOUS_JUMP_IF_FULL_HP 81
#define VARIOUS_LOSE_TYPE 82
#define VARIOUS_TRY_ACTIVATE_SOULHEART 83
#define VARIOUS_TRY_ACTIVATE_RECEIVER 84
#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 85
#define VARIOUS_TRY_FRISK 86
#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 87
#define VARIOUS_TRY_FAIRY_LOCK 88
#define VARIOUS_JUMP_IF_NO_ALLY 89
#define VARIOUS_POISON_TYPE_IMMUNITY 90
#define VARIOUS_JUMP_IF_HOLD_EFFECT 91
#define VARIOUS_INFATUATE_WITH_BATTLER 92
#define VARIOUS_SET_LAST_USED_ITEM 93
#define VARIOUS_PARALYZE_TYPE_IMMUNITY 94
#define VARIOUS_JUMP_IF_ABSENT 95
#define VARIOUS_DESTROY_ABILITY_POPUP 96
#define VARIOUS_TOTEM_BOOST 97
#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 98
#define VARIOUS_MOVEEND_ITEM_EFFECTS 99
#define VARIOUS_TERRAIN_SEED 100
#define VARIOUS_MAKE_INVISIBLE 101
#define VARIOUS_ROOM_SERVICE 102
#define VARIOUS_EERIE_SPELL_PP_REDUCE 103
#define VARIOUS_JUMP_IF_TEAM_HEALTHY 104
#define VARIOUS_TRY_HEAL_QUARTER_HP 105
#define VARIOUS_REMOVE_TERRAIN 106
#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 107
#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 108
#define VARIOUS_GET_ROTOTILLER_TARGETS 109
#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 110
#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 111
#define VARIOUS_CONSUME_BERRY 112
#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 113
#define VARIOUS_JUMP_IF_SPECIES 114
#define VARIOUS_UPDATE_ABILITY_POPUP 115
#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 116
#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 117
#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 118
#define VARIOUS_SHELL_SIDE_ARM_CHECK 119
#define VARIOUS_TRY_NO_RETREAT 120
#define VARIOUS_TRY_TAR_SHOT 121
#define VARIOUS_CAN_TAR_SHOT_WORK 122
#define VARIOUS_CHECK_POLTERGEIST 123
#define VARIOUS_CUT_1_3_HP_RAISE_STATS 124
#define VARIOUS_TRY_END_NEUTRALIZING_GAS 125
#define VARIOUS_JUMP_IF_UNDER_200 126
#define VARIOUS_SET_SKY_DROP 127
#define VARIOUS_CLEAR_SKY_DROP 128
#define VARIOUS_SKY_DROP_YAWN 129
#define VARIOUS_CURE_CERTAIN_STATUSES 130
#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 131
#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 132
#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 133
#define VARIOUS_SAVE_BATTLER_ITEM 134
#define VARIOUS_RESTORE_BATTLER_ITEM 135
#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 136
#define VARIOUS_SET_BEAK_BLAST 137
#define VARIOUS_SWAP_SIDE_STATUSES 138
#define VARIOUS_SWAP_STATS 139
#define VARIOUS_TEATIME_INVUL 140
#define VARIOUS_TEATIME_TARGETS 141
#define VARIOUS_TRY_WIND_RIDER_POWER 142
#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 143
#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 144
#define VARIOUS_STORE_HEALING_WISH 145
#define VARIOUS_HIT_SWITCH_TARGET_FAILED 146
#define VARIOUS_TRY_REVIVAL_BLESSING 147
// pokefirered
#define VARIOUS_GET_BATTLERS_FOR_RECALL 148 // for battle tower
#define VARIOUS_CHECK_POKEFLUTE 149 // pokeflute
#define VARIOUS_WAIT_FANFARE 151 // pokeflute and other
// Cmd_manipulatedmg
// Cmd_manipulatedamage
#define DMG_CHANGE_SIGN 0
#define DMG_RECOIL_FROM_MISS 1
#define DMG_DOUBLED 2
#define DMG_1_8_TARGET_HP 3
#define DMG_FULL_ATTACKER_HP 4
#define DMG_CURR_ATTACKER_HP 5
#define DMG_BIG_ROOT 6
#define DMG_1_2_ATTACKER_HP 7
#define DMG_RECOIL_FROM_IMMUNE 8 // Used to calculate recoil for the Gen 4 version of Jump Kick
// Cmd_jumpifcantswitch
#define SWITCH_IGNORE_ESCAPE_PREVENTION (1 << 7)
// Cmd_statbuffchange
#define STAT_CHANGE_ALLOW_PTR (1 << 0) // If set, allow use of jumpptr. Set in every use of statbuffchange
#define STAT_CHANGE_MIRROR_ARMOR (1 << 1) // Stat change redirection caused by Mirror Armor ability.
#define STAT_CHANGE_NOT_PROTECT_AFFECTED (1 << 5)
#define STAT_CHANGE_UPDATE_MOVE_EFFECT (1 << 6)
// stat change flags for Cmd_playstatchangeanimation
#define STAT_CHANGE_NEGATIVE (1 << 0)
@ -122,23 +286,55 @@
#define PARTY_SCREEN_OPTIONAL (1 << 7) // Flag for first argument to openpartyscreen
// cases for Cmd_moveend
#define MOVEEND_RAGE 0
#define MOVEEND_DEFROST 1
#define MOVEEND_SYNCHRONIZE_TARGET 2
#define MOVEEND_ON_DAMAGE_ABILITIES 3
#define MOVEEND_IMMUNITY_ABILITIES 4
#define MOVEEND_SYNCHRONIZE_ATTACKER 5
#define MOVEEND_CHOICE_MOVE 6
#define MOVEEND_CHANGED_ITEMS 7
#define MOVEEND_ATTACKER_INVISIBLE 8
#define MOVEEND_ATTACKER_VISIBLE 9
#define MOVEEND_TARGET_VISIBLE 10
#define MOVEEND_ITEM_EFFECTS_ALL 11
#define MOVEEND_KINGSROCK_SHELLBELL 12
#define MOVEEND_SUBSTITUTE 13
#define MOVEEND_UPDATE_LAST_MOVES 14
#define MOVEEND_MIRROR_MOVE 15
#define MOVEEND_NEXT_TARGET 16
#define MOVEEND_COUNT 17
#define MOVEEND_SUM_DAMAGE 0
#define MOVEEND_PROTECT_LIKE_EFFECT 1
#define MOVEEND_RAGE 2
#define MOVEEND_SYNCHRONIZE_TARGET 3
#define MOVEEND_ABILITIES 4
#define MOVEEND_ABILITIES_ATTACKER 5
#define MOVEEND_STATUS_IMMUNITY_ABILITIES 6
#define MOVEEND_SYNCHRONIZE_ATTACKER 7
#define MOVEEND_CHOICE_MOVE 8
#define MOVEEND_ATTACKER_INVISIBLE 9
#define MOVEEND_ATTACKER_VISIBLE 10
#define MOVEEND_TARGET_VISIBLE 11
#define MOVEEND_ITEM_EFFECTS_TARGET 12
#define MOVEEND_MOVE_EFFECTS2 13
#define MOVEEND_ITEM_EFFECTS_ALL 14
#define MOVEEND_KINGSROCK 15 // These item effects will occur each strike of a multi-hit move
#define MOVEEND_NUM_HITS 16
#define MOVEEND_SUBSTITUTE 17
#define MOVEEND_SKY_DROP_CONFUSE 18
#define MOVEEND_UPDATE_LAST_MOVES 19
#define MOVEEND_MIRROR_MOVE 20
#define MOVEEND_NEXT_TARGET 21 // Everything up until here is handled for each strike of a multi-hit move
#define MOVEEND_MULTIHIT_MOVE 22
#define MOVEEND_DEFROST 23
#define MOVEEND_RECOIL 24
#define MOVEEND_MAGICIAN 25 // Occurs after final multi-hit strike, and after other items/abilities would activate
#define MOVEEND_EJECT_ITEMS 26
#define MOVEEND_WHITE_HERB 27
#define MOVEEND_RED_CARD 28
#define MOVEEND_LIFEORB_SHELLBELL 29 // Includes shell bell, throat spray, etc
#define MOVEEND_CHANGED_ITEMS 30
#define MOVEEND_PICKPOCKET 31
#define MOVEEND_DANCER 32
#define MOVEEND_EMERGENCY_EXIT 33
#define MOVEEND_SYMBIOSIS 34
#define MOVEEND_OPPORTUNIST 35 // Occurs after other stat change items/abilities to try and copy the boosts
#define MOVEEND_SAME_MOVE_TURNS 36
#define MOVEEND_SET_EVOLUTION_TRACKER 37
#define MOVEEND_CLEAR_BITS 38
#define MOVEEND_COUNT 39
// switch cases
#define B_SWITCH_NORMAL 0
#define B_SWITCH_HIT 1 // dragon tail, circle throw
#define B_SWITCH_RED_CARD 2
// Argument labels for EFFECT_HIT_SET_REMOVE_TERRAIN
#define ARG_SET_PSYCHIC_TERRAIN 0
#define ARG_TRY_REMOVE_TERRAIN_HIT 1
#define ARG_TRY_REMOVE_TERRAIN_FAIL 2
#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H

View File

@ -1,12 +1,13 @@
#ifndef GUARD_BATTLE_STRING_IDS_H
#define GUARD_BATTLE_STRING_IDS_H
#define STRINGID_INTROMSG 0
#define STRINGID_INTROMSG 0
#define STRINGID_INTROSENDOUT 1
#define STRINGID_RETURNMON 2
#define STRINGID_RETURNMON 2
#define STRINGID_SWITCHINMON 3
#define STRINGID_USEDMOVE 4
#define STRINGID_BATTLEEND 5
#define STRINGID_USEDMOVE 4
#define STRINGID_BATTLEEND 5
#define STRINGID_TRAINERSLIDE 6
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
@ -388,8 +389,191 @@
#define STRINGID_ITEMRESTOREDSPECIESHEALTH 386
#define STRINGID_ITEMRESTOREDSPECIESPP 387
#define STRINGID_ITEMCUREDSPECIESSTATUS 388
#define STRINGID_ELECTROSHOTCHARGING 389
#define STRINGID_METEORBEAMCHARGING 390
#define STRINGID_CLOAKEDINAHARSHLIGHT 391
#define STRINGID_VANISHEDINSTANTLY 392
#define STRINGID_PKMNTOOKTARGETHIGH 393
#define STRINGID_CLOAKEDINAFREEZINGLIGHT 394
#define STRINGID_PKNMABSORBINGPOWER 395
#define STRINGID_POKEMONCANNOTUSEMOVE 396
#define STRINGID_PKMNMOVEBOUNCEDABILITY 397
#define STRINGID_HEALBLOCKPREVENTSUSAGE 398
#define STRINGID_GRAVITYPREVENTSUSAGE 399
#define STRINGID_PKMNFROSTBITEHEALED2 400
#define STRINGID_PKMNFROSTBITEHEALEDBY 401
#define STRINGID_SAFETYGOGGLESPROTECTED 402
#define STRINGID_POWDEREXPLODES 403
#define STRINGID_PKMNCANTUSEMOVETHROATCHOP 404
#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 405
#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 406
#define STRINGID_TARGETATEITEM 407
#define STRINGID_GEMACTIVATES 408
#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 409
#define STRINGID_ENDUREDSTURDY 410
#define STRINGID_BERRYDMGREDUCES 411
#define STRINGID_TARGETTOUGHEDITOUT 412
#define STRINGID_TRAPPEDBYSWIRLINGMAGMA 413
#define STRINGID_INFESTATION 414
#define STRINGID_PKMNINSNAPTRAP 415
#define STRINGID_THUNDERCAGETRAPPED 416
#define STRINGID_RESETSTARGETSSTATLEVELS 417
#define STRINGID_EXTREMESUNLIGHTFADED 418
#define STRINGID_HEAVYRAINLIFTED 419
#define STRINGID_STRONGWINDSDISSIPATED 420
#define STRINGID_SYMBIOSISITEMPASS 421
#define STRINGID_BURSTINGFLAMESHIT 422
#define STRINGID_BROKETHROUGHPROTECTION 423
#define STRINGID_FELLFORFEINT 424
#define STRINGID_SPECTRALTHIEFSTEAL 425
#define STRINGID_PKMNSABILITYSUPPRESSED 426
#define STRINGID_INCINERATEBURN 427
#define STRINGID_BUGBITE 428
#define STRINGID_BOTHCANNOLONGERESCAPE 429
#define STRINGID_ATTACKERLOSTFIRETYPE 430
#define STRINGID_ATTACKERLOSTELECTRICTYPE 431
#define STRINGID_ATTACKERLOSTITSTYPE 432
#define STRINGID_STEALTHROCKDMG 433
#define STRINGID_SHARPSTEELDMG 434
#define STRINGID_POINTEDSTONESFLOAT 435
#define STRINGID_SHARPSTEELFLOATS 436
#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 437
#define STRINGID_AROMAVEILPROTECTED 438
#define STRINGID_PKMNPREVENTEDFROMHEALING 439
#define STRINGID_TERRAINBECOMESMISTY 440
#define STRINGID_TERRAINBECOMESGRASSY 441
#define STRINGID_TERRAINBECOMESELECTRIC 442
#define STRINGID_TERRAINBECOMESPSYCHIC 443
#define STRINGID_DIMENSIONSWERETWISTED 444
#define STRINGID_BIZARREARENACREATED 445
#define STRINGID_BIZARREAREACREATED 446
#define STRINGID_TAILWINDBLEW 447
#define STRINGID_ELECTRICTERRAINENDS 448
#define STRINGID_MISTYTERRAINENDS 449
#define STRINGID_PSYCHICTERRAINENDS 450
#define STRINGID_GRASSYTERRAINENDS 451
#define STRINGID_MOLDBREAKERENTERS 452
#define STRINGID_TERAVOLTENTERS 453
#define STRINGID_TURBOBLAZEENTERS 454
#define STRINGID_SLOWSTARTENTERS 455
#define STRINGID_UNNERVEENTERS 456
#define STRINGID_ANTICIPATIONACTIVATES 457
#define STRINGID_FOREWARNACTIVATES 458
#define STRINGID_PRESSUREENTERS 459
#define STRINGID_DARKAURAENTERS 460
#define STRINGID_FAIRYAURAENTERS 461
#define STRINGID_AURABREAKENTERS 462
#define STRINGID_COMATOSEENTERS 463
#define STRINGID_SCREENCLEANERENTERS 464
#define STRINGID_ASONEENTERS 465
#define STRINGID_CURIOUSMEDICINEENTERS 466
#define STRINGID_PASTELVEILENTERS 467
#define STRINGID_NEUTRALIZINGGASENTERS 468
#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 469
#define STRINGID_IMPOSTERTRANSFORM 470
#define STRINGID_SNOWWARNINGHAIL 471
#define STRINGID_SNOWWARNINGSNOW 472
#define STRINGID_SUPERSWEETAROMAWAFTS 473
#define STRINGID_AIRLOCKACTIVATES 474
#define STRINGID_BATTLERABILITYRAISEDSTAT 475
#define STRINGID_EXTREMELYHARSHSUNLIGHT 476
#define STRINGID_HEAVYRAIN 477
#define STRINGID_MYSTERIOUSAIRCURRENT 478
#define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 479
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 480
#define STRINGID_ZEROTOHEROTRANSFORMATION 481
#define STRINGID_HOSPITALITYRESTORATION 482
#define STRINGID_HARVESTBERRY 483
#define STRINGID_BADDREAMSDMG 484
#define STRINGID_SOLARPOWERHPDROP 485
#define STRINGID_HEALERCURE 486
#define STRINGID_FETCHEDPOKEBALL 487
#define STRINGID_TARGETABILITYSTATLOWER 488
#define STRINGID_TARGETSTATWONTGOHIGHER 489
#define STRINGID_TARGETABILITYSTATRAISE 490
#define STRINGID_CUSEDBODYDISABLED 491
#define STRINGID_ATTACKERACQUIREDABILITY 492
#define STRINGID_SWAPPEDABILITIES 493
#define STRINGID_TARGETSSTATWASMAXEDOUT 494
#define STRINGID_PKMNSABILITYPREVENTSABILITY 495
#define STRINGID_AFTERMATHDMG 496
#define STRINGID_ILLUSIONWOREOFF 497
#define STRINGID_ASANDSTORMKICKEDUP 498
#define STRINGID_PKMNSWILLPERISHIN3TURNS 499
#define STRINGID_POISONSPIKESSCATTERED 500
#define STRINGID_OPPORTUNISTCOPIED 501
#define STRINGID_PKMNGOTOVERITSINFATUATION 502
#define STRINGID_PKMNSHOOKOFFTHETAUNT 503
#define STRINGID_SUNLIGHTACTIVATEDABILITY 504
#define STRINGID_STATWASHEIGHTENED 505
#define STRINGID_BATTLERTYPECHANGEDTO 506
#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 507
#define STRINGID_FRISKACTIVATES 508
#define STRINGID_ATTACKERABILITYSTATRAISE 509
#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 510
#define STRINGID_NORELIEFROMHEAVYRAIN 511
#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 512
#define STRINGID_AURAFLAREDTOLIFE 513
#define STRINGID_ATKGOTOVERINFATUATION 514
#define STRINGID_TORMENTEDNOMORE 515
#define STRINGID_BUFFERENDS 516
#define STRINGID_HEALBLOCKEDNOMORE 517
#define STRINGID_MICLEBERRYACTIVATES 518
#define STRINGID_MIRRORHERBCOPIED 519
#define STRINGID_PKMNSITEMHEALEDFROSTBITE 520
#define STRINGID_AIRBALLOONFLOAT 521
#define STRINGID_EJECTBUTTONACTIVATE 522
#define STRINGID_HURTBYITEM 523
#define STRINGID_AIRBALLOONPOP 524
#define STRINGID_STICKYBARBTRANSFER 525
#define STRINGID_TEAMGAINEDEXP 526
#define STRINGID_PKMNFROSTBITEHEALED 527
#define STRINGID_STOCKPILEDEFFECTWOREOFF 528
#define STRINGID_FELLSTRAIGHTDOWN 529
#define STRINGID_TARGETWOKEUP 530
#define STRINGID_PKMNBURNHEALED 531
#define STRINGID_REDCARDACTIVATE 532
#define STRINGID_MOVEBLOCKEDBYDYNAMAX 533
#define STRINGID_ITEMCANNOTBEREMOVED 534
#define STRINGID_ZMOVERESETSSTATS 535
#define STRINGID_ZMOVEZBOOSTCRIT 536
#define STRINGID_ZMOVERESTOREHP 537
#define STRINGID_ZMOVESTATUP 538
#define STRINGID_ZMOVEHPTRAP 539
#define STRINGID_ZMOVEALLSTATSUP 540
#define STRINGID_PKMNREVERTEDTOPRIMAL 541
#define STRINGID_HEALINGWISHHEALED 542
#define STRINGID_TOXICSPIKESABSORBED 543
#define STRINGID_TOXICSPIKESPOISONED 544
#define STRINGID_STICKYWEBSWITCHIN 545
#define STRINGID_HEALINGWISHCAMETRUE 546
#define STRINGID_LUNARDANCECAMETRUE 547
#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 548
#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 549
#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 550
#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 551
#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 552
#define STRINGID_LASTABILITYRAISEDSTAT 553
#define STRINGID_RECEIVERABILITYTAKEOVER 554
#define STRINGID_NEUTRALIZINGGASOVER 555
#define STRINGID_ATTACKERBECAMEFULLYCHARGED 556
#define STRINGID_ATTACKERBECAMEASHSPECIES 557
#define STRINGID_PROTECTEDTEAM 558
#define STRINGID_ELECTRICTERRAINPREVENTS 559
#define STRINGID_MISTYTERRAINPREVENTS 560
#define STRINGID_PSYCHICTERRAINPREVENTS 561
#define STRINGID_FLOWERVEILPROTECTED 562
#define STRINGID_DRASTICALLY 563
#define STRINGID_SEVERELY 564
#define STRINGID_CLEARAMULETWONTLOWERSTATS 565
#define STRINGID_CELEBRATEMESSAGE 566
#define STRINGID_PKMNBLEWAWAYTOXICSPIKES 567
#define STRINGID_PKMNBLEWAWAYSTICKYWEB 568
#define STRINGID_PKMNBLEWAWAYSTEALTHROCK 569
#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 570
#define STRINGID_PKMNGOTFROSTBITE 571
#define BATTLESTRINGS_COUNT 389
#define BATTLESTRINGS_COUNT 572
// This is the string id that gBattleStringsTable starts with.
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,
@ -472,6 +656,7 @@
#define B_MSG_PROTECTED_ITSELF 0
#define B_MSG_BRACED_ITSELF 1
#define B_MSG_PROTECT_FAILED 2
#define B_MSG_PROTECTED_TEAM 3
// gRestUsedStringIds
#define B_MSG_REST 0
@ -544,6 +729,10 @@
#define B_MSG_SOMEONES_BOX_FULL 2
#define B_MSG_BILLS_BOX_FULL 3
// gPrimalWeatherBlocksStringIds
#define B_MSG_PRIMAL_WEATHER_FIZZLED_BY_RAIN 0
#define B_MSG_PRIMAL_WEATHER_EVAPORATED_IN_SUN 1
// gInobedientStringIds
#define B_MSG_LOAFING 0
#define B_MSG_WONT_OBEY 1
@ -590,6 +779,93 @@
#define B_MSG_DEFROSTED 0
#define B_MSG_DEFROSTED_BY_MOVE 1
#define NUM_TRAPPING_MOVES 6
// gFrostbiteHealedStringIds
#define B_MSG_FROSTBITE_HEALED 0
#define B_MSG_FROSTBITE_HEALED_BY_MOVE 1
// gSwitchInAbilityStringIds
#define B_MSG_SWITCHIN_MOLDBREAKER 0
#define B_MSG_SWITCHIN_TERAVOLT 1
#define B_MSG_SWITCHIN_TURBOBLAZE 2
#define B_MSG_SWITCHIN_SLOWSTART 3
#define B_MSG_SWITCHIN_UNNERVE 4
#define B_MSG_SWITCHIN_ANTICIPATION 5
#define B_MSG_SWITCHIN_FOREWARN 6
#define B_MSG_SWITCHIN_PRESSURE 7
#define B_MSG_SWITCHIN_DARKAURA 8
#define B_MSG_SWITCHIN_FAIRYAURA 9
#define B_MSG_SWITCHIN_AURABREAK 10
#define B_MSG_SWITCHIN_COMATOSE 11
#define B_MSG_SWITCHIN_SCREENCLEANER 12
#define B_MSG_SWITCHIN_ASONE 13
#define B_MSG_SWITCHIN_CURIOUS_MEDICINE 14
#define B_MSG_SWITCHIN_PASTEL_VEIL 15
#define B_MSG_SWITCHIN_NEUTRALIZING_GAS 16
// gMentalHerbCureStringIds
#define B_MSG_MENTALHERBCURE_INFATUATION 0
#define B_MSG_MENTALHERBCURE_TAUNT 1
#define B_MSG_MENTALHERBCURE_ENCORE 2
#define B_MSG_MENTALHERBCURE_TORMENT 3
#define B_MSG_MENTALHERBCURE_HEALBLOCK 4
#define B_MSG_MENTALHERBCURE_DISABLE 5
// gTerrainPreventsStringIds
#define B_MSG_TERRAINPREVENTS_MISTY 0
#define B_MSG_TERRAINPREVENTS_ELECTRIC 1
#define B_MSG_TERRAINPREVENTS_PSYCHIC 2
// gTerrainStringIds
#define B_MSG_TERRAIN_SET_MISTY 0
#define B_MSG_TERRAIN_SET_ELECTRIC 1
#define B_MSG_TERRAIN_SET_PSYCHIC 2
#define B_MSG_TERRAIN_SET_GRASSY 3
#define B_MSG_TERRAIN_END_MISTY 4
#define B_MSG_TERRAIN_END_ELECTRIC 5
#define B_MSG_TERRAIN_END_PSYCHIC 6
#define B_MSG_TERRAIN_END_GRASSY 7
#define B_MSG_TERRAIN_COUNT 8
// gStartingStatusStringIds
#define B_MSG_TERRAIN_SET_MISTY 0
#define B_MSG_TERRAIN_SET_ELECTRIC 1
#define B_MSG_TERRAIN_SET_PSYCHIC 2
#define B_MSG_TERRAIN_SET_GRASSY 3
#define B_MSG_SET_TRICK_ROOM 4
#define B_MSG_SET_MAGIC_ROOM 5
#define B_MSG_SET_WONDER_ROOM 6
#define B_MSG_SET_TAILWIND_PLAYER 7
#define B_MSG_SET_TAILWIND_OPPONENT 8
#define B_MSG_STARTING_STATUS_COUNT 9
// gWrappedStringIds
#define B_MSG_WRAPPED_BIND 0
#define B_MSG_WRAPPED_WRAP 1
#define B_MSG_WRAPPED_FIRE_SPIN 2
#define B_MSG_WRAPPED_CLAMP 3
#define B_MSG_WRAPPED_WHIRLPOOL 4
#define B_MSG_WRAPPED_SAND_TOMB 5
#define B_MSG_WRAPPED_MAGMA_STORM 6
#define B_MSG_WRAPPED_INFESTATION 7
#define B_MSG_WRAPPED_SNAP_TRAP 8
#define B_MSG_WRAPPED_THUNDER_CAGE 9
#define NUM_TRAPPING_MOVES 10
// z effects (gZEffectStringIds)
#define B_MSG_Z_RESET_STATS 0
#define B_MSG_Z_ALL_STATS_UP 1
#define B_MSG_Z_BOOST_CRITS 2
#define B_MSG_Z_FOLLOW_ME 3
#define B_MSG_Z_RECOVER_HP 4
#define B_MSG_Z_STAT_UP 5
#define B_MSG_Z_HP_TRAP 6
// gDmgHazardsStringIds
#define B_MSG_PKMNHURTBYSPIKES 0
#define B_MSG_STEALTHROCKDMG 1
#define B_MSG_SHARPSTEELDMG 2
#define B_MSG_POINTEDSTONESFLOAT 3
#define B_MSG_SPIKESSCATTERED 4
#define B_MSG_SHARPSTEELFLOATS 5
#endif // GUARD_BATTLE_STRING_IDS_H

View File

@ -0,0 +1,38 @@
#ifndef GUARD_Z_MOVE_EFFECTS_H
#define GUARD_Z_MOVE_EFFECTS_H
#define Z_EFFECT_NONE 0
#define Z_EFFECT_RESET_STATS 1
#define Z_EFFECT_ALL_STATS_UP_1 2
#define Z_EFFECT_BOOST_CRITS 3
#define Z_EFFECT_FOLLOW_ME 4
#define Z_EFFECT_CURSE 5
#define Z_EFFECT_RECOVER_HP 6
#define Z_EFFECT_RESTORE_REPLACEMENT_HP 7
#define Z_EFFECT_ATK_UP_1 8
#define Z_EFFECT_DEF_UP_1 9
#define Z_EFFECT_SPD_UP_1 10
#define Z_EFFECT_SPATK_UP_1 11
#define Z_EFFECT_SPDEF_UP_1 12
#define Z_EFFECT_ACC_UP_1 13
#define Z_EFFECT_EVSN_UP_1 14
#define Z_EFFECT_ATK_UP_2 15
#define Z_EFFECT_DEF_UP_2 16
#define Z_EFFECT_SPD_UP_2 17
#define Z_EFFECT_SPATK_UP_2 18
#define Z_EFFECT_SPDEF_UP_2 19
#define Z_EFFECT_ACC_UP_2 20
#define Z_EFFECT_EVSN_UP_2 21
#define Z_EFFECT_ATK_UP_3 22
#define Z_EFFECT_DEF_UP_3 23
#define Z_EFFECT_SPD_UP_3 24
#define Z_EFFECT_SPATK_UP_3 25
#define Z_EFFECT_SPDEF_UP_3 26
#define Z_EFFECT_ACC_UP_3 27
#define Z_EFFECT_EVSN_UP_3 28
#endif // GUARD_Z_MOVE_EFFECTS_H

View File

@ -0,0 +1,123 @@
#ifndef GUARD_CONSTANTS_FORM_CHANGE_TYPES_H
#define GUARD_CONSTANTS_FORM_CHANGE_TYPES_H
// FORM_CHANGE_BATTLE_HP_PERCENT param2 arguments
#define HP_HIGHER_THAN 1
#define HP_LOWER_EQ_THAN 2
// FORM_CHANGE_MOVE param2 Arguments
#define WHEN_LEARNED 0
#define WHEN_FORGOTTEN 1
// FORM_CHANGE_ITEM_USE param2 Arguments
#define DAY 1
#define NIGHT 2
#define FUSION_TERMINATOR 0xFF
#define FORM_CHANGE_TERMINATOR 0
// Form change that activates when the specified item is given to or taken from the selected Pokémon.
// param1: item to hold.
// param2: ability to check for, optional.
#define FORM_CHANGE_ITEM_HOLD 1
// Form change that activates when the item is used on the selected Pokémon.
// param1: item to use
// param2: time of day to check, optional.
// - DAY if Form change that activates in the daytime.
// - NIGHT if Form change that activates at nighttime.
#define FORM_CHANGE_ITEM_USE 2
// TODO: Form change that activates when the Pokémon learns or forgets the move.
// param1: move to check for
// param2:
// - WHEN_LEARNED if Form change that activates when move is forgotten
// - WHEN_FORGOTTEN if Form change that activates when move is learned
#define FORM_CHANGE_MOVE 3
// Form change that activates when the Pokémon is withdrawn from the PC or Daycare.
// Daycare withdraw done, PC withdraw TODO.
// - No parameters.
#define FORM_CHANGE_WITHDRAW 4
// Form change that activates when the Pokémon faints, either in battle or in the overworld by poison.
// If species is not specified and it's on the player's side, it will try to use the value
// saved in gBattleStruct->changedSpecies from a previous form change.
// - No parameters.
#define FORM_CHANGE_FAINT 5
// Form change that activates when the Pokémon is sent out at the beginning of a battle
// param1: item to hold, optional
// param2: a move that will be replaced, optional
// param3: a new move to replace it with, optional
#define FORM_CHANGE_BEGIN_BATTLE 6
// Form change that activates at the end of a battle. If species is not specified and it's on the player's side, it will try to use the value saved in gBattleStruct->changedSpecies from a previous form change.
// param1: item to hold, optional
// param2: a move that will be replaced, optional
// param3: a new move to replace it with, optional
#define FORM_CHANGE_END_BATTLE 7
// Form change that activates at the end of a battle based on the terrain if it participated in the battle and hasn't fainted. Takes priority over FORM_CHANGE_END_BATTLE.
// param1: battle terrain to check.
#define FORM_CHANGE_END_BATTLE_TERRAIN 8
// Form change that activates when the Pokémon is switched out in battle.
// - No parameters.
#define FORM_CHANGE_BATTLE_SWITCH 9
// Form change that activates when the Pokémon's HP % passes a certain threshold.
// param1: Ability to check.
// param2: HP comparer
// - HP_HIGHER_THAN if the form triggers when the current HP is higher than the specified threshold.
// - HP_LOWER_EQ_THAN if the form triggers when the current HP is lower or equal than the specified threshold.
// param3: HP percentage threshold.
#define FORM_CHANGE_BATTLE_HP_PERCENT 10
// Form change that activates when the mon has the defined item.
// If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move.
// param1: item to hold.
#define FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM 11
// Form change that activates when the mon has the defined move.
// If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move.
// param1: move to have.
#define FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE 12
// Form change that activates automatically when entering battle with the specified item.
// If the item is a Red Orb, it uses the Omega Symbol for the animation and icon. Otherwise, it defaults to the Alpha symbol.
// The battle indicator icon is based on the species, with Primal Groudon's as Omega and otherwise being Alpha.
// param1: item to hold.
#define FORM_CHANGE_BATTLE_PRIMAL_REVERSION 13
// Form change that activates when a specific weather is set during battle.
// param1: weather to check
// param2: (optional) revert if specified ability is lost
#define FORM_CHANGE_BATTLE_WEATHER 14
// Form change that activates automatically when the turn ends.
// param1: ability to check.
#define FORM_CHANGE_BATTLE_TURN_END 15
// Form change that activates when the mon has the defined item.
// If it's on the player's side, it also requires for the player to trigger it by pressing START before selecting a move.
// param1: item to hold.
#define FORM_CHANGE_BATTLE_ULTRA_BURST 16
// Form change that activates when the mon Dynamaxes (TODO: with Gigantamax factor).
// - No parameters
#define FORM_CHANGE_BATTLE_GIGANTAMAX 17
// Form change that activates at a certain time of day in the overworld automatically.
// param1: time of day to check.
// - DAY if Form change that activates in the daytime.
// - NIGHT if Form change that activates at nighttime.
#define FORM_CHANGE_TIME_OF_DAY 18
// Form change that depends on a multichoice (e.g. Rotom Catalog).
// param1: multichoice list (starting at 0).
#define FORM_CHANGE_ITEM_USE_MULTICHOICE 19
// Form change that activates when inflicted with a specific status
// param1: status
#define FORM_CHANGE_STATUS 20
#endif // GUARD_CONSTANTS_FORM_CHANGE_TYPES_H

View File

@ -21,6 +21,8 @@
#define VERSION_PLATINUM 12
#define VERSION_GAMECUBE 15
#define NUM_VERSIONS 15
#define LANGUAGE_JAPANESE 1
#define LANGUAGE_ENGLISH 2
#define LANGUAGE_FRENCH 3
@ -34,6 +36,10 @@
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
#endif
// party sizes
#define PARTY_SIZE 6
#define MULTI_PARTY_SIZE (PARTY_SIZE / 2)
// capacities of various saveblock objects
#define DAYCARE_MON_COUNT 2
#define PC_ITEMS_COUNT 30
@ -74,13 +80,14 @@
#define WONDER_NEWS_TEXT_LENGTH 40
#define WONDER_CARD_BODY_TEXT_LINES 4
#define WONDER_NEWS_BODY_TEXT_LINES 10
#define TYPE_NAME_LENGTH 6
#define ABILITY_NAME_LENGTH ((B_EXPANDED_ABILITY_NAMES == TRUE) ? 16 : 12)
#define MAX_STAMP_CARD_STAMPS 7
#define TRAINER_ID_LENGTH 4
#define MAX_MON_MOVES 4
#define PARTY_SIZE 6
#define MULTI_PARTY_SIZE (PARTY_SIZE / 2)
#define ALL_MOVES_MASK ((1 << MAX_MON_MOVES) - 1)
#define QUEST_LOG_SCENE_COUNT 4

View File

@ -4,39 +4,74 @@
#define ITEM_NONE 0
// Poké Balls
#define ITEM_MASTER_BALL 1
#define ITEM_ULTRA_BALL 2
#define ITEM_GREAT_BALL 3
#define ITEM_POKE_BALL 4
#define ITEM_SAFARI_BALL 5
#define ITEM_NET_BALL 6
#define ITEM_DIVE_BALL 7
#define ITEM_POKE_BALL 1
#define ITEM_GREAT_BALL 2
#define ITEM_ULTRA_BALL 3
#define ITEM_MASTER_BALL 4
#define ITEM_PREMIER_BALL 5
#define ITEM_HEAL_BALL 6
#define ITEM_NET_BALL 7
#define ITEM_NEST_BALL 8
#define ITEM_REPEAT_BALL 9
#define ITEM_TIMER_BALL 10
#define ITEM_LUXURY_BALL 11
#define ITEM_PREMIER_BALL 12
#define ITEM_HEAL_BALL 13
#define ITEM_DUSK_BALL 14
#define ITEM_QUICK_BALL 15
#define ITEM_LEVEL_BALL 16
#define ITEM_LURE_BALL 17
#define ITEM_MOON_BALL 18
#define ITEM_FRIEND_BALL 19
#define ITEM_LOVE_BALL 20
#define ITEM_FAST_BALL 21
#define ITEM_HEAVY_BALL 22
#define ITEM_DREAM_BALL 23
#define ITEM_DIVE_BALL 9
#define ITEM_DUSK_BALL 10
#define ITEM_TIMER_BALL 11
#define ITEM_QUICK_BALL 12
#define ITEM_REPEAT_BALL 13
#define ITEM_LUXURY_BALL 14
#define ITEM_LEVEL_BALL 15
#define ITEM_LURE_BALL 16
#define ITEM_MOON_BALL 17
#define ITEM_FRIEND_BALL 18
#define ITEM_LOVE_BALL 19
#define ITEM_FAST_BALL 20
#define ITEM_HEAVY_BALL 21
#define ITEM_DREAM_BALL 22
#define ITEM_SAFARI_BALL 23
#define ITEM_SPORT_BALL 24
#define ITEM_PARK_BALL 25
#define ITEM_BEAST_BALL 26
#define ITEM_CHERISH_BALL 27
#define ITEM_CHERISH_BALL 27 // TODO: throwing CHERISH_BALL restarts game, intended?
// Note: If moving ball IDs around, updating FIRST_BALL/LAST_BALL is not sufficient
// Several places expect the ball IDs to be first and contiguous (e.g. MON_DATA_POKEBALL)
// If adding new balls, it's easiest to insert them after the last ball and increment the below IDs (and removing ITEM_034 for example)
#define FIRST_BALL ITEM_MASTER_BALL
#define LAST_BALL ITEM_PREMIER_BALL
#define FIRST_BALL ITEM_POKE_BALL
#define LAST_BALL ITEM_CHERISH_BALL
// // Poké Balls
// #define ITEM_MASTER_BALL 1
// #define ITEM_ULTRA_BALL 2
// #define ITEM_GREAT_BALL 3
// #define ITEM_POKE_BALL 4
// #define ITEM_SAFARI_BALL 5
// #define ITEM_NET_BALL 6
// #define ITEM_DIVE_BALL 7
// #define ITEM_NEST_BALL 8
// #define ITEM_REPEAT_BALL 9
// #define ITEM_TIMER_BALL 10
// #define ITEM_LUXURY_BALL 11
// #define ITEM_PREMIER_BALL 12
// #define ITEM_HEAL_BALL 13
// #define ITEM_DUSK_BALL 14
// #define ITEM_QUICK_BALL 15
// #define ITEM_LEVEL_BALL 16
// #define ITEM_LURE_BALL 17
// #define ITEM_MOON_BALL 18
// #define ITEM_FRIEND_BALL 19
// #define ITEM_LOVE_BALL 20
// #define ITEM_FAST_BALL 21
// #define ITEM_HEAVY_BALL 22
// #define ITEM_DREAM_BALL 23
// #define ITEM_SPORT_BALL 24
// #define ITEM_PARK_BALL 25
// #define ITEM_BEAST_BALL 26
// #define ITEM_CHERISH_BALL 27
// // Note: If moving ball IDs around, updating FIRST_BALL/LAST_BALL is not sufficient
// // Several places expect the ball IDs to be first and contiguous (e.g. MON_DATA_POKEBALL)
// // If adding new balls, it's easiest to insert them after the last ball and increment the below IDs (and removing ITEM_034 for example)
// #define FIRST_BALL ITEM_MASTER_BALL
// #define LAST_BALL ITEM_CHERISH_BALL
// Medicine
#define ITEM_POTION 28

View File

@ -1016,6 +1016,8 @@
#define MOVES_COUNT_DYNAMAX (LAST_MAX_MOVE + 1)
#define MOVES_COUNT_ALL MOVES_COUNT_DYNAMAX
// Used for checks for moves affected by Disable, Mimic, etc.
#define MOVE_UNAVAILABLE 0xFFFF

View File

@ -70,8 +70,8 @@
#define PARTY_ACTION_CANT_SWITCH 2
#define PARTY_ACTION_USE_ITEM 3
#define PARTY_ACTION_ABILITY_PREVENTS 4
#define PARTY_ACTION_GIVE_ITEM 5
#define PARTY_ACTION_GIVE_PC_ITEM 6
#define PARTY_ACTION_GIVE_ITEM 5
#define PARTY_ACTION_GIVE_PC_ITEM 6 // Unused. Not possible to give non-mail items directly from PC
#define PARTY_ACTION_GIVE_MAILBOX_MAIL 7
#define PARTY_ACTION_SWITCH 8
#define PARTY_ACTION_SWITCHING 9
@ -79,7 +79,8 @@
#define PARTY_ACTION_CHOOSE_AND_CLOSE 11
#define PARTY_ACTION_MOVE_TUTOR 12
#define PARTY_ACTION_MINIGAME 13
#define PARTY_ACTION_REUSABLE_ITEM 14
#define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately
#define PARTY_ACTION_CHOOSE_FAINTED_MON 15 // TODO: Party actions
// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu
#define PARTY_MSG_CHOOSE_MON 0

View File

@ -1,97 +1,6 @@
#ifndef GUARD_CONSTANTS_POKEMON_H
#define GUARD_CONSTANTS_POKEMON_H
// For (Set|Get)(Box)?MonData
#define MON_DATA_PERSONALITY 0
#define MON_DATA_OT_ID 1
#define MON_DATA_NICKNAME 2
#define MON_DATA_LANGUAGE 3
#define MON_DATA_SANITY_IS_BAD_EGG 4
#define MON_DATA_SANITY_HAS_SPECIES 5
#define MON_DATA_SANITY_IS_EGG 6
#define MON_DATA_OT_NAME 7
#define MON_DATA_MARKINGS 8
#define MON_DATA_CHECKSUM 9
#define MON_DATA_ENCRYPT_SEPARATOR 10
#define MON_DATA_SPECIES 11
#define MON_DATA_HELD_ITEM 12
#define MON_DATA_MOVE1 13
#define MON_DATA_MOVE2 14
#define MON_DATA_MOVE3 15
#define MON_DATA_MOVE4 16
#define MON_DATA_PP1 17
#define MON_DATA_PP2 18
#define MON_DATA_PP3 19
#define MON_DATA_PP4 20
#define MON_DATA_PP_BONUSES 21
#define MON_DATA_COOL 22
#define MON_DATA_BEAUTY 23
#define MON_DATA_CUTE 24
#define MON_DATA_EXP 25
#define MON_DATA_HP_EV 26
#define MON_DATA_ATK_EV 27
#define MON_DATA_DEF_EV 28
#define MON_DATA_SPEED_EV 29
#define MON_DATA_SPATK_EV 30
#define MON_DATA_SPDEF_EV 31
#define MON_DATA_FRIENDSHIP 32
#define MON_DATA_SMART 33
#define MON_DATA_POKERUS 34
#define MON_DATA_MET_LOCATION 35
#define MON_DATA_MET_LEVEL 36
#define MON_DATA_MET_GAME 37
#define MON_DATA_POKEBALL 38
#define MON_DATA_HP_IV 39
#define MON_DATA_ATK_IV 40
#define MON_DATA_DEF_IV 41
#define MON_DATA_SPEED_IV 42
#define MON_DATA_SPATK_IV 43
#define MON_DATA_SPDEF_IV 44
#define MON_DATA_IS_EGG 45
#define MON_DATA_ABILITY_NUM 46
#define MON_DATA_TOUGH 47
#define MON_DATA_SHEEN 48
#define MON_DATA_OT_GENDER 49
#define MON_DATA_COOL_RIBBON 50
#define MON_DATA_BEAUTY_RIBBON 51
#define MON_DATA_CUTE_RIBBON 52
#define MON_DATA_SMART_RIBBON 53
#define MON_DATA_TOUGH_RIBBON 54
#define MON_DATA_STATUS 55
#define MON_DATA_LEVEL 56
#define MON_DATA_HP 57
#define MON_DATA_MAX_HP 58
#define MON_DATA_ATK 59
#define MON_DATA_DEF 60
#define MON_DATA_SPEED 61
#define MON_DATA_SPATK 62
#define MON_DATA_SPDEF 63
#define MON_DATA_MAIL 64
#define MON_DATA_SPECIES_OR_EGG 65
#define MON_DATA_IVS 66
#define MON_DATA_CHAMPION_RIBBON 67
#define MON_DATA_WINNING_RIBBON 68
#define MON_DATA_VICTORY_RIBBON 69
#define MON_DATA_ARTIST_RIBBON 70
#define MON_DATA_EFFORT_RIBBON 71
#define MON_DATA_MARINE_RIBBON 72
#define MON_DATA_LAND_RIBBON 73
#define MON_DATA_SKY_RIBBON 74
#define MON_DATA_COUNTRY_RIBBON 75
#define MON_DATA_NATIONAL_RIBBON 76
#define MON_DATA_EARTH_RIBBON 77
#define MON_DATA_WORLD_RIBBON 78
// #define MON_DATA_UNUSED_RIBBONS 79
#define MON_DATA_MODERN_FATEFUL_ENCOUNTER 79
#define MON_DATA_KNOWN_MOVES 80
#define MON_DATA_RIBBON_COUNT 81
#define MON_DATA_RIBBONS 82
#define MON_DATA_ATK2 83
#define MON_DATA_DEF2 84
#define MON_DATA_SPEED2 85
#define MON_DATA_SPATK2 86
#define MON_DATA_SPDEF2 87
// Pokemon types
#define TYPE_NONE 255
#define TYPE_NORMAL 0
@ -185,8 +94,11 @@
// Shiny odds
#define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536
#define MIN_LEVEL 1
#define MAX_LEVEL 100
#define MAX_DYNAMAX_LEVEL 10
#define OT_ID_PLAYER_ID 0
#define OT_ID_PRESET 1
#define OT_ID_RANDOM_NO_SHINY 2
@ -224,11 +136,16 @@
#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 8
#define FRIENDSHIP_EVENT_FAINT_LARGE 9
#if P_UPDATED_FRIENDSHIP >= GEN_8
#define STANDARD_FRIENDSHIP 50
#else
#define STANDARD_FRIENDSHIP 70
#endif
// Constants for GetBattlerAffectionHearts (based on friendship value)
#define AFFECTION_NO_HEARTS 0 // 0-79 friendship
#define AFFECTION_ONE_HEART 1 // 80-129 friendship
#define AFFECTION_TWO_HEARTS 2 // 130-179 friendship
#define AFFECTION_THREE_HEARTS 3 // 180-219 friendship
#define AFFECTION_FOUR_HEARTS 4 // 220-254 friendship
#define AFFECTION_FIVE_HEARTS 5 // Max friendship
// Friendship value that the majority of species use.
#define STANDARD_FRIENDSHIP ((P_UPDATED_FRIENDSHIP >= GEN_8) ? 50 : 70)
#define MAX_FRIENDSHIP 255
#define MAX_SHEEN 255
@ -241,6 +158,11 @@
#define MAX_TOTAL_EVS 510
#define EV_ITEM_RAISE_LIMIT ((I_VITAMIN_EV_CAP >= GEN_8) ? MAX_PER_STAT_EVS : 100)
// Move category defines.
#define DAMAGE_CATEGORY_PHYSICAL 0
#define DAMAGE_CATEGORY_SPECIAL 1
#define DAMAGE_CATEGORY_STATUS 2
// Battle move flags
#define FLAG_MAKES_CONTACT (1 << 0)
#define FLAG_PROTECT_AFFECTED (1 << 1)
@ -270,23 +192,23 @@
#define BODY_COLOR_PINK 9
// Evolution types
#define EVOLUTIONS_END 0xFFFF // Not an actual evolution, used to mark the end of an evolution array.
#define EVO_NONE 0xFFFE // Not an actual evolution, used to generate offspring that can't evolve into the specified species, like regional forms.
#define EVO_FRIENDSHIP 1 // Pokémon levels up with friendship ≥ 220
#define EVO_FRIENDSHIP_DAY 2 // Pokémon levels up during the day with friendship ≥ 220
#define EVO_FRIENDSHIP_NIGHT 3 // Pokémon levels up at night with friendship ≥ 220
#define EVO_LEVEL 4 // Pokémon reaches the specified level
#define EVO_TRADE 5 // Pokémon is traded
#define EVO_TRADE_ITEM 6 // Pokémon is traded while it's holding the specified item
#define EVO_ITEM 7 // specified item is used on Pokémon
#define EVO_LEVEL_ATK_GT_DEF 8 // Pokémon reaches the specified level with attack > defense
#define EVO_LEVEL_ATK_EQ_DEF 9 // Pokémon reaches the specified level with attack = defense
#define EVO_LEVEL_ATK_LT_DEF 10 // Pokémon reaches the specified level with attack < defense
#define EVO_LEVEL_SILCOON 11 // Pokémon reaches the specified level with a Silcoon personality value
#define EVO_LEVEL_CASCOON 12 // Pokémon reaches the specified level with a Cascoon personality value
#define EVO_LEVEL_NINJASK 13 // Pokémon reaches the specified level (special value for Ninjask)
#define EVO_LEVEL_SHEDINJA 14 // Pokémon reaches the specified level (special value for Shedinja)
#define EVO_BEAUTY 15 // Pokémon levels up with beauty ≥ specified value
#define EVOLUTIONS_END 0xFFFF // Not an actual evolution, used to mark the end of an evolution array.
#define EVO_NONE 0xFFFE // Not an actual evolution, used to generate offspring that can't evolve into the specified species, like regional forms.
#define EVO_FRIENDSHIP 1 // Pokémon levels up with friendship ≥ 220
#define EVO_FRIENDSHIP_DAY 2 // Pokémon levels up during the day with friendship ≥ 220
#define EVO_FRIENDSHIP_NIGHT 3 // Pokémon levels up at night with friendship ≥ 220
#define EVO_LEVEL 4 // Pokémon reaches the specified level
#define EVO_TRADE 5 // Pokémon is traded
#define EVO_TRADE_ITEM 6 // Pokémon is traded while it's holding the specified item
#define EVO_ITEM 7 // specified item is used on Pokémon
#define EVO_LEVEL_ATK_GT_DEF 8 // Pokémon reaches the specified level with attack > defense
#define EVO_LEVEL_ATK_EQ_DEF 9 // Pokémon reaches the specified level with attack = defense
#define EVO_LEVEL_ATK_LT_DEF 10 // Pokémon reaches the specified level with attack < defense
#define EVO_LEVEL_SILCOON 11 // Pokémon reaches the specified level with a Silcoon personality value
#define EVO_LEVEL_CASCOON 12 // Pokémon reaches the specified level with a Cascoon personality value
#define EVO_LEVEL_NINJASK 13 // Pokémon reaches the specified level (special value for Ninjask)
#define EVO_LEVEL_SHEDINJA 14 // Pokémon reaches the specified level (special value for Shedinja)
#define EVO_BEAUTY 15 // Pokémon levels up with beauty ≥ specified value
#define EVO_LEVEL_FEMALE 16 // Pokémon reaches the specified level, is female
#define EVO_LEVEL_MALE 17 // Pokémon reaches the specified level, is male
#define EVO_LEVEL_NIGHT 18 // Pokémon reaches the specified level, is night
@ -318,14 +240,19 @@
#define EVO_MOVE_THREE_SEGMENT 44 // Pokémon levels up, knows specified move, has a personality value with a modulus of 1-99
#define EVO_LEVEL_FAMILY_OF_THREE 45 // Pokémon reaches the specified level with a personality value with a modulus of 0
#define EVO_LEVEL_FAMILY_OF_FOUR 46 // Pokémon reaches the specified level with a personality value with a modulus of 1-99
#define EVO_LEVEL_MOVE_TWENTY_TIMES 47 // Pokémon levels up after having used a move for at least 20 times
#define EVO_LEVEL_RECOIL_DAMAGE_MALE 48 // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a male
#define EVO_LEVEL_RECOIL_DAMAGE_FEMALE 49 // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a female
#define EVOS_PER_MON 5
#define EVO_MODE_NORMAL 0
#define EVO_MODE_TRADE 1
#define EVO_MODE_ITEM_USE 2
#define EVO_MODE_ITEM_CHECK 3 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve
#define EVO_MODE_NORMAL 0
#define EVO_MODE_TRADE 1
#define EVO_MODE_ITEM_USE 2
#define EVO_MODE_ITEM_CHECK 3 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve
#define EVO_MODE_BATTLE_SPECIAL 4
#define EVO_MODE_OVERWORLD_SPECIAL 5
#define MON_PIC_WIDTH 64
#define MON_PIC_HEIGHT 64
@ -336,6 +263,11 @@
// - Deoxys has 2 frames, 1 for each form
#define MAX_MON_PIC_FRAMES 4
#define BATTLE_ALIVE_EXCEPT_BATTLER 0
#define BATTLE_ALIVE_SIDE 1
#define SKIP_FRONT_ANIM (1 << 7)
// used by ShouldIgnoreDeoxysForm
#define DEOXYS_CHECK_BATTLE_SPRITE 1
#define DEOXYS_CHECK_TRADE_MAIN 3
@ -345,4 +277,6 @@
#define NUM_NORMAL_ABILITY_SLOTS 2
#define NUM_HIDDEN_ABILITY_SLOTS 1
#define LEGENDARY_PERFECT_IV_COUNT 3
#endif // GUARD_CONSTANTS_POKEMON_H

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,7 @@
#define GUARD_DATA_H
#include "global.h"
#include "constants/trainers.h"
#define SPECIES_SHINY_TAG 500
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
@ -23,6 +24,13 @@ extern const u8 gMoveNames[][MOVE_NAME_LENGTH + 1];
extern const u8 gTrainerClassNames[][13];
static inline u16 SanitizeTrainerId(u16 trainerId)
{
if (trainerId >= NUM_TRAINERS)
return TRAINER_NONE;
return trainerId;
}
// extern const struct MonCoords gMonFrontPicCoords[];
// extern const struct CompressedSpriteSheet gMonFrontPicTable[];
// extern const struct MonCoords gMonBackPicCoords[];
@ -41,8 +49,6 @@ extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow;
extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
extern const u8 gEnemyMonElevation[NUM_SPECIES];
extern const u8 *const gBattleAnims_General[];
extern const u8 *const gBattleAnims_Special[];
@ -63,4 +69,9 @@ extern const struct SpriteFrameImage gTrainerBackPicTable_RSMay[];
extern const union AnimCmd sAnim_GeneralFrame0[];
// static inline const struct TrainerMon *GetTrainerPartyFromId(u16 trainerId)
// {
// return gTrainers[SanitizeTrainerId(trainerId)].party;
// }
#endif // GUARD_DATA_H

81
include/fpmath.h Normal file
View File

@ -0,0 +1,81 @@
#ifndef FPMATH_H_
#define FPMATH_H_
typedef s16 q4_12_t;
typedef u32 uq4_12_t;
#define Q_4_12_SHIFT (12)
#define UQ_4_12_SHIFT (12)
// Converts a number to Q8.8 fixed-point format
#define Q_8_8(n) ((s16)((n) * 256))
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((q4_12_t)((n) * 4096))
#define UQ_4_12(n) ((uq4_12_t)((n) * 4096))
// Converts a number to Q24.8 fixed-point format
#define Q_24_8(n) ((s32)((n) << 8))
// Converts a Q8.8 fixed-point format number to a regular integer
#define Q_8_8_TO_INT(n) ((s32)((n) / 256))
// Converts a Q4.12 fixed-point format number to a regular integer
#define Q_4_12_TO_INT(n) ((s32)((n) / 4096))
#define UQ_4_12_TO_INT(n) ((u32)((n) / 4096))
// Converts a Q24.8 fixed-point format number to a regular integer
#define Q_24_8_TO_INT(n) ((s32)((n) >> 8))
// Rounding value for Q4.12 fixed-point format
#define Q_4_12_ROUND ((1) << (Q_4_12_SHIFT - 1))
#define UQ_4_12_ROUND ((1) << (UQ_4_12_SHIFT - 1))
// Basic arithmetic for fixed point number formats
// Consumers should use encapsulated functions where possible
// FP API does not provide sanity checks against overflows
static inline uq4_12_t uq4_12_add(uq4_12_t a, uq4_12_t b)
{
return a + b;
}
static inline uq4_12_t uq4_12_subtract(uq4_12_t a, uq4_12_t b)
{
return a - b;
}
static inline uq4_12_t uq4_12_multiply(uq4_12_t a, uq4_12_t b)
{
u32 product = (u32) a * b;
return (product + UQ_4_12_ROUND) >> UQ_4_12_SHIFT;
}
static inline uq4_12_t uq4_12_multiply_half_down(uq4_12_t a, uq4_12_t b)
{
u32 product = (u32) a * b;
return (product + UQ_4_12_ROUND - 1) >> UQ_4_12_SHIFT;
}
static inline uq4_12_t uq4_12_divide(uq4_12_t dividend, uq4_12_t divisor)
{
if (divisor == UQ_4_12(0.0)) return UQ_4_12(0);
return (dividend << UQ_4_12_SHIFT) / divisor;
}
// Multiplies value by the UQ_4_12 number modifier.
// Returns an integer, rounded to nearest (rounding down on n.5)
static inline u32 uq4_12_multiply_by_int_half_down(uq4_12_t modifier, u32 value)
{
return UQ_4_12_TO_INT((modifier * value) + UQ_4_12_ROUND - 1);
}
// Multiplies value by the UQ_4_12 number modifier.
// Returns an integer, rounded to nearest (rounding up on n.5)
static inline u32 uq4_12_multiply_by_int_half_up(uq4_12_t modifier, u32 value)
{
return UQ_4_12_TO_INT((modifier * value) + UQ_4_12_ROUND);
}
#endif // FPMATH_H_

View File

@ -4,6 +4,8 @@
#include "config.h"
#include "gba/gba.h"
#include <string.h>
#include "fpmath.h"
#include "metaprogram.h"
#include "constants/global.h"
#include "constants/flags.h"
#include "constants/vars.h"
@ -51,13 +53,13 @@
#define Q_8_8(n) ((s16)((n) * 256))
// Converts a number from Q8.8 fixed-point format
#define Q_8_8_TO_INT(n) ((s16)((n) >> 8))
// #define Q_8_8_TO_INT(n) ((s16)((n) >> 8))
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((s16)((n) * 4096))
// #define Q_4_12(n) ((s16)((n) * 4096))
// Converts a number from Q4.12 fixed-point format
#define Q_4_12_TO_INT(n) ((s16)((n) >> 12))
// #define Q_4_12_TO_INT(n) ((s16)((n) >> 12))
// Converts a number to QN.S fixed-point format (16-bits)
#define Q_N_S(s, n) ((s16)((n) * (1 << (s))))
@ -86,6 +88,12 @@
#define SAFE_DIV(a, b) ((a) / (b))
#endif
// The below macro does a%n, but (to match) will switch to a&(n-1) if n is a power of 2.
// There are cases where GF does a&(n-1) where we would really like to have a%n, because
// if n is changed to a value that isn't a power of 2 then a&(n-1) is unlikely to work as
// intended, and a%n for powers of 2 isn't always optimized to use &.
#define MOD(a, n)(((n) & ((n)-1)) ? ((a) % (n)) : ((a) & ((n)-1)))
// Extracts the upper 16 bits of a 32-bit number
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
@ -132,25 +140,27 @@ extern u8 gStringVar4[];
#define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES)
// Calls m0/m1/.../m8 depending on how many arguments are passed.
#define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__)
// #define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__)
// This returns the number of arguments passed to it (up to 8).
#define NARG_8(...) NARG_8_(_, ##__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define NARG_8_(_, a, b, c, d, e, f, g, h, N, ...) N
// #define NARG_8(...) NARG_8_(_, ##__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0)
// #define NARG_8_(_, a, b, c, d, e, f, g, h, N, ...) N
#define CAT(a, b) CAT_(a, b)
#define CAT_(a, b) a ## b
// #define CAT(a, b) CAT_(a, b)
// #define CAT_(a, b) a ## b
#define STR(a) STR_(a)
#define STR_(a) #a
// #define STR(a) STR_(a)
// #define STR_(a) #a
// Converts a string to a compound literal, essentially making it a pointer to const u8
#define COMPOUND_STRING(str) (const u8[]) _(str)
// #define COMPOUND_STRING(str) (const u8[]) _(str)
// This produces an error at compile-time if expr is zero.
// It looks like file.c:line: size of array `id' is negative
#define STATIC_ASSERT(expr, id) typedef char id[(expr) ? 1 : -1];
#define FEATURE_FLAG_ASSERT(flag, id) STATIC_ASSERT(flag > TEMP_FLAGS_END || flag == 0, id)
struct Coords8
{
s8 x;

View File

@ -70,6 +70,7 @@ u8 ItemId_GetType(u16 itemId);
ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
u8 ItemId_GetBattleUsage(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
u32 ItemId_GetFlingPower(u32 itemId);
u16 ItemId_GetPrice(u16 itemId);
void ClearBag(void);
void ClearPCItemSlots(void);

143
include/metaprogram.h Normal file
View File

@ -0,0 +1,143 @@
/* Macros to aid with metaprogramming. */
#ifndef METAPROGRAM_H
#define METAPROGRAM_H
/* Check if VA_OPT_ is supported by the compiler. GCC's version should be at least 9.5*/
#define PP_THIRD_ARG(a,b,c,...) c
#define VA_OPT_SUPPORTED_I(...) PP_THIRD_ARG(__VA_OPT__(,),TRUE,FALSE,)
#define VA_OPT_SUPPORTED VA_OPT_SUPPORTED_I(?)
#if !VA_OPT_SUPPORTED
#error ERROR: VA_OPT__ is not supported. Please update your gcc compiler to version 10 or higher
#endif // VA_OPT_SUPPORTED
/* Calls m0/m1/.../m8 depending on how many arguments are passed. */
#define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__)
/* Returns the number of arguments passed to it (up to 8). */
#define NARG_8(...) NARG_8_(_, ##__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define NARG_8_(_, a, b, c, d, e, f, g, h, N, ...) N
/* Expands 'a' and 'b' and then concatenates them. */
#define CAT(a, b) CAT_(a, b)
#define CAT_(a, b) a ## b
/* Expands '__VA_ARGS__' and then stringizes them. */
#define STR(...) STR_(__VA_ARGS__)
#define STR_(...) #__VA_ARGS__
/* Converts a string to a compound literal, essentially making it a pointer to const u8 */
#define COMPOUND_STRING(str) (const u8[]) _(str)
/* Expands to the first/second/third/fourth argument. */
#define FIRST(a, ...) a
#define SECOND(a, ...) __VA_OPT__(FIRST(__VA_ARGS__))
#define THIRD(a, ...) __VA_OPT__(SECOND(__VA_ARGS__))
#define FOURTH(a, ...) __VA_OPT__(THIRD(__VA_ARGS__))
/* Expands to everything but the first x arguments */
#define EXCEPT_1(a, ...) __VA_OPT__(__VA_ARGS__)
#define EXCEPT_2(a, ...) __VA_OPT__(EXCEPT_1(__VA_ARGS__))
#define EXCEPT_3(a, ...) __VA_OPT__(EXCEPT_2(__VA_ARGS__))
#define EXCEPT_4(a, ...) __VA_OPT__(EXCEPT_3(__VA_ARGS__))
/* 'UNPACK (x, y, z)' expands to 'x, y, z'.
* Useful for passing arguments which may contain commas into a macro. */
#define UNPACK(...) __VA_ARGS__
/* Expands to 'macro(...args, ...)'. */
#define INVOKE_WITH(macro, args, ...) INVOKE_WITH_(macro, UNPACK args __VA_OPT__(, __VA_ARGS__))
#define INVOKE_WITH_(macro, ...) macro(__VA_ARGS__)
/* Recursive macros.
* Based on https://www.scs.stanford.edu/~dm/blog/va-opt.html
*
* Macros prefixed with R_ are recursive, to correctly expand them the
* top-level macro which references them should use 'RECURSIVELY' around
* them. 'RECURSIVELY' cannot be nested, hence the top-level macro must
* use it so that a recursive macro is able to reference another
* recursive macro. */
#define RECURSIVELY(...) RECURSIVELY_4(RECURSIVELY_4(RECURSIVELY_4(RECURSIVELY_4(__VA_ARGS__))))
#define RECURSIVELY_4(...) RECURSIVELY_3(RECURSIVELY_3(RECURSIVELY_3(RECURSIVELY_3(__VA_ARGS__))))
#define RECURSIVELY_3(...) RECURSIVELY_2(RECURSIVELY_2(RECURSIVELY_2(RECURSIVELY_2(__VA_ARGS__))))
#define RECURSIVELY_2(...) RECURSIVELY_1(RECURSIVELY_1(RECURSIVELY_1(RECURSIVELY_1(__VA_ARGS__))))
#define RECURSIVELY_1(...) __VA_ARGS__
/* Useful for deferring expansion until the second scan. See
* https://www.scs.stanford.edu/~dm/blog/va-opt.html for more info. */
#define PARENS ()
/* Expands to 'macro(a)' for each 'a' in '...' */
#define R_FOR_EACH(macro, ...) __VA_OPT__(R_FOR_EACH_(macro, __VA_ARGS__))
#define R_FOR_EACH_(macro, a, ...) macro(a) __VA_OPT__(R_FOR_EACH_P PARENS (macro, __VA_ARGS__))
#define R_FOR_EACH_P() R_FOR_EACH_
/* Expands to 'macro(...args, a)' for each 'a' in '...'. */
#define R_FOR_EACH_WITH(macro, args, ...) __VA_OPT__(R_FOR_EACH_WITH_(macro, args, __VA_ARGS__))
#define R_FOR_EACH_WITH_(macro, args, a, ...) INVOKE_WITH(macro, args, a) __VA_OPT__(R_FOR_EACH_WITH_P PARENS (macro, args, __VA_ARGS__))
#define R_FOR_EACH_WITH_P() R_FOR_EACH_WITH_
/* Picks the xth VA_ARG if it exists, otherwise returns a default value */
#define DEFAULT(_default, ...) FIRST(__VA_OPT__(__VA_ARGS__, ) _default)
#define DEFAULT_2(_default, ...) DEFAULT(_default __VA_OPT__(, SECOND(__VA_ARGS__)))
#define DEFAULT_3(_default, ...) DEFAULT(_default __VA_OPT__(, THIRD(__VA_ARGS__)))
#define DEFAULT_4(_default, ...) DEFAULT(_default __VA_OPT__(, FOURTH(__VA_ARGS__)))
/* (Credit to MGriffin) A rather monstrous way of finding the set bit in a word.
Invalid input causes a compiler error. Sample: https://cexplore.karathan.at/z/x1hm7B */
#define BIT_INDEX(n) \
(n) == (1 << 0) ? 0 : \
(n) == (1 << 1) ? 1 : \
(n) == (1 << 2) ? 2 : \
(n) == (1 << 3) ? 3 : \
(n) == (1 << 4) ? 4 : \
(n) == (1 << 5) ? 5 : \
(n) == (1 << 6) ? 6 : \
(n) == (1 << 7) ? 7 : \
(n) == (1 << 8) ? 8 : \
(n) == (1 << 9) ? 9 : \
(n) == (1 << 10) ? 10 : \
(n) == (1 << 11) ? 11 : \
(n) == (1 << 12) ? 12 : \
(n) == (1 << 13) ? 13 : \
(n) == (1 << 14) ? 14 : \
(n) == (1 << 15) ? 15 : \
(n) == (1 << 16) ? 16 : \
(n) == (1 << 17) ? 17 : \
(n) == (1 << 18) ? 18 : \
(n) == (1 << 19) ? 19 : \
(n) == (1 << 20) ? 20 : \
(n) == (1 << 21) ? 21 : \
(n) == (1 << 22) ? 22 : \
(n) == (1 << 23) ? 23 : \
(n) == (1 << 24) ? 24 : \
(n) == (1 << 25) ? 25 : \
(n) == (1 << 26) ? 26 : \
(n) == (1 << 27) ? 27 : \
(n) == (1 << 28) ? 28 : \
(n) == (1 << 29) ? 29 : \
(n) == (1 << 30) ? 30 : \
(n) == (1 << 31) ? 31 : \
*(u32 *)NULL
#define COMPRESS_BITS_0 0, 1
#define COMPRESS_BITS_1 1, 1
#define COMPRESS_BITS_2 2, 1
#define COMPRESS_BITS_3 3, 1
#define COMPRESS_BITS_4 4, 1
#define COMPRESS_BITS_5 5, 1
#define COMPRESS_BITS_6 6, 1
#define COMPRESS_BITS_7 7, 1
/* Will try and compress a set bit (or up to three sequential bits) into a single byte
Input must be of the form (upper << lower) where upper can be up to 3, lower up to 31 */
#define COMPRESS_BITS(_val) COMPRESS_BITS_STEP_2 _val
#define COMPRESS_BITS_STEP_2(_unpacked) COMPRESS_BITS_STEP_3(COMPRESS_BITS_## _unpacked)
#define COMPRESS_BITS_STEP_3(...) COMPRESS_BITS_STEP_4(__VA_ARGS__)
#define COMPRESS_BITS_STEP_4(upper, lower) (((upper % 8) << 5) + (BIT_INDEX(lower)))
/* Will read a compressed bit stored by COMPRESS_BIT into a single byte */
#define UNCOMPRESS_BITS(compressed) ((compressed >> 5) << (compressed & 0x1F))
#endif

View File

@ -60,8 +60,8 @@ void ItemUseCB_ResetEVs(u8 taskId, TaskFunc task);
void ItemUseCB_PPRecovery(u8 taskId, TaskFunc func);
void ItemUseCB_PPUp(u8 taskId, TaskFunc func);
u16 ItemIdToBattleMoveId(u16 item);
bool8 IsMoveHm(u16 move);
bool8 MonKnowsMove(struct Pokemon *mon, u16 move);
bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move);
void ItemUseCB_TMHM(u8 taskId, TaskFunc func);
void ItemUseCB_RareCandy(u8 taskId, TaskFunc func);
void ItemUseCB_SacredAsh(u8 taskId, TaskFunc func);

View File

@ -3,26 +3,159 @@
#include "global.h"
#include "sprite.h"
#include "constants/pokemon.h"
#include "constants/items.h"
#include "constants/region_map_sections.h"
#include "constants/pokemon.h"
#define GET_BASE_SPECIES_ID(speciesId) (GetFormSpeciesId(speciesId, 0))
#define FORM_SPECIES_END (0xffff)
// For (Set|Get)(Box)?MonData
enum {
MON_DATA_PERSONALITY,
MON_DATA_STATUS,
MON_DATA_OT_ID,
MON_DATA_LANGUAGE,
MON_DATA_SANITY_IS_BAD_EGG,
MON_DATA_SANITY_HAS_SPECIES,
MON_DATA_SANITY_IS_EGG,
MON_DATA_OT_NAME,
MON_DATA_MARKINGS,
MON_DATA_CHECKSUM,
MON_DATA_HP,
MON_DATA_IS_SHINY,
MON_DATA_HIDDEN_NATURE,
MON_DATA_HP_LOST,
MON_DATA_ENCRYPT_SEPARATOR,
MON_DATA_NICKNAME,
MON_DATA_SPECIES,
MON_DATA_HELD_ITEM,
MON_DATA_MOVE1,
MON_DATA_MOVE2,
MON_DATA_MOVE3,
MON_DATA_MOVE4,
MON_DATA_PP1,
MON_DATA_PP2,
MON_DATA_PP3,
MON_DATA_PP4,
MON_DATA_PP_BONUSES,
MON_DATA_COOL,
MON_DATA_BEAUTY,
MON_DATA_CUTE,
MON_DATA_EXP,
MON_DATA_HP_EV,
MON_DATA_ATK_EV,
MON_DATA_DEF_EV,
MON_DATA_SPEED_EV,
MON_DATA_SPATK_EV,
MON_DATA_SPDEF_EV,
MON_DATA_FRIENDSHIP,
MON_DATA_SMART,
MON_DATA_POKERUS,
MON_DATA_MET_LOCATION,
MON_DATA_MET_LEVEL,
MON_DATA_MET_GAME,
MON_DATA_POKEBALL,
MON_DATA_HP_IV,
MON_DATA_ATK_IV,
MON_DATA_DEF_IV,
MON_DATA_SPEED_IV,
MON_DATA_SPATK_IV,
MON_DATA_SPDEF_IV,
MON_DATA_IS_EGG,
MON_DATA_ABILITY_NUM,
MON_DATA_TOUGH,
MON_DATA_SHEEN,
MON_DATA_OT_GENDER,
MON_DATA_COOL_RIBBON,
MON_DATA_BEAUTY_RIBBON,
MON_DATA_CUTE_RIBBON,
MON_DATA_SMART_RIBBON,
MON_DATA_TOUGH_RIBBON,
MON_DATA_LEVEL,
MON_DATA_MAX_HP,
MON_DATA_ATK,
MON_DATA_DEF,
MON_DATA_SPEED,
MON_DATA_SPATK,
MON_DATA_SPDEF,
MON_DATA_MAIL,
MON_DATA_SPECIES_OR_EGG,
MON_DATA_IVS,
MON_DATA_CHAMPION_RIBBON,
MON_DATA_WINNING_RIBBON,
MON_DATA_VICTORY_RIBBON,
MON_DATA_ARTIST_RIBBON,
MON_DATA_EFFORT_RIBBON,
MON_DATA_MARINE_RIBBON,
MON_DATA_LAND_RIBBON,
MON_DATA_SKY_RIBBON,
MON_DATA_COUNTRY_RIBBON,
MON_DATA_NATIONAL_RIBBON,
MON_DATA_EARTH_RIBBON,
MON_DATA_WORLD_RIBBON,
MON_DATA_MODERN_FATEFUL_ENCOUNTER,
MON_DATA_KNOWN_MOVES,
MON_DATA_RIBBON_COUNT,
MON_DATA_RIBBONS,
MON_DATA_ATK2,
MON_DATA_DEF2,
MON_DATA_SPEED2,
MON_DATA_SPATK2,
MON_DATA_SPDEF2,
MON_DATA_HYPER_TRAINED_HP,
MON_DATA_HYPER_TRAINED_ATK,
MON_DATA_HYPER_TRAINED_DEF,
MON_DATA_HYPER_TRAINED_SPEED,
MON_DATA_HYPER_TRAINED_SPATK,
MON_DATA_HYPER_TRAINED_SPDEF,
MON_DATA_IS_SHADOW,
MON_DATA_DYNAMAX_LEVEL,
MON_DATA_GIGANTAMAX_FACTOR,
MON_DATA_TERA_TYPE,
MON_DATA_EVOLUTION_TRACKER,
};
struct PokemonSubstruct0
{
u16 species;
u16 heldItem;
u32 experience;
u16 species:11; // 2047 species.
u16 teraType:5; // 30 types.
u16 heldItem:10; // 1023 items.
u16 unused_02:6;
u32 experience:21;
u32 nickname11:8; // 11th character of nickname.
u32 unused_04:3;
u8 ppBonuses;
u8 friendship;
u16 filler;
u16 pokeball:6; // 63 balls.
u16 nickname12:8; // 12th character of nickname.
u16 unused_0A:2;
};
struct PokemonSubstruct1
{
u16 moves[MAX_MON_MOVES];
u8 pp[MAX_MON_MOVES];
u16 move1:11; // 2047 moves.
u16 evolutionTracker1:5;
u16 move2:11; // 2047 moves.
u16 evolutionTracker2:4;
u16 unused_02:1;
u16 move3:11; // 2047 moves.
u16 unused_04:5;
u16 move4:11; // 2047 moves.
u16 unused_06:3;
u16 hyperTrainedHP:1;
u16 hyperTrainedAttack:1;
u8 pp1:7; // 127 PP.
u8 hyperTrainedDefense:1;
u8 pp2:7; // 127 PP.
u8 hyperTrainedSpeed:1;
u8 pp3:7; // 127 PP.
u8 hyperTrainedSpAttack:1;
u8 pp4:7; // 127 PP.
u8 hyperTrainedSpDefense:1;
};
struct PokemonSubstruct2
@ -43,41 +176,40 @@ struct PokemonSubstruct2
struct PokemonSubstruct3
{
/* 0x00 */ u8 pokerus;
/* 0x01 */ u8 metLocation;
/* 0x02 */ u16 metLevel:7;
/* 0x02 */ u16 metGame:4;
/* 0x03 */ u16 pokeball:4;
/* 0x03 */ u16 otGender:1;
/* 0x04 */ u32 hpIV:5;
/* 0x04 */ u32 attackIV:5;
/* 0x05 */ u32 defenseIV:5;
/* 0x05 */ u32 speedIV:5;
/* 0x05 */ u32 spAttackIV:5;
/* 0x06 */ u32 spDefenseIV:5;
/* 0x07 */ u32 isEgg:1;
/* 0x07 */ u32 abilityNum:2;
/* 0x08 */ u32 coolRibbon:3; // Stores the highest contest rank achieved in the Cool category.
/* 0x08 */ u32 beautyRibbon:3; // Stores the highest contest rank achieved in the Beauty category.
/* 0x08 */ u32 cuteRibbon:3; // Stores the highest contest rank achieved in the Cute category.
/* 0x09 */ u32 smartRibbon:3; // Stores the highest contest rank achieved in the Smart category.
/* 0x09 */ u32 toughRibbon:3; // Stores the highest contest rank achieved in the Tough category.
/* 0x09 */ u32 championRibbon:1; // Given when defeating the Champion. Because both RSE and FRLG use it, later generations don't specify from which region it comes from.
/* 0x0A */ u32 winningRibbon:1; // Given at the Battle Tower's Level 50 challenge by winning a set of seven battles that extends the current streak to 56 or more.
/* 0x0A */ u32 victoryRibbon:1; // Given at the Battle Tower's Level 100 challenge by winning a set of seven battles that extends the current streak to 56 or more.
/* 0x0A */ u32 artistRibbon:1; // Given at the Contest Hall by winning a Master Rank contest with at least 800 points, and agreeing to have the Pokémon's portrait placed in the museum after being offered.
/* 0x0A */ u32 effortRibbon:1; // Given at Slateport's market to Pokémon with maximum EVs.
/* 0x0A */ u32 marineRibbon:1; // Never distributed.
/* 0x0A */ u32 landRibbon:1; // Never distributed.
/* 0x0A */ u32 skyRibbon:1; // Never distributed.
/* 0x0A */ u32 countryRibbon:1; // Distributed during Pokémon Festa '04 and '05 to tournament winners.
/* 0x0B */ u32 nationalRibbon:1; // Given to purified Shadow Pokémon in Colosseum/XD.
/* 0x0B */ u32 earthRibbon:1; // Given to teams that have beaten Mt. Battle's 100-battle challenge in Colosseum/XD.
/* 0x0B */ u32 worldRibbon:1; // Distributed during Pokémon Festa '04 and '05 to tournament winners.
/* 0x0B */ u32 unusedRibbons:3; // Discarded in Gen 4.
u8 pokerus;
u8 metLocation;
u16 metLevel:7;
u16 metGame:4;
u16 dynamaxLevel:4;
u16 otGender:1;
u32 hpIV:5;
u32 attackIV:5;
u32 defenseIV:5;
u32 speedIV:5;
u32 spAttackIV:5;
u32 spDefenseIV:5;
u32 isEgg:1;
u32 gigantamaxFactor:1;
u32 coolRibbon:3; // Stores the highest contest rank achieved in the Cool category.
u32 beautyRibbon:3; // Stores the highest contest rank achieved in the Beauty category.
u32 cuteRibbon:3; // Stores the highest contest rank achieved in the Cute category.
u32 smartRibbon:3; // Stores the highest contest rank achieved in the Smart category.
u32 toughRibbon:3; // Stores the highest contest rank achieved in the Tough category.
u32 championRibbon:1; // Given when defeating the Champion. Because both RSE and FRLG use it, later generations don't specify from which region it comes from.
u32 winningRibbon:1; // Given at the Battle Tower's Level 50 challenge by winning a set of seven battles that extends the current streak to 56 or more.
u32 victoryRibbon:1; // Given at the Battle Tower's Level 100 challenge by winning a set of seven battles that extends the current streak to 56 or more.
u32 artistRibbon:1; // Given at the Contest Hall by winning a Master Rank contest with at least 800 points, and agreeing to have the Pokémon's portrait placed in the museum after being offered.
u32 effortRibbon:1; // Given at Slateport's market to Pokémon with maximum EVs.
u32 marineRibbon:1; // Never distributed.
u32 landRibbon:1; // Never distributed.
u32 skyRibbon:1; // Never distributed.
u32 countryRibbon:1; // Distributed during Pokémon Festa '04 and '05 to tournament winners.
u32 nationalRibbon:1; // Given to purified Shadow Pokémon in Colosseum/XD.
u32 earthRibbon:1; // Given to teams that have beaten Mt. Battle's 100-battle challenge in Colosseum/XD.
u32 worldRibbon:1; // Distributed during Pokémon Festa '04 and '05 to tournament winners.
u32 isShadow:1;
u32 unused_0B:1;
u32 abilityNum:2;
// The functionality of this bit changed in FRLG:
// In RS, this bit does nothing, is never set, & is accidentally unset when hatching Eggs.
@ -110,17 +242,21 @@ struct BoxPokemon
{
u32 personality;
u32 otId;
u8 nickname[POKEMON_NAME_LENGTH];
u8 language;
u8 nickname[min(10, POKEMON_NAME_LENGTH)];
u8 language:3;
u8 hiddenNatureModifier:5; // 31 natures.
u8 isBadEgg:1;
u8 hasSpecies:1;
u8 isEgg:1;
u8 blockBoxRS:1; // Unused, but Pokémon Box Ruby & Sapphire will refuse to deposit a Pokémon with this flag set
u8 unused:4;
u8 unused_13:4;
u8 otName[PLAYER_NAME_LENGTH];
u8 markings;
u8 markings:4;
u8 compressedStatus:4;
u16 checksum;
u16 unknown;
u16 hpLost:14; // 16383 HP.
u16 shinyModifier:1;
u16 unused_1E:1;
union
{
@ -186,27 +322,28 @@ struct BattlePokemon
/*0x15*/ u32 speedIV:5;
/*0x16*/ u32 spAttackIV:5;
/*0x17*/ u32 spDefenseIV:5;
/*0x17*/ u32 isEgg:1;
/*0x17*/ u32 abilityNum:2;
/*0x18*/ s8 statStages[NUM_BATTLE_STATS];
/*0x20*/ u16 ability;
/*0x21*/ u8 type1;
/*0x22*/ u8 type2;
/*0x23*/ u8 unknown;
/*0x24*/ u8 pp[MAX_MON_MOVES];
/*0x28*/ u16 hp;
/*0x2A*/ u8 level;
/*0x2B*/ u8 friendship;
/*0x2C*/ u16 maxHP;
/*0x2E*/ u16 item;
/*0x30*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x3B*/ u8 ppBonuses;
/*0x3C*/ u8 otName[PLAYER_NAME_LENGTH + 1];
/*0x44*/ u32 experience;
/*0x48*/ u32 personality;
/*0x4C*/ u32 status1;
/*0x50*/ u32 status2;
/*0x54*/ u32 otId;
/*0x22*/ u8 type1;
/*0x23*/ u8 type2;
/*0x24*/ u8 type3;
/*0x25*/ u8 pp[MAX_MON_MOVES];
/*0x29*/ u16 hp;
/*0x2B*/ u8 level;
/*0x2C*/ u8 friendship;
/*0x2D*/ u16 maxHP;
/*0x2F*/ u16 item;
/*0x31*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x3C*/ u8 ppBonuses;
/*0x3D*/ u8 otName[PLAYER_NAME_LENGTH + 1];
/*0x45*/ u32 experience;
/*0x49*/ u32 personality;
/*0x4D*/ u32 status1;
/*0x51*/ u32 status2;
/*0x55*/ u32 otId;
/*0x59*/ u8 metLevel;
/*0x5A*/ bool8 isShiny;
};
struct SpeciesInfo /*0x8C*/
@ -249,9 +386,9 @@ struct SpeciesInfo /*0x8C*/
/* 0x38 */ u16 trainerScale;
/* 0x3A */ u16 trainerOffset;
/* 0x3C */ const u8 *description;
/* 0x40 */ u8 bodyColor : 7;
/* 0x40 */ u8 bodyColor:7;
// Graphical Data
u8 noFlip : 1;
u8 noFlip:1;
/* 0x41 */ u8 frontAnimDelay;
/* 0x42 */ u8 frontAnimId;
/* 0x43 */ u8 backAnimId;
@ -266,7 +403,9 @@ struct SpeciesInfo /*0x8C*/
/* 0x64 */ const u32 *shinyPaletteFemale;
/* 0x68 */ const u8 *iconSprite;
/* 0x6C */ const u8 *iconSpriteFemale;
// #if P_FOOTPRINTS
/* 0x70 */ const u8 *footprint;
// #endif
// All Pokémon pics are 64x64, but this data table defines where in this 64x64 frame the sprite's non-transparent pixels actually are.
/* 0x74 */ u8 frontPicSize; // The dimensions of this drawn pixel area.
/* 0x74 */ u8 frontPicSizeFemale; // The dimensions of this drawn pixel area.
@ -282,6 +421,7 @@ struct SpeciesInfo /*0x8C*/
/* 0x7A */ u32 isLegendary:1;
u32 isMythical:1;
u32 isUltraBeast:1;
u32 isTotem:1;
u32 isParadoxForm:1;
u32 isMegaEvolution:1;
u32 isPrimalReversion:1;
@ -294,7 +434,8 @@ struct SpeciesInfo /*0x8C*/
u32 cannotBeTraded:1;
u32 allPerfectIVs:1;
u32 dexForceRequired:1; // This species will be taken into account for Pokédex ratings even if they have the "isMythical" flag set.
u32 padding4:17;
u32 tmIlliterate:1; // This species will be unable to learn the universal moves.
u32 padding4:15;
// Move Data
/* 0x80 */ const struct LevelUpMove *levelUpLearnset;
/* 0x84 */ const u16 *teachableLearnset;
@ -305,7 +446,7 @@ struct SpeciesInfo /*0x8C*/
struct BattleMove
{
u8 effect;
u16 effect;
u8 power;
u8 type;
u8 accuracy;
@ -316,6 +457,115 @@ struct BattleMove
u8 flags;
};
struct MoveInfo
{
const u8 *name;
const u8 *description;
u16 effect;
u16 type:5;
u16 category:2;
u16 power:9; // up to 511
u16 accuracy:7;
u16 target:9;
u8 pp;
union {
u8 effect;
u8 powerOverride;
} zMove;
s32 priority:4;
u32 recoil:7;
u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit.
u32 criticalHitStage:2;
u32 alwaysCriticalHit:1;
u32 numAdditionalEffects:2; // limited to 3 - don't want to get too crazy
// 12 bits left to complete this word - continues into flags
// Flags
u32 makesContact:1;
u32 ignoresProtect:1;
u32 magicCoatAffected:1;
u32 snatchAffected:1;
u32 ignoresKingsRock:1;
u32 punchingMove:1;
u32 bitingMove:1;
u32 pulseMove:1;
u32 soundMove:1;
u32 ballisticMove:1;
u32 powderMove:1;
u32 danceMove:1;
u32 windMove:1;
u32 slicingMove:1; // end of word
u32 healingMove:1;
u32 minimizeDoubleDamage:1;
u32 ignoresTargetAbility:1;
u32 ignoresTargetDefenseEvasionStages:1;
u32 damagesUnderground:1;
u32 damagesUnderwater:1;
u32 damagesAirborne:1;
u32 damagesAirborneDoubleDamage:1;
u32 ignoreTypeIfFlyingAndUngrounded:1;
u32 thawsUser:1;
u32 ignoresSubstitute:1;
u32 forcePressure:1;
u32 cantUseTwice:1;
// Ban flags
u32 gravityBanned:1;
u32 mirrorMoveBanned:1;
u32 meFirstBanned:1;
u32 mimicBanned:1;
u32 metronomeBanned:1;
u32 copycatBanned:1;
u32 assistBanned:1; // Matches same moves as copycatBanned + semi-invulnerable moves and Mirror Coat.
u32 sleepTalkBanned:1;
u32 instructBanned:1;
u32 encoreBanned:1;
u32 parentalBondBanned:1;
u32 skyBattleBanned:1;
u32 sketchBanned:1;
u32 argument;
// primary/secondary effects
const struct AdditionalEffect *additionalEffects;
// contest parameters
// u8 contestEffect;
// u8 contestCategory:3;
// u8 contestComboStarterId;
// u8 contestComboMoves[MAX_COMBO_MOVES];
};
#define EFFECTS_ARR(...) (const struct AdditionalEffect[]) {__VA_ARGS__}
#define ADDITIONAL_EFFECTS(...) EFFECTS_ARR( __VA_ARGS__ ), .numAdditionalEffects = ARRAY_COUNT(EFFECTS_ARR( __VA_ARGS__ ))
// Just a hack to make a move boosted by Sheer Force despite having no secondary effects affected
#define SHEER_FORCE_HACK { .moveEffect = 0, .chance = 100, }
struct AdditionalEffect
{
u16 moveEffect;
u8 self:1;
u8 onlyIfTargetRaisedStats:1;
u8 onChargeTurnOnly:1;
u8 chance; // 0% = effect certain, primary effect
};
struct Ability
{
u8 name[ABILITY_NAME_LENGTH + 1];
const u8 *description;
s8 aiRating;
u8 cantBeCopied:1; // cannot be copied by Role Play or Doodle
u8 cantBeSwapped:1; // cannot be swapped with Skill Swap or Wandering Spirit
u8 cantBeTraced:1; // cannot be copied by Trace - same as cantBeCopied except for Wonder Guard
u8 cantBeSuppressed:1; // cannot be negated by Gastro Acid or Neutralizing Gas
u8 cantBeOverwritten:1; // cannot be overwritten by Entrainment, Worry Seed or Simple Beam (but can be by Mummy) - same as cantBeSuppressed except for Truant
u8 breakable:1; // can be bypassed by Mold Breaker and clones
u8 failsOnImposter:1; // doesn't work on an Imposter mon; when can we actually use this?
};
#define SPINDA_SPOT_WIDTH 16
#define SPINDA_SPOT_HEIGHT 16
@ -341,6 +591,17 @@ struct FormChange
u16 param3;
};
struct Fusion
{
u16 fusionStorageIndex;
u16 itemId;
u16 targetSpecies1;
u16 targetSpecies2;
u16 fusingIntoMon;
u16 fusionMove;
u16 unfuseForgetMove;
};
// struct __attribute__((packed)) LevelUpMove
// {
// u16 move:9;
@ -365,7 +626,8 @@ struct Evolution
#define GET_SHINY_VALUE(otId, personality) (HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality))
extern const struct BattleMove gBattleMoves[];
extern const struct MoveInfo gMovesInfo[];
// extern const struct BattleMove gBattleMoves[];
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern u8 gEnemyPartyCount;
@ -382,6 +644,7 @@ extern const u8 gFacilityClassToTrainerClass[];
extern const struct SpriteTemplate gSpriteTemplates_Battlers[];
extern const u8 gPPUpGetMask[];
extern const u32 sExpCandyExperienceTable[];
extern const struct Ability gAbilitiesInfo[];
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
@ -405,13 +668,9 @@ void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef);
#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
#define BATTLE_ALIVE_ATK_SIDE 1
#define BATTLE_ALIVE_DEF_SIDE 2
u8 CountAliveMonsInBattle(u8 caseId);
s32 CalculateBaseDamageOld(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u32 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef);
u32 GetMonAffectionHearts(struct Pokemon *pokemon);
u8 CountAliveMonsInBattle(u8 caseId, u32 battler);
u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
@ -425,13 +684,25 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosit
// u32 GetMonData(struct Pokemon *mon, s32 field, u8 *data);
// u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data);
#ifdef IS_POKEMON_C
u32 GetMonData(struct Pokemon *, s32, u8 *);
u32 GetBoxMonData(struct BoxPokemon *, s32, u8 *);
#else
u32 GetMonData();
u32 GetBoxMonData();
#endif // IS_POKEMON_C
// #ifdef IS_POKEMON_C
// u32 GetMonData(struct Pokemon *, s32, u8 *);
// u32 GetBoxMonData(struct BoxPokemon *, s32, u8 *);
// #else
// u32 GetMonData();
// u32 GetBoxMonData();
// #endif // IS_POKEMON_C
/* GameFreak called Get(Box)MonData with either 2 or 3 arguments, for
* type safety we have a Get(Box)MonData macro which dispatches to
* either Get(Box)MonData2 or Get(Box)MonData3 based on the number of
* arguments. The two functions are aliases of each other, but they
* differ for matching purposes in the caller's codegen. */
#define GetMonData(...) CAT(GetMonData, NARG_8(__VA_ARGS__))(__VA_ARGS__)
#define GetBoxMonData(...) CAT(GetBoxMonData, NARG_8(__VA_ARGS__))(__VA_ARGS__)
u32 GetMonData3(struct Pokemon *mon, s32 field, u8 *data);
u32 GetMonData2(struct Pokemon *mon, s32 field);
u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data);
u32 GetBoxMonData2(struct BoxPokemon *boxMon, s32 field);
void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg);
void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg);
@ -440,12 +711,21 @@ u8 GiveMonToPlayer(struct Pokemon *mon);
u8 CalculatePlayerPartyCount(void);
u8 CalculateEnemyPartyCount(void);
u8 GetMonsStateToDoubles(void);
u16 GetAbilityBySpecies(u16 species, bool8 abilityNum);
u16 GetAbilityBySpecies(u16 species, u8 abilityNum);
u16 GetMonAbility(struct Pokemon *mon);
u8 GetSecretBaseTrainerPicIndex(void);
u8 GetSecretBaseTrainerNameIndex(void);
bool8 IsPlayerPartyAndPokemonStorageFull(void);
void GetSpeciesName(u8 *name, u16 species);
const u8 *GetSpeciesName(u16 species);
const u8 *GetSpeciesCategory(u16 species);
const u8 *GetSpeciesPokedexDescription(u16 species);
u16 GetSpeciesHeight(u16 species);
u16 GetSpeciesWeight(u16 species);
const struct LevelUpMove *GetSpeciesLevelUpLearnset(u16 species);
const u16 *GetSpeciesTeachableLearnset(u16 species);
const struct Evolution *GetSpeciesEvolutions(u16 species);
const u16 *GetSpeciesFormTable(u16 species);
const struct FormChange *GetSpeciesFormChanges(u16 species);
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
@ -487,7 +767,7 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon);
const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
const u32 *GetMonSpritePalStruct(struct Pokemon *mon);
const u32 *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
bool32 IsHMMove2(u16 move);
bool32 IsMoveHM(u16 move);
bool8 IsMonSpriteNotFlipped(u16 species);
s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor);
bool8 IsTradedMon(struct Pokemon *mon);
@ -510,6 +790,14 @@ bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank);
struct MonSpritesGfxManager *CreateMonSpritesGfxManager(u8 battlePosition, u8 mode);
void DestroyMonSpritesGfxManager(void);
u8 *MonSpritesGfxManager_GetSpritePtr(u8 bufferId);
u16 GetFormSpeciesId(u16 speciesId, u8 formId);
u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId);
u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg);
u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 arg);
bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method);
void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method);
bool8 IsMonPastEvolutionLevel(struct Pokemon *mon);
bool32 IsPersonalityFemale(u16 species, u32 personality);
bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battleId);

View File

@ -8,7 +8,7 @@ extern const struct SpritePalette gMonIconPaletteTable[];
extern const u16 gMonIconPalettes[][16];
// extern const u8 gMonIconPaletteIndices[];
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
const u8 *GetMonIconPtr(u16 speciesId, u32 personality);
const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra);
const u16 *GetValidMonIconPalettePtr(u16 speciesId);
void LoadMonIconPalettes(void);

View File

@ -3,24 +3,258 @@
#include "global.h"
extern u32 gRngValue;
extern u32 gRng2Value;
// extern u32 gRngValue;
// extern u32 gRng2Value;
// //Returns a 16-bit pseudorandom number
// u16 Random(void);
// u16 Random2(void);
// //Returns a 32-bit pseudorandom number
// #define Random32() (Random() | (Random() << 16))
// // The number 1103515245 comes from the example implementation of rand and srand
// // in the ISO C standard.
#define RAND_MULT 1103515245
// #define ISO_RANDOMIZE1(val)(RAND_MULT * (val) + 24691)
// #define ISO_RANDOMIZE2(val)(RAND_MULT * (val) + 12345)
// //Sets the initial seed value of the pseudorandom number generator
// void SeedRng(u16 seed);
// void SeedRng2(u16 seed);
// The number 1103515245 comes from the example implementation of rand and srand
// in the ISO C standard.
#define ISO_RANDOMIZE1(val)(RAND_MULT * (val) + 24691)
#define ISO_RANDOMIZE2(val)(RAND_MULT * (val) + 12345)
/* Some functions have been added to support HQ_RANDOM.
*
* If using HQ_RANDOM, you cannot call Random() in interrupt handlers safely.
* AdvanceRandom() is provided to handle burning numbers in the VBlank handler
* if you choose to do that, and can be used regardless of HQ_RANDOM setting.
* If you need to use random numbers in the VBlank handler, a local state
* should be used instead.
*
* LocalRandom(*val) allows you to have local random states that are the same
* type as the global states regardless of HQ_RANDOM setting, which is useful
* if you want to be able to set them from or assign them to gRngValue.
* LocalRandomSeed(u32) returns a properly seeded rng_value_t.
*
* Random2_32() was added to HQ_RANDOM because the output of the generator is
* always 32 bits and Random()/Random2() are just wrappers in that mode. It is
* also available in non-HQ mode for consistency.
*/
#if HQ_RANDOM == TRUE
struct Sfc32State {
u32 a;
u32 b;
u32 c;
u32 ctr;
};
typedef struct Sfc32State rng_value_t;
#define RNG_VALUE_EMPTY {}
// Calling this function directly is discouraged.
// Use LocalRandom() instead.
static inline u32 _SFC32_Next(struct Sfc32State *state)
{
const u32 result = state->a + state->b + state->ctr++;
state->a = state->b ^ (state->b >> 9);
state->b = state->c * 9;
state->c = result + ((state->c << 21) | (state->c >> 11));
return result;
}
static inline u16 LocalRandom(rng_value_t *val)
{
return _SFC32_Next(val) >> 16;
}
u32 Random32(void);
u32 Random2_32(void);
static inline u16 Random(void)
{
return Random32() >> 16;
}
void SeedRng(u32 seed);
void SeedRng2(u32 seed);
rng_value_t LocalRandomSeed(u32 seed);
static inline u16 Random2(void)
{
return Random2_32() >> 16;
}
void AdvanceRandom(void);
#else
typedef u32 rng_value_t;
#define RNG_VALUE_EMPTY 0
//Returns a 16-bit pseudorandom number
u16 Random(void);
u16 Random2(void);
//Returns a 32-bit pseudorandom number
#define Random32() (Random() | (Random() << 16))
// The number 1103515245 comes from the example implementation of rand and srand
// in the ISO C standard.
#define RAND_MULT 1103515245
#define ISO_RANDOMIZE1(val)(RAND_MULT * (val) + 24691)
#define ISO_RANDOMIZE2(val)(RAND_MULT * (val) + 12345)
//Sets the initial seed value of the pseudorandom number generator
void SeedRng(u16 seed);
void SeedRng2(u16 seed);
//Returns a 32-bit pseudorandom number
#define Random32() (Random() | (Random() << 16))
#define Random2_32() (Random2() | (Random2() << 16))
static inline u16 LocalRandom(rng_value_t *val)
{
*val = ISO_RANDOMIZE1(*val);
return *val >> 16;
}
static inline void AdvanceRandom(void)
{
Random();
}
static inline rng_value_t LocalRandomSeed(u32 seed)
{
return seed;
}
#endif
extern rng_value_t gRngValue;
extern rng_value_t gRng2Value;
void Shuffle8(void *data, size_t n);
void Shuffle16(void *data, size_t n);
void Shuffle32(void *data, size_t n);
void ShuffleN(void *data, size_t n, size_t size);
static inline void Shuffle(void *data, size_t n, size_t size)
{
switch (size)
{
case 1: Shuffle8(data, n); break;
case 2: Shuffle16(data, n); break;
case 4: Shuffle32(data, n); break;
default: ShuffleN(data, n, size); break;
}
}
/* Structured random number generator.
* Instead of the caller converting bits from Random() to a meaningful
* value, the caller provides metadata that is used to return the
* meaningful value directly. This allows code to interpret the random
* call, for example, battle tests know what the domain of a random call
* is, and can exhaustively test it.
*
* RandomTag identifies the purpose of the value.
*
* RandomUniform(tag, lo, hi) returns a number from lo to hi inclusive
* with uniform probability.
*
* RandomUniformExcept(tag, lo, hi, reject) returns a number from lo to
* hi inclusive with uniform probability, excluding those for which
* reject returns TRUE.
*
* RandomElement(tag, array) returns an element in array with uniform
* probability. The array must be known at compile-time (e.g. a global
* const array).
*
* RandomPercentage(tag, t) returns FALSE with probability (1-t)/100,
* and TRUE with probability t/100.
*
* RandomWeighted(tag, w0, w1, ... wN) returns a number from 0 to N
* inclusive. The return value is proportional to the weights, e.g.
* RandomWeighted(..., 1, 1) returns 50% 0s and 50% 1s.
* RandomWeighted(..., 2, 1) returns 2/3 0s and 1/3 1s. */
enum RandomTag
{
RNG_NONE,
RNG_ACCURACY,
RNG_CONFUSION,
RNG_CRITICAL_HIT,
RNG_CUTE_CHARM,
RNG_DAMAGE_MODIFIER,
RNG_DIRE_CLAW,
RNG_FLAME_BODY,
RNG_FORCE_RANDOM_SWITCH,
RNG_FROZEN,
RNG_G_MAX_STUN_SHOCK,
RNG_G_MAX_BEFUDDLE,
RNG_G_MAX_REPLENISH,
RNG_G_MAX_SNOOZE,
RNG_HITS,
RNG_HOLD_EFFECT_FLINCH,
RNG_INFATUATION,
RNG_LOADED_DICE,
RNG_METRONOME,
RNG_PARALYSIS,
RNG_POISON_POINT,
RNG_RAMPAGE_TURNS,
RNG_SECONDARY_EFFECT,
RNG_SECONDARY_EFFECT_2,
RNG_SECONDARY_EFFECT_3,
RNG_SLEEP_TURNS,
RNG_SPEED_TIE,
RNG_STATIC,
RNG_STENCH,
RNG_TRI_ATTACK,
RNG_QUICK_DRAW,
RNG_QUICK_CLAW,
RNG_TRACE,
RNG_FICKLE_BEAM,
};
#define RandomWeighted(tag, ...) \
({ \
const u8 weights[] = { __VA_ARGS__ }; \
u32 sum, i; \
for (i = 0, sum = 0; i < ARRAY_COUNT(weights); i++) \
sum += weights[i]; \
RandomWeightedArray(tag, sum, ARRAY_COUNT(weights), weights); \
})
#define RandomPercentage(tag, t) \
({ \
u32 r; \
if (t <= 0) \
{ \
r = FALSE; \
} \
else if (t >= 100) \
{ \
r = TRUE; \
} \
else \
{ \
const u8 weights[] = { 100 - t, t }; \
r = RandomWeightedArray(tag, 100, ARRAY_COUNT(weights), weights); \
} \
r; \
})
#define RandomElement(tag, array) \
({ \
*(typeof((array)[0]) *)RandomElementArray(tag, array, sizeof((array)[0]), ARRAY_COUNT(array)); \
})
u32 RandomUniform(enum RandomTag, u32 lo, u32 hi);
u32 RandomUniformExcept(enum RandomTag, u32 lo, u32 hi, bool32 (*reject)(u32));
u32 RandomWeightedArray(enum RandomTag, u32 sum, u32 n, const u8 *weights);
const void *RandomElementArray(enum RandomTag, const void *array, size_t size, size_t count);
u32 RandomUniformDefault(enum RandomTag, u32 lo, u32 hi);
u32 RandomUniformExceptDefault(enum RandomTag, u32 lo, u32 hi, bool32 (*reject)(u32));
u32 RandomWeightedArrayDefault(enum RandomTag, u32 sum, u32 n, const u8 *weights);
const void *RandomElementArrayDefault(enum RandomTag, const void *array, size_t size, size_t count);
#endif // GUARD_RANDOM_H

View File

@ -282,10 +282,8 @@ static const u16 sDiscouragedPowerfulMoveEffects[] =
{
EFFECT_EXPLOSION,
EFFECT_DREAM_EATER,
EFFECT_RAZOR_WIND,
EFFECT_SKY_ATTACK,
EFFECT_TWO_TURNS_ATTACK,
EFFECT_RECHARGE,
EFFECT_SKULL_BASH,
EFFECT_SOLAR_BEAM,
EFFECT_SPIT_UP,
EFFECT_FOCUS_PUNCH,
@ -514,16 +512,18 @@ static void ClearBattlerMoveHistory(u8 battlerId)
BATTLE_HISTORY->usedMoves[battlerId / 2][i] = MOVE_NONE;
}
void RecordAbilityBattle(u8 battlerId, u16 abilityId)
void RecordAbilityBattle(u32 battlerId, u32 abilityId)
{
if (GetBattlerSide(battlerId) == 0)
BATTLE_HISTORY->abilities[GET_BATTLER_SIDE(battlerId)] = abilityId;
BATTLE_HISTORY->abilities[battlerId] = abilityId;
// TODO: AI
// AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability = abilityId;
}
void RecordItemEffectBattle(u8 battlerId, u8 itemEffect)
void RecordItemEffectBattle(u32 battlerId, u32 itemEffect)
{
if (GetBattlerSide(battlerId) == 0)
BATTLE_HISTORY->itemEffects[GET_BATTLER_SIDE(battlerId)] = itemEffect;
BATTLE_HISTORY->itemEffects[battlerId] = itemEffect;
// TODO: AI
// AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect = itemEffect;
}
static void Cmd_if_random_less_than(void)
@ -894,18 +894,19 @@ static void Cmd_if_in_bytes(void)
static void Cmd_if_not_in_bytes(void)
{
const u8 *ptr = T1_READ_PTR(sAIScriptPtr + 1);
CMD_ARGS(const u8 *list, const u8 *ptr);
const u8 *ptr = cmd->list;
while (*ptr != 0xFF)
{
if (AI_THINKING_STRUCT->funcResult == *ptr)
{
sAIScriptPtr += 9;
sAIScriptPtr = cmd->nextInstr;
return;
}
ptr++;
}
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 5);
sAIScriptPtr = cmd->ptr;
}
static void Cmd_if_in_hwords(void)
@ -947,7 +948,7 @@ static void Cmd_if_user_has_attacking_move(void)
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
&& gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
break;
}
@ -964,7 +965,7 @@ static void Cmd_if_user_has_no_attacking_moves(void)
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
&& gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
break;
}
@ -997,7 +998,7 @@ static void Cmd_get_type(void)
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type2;
break;
case AI_TYPE_MOVE:
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].type;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->moveConsidered].type;
break;
}
sAIScriptPtr += 2;
@ -1005,7 +1006,7 @@ static void Cmd_get_type(void)
static void Cmd_get_considered_move_power(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->moveConsidered].power;
sAIScriptPtr += 1;
}
@ -1016,11 +1017,11 @@ static void Cmd_get_how_powerful_move_is(void)
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
break;
}
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].power > 1
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
{
gDynamicBasePower = 0;
@ -1033,13 +1034,13 @@ static void Cmd_get_how_powerful_move_is(void)
{
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
{
if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
if (gMovesInfo[gBattleMons[gBattlerAttacker].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
break;
}
if (gBattleMons[gBattlerAttacker].moves[checkedMove] != MOVE_NONE
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[checkedMove]].power > 1)
&& gMovesInfo[gBattleMons[gBattlerAttacker].moves[checkedMove]].power > 1)
{
gCurrentMove = gBattleMons[gBattlerAttacker].moves[checkedMove];
AI_CalcDmg(gBattlerAttacker, gBattlerTarget);
@ -1177,7 +1178,7 @@ static void Cmd_get_considered_move(void)
static void Cmd_get_considered_move_effect(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->moveConsidered].effect;
sAIScriptPtr += 1;
}
@ -1444,18 +1445,28 @@ static void Cmd_get_weather(void)
static void Cmd_if_effect(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
CMD_ARGS(u16 byte, const u8 *ptr);
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].effect == cmd->byte)
{
sAIScriptPtr = cmd->ptr;
}
else
sAIScriptPtr += 6;
{
sAIScriptPtr = cmd->nextInstr;
}
}
static void Cmd_if_not_effect(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect != sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
CMD_ARGS(u16 byte, const u8 *ptr);
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].effect != cmd->byte)
{
sAIScriptPtr = cmd->ptr;
}
else
sAIScriptPtr += 6;
{
sAIScriptPtr = cmd->nextInstr;
}
}
static void Cmd_if_stat_level_less_than(void)
@ -1520,7 +1531,7 @@ static void Cmd_if_stat_level_not_equal(void)
static void Cmd_if_can_faint(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
sAIScriptPtr += 5;
return;
@ -1549,7 +1560,7 @@ static void Cmd_if_can_faint(void)
static void Cmd_if_cant_faint(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
sAIScriptPtr += 5;
return;
@ -1644,59 +1655,61 @@ static void Cmd_if_doesnt_have_move(void)
static void Cmd_if_has_move_with_effect(void)
{
CMD_ARGS(u8 battler, u16 effect, const u8 *ptr);
int i;
switch (sAIScriptPtr[1])
switch (cmd->battler)
{
case AI_USER:
case AI_USER_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == sAIScriptPtr[2])
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].effect == cmd->effect)
break;
}
if (i != MAX_MON_MOVES)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
sAIScriptPtr = cmd->ptr;
else
sAIScriptPtr += 7;
sAIScriptPtr = cmd->nextInstr;
break;
case AI_TARGET:
case AI_TARGET_PARTNER:
for (i = 0; i < 8; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == sAIScriptPtr[2])
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gMovesInfo[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == cmd->effect)
break;
}
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
sAIScriptPtr = cmd->ptr;
}
}
static void Cmd_if_doesnt_have_move_with_effect(void)
{
CMD_ARGS(u8 battler, u16 effect, const u8 *ptr);
int i;
switch (sAIScriptPtr[1])
switch (cmd->battler)
{
case AI_USER:
case AI_USER_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == sAIScriptPtr[2])
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].effect == cmd->effect)
break;
}
if (i != MAX_MON_MOVES)
sAIScriptPtr += 7;
sAIScriptPtr = cmd->nextInstr;
else
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
sAIScriptPtr = cmd->ptr;
break;
case AI_TARGET:
case AI_TARGET_PARTNER:
for (i = 0; i < 8; i++)
{
if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == sAIScriptPtr[2])
if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] != 0 && gMovesInfo[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == cmd->effect)
break;
}
sAIScriptPtr += 7;
sAIScriptPtr = cmd->nextInstr;
}
}
@ -1865,27 +1878,27 @@ static void Cmd_get_used_held_item(void)
else
battlerId = gBattlerTarget;
AI_THINKING_STRUCT->funcResult = ((u8 *)gBattleStruct->usedHeldItems)[battlerId * 2];
AI_THINKING_STRUCT->funcResult = gBattleStruct->usedHeldItems[battlerId][GetBattlerSide(battlerId)];
sAIScriptPtr += 2;
}
static void Cmd_get_move_type_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].type;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->funcResult].type;
sAIScriptPtr += 1;
}
static void Cmd_get_move_power_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].power;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->funcResult].power;
sAIScriptPtr += 1;
}
static void Cmd_get_move_effect_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].effect;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->funcResult].effect;
sAIScriptPtr += 1;
}

View File

@ -90,7 +90,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|| (gLastLandedMoves[gActiveBattler] == MOVE_NONE))
return FALSE;
if (gLastLandedMoves[gActiveBattler] == 0xFFFF
|| gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0)
|| gMovesInfo[gLastLandedMoves[gActiveBattler]].power == 0)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@ -105,11 +105,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
battlerIn1 = gActiveBattler;
battlerIn2 = gActiveBattler;
}
if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_FIRE)
if (gMovesInfo[gLastLandedMoves[gActiveBattler]].type == TYPE_FIRE)
absorbingTypeAbility = ABILITY_FLASH_FIRE;
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_WATER)
else if (gMovesInfo[gLastLandedMoves[gActiveBattler]].type == TYPE_WATER)
absorbingTypeAbility = ABILITY_WATER_ABSORB;
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_ELECTRIC)
else if (gMovesInfo[gLastLandedMoves[gActiveBattler]].type == TYPE_ELECTRIC)
absorbingTypeAbility = ABILITY_VOLT_ABSORB;
else
return FALSE;
@ -156,7 +156,7 @@ static bool8 ShouldSwitchIfNaturalCure(void)
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
else if (gMovesInfo[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
{
*(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = PARTY_SIZE;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
@ -245,7 +245,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
return FALSE;
if ((gLastLandedMoves[gActiveBattler] == 0xFFFF)
|| (gLastHitBy[gActiveBattler] == 0xFF)
|| (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0))
|| (gMovesInfo[gLastLandedMoves[gActiveBattler]].power == 0))
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@ -529,7 +529,7 @@ u8 GetMostSuitableMonToSwitchInto(void)
{
move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j);
gBattleMoveDamage = 0;
if (move != MOVE_NONE && gBattleMoves[move].power != 1)
if (move != MOVE_NONE && gMovesInfo[move].power != 1)
{
AI_CalcDmg(gActiveBattler, opposingBattler);
TypeCalc(move, gActiveBattler, opposingBattler);

View File

@ -1723,3 +1723,30 @@ static void Cmd_stopsound(void)
m4aMPlayStop(&gMPlayInfo_SE2);
sBattleAnimScriptPtr++;
}
u8 GetAnimBattlerId(u8 wantedBattler)
{
switch (wantedBattler)
{
case ANIM_ATTACKER:
default:
return gBattleAnimAttacker;
case ANIM_TARGET:
return gBattleAnimTarget;
case ANIM_ATK_PARTNER:
return BATTLE_PARTNER(gBattleAnimAttacker);
case ANIM_DEF_PARTNER:
return BATTLE_PARTNER(gBattleAnimTarget);
case ANIM_PLAYER_LEFT ... ANIM_OPPONENT_RIGHT:
return wantedBattler - MAX_BATTLERS_COUNT;
}
}
// battle_anim_throw.c
bool32 IsCriticalCapture(void)
{
return gBattleSpritesDataPtr->animationData->isCriticalCapture;
}
//

View File

@ -223,9 +223,9 @@ static u8 GetBattlerElevation(u8 battlerId, u16 species)
if (species == SPECIES_CASTFORM)
ret = sCastformElevations[gBattleMonForms[battlerId]];
else if (species > NUM_SPECIES)
ret = gEnemyMonElevation[0];
ret = gSpeciesInfo[SPECIES_NONE].enemyMonElevation;
else
ret = gEnemyMonElevation[species];
ret = gSpeciesInfo[species].enemyMonElevation;
}
return ret;
}

View File

@ -968,3 +968,12 @@ static void AnimTask_WaitAndRestoreVisibility(u8 taskId)
DestroyTask(taskId);
}
}
void AnimTask_SetInvisible(u8 taskId)
{
u32 battlerId = GetAnimBattlerId(gBattleAnimArgs[0]);
u32 spriteId = gBattlerSpriteIds[battlerId];
gSprites[spriteId].invisible = gBattleSpritesDataPtr->battlerData[battlerId].invisible = gBattleAnimArgs[1];
DestroyAnimVisualTask(taskId);
}

View File

@ -132,7 +132,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = LinkOpponentHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = LinkOpponentHandleCantSwitch,
[CONTROLLER_PLAYSE] = LinkOpponentHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = LinkOpponentHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = LinkOpponentHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = LinkOpponentHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = LinkOpponentHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkOpponentHandleIntroTrainerBallThrow,
@ -505,7 +505,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID);
GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname);

View File

@ -129,7 +129,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = LinkPartnerHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = LinkPartnerHandleCantSwitch,
[CONTROLLER_PLAYSE] = LinkPartnerHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = LinkPartnerHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = LinkPartnerHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = LinkPartnerHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = LinkPartnerHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkPartnerHandleIntroTrainerBallThrow,
@ -466,7 +466,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG); TODO: check controllers if this is correct
battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);

View File

@ -142,7 +142,7 @@ static void (*const sOakOldManBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = OakOldManHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = OakOldManHandleCmd42,
[CONTROLLER_PLAYSE] = OakOldManHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = OakOldManHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = OakOldManHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = OakOldManHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = OakOldManHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = OakOldManHandleIntroTrainerBallThrow,
@ -1029,7 +1029,7 @@ static u32 CopyOakOldManMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);

View File

@ -136,7 +136,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = OpponentHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = OpponentHandleCmd42,
[CONTROLLER_PLAYSE] = OpponentHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = OpponentHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = OpponentHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = OpponentHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = OpponentHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = OpponentHandleIntroTrainerBallThrow,
@ -490,7 +490,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID);
GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname);
@ -1367,9 +1367,9 @@ static void OpponentHandleChooseMove(void)
BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
break;
default:
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
gBattlerTarget = gActiveBattler;
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH)
if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH)
{
gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
@ -1390,7 +1390,7 @@ static void OpponentHandleChooseMove(void)
move = moveInfo->moves[chosenMoveId];
}
while (move == MOVE_NONE);
if (gBattleMoves[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
if (gMovesInfo[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gActiveBattler << 8));
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(Random() & 2) << 8));

View File

@ -153,7 +153,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = PlayerHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = PlayerHandleCmd42,
[CONTROLLER_PLAYSE] = PlayerHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = PlayerHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = PlayerHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = PlayerHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = PlayerHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = PlayerHandleIntroTrainerBallThrow,
@ -378,7 +378,7 @@ static void HandleInputChooseTarget(void)
case B_POSITION_PLAYER_RIGHT:
if (gActiveBattler != gMultiUsePlayerCursor)
++i;
else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED)
else if (gMovesInfo[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED)
++i;
break;
case B_POSITION_OPPONENT_LEFT:
@ -418,7 +418,7 @@ static void HandleInputChooseTarget(void)
case B_POSITION_PLAYER_RIGHT:
if (gActiveBattler != gMultiUsePlayerCursor)
++i;
else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED)
else if (gMovesInfo[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED)
++i;
break;
case B_POSITION_OPPONENT_LEFT:
@ -454,7 +454,7 @@ void HandleInputChooseMove(void)
}
else
{
moveTarget = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
moveTarget = gMovesInfo[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
}
if (moveTarget & MOVE_TARGET_USER)
@ -475,7 +475,7 @@ void HandleInputChooseMove(void)
{
canSelectTarget = FALSE;
}
else if (!(moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) <= 1)
else if (!(moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_BATTLER, gActiveBattler) <= 1)
{
gMultiUsePlayerCursor = GetDefaultMoveTarget(gActiveBattler);
canSelectTarget = FALSE;
@ -1409,7 +1409,7 @@ static void MoveSelectionDisplayMoveType(void)
*txtPtr++ = 6;
*txtPtr++ = 1;
txtPtr = StringCopy(txtPtr, gText_MoveInterfaceDynamicColors);
StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
StringCopy(txtPtr, gTypeNames[gMovesInfo[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE);
}
@ -1549,7 +1549,7 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);
@ -2900,7 +2900,7 @@ static void PreviewDeterminativeMoveTargets(void)
}
else
{
moveTarget = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
moveTarget = gMovesInfo[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
}
switch (moveTarget)
{

View File

@ -166,7 +166,7 @@ static void (*const sPokedudeBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = PokedudeHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = PokedudeHandleCmd42,
[CONTROLLER_PLAYSE] = PokedudeHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = PokedudeHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = PokedudeHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = PokedudeHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = PokedudeHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = PokedudeHandleIntroTrainerBallThrow,
@ -777,7 +777,7 @@ static u32 CopyPokedudeMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(mon, MON_DATA_SPEED);
battleMon.spAttack = GetMonData(mon, MON_DATA_SPATK);
battleMon.spDefense = GetMonData(mon, MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(mon, MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(mon, MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(mon, MON_DATA_OT_ID);
GetMonData(mon, MON_DATA_NICKNAME, nickname);

View File

@ -123,7 +123,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = SafariHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = SafariHandleCmd42,
[CONTROLLER_PLAYSE] = SafariHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = SafariHandlePlayFanfareOrBGM,
[CONTROLLER_PLAYFANFAREORBGM] = SafariHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = SafariHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = SafariHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = SafariHandleIntroTrainerBallThrow,

View File

@ -287,6 +287,14 @@ static void InitLinkBtlControllers(void)
}
}
bool32 IsValidForBattle(struct Pokemon *mon)
{
u32 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
return (species != SPECIES_NONE && species != SPECIES_EGG
&& GetMonData(mon, MON_DATA_HP) != 0
&& GetMonData(mon, MON_DATA_IS_EGG) == FALSE);
}
static void SetBattlePartyIds(void)
{
s32 i, j;
@ -740,7 +748,7 @@ static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2);
}
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr)
void BtlController_EmitMoveAnimation(u32 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit)
{
sBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION;
sBattleBuffersTransferData[1] = move;
@ -753,7 +761,7 @@ void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 m
sBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16;
sBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24;
sBattleBuffersTransferData[10] = friendship;
sBattleBuffersTransferData[11] = gMultiHitCounter; // multihit in pokeem
sBattleBuffersTransferData[11] = multihit; // multihit in pokeem
if (WEATHER_HAS_EFFECT2)
{
sBattleBuffersTransferData[12] = gBattleWeather;
@ -789,7 +797,7 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx;
stringInfo->hpScale = gBattleStruct->hpScale;
stringInfo->itemEffectBattler = gPotentialItemEffectBattler;
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
stringInfo->moveType = gMovesInfo[gCurrentMove].type;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
stringInfo->abilities[i] = gBattleMons[i].ability;
@ -1109,12 +1117,12 @@ void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId)
void BtlController_EmitPlayFanfareOrBGM(u32 bufferId, u16 songId, bool8 playBGM)
{
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFARE;
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM;
sBattleBuffersTransferData[1] = songId;
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
sBattleBuffersTransferData[3] = 0;
sBattleBuffersTransferData[3] = playBGM;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
@ -1183,13 +1191,14 @@ void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument)
void BtlController_EmitBattleAnimation(u32 bufferId, u8 animationId, struct DisableStruct* disableStructPtr, u16 argument)
{
sBattleBuffersTransferData[0] = CONTROLLER_BATTLEANIMATION;
sBattleBuffersTransferData[1] = animationId;
sBattleBuffersTransferData[2] = argument;
sBattleBuffersTransferData[3] = (argument & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
memcpy(&sBattleBuffersTransferData[4], disableStructPtr, sizeof(struct DisableStruct));
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4 + sizeof(struct DisableStruct));
}
// mode is a LINK_STANDBY_* constant

View File

@ -209,7 +209,7 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de
{
u8 taskId;
if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80))
if (tableId == B_ANIM_FORM_CHANGE && (argument & 0x80))
{
gBattleMonForms[activeBattler] = (argument & ~(0x80));
return TRUE;
@ -918,7 +918,7 @@ static void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
if (gAnimScriptActive || battlerSprite->invisible)
invisible = TRUE;
else if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE
&& gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies] == 0)
&& gSpeciesInfo[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies].enemyMonElevation == 0)
invisible = TRUE;
if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute)
invisible = TRUE;
@ -941,7 +941,7 @@ void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species)
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
if (gEnemyMonElevation[species] != 0)
if (gSpeciesInfo[species].enemyMonElevation != 0)
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_EnemyShadow;
else
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;

File diff suppressed because it is too large Load Diff

View File

@ -518,14 +518,189 @@ const u8 gText_HowDissapointing[] = _("OAK: Hm…\nHow disappointing…\pIf you
static const u8 sText_ItemRestoredSpeciesHealth[] = _("{B_BUFF1} had its\nHP restored!");
static const u8 sText_ItemCuredSpeciesStatus[] = _("{B_BUFF1} had\nits status healed!");
static const u8 sText_ItemRestoredSpeciesPP[] = _("{B_BUFF1} had its\nPP restored!");
const u16 gTrainerUsedItemStringIds[] =
{
STRINGID_PLAYERUSEDITEM, STRINGID_TRAINER1USEDITEM
};
//
static const u8 sText_ElectroShotCharging[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nelectricity!");
static const u8 sText_MeteorBeamCharging[] = _("{B_ATK_NAME_WITH_PREFIX} is overflowing\nwith space energy!");
static const u8 sText_PkmnIsCloakedInAHarshLight[] = _("{B_ATK_NAME_WITH_PREFIX} became\ncloaked in a harsh light!");
static const u8 sText_VanishedInstantly[] =_("{B_ATK_NAME_WITH_PREFIX} vanished\ninstantly!");
static const u8 sText_PkmnTookTargetHigh[] = _("{B_ATK_NAME_WITH_PREFIX} took {B_DEF_NAME_WITH_PREFIX}\ninto the air!");
static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!");
static const u8 sText_PkmnAbsorbingPower[] = _("{B_ATK_NAME_WITH_PREFIX} is absorbing power!");
static const u8 sText_PokemonCannotUseMove[] = _("{B_ATK_NAME_WITH_PREFIX} cannot\nuse {B_CURRENT_MOVE}!");
static const u8 sText_PkmnMoveBouncedViaAbility[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} was\nbounced back by {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY}!");
static const u8 sText_HealBlockPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} was\nprevented from healing!\p");
static const u8 sText_GravityPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} can't use {B_CURRENT_MOVE}\nbecause of gravity!\p");
static const u8 sText_PkmnFrostbiteHealed2[] = _("{B_ATK_NAME_WITH_PREFIX}'s\nfrostbite was healed!");
static const u8 sText_PkmnFrostbiteHealedBy[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nhealed its frostbite!");
static const u8 sText_SafetyGogglesProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is not affected\nthanks to its {B_LAST_ITEM}!");
static const u8 sText_PowderExplodes[] = _("When the flame touched the powder\non the Pokémon, it exploded!");
static const u8 sText_PkmnCantUseMoveThroatChop[] = _("{B_ATK_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} due to Throat Chop!\p");
static const u8 sText_MoveFizzledOutInTheHeavyRain[] = _("The Fire-type attack fizzled out\nin the heavy rain!");
static const u8 sText_MoveEvaporatedInTheHarshSunlight[] = _("The Water-type attack evaporated\nin the harsh sunlight!");
static const u8 sText_TargetAteItem[] = _("{B_DEF_NAME_WITH_PREFIX} ate its {B_LAST_ITEM}!");
static const u8 sText_GemActivates[] = _("{B_LAST_ITEM} strengthened\n{B_ATK_NAME_WITH_PREFIX}'s power!");
static const u8 sText_AttackWeakenedByStrongWinds[] = _("The mysterious strong winds\nweakened the attack!");
static const u8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} endured\nthe hit using {B_DEF_ABILITY}!");
static const u8 sText_BerryDmgReducing[] = _("{B_LAST_ITEM} weakened the damage\nto {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!");
static const u8 sText_TrappedBySwirlingMagma[] =_("{B_DEF_NAME_WITH_PREFIX} became\ntrapped by swirling magma!");
static const u8 sText_Infestation[] = _("{B_DEF_NAME_WITH_PREFIX} has been afflicted\nwith an infestation by {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnInSnapTrap[] = _("{B_DEF_NAME_WITH_PREFIX} got trapped\nby a snap trap!");
static const u8 sText_AtkTrappedDef[] = _("{B_ATK_NAME_WITH_PREFIX} trapped\nthe {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_ResetsTargetsStatLevels[] =_("{B_DEF_NAME_WITH_PREFIX}'s stat changes\nwere removed!");
static const u8 sText_StrongWindsDissipated[] = _("The mysterious strong winds\nhave dissipated!{PAUSE 64}");
static const u8 sText_ExtremeSunlightFaded[] = _("The extreme sunlight faded.{PAUSE 64}");
static const u8 sText_HeavyRainLifted[] = _("The heavy rain has lifted!{PAUSE 64}");
static const u8 sText_SymbiosisItemPass[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_ATK_NAME_WITH_PREFIX} through {B_LAST_ABILITY}!");
static const u8 sText_BurstingFlames[] = _("The bursting flames\nhit {B_SCR_ACTIVE_NAME_WITH_PREFIX}!");
static const u8 sText_BrokeThroughProtection[] = _("It broke through\n{B_DEF_NAME_WITH_PREFIX}'s protection!");
static const u8 sText_FellForFeint[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe feint!");
static const u8 sText_SpectralThiefSteal[] = _("{B_ATK_NAME_WITH_PREFIX} stole the target's\nboosted stats!");
static const u8 sText_PkmnsAbilitySuppressed[] = _("{B_DEF_NAME_WITH_PREFIX}'s ability\nwas suppressed!");
static const u8 sText_IncinerateBurn[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwas burnt up!");
static const u8 sText_BugBite[] = _("{B_ATK_NAME_WITH_PREFIX} stole and ate\n{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!");
static const u8 sText_BothCanNoLongerEscape[] = _("Neither Pokémon can run away!");
static const u8 sText_AttackerLostFireType[] = _("{B_ATK_NAME_WITH_PREFIX} burned itself out!");
static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!");
static const u8 sText_AttackerLostItsType[] = _("{B_ATK_NAME_WITH_PREFIX} lost\nits {B_BUFF1} type!");
static const u8 sText_StealthRockDmg[] = _("Pointed stones dug into\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}!");
static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_PointedStonesFloat[] =_("Pointed stones float in the air\naround {B_DEF_TEAM2} team!");
static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!");
static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PREFIX} got covered\nin sticky syrup!");
static const u8 sText_AromaVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is protected\nby an aromatic veil!");
static const u8 sText_PkmnPreventedFromHealing[] = _("{B_DEF_NAME_WITH_PREFIX} was prevented\nfrom healing!");
static const u8 sText_TerrainBecomesMisty[] = _("Mist swirled about\nthe battlefield!");
static const u8 sText_TerrainBecomesGrassy[] = _("Grass grew to cover\nthe battlefield!");
static const u8 sText_TerrainBecomesElectric[] = _("An electric current runs across\nthe battlefield!");
static const u8 sText_TerrainBecomesPsychic[] = _("The battlefield got weird!");
static const u8 sText_DimensionsWereTwisted[] = _("The dimensions were\ntwisted!");
static const u8 sText_BizzareAreaCreated[] =_("A bizarre area was created in which the\nDefense and Sp. Def stats are swapped!");
static const u8 sText_BizarreArenaCreated[] =_("A bizarre area was created!\nHold items lost their effects!");
static const u8 sText_TailWindBlew[] = _("The tailwind blew from\nbehind {B_ATK_TEAM2} team!");
static const u8 sText_ElectricTerrainEnds[] = _("The electricity disappeared\nfrom the battlefield.");
static const u8 sText_MistyTerrainEnds[] = _("The mist disappeared\nfrom the battlefield.");
static const u8 sText_PsychicTerrainEnds[] = _("The weirdness disappeared\nfrom the battlefield.");
static const u8 sText_GrassyTerrainEnds[] = _("The grass disappeared\nfrom the battlefield.");
static const u8 sText_MoldBreakerEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} breaks the mold!");
static const u8 sText_TeravoltEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na bursting aura!");
static const u8 sText_TurboblazeEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na blazing aura!");
static const u8 sText_SlowStartEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can't get it going!");
static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!");
static const u8 sText_AnticipationActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shuddered\nin anticipation!");
static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!");
static const u8 sText_PressureActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is exerting its\npressure!");
static const u8 sText_DarkAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na dark aura!");
static const u8 sText_FairyAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na fairy aura!");
static const u8 sText_AuraBreakActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} reversed all\nother Pokémon's auras!");
static const u8 sText_ComatoseActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is drowsing!");
static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field were\ncleansed!");
static const u8 sText_AsOneEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has two Abilities!");
static const u8 sText_CuriousMedicineEnters[] = _("{B_EFF_NAME_WITH_PREFIX}'s\nstat changes were reset!");
static const u8 sText_PastelVeilEnters[] = _("{B_DEF_NAME_WITH_PREFIX} was cured\nof its poisoning!");
static const u8 sText_NeutralizingGasEnters[] = _("Neutralizing Gas filled the area!");
static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_DEF_NAME_WITH_PREFIX} with power!");
static const u8 sText_ImposterTransform[] = _("{B_ATK_NAME_WITH_PREFIX} transformed into\n{B_DEF_NAME_WITH_PREFIX} using {B_LAST_ABILITY}!");
static const u8 sText_SnowWarningHail[] = _("It started to hail!");
static const u8 sText_SnowWarningSnow[] = _("It started to snow!");
static const u8 sText_SupersweetAromaWafts[] = _("A supersweet aroma is wafting from\nthe syrup covering {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_AirLockActivates[] = _("The effects of weather\ndisappeared.");
static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_ExtremelyHarshSunlight[] = _("The sunlight turned\nextremely harsh!");
static const u8 sText_HeavyRain[] = _("A heavy rain began to fall!");
static const u8 sText_MysteriousAirCurrent[] = _("A mysterious air current is\nprotecting Flying-type Pokémon!");
static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p");
static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!");
static const u8 sText_ZeroToHeroTransformation[] = _("{B_ATK_NAME_WITH_PREFIX} underwent a heroic\ntransformation!");
static const u8 sText_HospitalityRestoration[] = _("{B_ATK_PARTNER_NAME} drank down all the\nmatcha that {B_ATK_NAME_WITH_PREFIX} made!");
static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!");
static const u8 sText_BadDreamsDmg[] = _("{B_DEF_NAME_WITH_PREFIX} is tormented!");
static const u8 sText_SolarPowerHpDrop[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\ntakes its toll!");
static const u8 sText_HealerCure[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\ncured {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s problem!");
static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} found\na {B_LAST_ITEM}!");
static const u8 sText_TargetAbilityLoweredStat[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nlowered its {B_BUFF1}!");
static const u8 sText_TargetStatWontGoHigher[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go higher!");
static const u8 sText_TargetAbilityRaisedStat[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_CursedBodyDisabled[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was disabled\nby {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!");
static const u8 sText_AttackerAquiredAbility[] = _("{B_ATK_NAME_WITH_PREFIX} acquired\n{B_LAST_ABILITY}!");
static const u8 sText_SwappedAbilities[] = _("{B_DEF_NAME_WITH_PREFIX} swapped Abilities\nwith its target!");
static const u8 sText_TargetsStatWasMaxedOut[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} maxed\nits {B_BUFF1}!");
static const u8 sText_PkmnsAbilityPreventsAbility[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY} from working!");
static const u8 sText_AftermathDmg[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt!");
static const u8 sText_IllusionWoreOff[] = _("{B_DEF_NAME_WITH_PREFIX}'s Illusion wore off!");
static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!");
static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!");
static const u8 sText_PoisonSpikesScattered[] = _("Poison Spikes were scattered all\naround {B_DEF_TEAM2} team's feet!");
static const u8 sText_OpportunistCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} copied its\nopponent's stat changes!");
static const u8 sText_PkmnGotOverItsInfatuation[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} got over\nits infatuation!");
static const u8 sText_PkmnShookOffTheTaunt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shook off\nthe taunt!");
static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!");
static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!");
static const u8 sText_BattlerTypeChangedTo[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s type\nchanged to {B_BUFF1}!");
static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!");
static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!");
static const u8 sText_AttackerAbilityRaisedStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_ExtremelyHarshSunlightWasNotLessened[] = _("The extremely harsh sunlight\nwas not lessened at all!");
static const u8 sText_NoReliefFromHeavyRain[] = _("There is no relief from\nthis heavy rain!");
static const u8 sText_MysteriousAirCurrentBlowsOn[] = _("The mysterious air current\nblows on regardless!");
static const u8 sText_AuraFlaredToLife[] = _("{B_DEF_NAME_WITH_PREFIX}'s aura flared to life!");
static const u8 sText_AttackerGotOverInfatuation[] =_("{B_ATK_NAME_WITH_PREFIX} got over\nits infatuation!");
static const u8 sText_TormentedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is\ntormented no more!");
static const u8 sText_BufferEnds[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\nwore off!");
static const u8 sText_HealBlockedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is cured of\nits heal block!");
static const u8 sText_MicleBerryActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted the accuracy of its\nnext move using {B_LAST_ITEM}!");
static const u8 sText_MirrorHerbCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used its {B_LAST_ITEM}\nto mirror its opponent's stat changes!");
static const u8 sText_PkmnsItemHealedFrostbite[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its frostbite!");
static const u8 sText_AirBalloonFloat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} floats in the air\nwith its {B_LAST_ITEM}!");
static const u8 sText_EjectButtonActivate[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is switched\nout with the {B_LAST_ITEM}!");
static const u8 sText_HurtByItem[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt\nby its {B_LAST_ITEM}!");
static const u8 sText_AirBalloonPop[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} popped!");
static const u8 sText_StickyBarbTransfer[] = _("The {B_LAST_ITEM} attached itself to\n{B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_TeamGainedEXP[] = _("The rest of your team gained EXP.\nPoints thanks to the {B_LAST_ITEM}!\p");
static const u8 sText_PkmnFrostbiteHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nfrostbite was healed!");
static const u8 sText_StockpiledEffectWoreOff[] = _("{B_ATK_NAME_WITH_PREFIX}'s stockpiled\neffect wore off!");
static const u8 sText_FellStraightDown[] =_("{B_DEF_NAME_WITH_PREFIX} fell\nstraight down!");
static const u8 sText_TargetWokeUp[] = _("{B_DEF_NAME_WITH_PREFIX} woke up!");
static const u8 sText_PkmnBurnHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nburn was healed.");
static const u8 sText_RedCardActivate[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} held up its {B_LAST_ITEM}\nagainst {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_MoveBlockedByDynamax[] = _("The move was blocked by\nthe power of Dynamax!");
static const u8 sText_ItemCannotBeRemoved[] = _("{B_ATK_NAME_WITH_PREFIX}'s item cannot be removed!");
static const u8 sText_ZMoveResetsStats[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} returned its\ndecreased stats to normal using\lits Z-Power!");
static const u8 sText_ZMoveBoostCrit[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted its\ncritical-hit ratio using its Z-Power!");
static const u8 sText_ZMoveRestoreHp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} restored its\nHP using its Z-Power!");
static const u8 sText_ZMoveStatUp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted\nits stats using its Z-Power!");
static const u8 sText_ZMoveHpSwitchInTrap[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s HP was restored by the Z-Power!");
static const u8 sText_ZMoveAllStatsUp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted all\nof its stats using its Z-Power!");
static const u8 sText_PkmnRevertedToPrimal[] = _("{B_ATK_NAME_WITH_PREFIX}'s Primal Reversion!\nIt reverted to its primal form!");
static const u8 sText_HealingWishHealed[] = _("{B_ATK_NAME_WITH_PREFIX} regained health!");
static const u8 sText_ToxicSpikesAbsorbed[] = _("The poison spikes disappeared\nfrom around {B_DEF_TEAM2} team's feet!");
static const u8 sText_ToxicSpikesPoisoned[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was poisoned!");
static const u8 sText_StickyWebSwitchIn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was\ncaught in a Sticky Web!");
static const u8 sText_HealingWishCameTrue[] = _("The healing wish came true\nfor {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_LunarDanceCameTrue[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin mystical moonlight!");
static const u8 sText_SpikesDisappearedFromTeam[] = _("The spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!");
static const u8 sText_ToxicSpikesDisappearedFromTeam[] = _("The poison spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!");
static const u8 sText_StickyWebDisappearedFromTeam[] = _("The sticky web has disappeared from\nthe ground around {B_ATK_TEAM2} team!");
static const u8 sText_StealthRockDisappearedFromTeam[] = _("The pointed stones disappeared\nfrom around {B_ATK_TEAM2} team!");
static const u8 sText_SharpSteelDisappearedFromTeam[] = _("The sharp steel disappeared from\nthe ground around {B_ATK_TEAM2} team!");
static const u8 sText_LastAbilityRaisedBuff1[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_ReceiverAbilityTakeOver[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwas taken over!");
static const u8 sText_NeutralizingGasOver[] = _("The effects of Neutralizing\nGas wore off!");
static const u8 sText_AttackerBecameFullyCharged[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its bond with its trainer!\p");
static const u8 sText_AttackerBecameAshSpecies[] = _("{B_ATK_NAME_WITH_PREFIX} became Ash-{B_BUFF1}!\p");
static const u8 sText_ProtectedTeam[] =_("{B_CURRENT_MOVE} protected\n{B_ATK_TEAM2} team!");
static const u8 sText_ElectricTerrainPreventsSleep[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith electrified terrain!");
static const u8 sText_MistyTerrainPreventsStatus[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith a protective mist!");
static const u8 sText_PsychicTerrainPreventsPriority[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith psychic terrain!");
static const u8 sText_FlowerVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} surrounded itself\nwith a veil of petals!");
static const u8 sText_drastically[] = _("drastically ");
static const u8 sText_severely[] = _("severely ");
static const u8 sText_ClearAmuletWontLowerStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} prevents\nits stats from being lowered!");
static const u8 sText_CelebrateMessage[] = _("Congratulations, {B_PLAYER_NAME}!");
static const u8 sText_PkmnBlewAwayToxicSpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nToxic Spikes!");
static const u8 sText_PkmnBlewAwayStickyWeb[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSticky Web!");
static const u8 sText_PkmnBlewAwayStealthRock[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nStealth Rock!");
static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!");
static const u8 sText_PkmnGotFrostbite[] = _("{B_EFF_NAME_WITH_PREFIX} got frostbite!");
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_START] = {
@ -906,6 +1081,288 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_ST
[STRINGID_ITEMRESTOREDSPECIESHEALTH - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesHealth,
[STRINGID_ITEMRESTOREDSPECIESPP - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesPP,
[STRINGID_ITEMCUREDSPECIESSTATUS - BATTLESTRINGS_TABLE_START] = sText_ItemCuredSpeciesStatus,
[STRINGID_ELECTROSHOTCHARGING - BATTLESTRINGS_TABLE_START] = sText_ElectroShotCharging,
[STRINGID_METEORBEAMCHARGING - BATTLESTRINGS_TABLE_START] = sText_MeteorBeamCharging,
[STRINGID_CLOAKEDINAHARSHLIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnIsCloakedInAHarshLight,
[STRINGID_VANISHEDINSTANTLY - BATTLESTRINGS_TABLE_START] = sText_VanishedInstantly,
[STRINGID_PKMNTOOKTARGETHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnTookTargetHigh,
[STRINGID_CLOAKEDINAFREEZINGLIGHT - BATTLESTRINGS_TABLE_START] = sText_CloakedInAFreezingLight,
[STRINGID_PKNMABSORBINGPOWER - BATTLESTRINGS_TABLE_START] = sText_PkmnAbsorbingPower,
[STRINGID_POKEMONCANNOTUSEMOVE - BATTLESTRINGS_TABLE_START] = sText_PokemonCannotUseMove,
[STRINGID_PKMNMOVEBOUNCEDABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveBouncedViaAbility,
[STRINGID_HEALBLOCKPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_HealBlockPreventsUsage,
[STRINGID_GRAVITYPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_GravityPreventsUsage,
[STRINGID_PKMNFROSTBITEHEALED2 - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed2,
[STRINGID_PKMNFROSTBITEHEALEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealedBy,
[STRINGID_SAFETYGOGGLESPROTECTED - BATTLESTRINGS_TABLE_START] = sText_SafetyGogglesProtected,
[STRINGID_POWDEREXPLODES - BATTLESTRINGS_TABLE_START] = sText_PowderExplodes,
[STRINGID_PKMNCANTUSEMOVETHROATCHOP - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveThroatChop,
[STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_MoveFizzledOutInTheHeavyRain,
[STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_MoveEvaporatedInTheHarshSunlight,
[STRINGID_TARGETATEITEM - BATTLESTRINGS_TABLE_START] = sText_TargetAteItem,
[STRINGID_GEMACTIVATES - BATTLESTRINGS_TABLE_START] = sText_GemActivates,
[STRINGID_ATTACKWEAKENEDBSTRONGWINDS - BATTLESTRINGS_TABLE_START] = sText_AttackWeakenedByStrongWinds,
[STRINGID_ENDUREDSTURDY - BATTLESTRINGS_TABLE_START] = sText_EnduredViaSturdy,
[STRINGID_BERRYDMGREDUCES - BATTLESTRINGS_TABLE_START] = sText_BerryDmgReducing,
[STRINGID_TARGETTOUGHEDITOUT - BATTLESTRINGS_TABLE_START] = sText_TargetToughedItOut,
[STRINGID_TRAPPEDBYSWIRLINGMAGMA - BATTLESTRINGS_TABLE_START] = sText_TrappedBySwirlingMagma,
[STRINGID_INFESTATION - BATTLESTRINGS_TABLE_START] = sText_Infestation,
[STRINGID_PKMNINSNAPTRAP - BATTLESTRINGS_TABLE_START] = sText_PkmnInSnapTrap,
[STRINGID_THUNDERCAGETRAPPED - BATTLESTRINGS_TABLE_START] = sText_AtkTrappedDef,
[STRINGID_RESETSTARGETSSTATLEVELS - BATTLESTRINGS_TABLE_START] = sText_ResetsTargetsStatLevels,
[STRINGID_STRONGWINDSDISSIPATED - BATTLESTRINGS_TABLE_START] = sText_StrongWindsDissipated,
[STRINGID_EXTREMESUNLIGHTFADED - BATTLESTRINGS_TABLE_START] = sText_ExtremeSunlightFaded,
[STRINGID_HEAVYRAINLIFTED - BATTLESTRINGS_TABLE_START] = sText_HeavyRainLifted,
[STRINGID_SYMBIOSISITEMPASS - BATTLESTRINGS_TABLE_START] = sText_SymbiosisItemPass,
[STRINGID_BURSTINGFLAMESHIT - BATTLESTRINGS_TABLE_START] = sText_BurstingFlames,
[STRINGID_BROKETHROUGHPROTECTION - BATTLESTRINGS_TABLE_START] = sText_BrokeThroughProtection,
[STRINGID_FELLFORFEINT - BATTLESTRINGS_TABLE_START] = sText_FellForFeint,
[STRINGID_SPECTRALTHIEFSTEAL - BATTLESTRINGS_TABLE_START] = sText_SpectralThiefSteal,
[STRINGID_PKMNSABILITYSUPPRESSED - BATTLESTRINGS_TABLE_START] = sText_PkmnsAbilitySuppressed,
[STRINGID_INCINERATEBURN - BATTLESTRINGS_TABLE_START] = sText_IncinerateBurn,
[STRINGID_BUGBITE - BATTLESTRINGS_TABLE_START] = sText_BugBite,
[STRINGID_BOTHCANNOLONGERESCAPE - BATTLESTRINGS_TABLE_START] = sText_BothCanNoLongerEscape,
[STRINGID_ATTACKERLOSTFIRETYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostFireType,
[STRINGID_ATTACKERLOSTELECTRICTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostElectricType,
[STRINGID_ATTACKERLOSTITSTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostItsType,
[STRINGID_STEALTHROCKDMG - BATTLESTRINGS_TABLE_START] = sText_StealthRockDmg,
[STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg,
[STRINGID_POINTEDSTONESFLOAT - BATTLESTRINGS_TABLE_START] = sText_PointedStonesFloat,
[STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats,
[STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP - BATTLESTRINGS_TABLE_START] = sText_TargetCoveredInStickyCandySyrup,
[STRINGID_AROMAVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_AromaVeilProtected,
[STRINGID_PKMNPREVENTEDFROMHEALING - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventedFromHealing,
[STRINGID_TERRAINBECOMESMISTY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesMisty,
[STRINGID_TERRAINBECOMESGRASSY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesGrassy,
[STRINGID_TERRAINBECOMESELECTRIC - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesElectric,
[STRINGID_TERRAINBECOMESPSYCHIC - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesPsychic,
[STRINGID_DIMENSIONSWERETWISTED - BATTLESTRINGS_TABLE_START] = sText_DimensionsWereTwisted,
[STRINGID_BIZARREAREACREATED - BATTLESTRINGS_TABLE_START] = sText_BizzareAreaCreated,
[STRINGID_BIZARREARENACREATED - BATTLESTRINGS_TABLE_START] = sText_BizarreArenaCreated,
[STRINGID_TAILWINDBLEW - BATTLESTRINGS_TABLE_START] = sText_TailWindBlew,
[STRINGID_ELECTRICTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainEnds,
[STRINGID_MISTYTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_MistyTerrainEnds,
[STRINGID_PSYCHICTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_PsychicTerrainEnds,
[STRINGID_GRASSYTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_GrassyTerrainEnds,
[STRINGID_MOLDBREAKERENTERS - BATTLESTRINGS_TABLE_START] = sText_MoldBreakerEnters,
[STRINGID_TERAVOLTENTERS - BATTLESTRINGS_TABLE_START] = sText_TeravoltEnters,
[STRINGID_TURBOBLAZEENTERS - BATTLESTRINGS_TABLE_START] = sText_TurboblazeEnters,
[STRINGID_SLOWSTARTENTERS - BATTLESTRINGS_TABLE_START] = sText_SlowStartEnters,
[STRINGID_UNNERVEENTERS - BATTLESTRINGS_TABLE_START] = sText_UnnerveEnters,
[STRINGID_ANTICIPATIONACTIVATES - BATTLESTRINGS_TABLE_START] = sText_AnticipationActivates,
[STRINGID_FOREWARNACTIVATES - BATTLESTRINGS_TABLE_START] = sText_ForewarnActivates,
[STRINGID_PRESSUREENTERS - BATTLESTRINGS_TABLE_START] = sText_PressureActivates,
[STRINGID_DARKAURAENTERS - BATTLESTRINGS_TABLE_START] = sText_DarkAuraActivates,
[STRINGID_FAIRYAURAENTERS - BATTLESTRINGS_TABLE_START] = sText_FairyAuraActivates,
[STRINGID_AURABREAKENTERS - BATTLESTRINGS_TABLE_START] = sText_AuraBreakActivates,
[STRINGID_COMATOSEENTERS - BATTLESTRINGS_TABLE_START] = sText_ComatoseActivates,
[STRINGID_SCREENCLEANERENTERS - BATTLESTRINGS_TABLE_START] = sText_ScreenCleanerActivates,
[STRINGID_ASONEENTERS - BATTLESTRINGS_TABLE_START] = sText_AsOneEnters,
[STRINGID_CURIOUSMEDICINEENTERS - BATTLESTRINGS_TABLE_START] = sText_CuriousMedicineEnters,
[STRINGID_PASTELVEILENTERS - BATTLESTRINGS_TABLE_START] = sText_PastelVeilEnters,
[STRINGID_NEUTRALIZINGGASENTERS - BATTLESTRINGS_TABLE_START] = sText_NeutralizingGasEnters,
[STRINGID_BEINGHITCHARGEDPKMNWITHPOWER - BATTLESTRINGS_TABLE_START] = sText_BeingHitChargedPkmnWithPower,
[STRINGID_IMPOSTERTRANSFORM - BATTLESTRINGS_TABLE_START] = sText_ImposterTransform,
[STRINGID_SNOWWARNINGHAIL - BATTLESTRINGS_TABLE_START] = sText_SnowWarningHail,
[STRINGID_SNOWWARNINGSNOW - BATTLESTRINGS_TABLE_START] = sText_SnowWarningSnow,
[STRINGID_SUPERSWEETAROMAWAFTS - BATTLESTRINGS_TABLE_START] = sText_SupersweetAromaWafts,
[STRINGID_AIRLOCKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_AirLockActivates,
[STRINGID_BATTLERABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_BattlerAbilityRaisedStat,
[STRINGID_EXTREMELYHARSHSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_ExtremelyHarshSunlight,
[STRINGID_HEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_HeavyRain,
[STRINGID_MYSTERIOUSAIRCURRENT - BATTLESTRINGS_TABLE_START] = sText_MysteriousAirCurrent,
[STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat,
[STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen,
[STRINGID_ZEROTOHEROTRANSFORMATION - BATTLESTRINGS_TABLE_START] = sText_ZeroToHeroTransformation,
[STRINGID_HOSPITALITYRESTORATION - BATTLESTRINGS_TABLE_START] = sText_HospitalityRestoration,
[STRINGID_HARVESTBERRY - BATTLESTRINGS_TABLE_START] = sText_HarvestBerry,
[STRINGID_BADDREAMSDMG - BATTLESTRINGS_TABLE_START] = sText_BadDreamsDmg,
[STRINGID_SOLARPOWERHPDROP - BATTLESTRINGS_TABLE_START] = sText_SolarPowerHpDrop,
[STRINGID_HEALERCURE - BATTLESTRINGS_TABLE_START] = sText_HealerCure,
[STRINGID_FETCHEDPOKEBALL - BATTLESTRINGS_TABLE_START] = sText_FetchedPokeBall,
[STRINGID_TARGETABILITYSTATLOWER - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityLoweredStat,
[STRINGID_TARGETSTATWONTGOHIGHER - BATTLESTRINGS_TABLE_START] = sText_TargetStatWontGoHigher,
[STRINGID_TARGETABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityRaisedStat,
[STRINGID_CUSEDBODYDISABLED - BATTLESTRINGS_TABLE_START] = sText_CursedBodyDisabled,
[STRINGID_ATTACKERACQUIREDABILITY - BATTLESTRINGS_TABLE_START] = sText_AttackerAquiredAbility,
[STRINGID_SWAPPEDABILITIES - BATTLESTRINGS_TABLE_START] = sText_SwappedAbilities,
[STRINGID_TARGETSSTATWASMAXEDOUT - BATTLESTRINGS_TABLE_START] = sText_TargetsStatWasMaxedOut,
[STRINGID_PKMNSABILITYPREVENTSABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnsAbilityPreventsAbility,
[STRINGID_AFTERMATHDMG - BATTLESTRINGS_TABLE_START] = sText_AftermathDmg,
[STRINGID_ILLUSIONWOREOFF - BATTLESTRINGS_TABLE_START] = sText_IllusionWoreOff,
[STRINGID_ASANDSTORMKICKEDUP - BATTLESTRINGS_TABLE_START] = sText_ASandstormKickedUp,
[STRINGID_PKMNSWILLPERISHIN3TURNS - BATTLESTRINGS_TABLE_START] = sText_PkmnsWillPerishIn3Turns,
[STRINGID_POISONSPIKESSCATTERED - BATTLESTRINGS_TABLE_START] = sText_PoisonSpikesScattered,
[STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied,
[STRINGID_PKMNGOTOVERITSINFATUATION - BATTLESTRINGS_TABLE_START] = sText_PkmnGotOverItsInfatuation,
[STRINGID_PKMNSHOOKOFFTHETAUNT - BATTLESTRINGS_TABLE_START] = sText_PkmnShookOffTheTaunt,
[STRINGID_SUNLIGHTACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_SunlightActivatedAbility,
[STRINGID_STATWASHEIGHTENED - BATTLESTRINGS_TABLE_START] = sText_StatWasHeightened,
[STRINGID_BATTLERTYPECHANGEDTO - BATTLESTRINGS_TABLE_START] = sText_BattlerTypeChangedTo,
[STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility,
[STRINGID_FRISKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_FriskActivates,
[STRINGID_ATTACKERABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_AttackerAbilityRaisedStat,
[STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED - BATTLESTRINGS_TABLE_START] = sText_ExtremelyHarshSunlightWasNotLessened,
[STRINGID_NORELIEFROMHEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_NoReliefFromHeavyRain,
[STRINGID_MYSTERIOUSAIRCURRENTBLOWSON - BATTLESTRINGS_TABLE_START] = sText_MysteriousAirCurrentBlowsOn,
[STRINGID_AURAFLAREDTOLIFE - BATTLESTRINGS_TABLE_START] = sText_AuraFlaredToLife,
[STRINGID_ATKGOTOVERINFATUATION - BATTLESTRINGS_TABLE_START] = sText_AttackerGotOverInfatuation,
[STRINGID_TORMENTEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_TormentedNoMore,
[STRINGID_BUFFERENDS - BATTLESTRINGS_TABLE_START] = sText_BufferEnds,
[STRINGID_HEALBLOCKEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_HealBlockedNoMore,
[STRINGID_MICLEBERRYACTIVATES - BATTLESTRINGS_TABLE_START] = sText_MicleBerryActivates,
[STRINGID_MIRRORHERBCOPIED - BATTLESTRINGS_TABLE_START] = sText_MirrorHerbCopied,
[STRINGID_PKMNSITEMHEALEDFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemHealedFrostbite,
[STRINGID_AIRBALLOONFLOAT - BATTLESTRINGS_TABLE_START] = sText_AirBalloonFloat,
[STRINGID_EJECTBUTTONACTIVATE - BATTLESTRINGS_TABLE_START] = sText_EjectButtonActivate,
[STRINGID_HURTBYITEM - BATTLESTRINGS_TABLE_START] = sText_HurtByItem,
[STRINGID_AIRBALLOONPOP - BATTLESTRINGS_TABLE_START] = sText_AirBalloonPop,
[STRINGID_STICKYBARBTRANSFER - BATTLESTRINGS_TABLE_START] = sText_StickyBarbTransfer,
[STRINGID_TEAMGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_TeamGainedEXP,
[STRINGID_PKMNFROSTBITEHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed,
[STRINGID_STOCKPILEDEFFECTWOREOFF - BATTLESTRINGS_TABLE_START] = sText_StockpiledEffectWoreOff,
[STRINGID_FELLSTRAIGHTDOWN - BATTLESTRINGS_TABLE_START] = sText_FellStraightDown,
[STRINGID_TARGETWOKEUP - BATTLESTRINGS_TABLE_START] = sText_TargetWokeUp,
[STRINGID_PKMNBURNHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnBurnHealed,
[STRINGID_REDCARDACTIVATE - BATTLESTRINGS_TABLE_START] = sText_RedCardActivate,
[STRINGID_MOVEBLOCKEDBYDYNAMAX - BATTLESTRINGS_TABLE_START] = sText_MoveBlockedByDynamax,
[STRINGID_ITEMCANNOTBEREMOVED - BATTLESTRINGS_TABLE_START] = sText_ItemCannotBeRemoved,
[STRINGID_ZMOVERESETSSTATS - BATTLESTRINGS_TABLE_START] = sText_ZMoveResetsStats,
[STRINGID_ZMOVEZBOOSTCRIT - BATTLESTRINGS_TABLE_START] = sText_ZMoveBoostCrit,
[STRINGID_ZMOVERESTOREHP - BATTLESTRINGS_TABLE_START] = sText_ZMoveRestoreHp,
[STRINGID_ZMOVESTATUP - BATTLESTRINGS_TABLE_START] = sText_ZMoveStatUp,
[STRINGID_ZMOVEHPTRAP - BATTLESTRINGS_TABLE_START] = sText_ZMoveHpSwitchInTrap,
[STRINGID_ZMOVEALLSTATSUP - BATTLESTRINGS_TABLE_START] = sText_ZMoveAllStatsUp,
[STRINGID_PKMNREVERTEDTOPRIMAL - BATTLESTRINGS_TABLE_START] = sText_PkmnRevertedToPrimal,
[STRINGID_HEALINGWISHHEALED - BATTLESTRINGS_TABLE_START] = sText_HealingWishHealed,
[STRINGID_TOXICSPIKESABSORBED - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesAbsorbed,
[STRINGID_TOXICSPIKESPOISONED - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesPoisoned,
[STRINGID_STICKYWEBSWITCHIN - BATTLESTRINGS_TABLE_START] = sText_StickyWebSwitchIn,
[STRINGID_HEALINGWISHCAMETRUE - BATTLESTRINGS_TABLE_START] = sText_HealingWishCameTrue,
[STRINGID_LUNARDANCECAMETRUE - BATTLESTRINGS_TABLE_START] = sText_LunarDanceCameTrue,
[STRINGID_SPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SpikesDisappearedFromTeam,
[STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesDisappearedFromTeam,
[STRINGID_STICKYWEBDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StickyWebDisappearedFromTeam,
[STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StealthRockDisappearedFromTeam,
[STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDisappearedFromTeam,
[STRINGID_LASTABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_LastAbilityRaisedBuff1,
[STRINGID_RECEIVERABILITYTAKEOVER - BATTLESTRINGS_TABLE_START] = sText_ReceiverAbilityTakeOver,
[STRINGID_NEUTRALIZINGGASOVER - BATTLESTRINGS_TABLE_START] = sText_NeutralizingGasOver,
[STRINGID_ATTACKERBECAMEFULLYCHARGED - BATTLESTRINGS_TABLE_START] = sText_AttackerBecameFullyCharged,
[STRINGID_ATTACKERBECAMEASHSPECIES - BATTLESTRINGS_TABLE_START] = sText_AttackerBecameAshSpecies,
[STRINGID_PROTECTEDTEAM - BATTLESTRINGS_TABLE_START] = sText_ProtectedTeam,
[STRINGID_ELECTRICTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainPreventsSleep,
[STRINGID_MISTYTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_MistyTerrainPreventsStatus,
[STRINGID_PSYCHICTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_PsychicTerrainPreventsPriority,
[STRINGID_FLOWERVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_FlowerVeilProtected,
[STRINGID_DRASTICALLY - BATTLESTRINGS_TABLE_START] = sText_drastically,
[STRINGID_SEVERELY - BATTLESTRINGS_TABLE_START] = sText_severely,
[STRINGID_CLEARAMULETWONTLOWERSTATS - BATTLESTRINGS_TABLE_START] = sText_ClearAmuletWontLowerStats,
[STRINGID_CELEBRATEMESSAGE - BATTLESTRINGS_TABLE_START] = sText_CelebrateMessage,
[STRINGID_PKMNBLEWAWAYTOXICSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayToxicSpikes,
[STRINGID_PKMNBLEWAWAYSTICKYWEB - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStickyWeb,
[STRINGID_PKMNBLEWAWAYSTEALTHROCK - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStealthRock,
[STRINGID_PKMNBLEWAWAYSHARPSTEEL - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySharpSteel,
[STRINGID_PKMNGOTFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnGotFrostbite,
};
const u16 gTrainerUsedItemStringIds[] =
{
STRINGID_PLAYERUSEDITEM, STRINGID_TRAINER1USEDITEM
};
const u16 gZEffectStringIds[] =
{
[B_MSG_Z_RESET_STATS] = STRINGID_ZMOVERESETSSTATS,
[B_MSG_Z_ALL_STATS_UP]= STRINGID_ZMOVEALLSTATSUP,
[B_MSG_Z_BOOST_CRITS] = STRINGID_ZMOVEZBOOSTCRIT,
[B_MSG_Z_FOLLOW_ME] = STRINGID_PKMNCENTERATTENTION,
[B_MSG_Z_RECOVER_HP] = STRINGID_ZMOVERESTOREHP,
[B_MSG_Z_STAT_UP] = STRINGID_ZMOVESTATUP,
[B_MSG_Z_HP_TRAP] = STRINGID_ZMOVEHPTRAP,
};
const u16 gMentalHerbCureStringIds[] =
{
[B_MSG_MENTALHERBCURE_INFATUATION] = STRINGID_ATKGOTOVERINFATUATION,
[B_MSG_MENTALHERBCURE_TAUNT] = STRINGID_BUFFERENDS,
[B_MSG_MENTALHERBCURE_ENCORE] = STRINGID_PKMNENCOREENDED,
[B_MSG_MENTALHERBCURE_TORMENT] = STRINGID_TORMENTEDNOMORE,
[B_MSG_MENTALHERBCURE_HEALBLOCK] = STRINGID_HEALBLOCKEDNOMORE,
[B_MSG_MENTALHERBCURE_DISABLE] = STRINGID_PKMNMOVEDISABLEDNOMORE,
};
const u16 gStartingStatusStringIds[B_MSG_STARTING_STATUS_COUNT] =
{
[B_MSG_TERRAIN_SET_MISTY] = STRINGID_TERRAINBECOMESMISTY,
[B_MSG_TERRAIN_SET_ELECTRIC] = STRINGID_TERRAINBECOMESELECTRIC,
[B_MSG_TERRAIN_SET_PSYCHIC] = STRINGID_TERRAINBECOMESPSYCHIC,
[B_MSG_TERRAIN_SET_GRASSY] = STRINGID_TERRAINBECOMESGRASSY,
[B_MSG_SET_TRICK_ROOM] = STRINGID_DIMENSIONSWERETWISTED,
[B_MSG_SET_MAGIC_ROOM] = STRINGID_BIZARREARENACREATED,
[B_MSG_SET_WONDER_ROOM] = STRINGID_BIZARREAREACREATED,
[B_MSG_SET_TAILWIND_PLAYER] = STRINGID_TAILWINDBLEW,
[B_MSG_SET_TAILWIND_OPPONENT] = STRINGID_TAILWINDBLEW,
};
const u16 gTerrainStringIds[B_MSG_TERRAIN_COUNT] =
{
[B_MSG_TERRAIN_SET_MISTY] = STRINGID_TERRAINBECOMESMISTY,
[B_MSG_TERRAIN_SET_ELECTRIC] = STRINGID_TERRAINBECOMESELECTRIC,
[B_MSG_TERRAIN_SET_PSYCHIC] = STRINGID_TERRAINBECOMESPSYCHIC,
[B_MSG_TERRAIN_SET_GRASSY] = STRINGID_TERRAINBECOMESGRASSY,
[B_MSG_TERRAIN_END_MISTY] = STRINGID_MISTYTERRAINENDS,
[B_MSG_TERRAIN_END_ELECTRIC] = STRINGID_ELECTRICTERRAINENDS,
[B_MSG_TERRAIN_END_PSYCHIC] = STRINGID_PSYCHICTERRAINENDS,
[B_MSG_TERRAIN_END_GRASSY] = STRINGID_GRASSYTERRAINENDS,
};
const u16 gTerrainPreventsStringIds[] =
{
[B_MSG_TERRAINPREVENTS_MISTY] = STRINGID_MISTYTERRAINPREVENTS,
[B_MSG_TERRAINPREVENTS_ELECTRIC] = STRINGID_ELECTRICTERRAINPREVENTS,
[B_MSG_TERRAINPREVENTS_PSYCHIC] = STRINGID_PSYCHICTERRAINPREVENTS
};
const u16 gMagicCoatBounceStringIds[] =
{
STRINGID_PKMNMOVEBOUNCED, STRINGID_PKMNMOVEBOUNCEDABILITY
};
const u16 gHealingWishStringIds[] =
{
STRINGID_HEALINGWISHCAMETRUE, STRINGID_LUNARDANCECAMETRUE
};
const u16 gDmgHazardsStringIds[] =
{
[B_MSG_PKMNHURTBYSPIKES] = STRINGID_PKMNHURTBYSPIKES,
[B_MSG_STEALTHROCKDMG] = STRINGID_STEALTHROCKDMG,
[B_MSG_SHARPSTEELDMG] = STRINGID_SHARPSTEELDMG,
[B_MSG_POINTEDSTONESFLOAT] = STRINGID_POINTEDSTONESFLOAT,
[B_MSG_SPIKESSCATTERED] = STRINGID_SPIKESSCATTERED,
[B_MSG_SHARPSTEELFLOATS] = STRINGID_SHARPSTEELFLOATS,
};
const u16 gSwitchInAbilityStringIds[] =
{
[B_MSG_SWITCHIN_MOLDBREAKER] = STRINGID_MOLDBREAKERENTERS,
[B_MSG_SWITCHIN_TERAVOLT] = STRINGID_TERAVOLTENTERS,
[B_MSG_SWITCHIN_TURBOBLAZE] = STRINGID_TURBOBLAZEENTERS,
[B_MSG_SWITCHIN_SLOWSTART] = STRINGID_SLOWSTARTENTERS,
[B_MSG_SWITCHIN_UNNERVE] = STRINGID_UNNERVEENTERS,
[B_MSG_SWITCHIN_ANTICIPATION] = STRINGID_ANTICIPATIONACTIVATES,
[B_MSG_SWITCHIN_FOREWARN] = STRINGID_FOREWARNACTIVATES,
[B_MSG_SWITCHIN_PRESSURE] = STRINGID_PRESSUREENTERS,
[B_MSG_SWITCHIN_DARKAURA] = STRINGID_DARKAURAENTERS,
[B_MSG_SWITCHIN_FAIRYAURA] = STRINGID_FAIRYAURAENTERS,
[B_MSG_SWITCHIN_AURABREAK] = STRINGID_AURABREAKENTERS,
[B_MSG_SWITCHIN_COMATOSE] = STRINGID_COMATOSEENTERS,
[B_MSG_SWITCHIN_SCREENCLEANER] = STRINGID_SCREENCLEANERENTERS,
[B_MSG_SWITCHIN_ASONE] = STRINGID_ASONEENTERS,
[B_MSG_SWITCHIN_CURIOUS_MEDICINE] = STRINGID_CURIOUSMEDICINEENTERS,
[B_MSG_SWITCHIN_PASTEL_VEIL] = STRINGID_PASTELVEILENTERS,
[B_MSG_SWITCHIN_NEUTRALIZING_GAS] = STRINGID_NEUTRALIZINGGASENTERS,
};
const u16 gMissStringIds[] =
@ -965,7 +1422,8 @@ const u16 gProtectLikeUsedStringIds[] =
{
[B_MSG_PROTECTED_ITSELF] = STRINGID_PKMNPROTECTEDITSELF2,
[B_MSG_BRACED_ITSELF] = STRINGID_PKMNBRACEDITSELF,
[B_MSG_PROTECT_FAILED] = STRINGID_BUTITFAILED
[B_MSG_PROTECT_FAILED] = STRINGID_BUTITFAILED,
[B_MSG_PROTECTED_TEAM] = STRINGID_PROTECTEDTEAM,
};
const u16 gReflectLightScreenSafeguardStringIds[] =
@ -1055,15 +1513,19 @@ const u16 gFirstTurnOfTwoStringIds[] =
[B_MSG_TURN1_BOUNCE] = STRINGID_PKMNSPRANGUP
};
// Index copied from move's index in gTrappingMoves
const u16 gWrappedStringIds[] =
// Index copied from move's index in sTrappingMoves
const u16 gWrappedStringIds[NUM_TRAPPING_MOVES] =
{
STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND
STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP
STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN
STRINGID_PKMNCLAMPED, // MOVE_CLAMP
STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL
STRINGID_PKMNTRAPPEDBYSANDTOMB // MOVE_SAND_TOMB
[B_MSG_WRAPPED_BIND] = STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND
[B_MSG_WRAPPED_WRAP] = STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP
[B_MSG_WRAPPED_FIRE_SPIN] = STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN
[B_MSG_WRAPPED_CLAMP] = STRINGID_PKMNCLAMPED, // MOVE_CLAMP
[B_MSG_WRAPPED_WHIRLPOOL] = STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL
[B_MSG_WRAPPED_SAND_TOMB] = STRINGID_PKMNTRAPPEDBYSANDTOMB, // MOVE_SAND_TOMB
[B_MSG_WRAPPED_MAGMA_STORM] = STRINGID_TRAPPEDBYSWIRLINGMAGMA, // MOVE_MAGMA_STORM
[B_MSG_WRAPPED_INFESTATION] = STRINGID_INFESTATION, // MOVE_INFESTATION
[B_MSG_WRAPPED_SNAP_TRAP] = STRINGID_PKMNINSNAPTRAP, // MOVE_SNAP_TRAP
[B_MSG_WRAPPED_THUNDER_CAGE]= STRINGID_THUNDERCAGETRAPPED, // MOVE_THUNDER_CAGE
};
const u16 gMistUsedStringIds[] =
@ -1114,6 +1576,17 @@ const u16 gGotBurnedStringIds[] =
[B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNBURNEDBY
};
const u16 gGotFrostbiteStringIds[] =
{
[B_MSG_STATUSED] = STRINGID_PKMNGOTFROSTBITE
};
const u16 gFrostbiteHealedStringIds[] =
{
[B_MSG_FROSTBITE_HEALED] = STRINGID_PKMNFROSTBITEHEALED2,
[B_MSG_FROSTBITE_HEALED_BY_MOVE] = STRINGID_PKMNFROSTBITEHEALEDBY
};
const u16 gGotFrozenStringIds[] =
{
[B_MSG_STATUSED] = STRINGID_PKMNWASFROZEN,
@ -1194,6 +1667,12 @@ const u16 gWeatherStartsStringIds[] =
[WEATHER_ABNORMAL] = STRINGID_ITISRAINING
};
const u16 gPrimalWeatherBlocksStringIds[] =
{
[B_MSG_PRIMAL_WEATHER_FIZZLED_BY_RAIN] = STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN,
[B_MSG_PRIMAL_WEATHER_EVAPORATED_IN_SUN] = STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT,
};
const u16 gInobedientStringIds[] =
{
[B_MSG_LOAFING] = STRINGID_PKMNLOAFING,
@ -1277,17 +1756,6 @@ const u16 gDoubleBattleRecallStrings[1 << (MAX_BATTLERS_COUNT / 2)] =
STRINGID_TRAINER1MON1AND2COMEBACK
};
const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] =
{
MOVE_BIND,
MOVE_WRAP,
MOVE_FIRE_SPIN,
MOVE_CLAMP,
MOVE_WHIRLPOOL,
MOVE_SAND_TOMB,
0xFFFF // Never read
};
const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!");
const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p");
const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p");
@ -1391,6 +1859,9 @@ static const u8 sText_Trainer1Fled[] = _("{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B
static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
static const u8 sText_Your2[] = _("your");
static const u8 sText_Opposing2[] = _("the opposing");
static const u8 *const sATypeMove_Table[NUMBER_OF_MON_TYPES] =
{
[TYPE_NORMAL] = gText_ANormalMove,
@ -1779,6 +2250,9 @@ void BufferStringBattle(u16 stringId)
}
}
break;
case STRINGID_TRAINERSLIDE:
stringPtr = gBattleStruct->trainerSlideMsg;
break;
default: // load a string from the table
if (stringId >= BATTLESTRINGS_COUNT)
{
@ -2044,19 +2518,19 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
}
break;
case B_TXT_LAST_ABILITY: // last used ability
toCpy = gAbilityNames[gLastUsedAbility];
toCpy = gAbilitiesInfo[gLastUsedAbility].name;
break;
case B_TXT_ATK_ABILITY: // attacker ability
toCpy = gAbilityNames[sBattlerAbilities[gBattlerAttacker]];
toCpy = gAbilitiesInfo[sBattlerAbilities[gBattlerAttacker]].name;
break;
case B_TXT_DEF_ABILITY: // target ability
toCpy = gAbilityNames[sBattlerAbilities[gBattlerTarget]];
toCpy = gAbilitiesInfo[sBattlerAbilities[gBattlerTarget]].name;
break;
case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability
toCpy = gAbilityNames[sBattlerAbilities[gBattleScripting.battler]];
toCpy = gAbilitiesInfo[sBattlerAbilities[gBattleScripting.battler]].name;
break;
case B_TXT_EFF_ABILITY: // effect battlerId ability
toCpy = gAbilityNames[sBattlerAbilities[gEffectBattler]];
toCpy = gAbilitiesInfo[sBattlerAbilities[gEffectBattler]].name;
break;
case B_TXT_TRAINER1_CLASS: // trainer class name
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
@ -2202,8 +2676,21 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
else
toCpy = sText_FoePkmnPrefix4;
break;
case B_TXT_ATK_TEAM2:
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
toCpy = sText_Your2;
else
toCpy = sText_Opposing2;
break;
case B_TXT_DEF_TEAM2:
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
toCpy = sText_Your2;
else
toCpy = sText_Opposing2;
break;
}
// missing if (toCpy != NULL) check
while (*toCpy != EOS)
{
@ -2293,7 +2780,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
srcId += 2;
break;
case B_BUFF_SPECIES: // species name
GetSpeciesName(dst, T1_READ_16(&src[srcId + 1]));
StringCopy(dst, GetSpeciesName(T1_READ_16(&src[srcId + 1])));
srcId += 3;
break;
case B_BUFF_MON_NICK: // poke nick without prefix
@ -2309,7 +2796,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
srcId += 2;
break;
case B_BUFF_ABILITY: // ability names
StringAppend(dst, gAbilityNames[src[srcId + 1]]);
StringAppend(dst, gAbilitiesInfo[src[srcId + 1]].name);
srcId += 2;
break;
case B_BUFF_ITEM: // item name

File diff suppressed because it is too large Load Diff

View File

@ -72,6 +72,7 @@ static const u8 *GetTrainerCantBattleSpeech(void);
static EWRAM_DATA u16 sTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_B = 0;
static EWRAM_DATA u16 sTrainerObjectEventLocalId = 0;
static EWRAM_DATA u8 *sTrainerAIntroSpeech = NULL;
static EWRAM_DATA u8 *sTrainerADefeatSpeech = NULL;

File diff suppressed because it is too large Load Diff

View File

@ -75,7 +75,7 @@ void FreeBattleResources(void)
}
}
void AdjustFriendshipOnBattleFaint(u8 battlerId)
void AdjustFriendshipOnBattleFaint(u8 battler)
{
u8 opposingBattlerId;
@ -94,15 +94,15 @@ void AdjustFriendshipOnBattleFaint(u8 battlerId)
opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
}
if (gBattleMons[opposingBattlerId].level > gBattleMons[battlerId].level)
if (gBattleMons[opposingBattlerId].level > gBattleMons[battler].level)
{
if (gBattleMons[opposingBattlerId].level - gBattleMons[battlerId].level > 29)
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_LARGE);
if (gBattleMons[opposingBattlerId].level - gBattleMons[battler].level > 29)
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_LARGE);
else
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_SMALL);
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_SMALL);
}
else
{
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_SMALL);
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_SMALL);
}
}

View File

@ -284,22 +284,12 @@ const union AnimCmd *const gAnims_MonPic[] =
#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic}
#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic}
#include "data/pokemon_graphics/front_pic_coordinates.h"
#include "data/pokemon_graphics/front_pic_table.h"
#include "data/pokemon_graphics/back_pic_coordinates.h"
#include "data/pokemon_graphics/back_pic_table.h"
#include "data/pokemon_graphics/palette_table.h"
#include "data/pokemon_graphics/shiny_palette_table.h"
#include "data/trainer_graphics/front_pic_anims.h"
#include "data/trainer_graphics/front_pic_tables.h"
#include "data/trainer_graphics/back_pic_anims.h"
#include "data/trainer_graphics/back_pic_tables.h"
#include "data/pokemon_graphics/enemy_mon_elevation.h"
#include "data/trainer_parties.h"
#include "data/text/trainer_class_names.h"
#include "data/trainers.h"
#include "data/text/species_names.h"
#include "data/text/move_names.h"

2604
src/data/abilities.h Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

18118
src/data/moves_info.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,187 +0,0 @@
const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
{
[SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}},
[SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}},
[SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}},
[SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}},
[SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}},
[SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}},
[SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}},
[SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}},
[SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}},
[SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}},
[SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}},
[SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}},
[SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}},
[SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}},
[SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}},
[SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}},
[SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH}},
[SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA}},
[SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}},
[SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO}},
[SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}},
[SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}},
[SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}},
[SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}},
[SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT}},
[SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT}},
[SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM}},
[SPECIES_GLOOM] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME},
{EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}},
[SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT}},
[SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH}},
[SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO}},
[SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}},
[SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}},
[SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}},
[SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}},
[SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}},
[SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH},
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}},
[SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}},
[SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}},
[SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}},
[SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}},
[SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}},
[SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}},
[SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}},
[SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}},
[SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}},
[SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}},
[SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO},
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}},
[SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}},
[SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO}},
[SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG}},
[SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}},
[SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}},
[SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}},
[SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}},
[SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}},
[SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}},
[SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}},
[SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}},
[SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}},
[SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK}},
[SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}},
[SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}},
[SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}},
[SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}},
[SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}},
[SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}},
[SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}},
[SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}},
[SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}},
[SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON},
{EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON},
{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON},
{EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON},
{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}},
[SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}},
[SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}},
[SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}},
[SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}},
[SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}},
[SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}},
[SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}},
[SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}},
[SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION}},
[SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW}},
[SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR}},
[SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET}},
[SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL}},
[SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN}},
[SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS}},
[SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN}},
[SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}},
[SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}},
[SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}},
[SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}},
[SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}},
[SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}},
[SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}},
[SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}},
[SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}},
[SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}},
[SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}},
[SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE}},
[SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}},
[SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}},
[SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}},
[SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}},
[SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}},
[SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}},
[SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}},
[SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}},
[SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN},
{EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE},
{EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}},
[SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX}},
[SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ}},
[SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}},
[SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}},
[SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}},
[SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}},
[SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}},
[SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}},
[SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}},
[SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}},
[SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}},
[SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}},
[SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}},
[SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON},
{EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}},
[SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY}},
[SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX}},
[SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE}},
[SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}},
[SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF}},
[SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}},
[SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK},
{EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}},
[SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW}},
[SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM}},
[SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER}},
[SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN}},
[SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD}},
[SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}},
[SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL}},
[SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}},
[SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}},
[SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}},
[SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}},
[SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}},
[SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}},
[SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}},
[SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}},
[SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}},
[SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}},
[SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}},
[SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}},
[SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE}},
[SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}},
[SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}},
[SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}},
[SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}},
[SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}},
[SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}},
[SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}},
[SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING}},
[SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT}},
[SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}},
[SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}},
[SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL},
{EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}},
[SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}},
[SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}},
[SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}},
[SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}},
[SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}},
[SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}},
[SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR}},
[SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}},
[SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}},
[SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}},
[SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}},
};

File diff suppressed because it is too large Load Diff

View File

@ -1,415 +0,0 @@
// const u16 *const gLevelUpLearnsets[NUM_SPECIES] =
// {
// [SPECIES_NONE] = sBulbasaurLevelUpLearnset,
// [SPECIES_BULBASAUR] = sBulbasaurLevelUpLearnset,
// [SPECIES_IVYSAUR] = sIvysaurLevelUpLearnset,
// [SPECIES_VENUSAUR] = sVenusaurLevelUpLearnset,
// [SPECIES_CHARMANDER] = sCharmanderLevelUpLearnset,
// [SPECIES_CHARMELEON] = sCharmeleonLevelUpLearnset,
// [SPECIES_CHARIZARD] = sCharizardLevelUpLearnset,
// [SPECIES_SQUIRTLE] = sSquirtleLevelUpLearnset,
// [SPECIES_WARTORTLE] = sWartortleLevelUpLearnset,
// [SPECIES_BLASTOISE] = sBlastoiseLevelUpLearnset,
// [SPECIES_CATERPIE] = sCaterpieLevelUpLearnset,
// [SPECIES_METAPOD] = sMetapodLevelUpLearnset,
// [SPECIES_BUTTERFREE] = sButterfreeLevelUpLearnset,
// [SPECIES_WEEDLE] = sWeedleLevelUpLearnset,
// [SPECIES_KAKUNA] = sKakunaLevelUpLearnset,
// [SPECIES_BEEDRILL] = sBeedrillLevelUpLearnset,
// [SPECIES_PIDGEY] = sPidgeyLevelUpLearnset,
// [SPECIES_PIDGEOTTO] = sPidgeottoLevelUpLearnset,
// [SPECIES_PIDGEOT] = sPidgeotLevelUpLearnset,
// [SPECIES_RATTATA] = sRattataLevelUpLearnset,
// [SPECIES_RATICATE] = sRaticateLevelUpLearnset,
// [SPECIES_SPEAROW] = sSpearowLevelUpLearnset,
// [SPECIES_FEAROW] = sFearowLevelUpLearnset,
// [SPECIES_EKANS] = sEkansLevelUpLearnset,
// [SPECIES_ARBOK] = sArbokLevelUpLearnset,
// [SPECIES_PIKACHU] = sPikachuLevelUpLearnset,
// [SPECIES_RAICHU] = sRaichuLevelUpLearnset,
// [SPECIES_SANDSHREW] = sSandshrewLevelUpLearnset,
// [SPECIES_SANDSLASH] = sSandslashLevelUpLearnset,
// [SPECIES_NIDORAN_F] = sNidoranFLevelUpLearnset,
// [SPECIES_NIDORINA] = sNidorinaLevelUpLearnset,
// [SPECIES_NIDOQUEEN] = sNidoqueenLevelUpLearnset,
// [SPECIES_NIDORAN_M] = sNidoranMLevelUpLearnset,
// [SPECIES_NIDORINO] = sNidorinoLevelUpLearnset,
// [SPECIES_NIDOKING] = sNidokingLevelUpLearnset,
// [SPECIES_CLEFAIRY] = sClefairyLevelUpLearnset,
// [SPECIES_CLEFABLE] = sClefableLevelUpLearnset,
// [SPECIES_VULPIX] = sVulpixLevelUpLearnset,
// [SPECIES_NINETALES] = sNinetalesLevelUpLearnset,
// [SPECIES_JIGGLYPUFF] = sJigglypuffLevelUpLearnset,
// [SPECIES_WIGGLYTUFF] = sWigglytuffLevelUpLearnset,
// [SPECIES_ZUBAT] = sZubatLevelUpLearnset,
// [SPECIES_GOLBAT] = sGolbatLevelUpLearnset,
// [SPECIES_ODDISH] = sOddishLevelUpLearnset,
// [SPECIES_GLOOM] = sGloomLevelUpLearnset,
// [SPECIES_VILEPLUME] = sVileplumeLevelUpLearnset,
// [SPECIES_PARAS] = sParasLevelUpLearnset,
// [SPECIES_PARASECT] = sParasectLevelUpLearnset,
// [SPECIES_VENONAT] = sVenonatLevelUpLearnset,
// [SPECIES_VENOMOTH] = sVenomothLevelUpLearnset,
// [SPECIES_DIGLETT] = sDiglettLevelUpLearnset,
// [SPECIES_DUGTRIO] = sDugtrioLevelUpLearnset,
// [SPECIES_MEOWTH] = sMeowthLevelUpLearnset,
// [SPECIES_PERSIAN] = sPersianLevelUpLearnset,
// [SPECIES_PSYDUCK] = sPsyduckLevelUpLearnset,
// [SPECIES_GOLDUCK] = sGolduckLevelUpLearnset,
// [SPECIES_MANKEY] = sMankeyLevelUpLearnset,
// [SPECIES_PRIMEAPE] = sPrimeapeLevelUpLearnset,
// [SPECIES_GROWLITHE] = sGrowlitheLevelUpLearnset,
// [SPECIES_ARCANINE] = sArcanineLevelUpLearnset,
// [SPECIES_POLIWAG] = sPoliwagLevelUpLearnset,
// [SPECIES_POLIWHIRL] = sPoliwhirlLevelUpLearnset,
// [SPECIES_POLIWRATH] = sPoliwrathLevelUpLearnset,
// [SPECIES_ABRA] = sAbraLevelUpLearnset,
// [SPECIES_KADABRA] = sKadabraLevelUpLearnset,
// [SPECIES_ALAKAZAM] = sAlakazamLevelUpLearnset,
// [SPECIES_MACHOP] = sMachopLevelUpLearnset,
// [SPECIES_MACHOKE] = sMachokeLevelUpLearnset,
// [SPECIES_MACHAMP] = sMachampLevelUpLearnset,
// [SPECIES_BELLSPROUT] = sBellsproutLevelUpLearnset,
// [SPECIES_WEEPINBELL] = sWeepinbellLevelUpLearnset,
// [SPECIES_VICTREEBEL] = sVictreebelLevelUpLearnset,
// [SPECIES_TENTACOOL] = sTentacoolLevelUpLearnset,
// [SPECIES_TENTACRUEL] = sTentacruelLevelUpLearnset,
// [SPECIES_GEODUDE] = sGeodudeLevelUpLearnset,
// [SPECIES_GRAVELER] = sGravelerLevelUpLearnset,
// [SPECIES_GOLEM] = sGolemLevelUpLearnset,
// [SPECIES_PONYTA] = sPonytaLevelUpLearnset,
// [SPECIES_RAPIDASH] = sRapidashLevelUpLearnset,
// [SPECIES_SLOWPOKE] = sSlowpokeLevelUpLearnset,
// [SPECIES_SLOWBRO] = sSlowbroLevelUpLearnset,
// [SPECIES_MAGNEMITE] = sMagnemiteLevelUpLearnset,
// [SPECIES_MAGNETON] = sMagnetonLevelUpLearnset,
// [SPECIES_FARFETCHD] = sFarfetchdLevelUpLearnset,
// [SPECIES_DODUO] = sDoduoLevelUpLearnset,
// [SPECIES_DODRIO] = sDodrioLevelUpLearnset,
// [SPECIES_SEEL] = sSeelLevelUpLearnset,
// [SPECIES_DEWGONG] = sDewgongLevelUpLearnset,
// [SPECIES_GRIMER] = sGrimerLevelUpLearnset,
// [SPECIES_MUK] = sMukLevelUpLearnset,
// [SPECIES_SHELLDER] = sShellderLevelUpLearnset,
// [SPECIES_CLOYSTER] = sCloysterLevelUpLearnset,
// [SPECIES_GASTLY] = sGastlyLevelUpLearnset,
// [SPECIES_HAUNTER] = sHaunterLevelUpLearnset,
// [SPECIES_GENGAR] = sGengarLevelUpLearnset,
// [SPECIES_ONIX] = sOnixLevelUpLearnset,
// [SPECIES_DROWZEE] = sDrowzeeLevelUpLearnset,
// [SPECIES_HYPNO] = sHypnoLevelUpLearnset,
// [SPECIES_KRABBY] = sKrabbyLevelUpLearnset,
// [SPECIES_KINGLER] = sKinglerLevelUpLearnset,
// [SPECIES_VOLTORB] = sVoltorbLevelUpLearnset,
// [SPECIES_ELECTRODE] = sElectrodeLevelUpLearnset,
// [SPECIES_EXEGGCUTE] = sExeggcuteLevelUpLearnset,
// [SPECIES_EXEGGUTOR] = sExeggutorLevelUpLearnset,
// [SPECIES_CUBONE] = sCuboneLevelUpLearnset,
// [SPECIES_MAROWAK] = sMarowakLevelUpLearnset,
// [SPECIES_HITMONLEE] = sHitmonleeLevelUpLearnset,
// [SPECIES_HITMONCHAN] = sHitmonchanLevelUpLearnset,
// [SPECIES_LICKITUNG] = sLickitungLevelUpLearnset,
// [SPECIES_KOFFING] = sKoffingLevelUpLearnset,
// [SPECIES_WEEZING] = sWeezingLevelUpLearnset,
// [SPECIES_RHYHORN] = sRhyhornLevelUpLearnset,
// [SPECIES_RHYDON] = sRhydonLevelUpLearnset,
// [SPECIES_CHANSEY] = sChanseyLevelUpLearnset,
// [SPECIES_TANGELA] = sTangelaLevelUpLearnset,
// [SPECIES_KANGASKHAN] = sKangaskhanLevelUpLearnset,
// [SPECIES_HORSEA] = sHorseaLevelUpLearnset,
// [SPECIES_SEADRA] = sSeadraLevelUpLearnset,
// [SPECIES_GOLDEEN] = sGoldeenLevelUpLearnset,
// [SPECIES_SEAKING] = sSeakingLevelUpLearnset,
// [SPECIES_STARYU] = sStaryuLevelUpLearnset,
// [SPECIES_STARMIE] = sStarmieLevelUpLearnset,
// [SPECIES_MR_MIME] = sMrMimeLevelUpLearnset,
// [SPECIES_SCYTHER] = sScytherLevelUpLearnset,
// [SPECIES_JYNX] = sJynxLevelUpLearnset,
// [SPECIES_ELECTABUZZ] = sElectabuzzLevelUpLearnset,
// [SPECIES_MAGMAR] = sMagmarLevelUpLearnset,
// [SPECIES_PINSIR] = sPinsirLevelUpLearnset,
// [SPECIES_TAUROS] = sTaurosLevelUpLearnset,
// [SPECIES_MAGIKARP] = sMagikarpLevelUpLearnset,
// [SPECIES_GYARADOS] = sGyaradosLevelUpLearnset,
// [SPECIES_LAPRAS] = sLaprasLevelUpLearnset,
// [SPECIES_DITTO] = sDittoLevelUpLearnset,
// [SPECIES_EEVEE] = sEeveeLevelUpLearnset,
// [SPECIES_VAPOREON] = sVaporeonLevelUpLearnset,
// [SPECIES_JOLTEON] = sJolteonLevelUpLearnset,
// [SPECIES_FLAREON] = sFlareonLevelUpLearnset,
// [SPECIES_PORYGON] = sPorygonLevelUpLearnset,
// [SPECIES_OMANYTE] = sOmanyteLevelUpLearnset,
// [SPECIES_OMASTAR] = sOmastarLevelUpLearnset,
// [SPECIES_KABUTO] = sKabutoLevelUpLearnset,
// [SPECIES_KABUTOPS] = sKabutopsLevelUpLearnset,
// [SPECIES_AERODACTYL] = sAerodactylLevelUpLearnset,
// [SPECIES_SNORLAX] = sSnorlaxLevelUpLearnset,
// [SPECIES_ARTICUNO] = sArticunoLevelUpLearnset,
// [SPECIES_ZAPDOS] = sZapdosLevelUpLearnset,
// [SPECIES_MOLTRES] = sMoltresLevelUpLearnset,
// [SPECIES_DRATINI] = sDratiniLevelUpLearnset,
// [SPECIES_DRAGONAIR] = sDragonairLevelUpLearnset,
// [SPECIES_DRAGONITE] = sDragoniteLevelUpLearnset,
// [SPECIES_MEWTWO] = sMewtwoLevelUpLearnset,
// [SPECIES_MEW] = sMewLevelUpLearnset,
// [SPECIES_CHIKORITA] = sChikoritaLevelUpLearnset,
// [SPECIES_BAYLEEF] = sBayleefLevelUpLearnset,
// [SPECIES_MEGANIUM] = sMeganiumLevelUpLearnset,
// [SPECIES_CYNDAQUIL] = sCyndaquilLevelUpLearnset,
// [SPECIES_QUILAVA] = sQuilavaLevelUpLearnset,
// [SPECIES_TYPHLOSION] = sTyphlosionLevelUpLearnset,
// [SPECIES_TOTODILE] = sTotodileLevelUpLearnset,
// [SPECIES_CROCONAW] = sCroconawLevelUpLearnset,
// [SPECIES_FERALIGATR] = sFeraligatrLevelUpLearnset,
// [SPECIES_SENTRET] = sSentretLevelUpLearnset,
// [SPECIES_FURRET] = sFurretLevelUpLearnset,
// [SPECIES_HOOTHOOT] = sHoothootLevelUpLearnset,
// [SPECIES_NOCTOWL] = sNoctowlLevelUpLearnset,
// [SPECIES_LEDYBA] = sLedybaLevelUpLearnset,
// [SPECIES_LEDIAN] = sLedianLevelUpLearnset,
// [SPECIES_SPINARAK] = sSpinarakLevelUpLearnset,
// [SPECIES_ARIADOS] = sAriadosLevelUpLearnset,
// [SPECIES_CROBAT] = sCrobatLevelUpLearnset,
// [SPECIES_CHINCHOU] = sChinchouLevelUpLearnset,
// [SPECIES_LANTURN] = sLanturnLevelUpLearnset,
// [SPECIES_PICHU] = sPichuLevelUpLearnset,
// [SPECIES_CLEFFA] = sCleffaLevelUpLearnset,
// [SPECIES_IGGLYBUFF] = sIgglybuffLevelUpLearnset,
// [SPECIES_TOGEPI] = sTogepiLevelUpLearnset,
// [SPECIES_TOGETIC] = sTogeticLevelUpLearnset,
// [SPECIES_NATU] = sNatuLevelUpLearnset,
// [SPECIES_XATU] = sXatuLevelUpLearnset,
// [SPECIES_MAREEP] = sMareepLevelUpLearnset,
// [SPECIES_FLAAFFY] = sFlaaffyLevelUpLearnset,
// [SPECIES_AMPHAROS] = sAmpharosLevelUpLearnset,
// [SPECIES_BELLOSSOM] = sBellossomLevelUpLearnset,
// [SPECIES_MARILL] = sMarillLevelUpLearnset,
// [SPECIES_AZUMARILL] = sAzumarillLevelUpLearnset,
// [SPECIES_SUDOWOODO] = sSudowoodoLevelUpLearnset,
// [SPECIES_POLITOED] = sPolitoedLevelUpLearnset,
// [SPECIES_HOPPIP] = sHoppipLevelUpLearnset,
// [SPECIES_SKIPLOOM] = sSkiploomLevelUpLearnset,
// [SPECIES_JUMPLUFF] = sJumpluffLevelUpLearnset,
// [SPECIES_AIPOM] = sAipomLevelUpLearnset,
// [SPECIES_SUNKERN] = sSunkernLevelUpLearnset,
// [SPECIES_SUNFLORA] = sSunfloraLevelUpLearnset,
// [SPECIES_YANMA] = sYanmaLevelUpLearnset,
// [SPECIES_WOOPER] = sWooperLevelUpLearnset,
// [SPECIES_QUAGSIRE] = sQuagsireLevelUpLearnset,
// [SPECIES_ESPEON] = sEspeonLevelUpLearnset,
// [SPECIES_UMBREON] = sUmbreonLevelUpLearnset,
// [SPECIES_MURKROW] = sMurkrowLevelUpLearnset,
// [SPECIES_SLOWKING] = sSlowkingLevelUpLearnset,
// [SPECIES_MISDREAVUS] = sMisdreavusLevelUpLearnset,
// [SPECIES_UNOWN] = sUnownLevelUpLearnset,
// [SPECIES_WOBBUFFET] = sWobbuffetLevelUpLearnset,
// [SPECIES_GIRAFARIG] = sGirafarigLevelUpLearnset,
// [SPECIES_PINECO] = sPinecoLevelUpLearnset,
// [SPECIES_FORRETRESS] = sForretressLevelUpLearnset,
// [SPECIES_DUNSPARCE] = sDunsparceLevelUpLearnset,
// [SPECIES_GLIGAR] = sGligarLevelUpLearnset,
// [SPECIES_STEELIX] = sSteelixLevelUpLearnset,
// [SPECIES_SNUBBULL] = sSnubbullLevelUpLearnset,
// [SPECIES_GRANBULL] = sGranbullLevelUpLearnset,
// [SPECIES_QWILFISH] = sQwilfishLevelUpLearnset,
// [SPECIES_SCIZOR] = sScizorLevelUpLearnset,
// [SPECIES_SHUCKLE] = sShuckleLevelUpLearnset,
// [SPECIES_HERACROSS] = sHeracrossLevelUpLearnset,
// [SPECIES_SNEASEL] = sSneaselLevelUpLearnset,
// [SPECIES_TEDDIURSA] = sTeddiursaLevelUpLearnset,
// [SPECIES_URSARING] = sUrsaringLevelUpLearnset,
// [SPECIES_SLUGMA] = sSlugmaLevelUpLearnset,
// [SPECIES_MAGCARGO] = sMagcargoLevelUpLearnset,
// [SPECIES_SWINUB] = sSwinubLevelUpLearnset,
// [SPECIES_PILOSWINE] = sPiloswineLevelUpLearnset,
// [SPECIES_CORSOLA] = sCorsolaLevelUpLearnset,
// [SPECIES_REMORAID] = sRemoraidLevelUpLearnset,
// [SPECIES_OCTILLERY] = sOctilleryLevelUpLearnset,
// [SPECIES_DELIBIRD] = sDelibirdLevelUpLearnset,
// [SPECIES_MANTINE] = sMantineLevelUpLearnset,
// [SPECIES_SKARMORY] = sSkarmoryLevelUpLearnset,
// [SPECIES_HOUNDOUR] = sHoundourLevelUpLearnset,
// [SPECIES_HOUNDOOM] = sHoundoomLevelUpLearnset,
// [SPECIES_KINGDRA] = sKingdraLevelUpLearnset,
// [SPECIES_PHANPY] = sPhanpyLevelUpLearnset,
// [SPECIES_DONPHAN] = sDonphanLevelUpLearnset,
// [SPECIES_PORYGON2] = sPorygon2LevelUpLearnset,
// [SPECIES_STANTLER] = sStantlerLevelUpLearnset,
// [SPECIES_SMEARGLE] = sSmeargleLevelUpLearnset,
// [SPECIES_TYROGUE] = sTyrogueLevelUpLearnset,
// [SPECIES_HITMONTOP] = sHitmontopLevelUpLearnset,
// [SPECIES_SMOOCHUM] = sSmoochumLevelUpLearnset,
// [SPECIES_ELEKID] = sElekidLevelUpLearnset,
// [SPECIES_MAGBY] = sMagbyLevelUpLearnset,
// [SPECIES_MILTANK] = sMiltankLevelUpLearnset,
// [SPECIES_BLISSEY] = sBlisseyLevelUpLearnset,
// [SPECIES_RAIKOU] = sRaikouLevelUpLearnset,
// [SPECIES_ENTEI] = sEnteiLevelUpLearnset,
// [SPECIES_SUICUNE] = sSuicuneLevelUpLearnset,
// [SPECIES_LARVITAR] = sLarvitarLevelUpLearnset,
// [SPECIES_PUPITAR] = sPupitarLevelUpLearnset,
// [SPECIES_TYRANITAR] = sTyranitarLevelUpLearnset,
// [SPECIES_LUGIA] = sLugiaLevelUpLearnset,
// [SPECIES_HO_OH] = sHoOhLevelUpLearnset,
// [SPECIES_CELEBI] = sCelebiLevelUpLearnset,
// [SPECIES_OLD_UNOWN_B] = sSpecies252LevelUpLearnset,
// [SPECIES_OLD_UNOWN_C] = sSpecies253LevelUpLearnset,
// [SPECIES_OLD_UNOWN_D] = sSpecies254LevelUpLearnset,
// [SPECIES_OLD_UNOWN_E] = sSpecies255LevelUpLearnset,
// [SPECIES_OLD_UNOWN_F] = sSpecies256LevelUpLearnset,
// [SPECIES_OLD_UNOWN_G] = sSpecies257LevelUpLearnset,
// [SPECIES_OLD_UNOWN_H] = sSpecies258LevelUpLearnset,
// [SPECIES_OLD_UNOWN_I] = sSpecies259LevelUpLearnset,
// [SPECIES_OLD_UNOWN_J] = sSpecies260LevelUpLearnset,
// [SPECIES_OLD_UNOWN_K] = sSpecies261LevelUpLearnset,
// [SPECIES_OLD_UNOWN_L] = sSpecies262LevelUpLearnset,
// [SPECIES_OLD_UNOWN_M] = sSpecies263LevelUpLearnset,
// [SPECIES_OLD_UNOWN_N] = sSpecies264LevelUpLearnset,
// [SPECIES_OLD_UNOWN_O] = sSpecies265LevelUpLearnset,
// [SPECIES_OLD_UNOWN_P] = sSpecies266LevelUpLearnset,
// [SPECIES_OLD_UNOWN_Q] = sSpecies267LevelUpLearnset,
// [SPECIES_OLD_UNOWN_R] = sSpecies268LevelUpLearnset,
// [SPECIES_OLD_UNOWN_S] = sSpecies269LevelUpLearnset,
// [SPECIES_OLD_UNOWN_T] = sSpecies270LevelUpLearnset,
// [SPECIES_OLD_UNOWN_U] = sSpecies271LevelUpLearnset,
// [SPECIES_OLD_UNOWN_V] = sSpecies272LevelUpLearnset,
// [SPECIES_OLD_UNOWN_W] = sSpecies273LevelUpLearnset,
// [SPECIES_OLD_UNOWN_X] = sSpecies274LevelUpLearnset,
// [SPECIES_OLD_UNOWN_Y] = sSpecies275LevelUpLearnset,
// [SPECIES_OLD_UNOWN_Z] = sSpecies276LevelUpLearnset,
// [SPECIES_TREECKO] = sTreeckoLevelUpLearnset,
// [SPECIES_GROVYLE] = sGrovyleLevelUpLearnset,
// [SPECIES_SCEPTILE] = sSceptileLevelUpLearnset,
// [SPECIES_TORCHIC] = sTorchicLevelUpLearnset,
// [SPECIES_COMBUSKEN] = sCombuskenLevelUpLearnset,
// [SPECIES_BLAZIKEN] = sBlazikenLevelUpLearnset,
// [SPECIES_MUDKIP] = sMudkipLevelUpLearnset,
// [SPECIES_MARSHTOMP] = sMarshtompLevelUpLearnset,
// [SPECIES_SWAMPERT] = sSwampertLevelUpLearnset,
// [SPECIES_POOCHYENA] = sPoochyenaLevelUpLearnset,
// [SPECIES_MIGHTYENA] = sMightyenaLevelUpLearnset,
// [SPECIES_ZIGZAGOON] = sZigzagoonLevelUpLearnset,
// [SPECIES_LINOONE] = sLinooneLevelUpLearnset,
// [SPECIES_WURMPLE] = sWurmpleLevelUpLearnset,
// [SPECIES_SILCOON] = sSilcoonLevelUpLearnset,
// [SPECIES_BEAUTIFLY] = sBeautiflyLevelUpLearnset,
// [SPECIES_CASCOON] = sCascoonLevelUpLearnset,
// [SPECIES_DUSTOX] = sDustoxLevelUpLearnset,
// [SPECIES_LOTAD] = sLotadLevelUpLearnset,
// [SPECIES_LOMBRE] = sLombreLevelUpLearnset,
// [SPECIES_LUDICOLO] = sLudicoloLevelUpLearnset,
// [SPECIES_SEEDOT] = sSeedotLevelUpLearnset,
// [SPECIES_NUZLEAF] = sNuzleafLevelUpLearnset,
// [SPECIES_SHIFTRY] = sShiftryLevelUpLearnset,
// [SPECIES_NINCADA] = sNincadaLevelUpLearnset,
// [SPECIES_NINJASK] = sNinjaskLevelUpLearnset,
// [SPECIES_SHEDINJA] = sShedinjaLevelUpLearnset,
// [SPECIES_TAILLOW] = sTaillowLevelUpLearnset,
// [SPECIES_SWELLOW] = sSwellowLevelUpLearnset,
// [SPECIES_SHROOMISH] = sShroomishLevelUpLearnset,
// [SPECIES_BRELOOM] = sBreloomLevelUpLearnset,
// [SPECIES_SPINDA] = sSpindaLevelUpLearnset,
// [SPECIES_WINGULL] = sWingullLevelUpLearnset,
// [SPECIES_PELIPPER] = sPelipperLevelUpLearnset,
// [SPECIES_SURSKIT] = sSurskitLevelUpLearnset,
// [SPECIES_MASQUERAIN] = sMasquerainLevelUpLearnset,
// [SPECIES_WAILMER] = sWailmerLevelUpLearnset,
// [SPECIES_WAILORD] = sWailordLevelUpLearnset,
// [SPECIES_SKITTY] = sSkittyLevelUpLearnset,
// [SPECIES_DELCATTY] = sDelcattyLevelUpLearnset,
// [SPECIES_KECLEON] = sKecleonLevelUpLearnset,
// [SPECIES_BALTOY] = sBaltoyLevelUpLearnset,
// [SPECIES_CLAYDOL] = sClaydolLevelUpLearnset,
// [SPECIES_NOSEPASS] = sNosepassLevelUpLearnset,
// [SPECIES_TORKOAL] = sTorkoalLevelUpLearnset,
// [SPECIES_SABLEYE] = sSableyeLevelUpLearnset,
// [SPECIES_BARBOACH] = sBarboachLevelUpLearnset,
// [SPECIES_WHISCASH] = sWhiscashLevelUpLearnset,
// [SPECIES_LUVDISC] = sLuvdiscLevelUpLearnset,
// [SPECIES_CORPHISH] = sCorphishLevelUpLearnset,
// [SPECIES_CRAWDAUNT] = sCrawdauntLevelUpLearnset,
// [SPECIES_FEEBAS] = sFeebasLevelUpLearnset,
// [SPECIES_MILOTIC] = sMiloticLevelUpLearnset,
// [SPECIES_CARVANHA] = sCarvanhaLevelUpLearnset,
// [SPECIES_SHARPEDO] = sSharpedoLevelUpLearnset,
// [SPECIES_TRAPINCH] = sTrapinchLevelUpLearnset,
// [SPECIES_VIBRAVA] = sVibravaLevelUpLearnset,
// [SPECIES_FLYGON] = sFlygonLevelUpLearnset,
// [SPECIES_MAKUHITA] = sMakuhitaLevelUpLearnset,
// [SPECIES_HARIYAMA] = sHariyamaLevelUpLearnset,
// [SPECIES_ELECTRIKE] = sElectrikeLevelUpLearnset,
// [SPECIES_MANECTRIC] = sManectricLevelUpLearnset,
// [SPECIES_NUMEL] = sNumelLevelUpLearnset,
// [SPECIES_CAMERUPT] = sCameruptLevelUpLearnset,
// [SPECIES_SPHEAL] = sSphealLevelUpLearnset,
// [SPECIES_SEALEO] = sSealeoLevelUpLearnset,
// [SPECIES_WALREIN] = sWalreinLevelUpLearnset,
// [SPECIES_CACNEA] = sCacneaLevelUpLearnset,
// [SPECIES_CACTURNE] = sCacturneLevelUpLearnset,
// [SPECIES_SNORUNT] = sSnoruntLevelUpLearnset,
// [SPECIES_GLALIE] = sGlalieLevelUpLearnset,
// [SPECIES_LUNATONE] = sLunatoneLevelUpLearnset,
// [SPECIES_SOLROCK] = sSolrockLevelUpLearnset,
// [SPECIES_AZURILL] = sAzurillLevelUpLearnset,
// [SPECIES_SPOINK] = sSpoinkLevelUpLearnset,
// [SPECIES_GRUMPIG] = sGrumpigLevelUpLearnset,
// [SPECIES_PLUSLE] = sPlusleLevelUpLearnset,
// [SPECIES_MINUN] = sMinunLevelUpLearnset,
// [SPECIES_MAWILE] = sMawileLevelUpLearnset,
// [SPECIES_MEDITITE] = sMedititeLevelUpLearnset,
// [SPECIES_MEDICHAM] = sMedichamLevelUpLearnset,
// [SPECIES_SWABLU] = sSwabluLevelUpLearnset,
// [SPECIES_ALTARIA] = sAltariaLevelUpLearnset,
// [SPECIES_WYNAUT] = sWynautLevelUpLearnset,
// [SPECIES_DUSKULL] = sDuskullLevelUpLearnset,
// [SPECIES_DUSCLOPS] = sDusclopsLevelUpLearnset,
// [SPECIES_ROSELIA] = sRoseliaLevelUpLearnset,
// [SPECIES_SLAKOTH] = sSlakothLevelUpLearnset,
// [SPECIES_VIGOROTH] = sVigorothLevelUpLearnset,
// [SPECIES_SLAKING] = sSlakingLevelUpLearnset,
// [SPECIES_GULPIN] = sGulpinLevelUpLearnset,
// [SPECIES_SWALOT] = sSwalotLevelUpLearnset,
// [SPECIES_TROPIUS] = sTropiusLevelUpLearnset,
// [SPECIES_WHISMUR] = sWhismurLevelUpLearnset,
// [SPECIES_LOUDRED] = sLoudredLevelUpLearnset,
// [SPECIES_EXPLOUD] = sExploudLevelUpLearnset,
// [SPECIES_CLAMPERL] = sClamperlLevelUpLearnset,
// [SPECIES_HUNTAIL] = sHuntailLevelUpLearnset,
// [SPECIES_GOREBYSS] = sGorebyssLevelUpLearnset,
// [SPECIES_ABSOL] = sAbsolLevelUpLearnset,
// [SPECIES_SHUPPET] = sShuppetLevelUpLearnset,
// [SPECIES_BANETTE] = sBanetteLevelUpLearnset,
// [SPECIES_SEVIPER] = sSeviperLevelUpLearnset,
// [SPECIES_ZANGOOSE] = sZangooseLevelUpLearnset,
// [SPECIES_RELICANTH] = sRelicanthLevelUpLearnset,
// [SPECIES_ARON] = sAronLevelUpLearnset,
// [SPECIES_LAIRON] = sLaironLevelUpLearnset,
// [SPECIES_AGGRON] = sAggronLevelUpLearnset,
// [SPECIES_CASTFORM] = sCastformLevelUpLearnset,
// [SPECIES_VOLBEAT] = sVolbeatLevelUpLearnset,
// [SPECIES_ILLUMISE] = sIllumiseLevelUpLearnset,
// [SPECIES_LILEEP] = sLileepLevelUpLearnset,
// [SPECIES_CRADILY] = sCradilyLevelUpLearnset,
// [SPECIES_ANORITH] = sAnorithLevelUpLearnset,
// [SPECIES_ARMALDO] = sArmaldoLevelUpLearnset,
// [SPECIES_RALTS] = sRaltsLevelUpLearnset,
// [SPECIES_KIRLIA] = sKirliaLevelUpLearnset,
// [SPECIES_GARDEVOIR] = sGardevoirLevelUpLearnset,
// [SPECIES_BAGON] = sBagonLevelUpLearnset,
// [SPECIES_SHELGON] = sShelgonLevelUpLearnset,
// [SPECIES_SALAMENCE] = sSalamenceLevelUpLearnset,
// [SPECIES_BELDUM] = sBeldumLevelUpLearnset,
// [SPECIES_METANG] = sMetangLevelUpLearnset,
// [SPECIES_METAGROSS] = sMetagrossLevelUpLearnset,
// [SPECIES_REGIROCK] = sRegirockLevelUpLearnset,
// [SPECIES_REGICE] = sRegiceLevelUpLearnset,
// [SPECIES_REGISTEEL] = sRegisteelLevelUpLearnset,
// [SPECIES_KYOGRE] = sKyogreLevelUpLearnset,
// [SPECIES_GROUDON] = sGroudonLevelUpLearnset,
// [SPECIES_RAYQUAZA] = sRayquazaLevelUpLearnset,
// [SPECIES_LATIAS] = sLatiasLevelUpLearnset,
// [SPECIES_LATIOS] = sLatiosLevelUpLearnset,
// [SPECIES_JIRACHI] = sJirachiLevelUpLearnset,
// [SPECIES_DEOXYS] = sDeoxysLevelUpLearnset,
// [SPECIES_CHIMECHO] = sChimechoLevelUpLearnset,
// };

File diff suppressed because it is too large Load Diff

View File

@ -918,7 +918,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] =
ICON(Crabrawler, 2),
.footprint = gMonFootprint_Crabrawler,
LEARNSETS(Crabrawler),
.evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE},
.evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAPSEC_SEAFOAM_ISLANDS, SPECIES_CRABOMINABLE},
{EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}),
},

File diff suppressed because it is too large Load Diff

View File

@ -1,443 +0,0 @@
// const struct CompressedSpriteSheet gMonBackPicTable[] =
// {
// SPECIES_SPRITE(NONE, gMonBackPic_CircledQuestionMark),
// SPECIES_SPRITE(BULBASAUR, gMonBackPic_Bulbasaur),
// SPECIES_SPRITE(IVYSAUR, gMonBackPic_Ivysaur),
// SPECIES_SPRITE(VENUSAUR, gMonBackPic_Venusaur),
// SPECIES_SPRITE(CHARMANDER, gMonBackPic_Charmander),
// SPECIES_SPRITE(CHARMELEON, gMonBackPic_Charmeleon),
// SPECIES_SPRITE(CHARIZARD, gMonBackPic_Charizard),
// SPECIES_SPRITE(SQUIRTLE, gMonBackPic_Squirtle),
// SPECIES_SPRITE(WARTORTLE, gMonBackPic_Wartortle),
// SPECIES_SPRITE(BLASTOISE, gMonBackPic_Blastoise),
// SPECIES_SPRITE(CATERPIE, gMonBackPic_Caterpie),
// SPECIES_SPRITE(METAPOD, gMonBackPic_Metapod),
// SPECIES_SPRITE(BUTTERFREE, gMonBackPic_Butterfree),
// SPECIES_SPRITE(WEEDLE, gMonBackPic_Weedle),
// SPECIES_SPRITE(KAKUNA, gMonBackPic_Kakuna),
// SPECIES_SPRITE(BEEDRILL, gMonBackPic_Beedrill),
// SPECIES_SPRITE(PIDGEY, gMonBackPic_Pidgey),
// SPECIES_SPRITE(PIDGEOTTO, gMonBackPic_Pidgeotto),
// SPECIES_SPRITE(PIDGEOT, gMonBackPic_Pidgeot),
// SPECIES_SPRITE(RATTATA, gMonBackPic_Rattata),
// SPECIES_SPRITE(RATICATE, gMonBackPic_Raticate),
// SPECIES_SPRITE(SPEAROW, gMonBackPic_Spearow),
// SPECIES_SPRITE(FEAROW, gMonBackPic_Fearow),
// SPECIES_SPRITE(EKANS, gMonBackPic_Ekans),
// SPECIES_SPRITE(ARBOK, gMonBackPic_Arbok),
// SPECIES_SPRITE(PIKACHU, gMonBackPic_Pikachu),
// SPECIES_SPRITE(RAICHU, gMonBackPic_Raichu),
// SPECIES_SPRITE(SANDSHREW, gMonBackPic_Sandshrew),
// SPECIES_SPRITE(SANDSLASH, gMonBackPic_Sandslash),
// SPECIES_SPRITE(NIDORAN_F, gMonBackPic_NidoranF),
// SPECIES_SPRITE(NIDORINA, gMonBackPic_Nidorina),
// SPECIES_SPRITE(NIDOQUEEN, gMonBackPic_Nidoqueen),
// SPECIES_SPRITE(NIDORAN_M, gMonBackPic_NidoranM),
// SPECIES_SPRITE(NIDORINO, gMonBackPic_Nidorino),
// SPECIES_SPRITE(NIDOKING, gMonBackPic_Nidoking),
// SPECIES_SPRITE(CLEFAIRY, gMonBackPic_Clefairy),
// SPECIES_SPRITE(CLEFABLE, gMonBackPic_Clefable),
// SPECIES_SPRITE(VULPIX, gMonBackPic_Vulpix),
// SPECIES_SPRITE(NINETALES, gMonBackPic_Ninetales),
// SPECIES_SPRITE(JIGGLYPUFF, gMonBackPic_Jigglypuff),
// SPECIES_SPRITE(WIGGLYTUFF, gMonBackPic_Wigglytuff),
// SPECIES_SPRITE(ZUBAT, gMonBackPic_Zubat),
// SPECIES_SPRITE(GOLBAT, gMonBackPic_Golbat),
// SPECIES_SPRITE(ODDISH, gMonBackPic_Oddish),
// SPECIES_SPRITE(GLOOM, gMonBackPic_Gloom),
// SPECIES_SPRITE(VILEPLUME, gMonBackPic_Vileplume),
// SPECIES_SPRITE(PARAS, gMonBackPic_Paras),
// SPECIES_SPRITE(PARASECT, gMonBackPic_Parasect),
// SPECIES_SPRITE(VENONAT, gMonBackPic_Venonat),
// SPECIES_SPRITE(VENOMOTH, gMonBackPic_Venomoth),
// SPECIES_SPRITE(DIGLETT, gMonBackPic_Diglett),
// SPECIES_SPRITE(DUGTRIO, gMonBackPic_Dugtrio),
// SPECIES_SPRITE(MEOWTH, gMonBackPic_Meowth),
// SPECIES_SPRITE(PERSIAN, gMonBackPic_Persian),
// SPECIES_SPRITE(PSYDUCK, gMonBackPic_Psyduck),
// SPECIES_SPRITE(GOLDUCK, gMonBackPic_Golduck),
// SPECIES_SPRITE(MANKEY, gMonBackPic_Mankey),
// SPECIES_SPRITE(PRIMEAPE, gMonBackPic_Primeape),
// SPECIES_SPRITE(GROWLITHE, gMonBackPic_Growlithe),
// SPECIES_SPRITE(ARCANINE, gMonBackPic_Arcanine),
// SPECIES_SPRITE(POLIWAG, gMonBackPic_Poliwag),
// SPECIES_SPRITE(POLIWHIRL, gMonBackPic_Poliwhirl),
// SPECIES_SPRITE(POLIWRATH, gMonBackPic_Poliwrath),
// SPECIES_SPRITE(ABRA, gMonBackPic_Abra),
// SPECIES_SPRITE(KADABRA, gMonBackPic_Kadabra),
// SPECIES_SPRITE(ALAKAZAM, gMonBackPic_Alakazam),
// SPECIES_SPRITE(MACHOP, gMonBackPic_Machop),
// SPECIES_SPRITE(MACHOKE, gMonBackPic_Machoke),
// SPECIES_SPRITE(MACHAMP, gMonBackPic_Machamp),
// SPECIES_SPRITE(BELLSPROUT, gMonBackPic_Bellsprout),
// SPECIES_SPRITE(WEEPINBELL, gMonBackPic_Weepinbell),
// SPECIES_SPRITE(VICTREEBEL, gMonBackPic_Victreebel),
// SPECIES_SPRITE(TENTACOOL, gMonBackPic_Tentacool),
// SPECIES_SPRITE(TENTACRUEL, gMonBackPic_Tentacruel),
// SPECIES_SPRITE(GEODUDE, gMonBackPic_Geodude),
// SPECIES_SPRITE(GRAVELER, gMonBackPic_Graveler),
// SPECIES_SPRITE(GOLEM, gMonBackPic_Golem),
// SPECIES_SPRITE(PONYTA, gMonBackPic_Ponyta),
// SPECIES_SPRITE(RAPIDASH, gMonBackPic_Rapidash),
// SPECIES_SPRITE(SLOWPOKE, gMonBackPic_Slowpoke),
// SPECIES_SPRITE(SLOWBRO, gMonBackPic_Slowbro),
// SPECIES_SPRITE(MAGNEMITE, gMonBackPic_Magnemite),
// SPECIES_SPRITE(MAGNETON, gMonBackPic_Magneton),
// SPECIES_SPRITE(FARFETCHD, gMonBackPic_Farfetchd),
// SPECIES_SPRITE(DODUO, gMonBackPic_Doduo),
// SPECIES_SPRITE(DODRIO, gMonBackPic_Dodrio),
// SPECIES_SPRITE(SEEL, gMonBackPic_Seel),
// SPECIES_SPRITE(DEWGONG, gMonBackPic_Dewgong),
// SPECIES_SPRITE(GRIMER, gMonBackPic_Grimer),
// SPECIES_SPRITE(MUK, gMonBackPic_Muk),
// SPECIES_SPRITE(SHELLDER, gMonBackPic_Shellder),
// SPECIES_SPRITE(CLOYSTER, gMonBackPic_Cloyster),
// SPECIES_SPRITE(GASTLY, gMonBackPic_Gastly),
// SPECIES_SPRITE(HAUNTER, gMonBackPic_Haunter),
// SPECIES_SPRITE(GENGAR, gMonBackPic_Gengar),
// SPECIES_SPRITE(ONIX, gMonBackPic_Onix),
// SPECIES_SPRITE(DROWZEE, gMonBackPic_Drowzee),
// SPECIES_SPRITE(HYPNO, gMonBackPic_Hypno),
// SPECIES_SPRITE(KRABBY, gMonBackPic_Krabby),
// SPECIES_SPRITE(KINGLER, gMonBackPic_Kingler),
// SPECIES_SPRITE(VOLTORB, gMonBackPic_Voltorb),
// SPECIES_SPRITE(ELECTRODE, gMonBackPic_Electrode),
// SPECIES_SPRITE(EXEGGCUTE, gMonBackPic_Exeggcute),
// SPECIES_SPRITE(EXEGGUTOR, gMonBackPic_Exeggutor),
// SPECIES_SPRITE(CUBONE, gMonBackPic_Cubone),
// SPECIES_SPRITE(MAROWAK, gMonBackPic_Marowak),
// SPECIES_SPRITE(HITMONLEE, gMonBackPic_Hitmonlee),
// SPECIES_SPRITE(HITMONCHAN, gMonBackPic_Hitmonchan),
// SPECIES_SPRITE(LICKITUNG, gMonBackPic_Lickitung),
// SPECIES_SPRITE(KOFFING, gMonBackPic_Koffing),
// SPECIES_SPRITE(WEEZING, gMonBackPic_Weezing),
// SPECIES_SPRITE(RHYHORN, gMonBackPic_Rhyhorn),
// SPECIES_SPRITE(RHYDON, gMonBackPic_Rhydon),
// SPECIES_SPRITE(CHANSEY, gMonBackPic_Chansey),
// SPECIES_SPRITE(TANGELA, gMonBackPic_Tangela),
// SPECIES_SPRITE(KANGASKHAN, gMonBackPic_Kangaskhan),
// SPECIES_SPRITE(HORSEA, gMonBackPic_Horsea),
// SPECIES_SPRITE(SEADRA, gMonBackPic_Seadra),
// SPECIES_SPRITE(GOLDEEN, gMonBackPic_Goldeen),
// SPECIES_SPRITE(SEAKING, gMonBackPic_Seaking),
// SPECIES_SPRITE(STARYU, gMonBackPic_Staryu),
// SPECIES_SPRITE(STARMIE, gMonBackPic_Starmie),
// SPECIES_SPRITE(MR_MIME, gMonBackPic_Mrmime),
// SPECIES_SPRITE(SCYTHER, gMonBackPic_Scyther),
// SPECIES_SPRITE(JYNX, gMonBackPic_Jynx),
// SPECIES_SPRITE(ELECTABUZZ, gMonBackPic_Electabuzz),
// SPECIES_SPRITE(MAGMAR, gMonBackPic_Magmar),
// SPECIES_SPRITE(PINSIR, gMonBackPic_Pinsir),
// SPECIES_SPRITE(TAUROS, gMonBackPic_Tauros),
// SPECIES_SPRITE(MAGIKARP, gMonBackPic_Magikarp),
// SPECIES_SPRITE(GYARADOS, gMonBackPic_Gyarados),
// SPECIES_SPRITE(LAPRAS, gMonBackPic_Lapras),
// SPECIES_SPRITE(DITTO, gMonBackPic_Ditto),
// SPECIES_SPRITE(EEVEE, gMonBackPic_Eevee),
// SPECIES_SPRITE(VAPOREON, gMonBackPic_Vaporeon),
// SPECIES_SPRITE(JOLTEON, gMonBackPic_Jolteon),
// SPECIES_SPRITE(FLAREON, gMonBackPic_Flareon),
// SPECIES_SPRITE(PORYGON, gMonBackPic_Porygon),
// SPECIES_SPRITE(OMANYTE, gMonBackPic_Omanyte),
// SPECIES_SPRITE(OMASTAR, gMonBackPic_Omastar),
// SPECIES_SPRITE(KABUTO, gMonBackPic_Kabuto),
// SPECIES_SPRITE(KABUTOPS, gMonBackPic_Kabutops),
// SPECIES_SPRITE(AERODACTYL, gMonBackPic_Aerodactyl),
// SPECIES_SPRITE(SNORLAX, gMonBackPic_Snorlax),
// SPECIES_SPRITE(ARTICUNO, gMonBackPic_Articuno),
// SPECIES_SPRITE(ZAPDOS, gMonBackPic_Zapdos),
// SPECIES_SPRITE(MOLTRES, gMonBackPic_Moltres),
// SPECIES_SPRITE(DRATINI, gMonBackPic_Dratini),
// SPECIES_SPRITE(DRAGONAIR, gMonBackPic_Dragonair),
// SPECIES_SPRITE(DRAGONITE, gMonBackPic_Dragonite),
// SPECIES_SPRITE(MEWTWO, gMonBackPic_Mewtwo),
// SPECIES_SPRITE(MEW, gMonBackPic_Mew),
// SPECIES_SPRITE(CHIKORITA, gMonBackPic_Chikorita),
// SPECIES_SPRITE(BAYLEEF, gMonBackPic_Bayleef),
// SPECIES_SPRITE(MEGANIUM, gMonBackPic_Meganium),
// SPECIES_SPRITE(CYNDAQUIL, gMonBackPic_Cyndaquil),
// SPECIES_SPRITE(QUILAVA, gMonBackPic_Quilava),
// SPECIES_SPRITE(TYPHLOSION, gMonBackPic_Typhlosion),
// SPECIES_SPRITE(TOTODILE, gMonBackPic_Totodile),
// SPECIES_SPRITE(CROCONAW, gMonBackPic_Croconaw),
// SPECIES_SPRITE(FERALIGATR, gMonBackPic_Feraligatr),
// SPECIES_SPRITE(SENTRET, gMonBackPic_Sentret),
// SPECIES_SPRITE(FURRET, gMonBackPic_Furret),
// SPECIES_SPRITE(HOOTHOOT, gMonBackPic_Hoothoot),
// SPECIES_SPRITE(NOCTOWL, gMonBackPic_Noctowl),
// SPECIES_SPRITE(LEDYBA, gMonBackPic_Ledyba),
// SPECIES_SPRITE(LEDIAN, gMonBackPic_Ledian),
// SPECIES_SPRITE(SPINARAK, gMonBackPic_Spinarak),
// SPECIES_SPRITE(ARIADOS, gMonBackPic_Ariados),
// SPECIES_SPRITE(CROBAT, gMonBackPic_Crobat),
// SPECIES_SPRITE(CHINCHOU, gMonBackPic_Chinchou),
// SPECIES_SPRITE(LANTURN, gMonBackPic_Lanturn),
// SPECIES_SPRITE(PICHU, gMonBackPic_Pichu),
// SPECIES_SPRITE(CLEFFA, gMonBackPic_Cleffa),
// SPECIES_SPRITE(IGGLYBUFF, gMonBackPic_Igglybuff),
// SPECIES_SPRITE(TOGEPI, gMonBackPic_Togepi),
// SPECIES_SPRITE(TOGETIC, gMonBackPic_Togetic),
// SPECIES_SPRITE(NATU, gMonBackPic_Natu),
// SPECIES_SPRITE(XATU, gMonBackPic_Xatu),
// SPECIES_SPRITE(MAREEP, gMonBackPic_Mareep),
// SPECIES_SPRITE(FLAAFFY, gMonBackPic_Flaaffy),
// SPECIES_SPRITE(AMPHAROS, gMonBackPic_Ampharos),
// SPECIES_SPRITE(BELLOSSOM, gMonBackPic_Bellossom),
// SPECIES_SPRITE(MARILL, gMonBackPic_Marill),
// SPECIES_SPRITE(AZUMARILL, gMonBackPic_Azumarill),
// SPECIES_SPRITE(SUDOWOODO, gMonBackPic_Sudowoodo),
// SPECIES_SPRITE(POLITOED, gMonBackPic_Politoed),
// SPECIES_SPRITE(HOPPIP, gMonBackPic_Hoppip),
// SPECIES_SPRITE(SKIPLOOM, gMonBackPic_Skiploom),
// SPECIES_SPRITE(JUMPLUFF, gMonBackPic_Jumpluff),
// SPECIES_SPRITE(AIPOM, gMonBackPic_Aipom),
// SPECIES_SPRITE(SUNKERN, gMonBackPic_Sunkern),
// SPECIES_SPRITE(SUNFLORA, gMonBackPic_Sunflora),
// SPECIES_SPRITE(YANMA, gMonBackPic_Yanma),
// SPECIES_SPRITE(WOOPER, gMonBackPic_Wooper),
// SPECIES_SPRITE(QUAGSIRE, gMonBackPic_Quagsire),
// SPECIES_SPRITE(ESPEON, gMonBackPic_Espeon),
// SPECIES_SPRITE(UMBREON, gMonBackPic_Umbreon),
// SPECIES_SPRITE(MURKROW, gMonBackPic_Murkrow),
// SPECIES_SPRITE(SLOWKING, gMonBackPic_Slowking),
// SPECIES_SPRITE(MISDREAVUS, gMonBackPic_Misdreavus),
// SPECIES_SPRITE(UNOWN, gMonBackPic_UnownA),
// SPECIES_SPRITE(WOBBUFFET, gMonBackPic_Wobbuffet),
// SPECIES_SPRITE(GIRAFARIG, gMonBackPic_Girafarig),
// SPECIES_SPRITE(PINECO, gMonBackPic_Pineco),
// SPECIES_SPRITE(FORRETRESS, gMonBackPic_Forretress),
// SPECIES_SPRITE(DUNSPARCE, gMonBackPic_Dunsparce),
// SPECIES_SPRITE(GLIGAR, gMonBackPic_Gligar),
// SPECIES_SPRITE(STEELIX, gMonBackPic_Steelix),
// SPECIES_SPRITE(SNUBBULL, gMonBackPic_Snubbull),
// SPECIES_SPRITE(GRANBULL, gMonBackPic_Granbull),
// SPECIES_SPRITE(QWILFISH, gMonBackPic_Qwilfish),
// SPECIES_SPRITE(SCIZOR, gMonBackPic_Scizor),
// SPECIES_SPRITE(SHUCKLE, gMonBackPic_Shuckle),
// SPECIES_SPRITE(HERACROSS, gMonBackPic_Heracross),
// SPECIES_SPRITE(SNEASEL, gMonBackPic_Sneasel),
// SPECIES_SPRITE(TEDDIURSA, gMonBackPic_Teddiursa),
// SPECIES_SPRITE(URSARING, gMonBackPic_Ursaring),
// SPECIES_SPRITE(SLUGMA, gMonBackPic_Slugma),
// SPECIES_SPRITE(MAGCARGO, gMonBackPic_Magcargo),
// SPECIES_SPRITE(SWINUB, gMonBackPic_Swinub),
// SPECIES_SPRITE(PILOSWINE, gMonBackPic_Piloswine),
// SPECIES_SPRITE(CORSOLA, gMonBackPic_Corsola),
// SPECIES_SPRITE(REMORAID, gMonBackPic_Remoraid),
// SPECIES_SPRITE(OCTILLERY, gMonBackPic_Octillery),
// SPECIES_SPRITE(DELIBIRD, gMonBackPic_Delibird),
// SPECIES_SPRITE(MANTINE, gMonBackPic_Mantine),
// SPECIES_SPRITE(SKARMORY, gMonBackPic_Skarmory),
// SPECIES_SPRITE(HOUNDOUR, gMonBackPic_Houndour),
// SPECIES_SPRITE(HOUNDOOM, gMonBackPic_Houndoom),
// SPECIES_SPRITE(KINGDRA, gMonBackPic_Kingdra),
// SPECIES_SPRITE(PHANPY, gMonBackPic_Phanpy),
// SPECIES_SPRITE(DONPHAN, gMonBackPic_Donphan),
// SPECIES_SPRITE(PORYGON2, gMonBackPic_Porygon2),
// SPECIES_SPRITE(STANTLER, gMonBackPic_Stantler),
// SPECIES_SPRITE(SMEARGLE, gMonBackPic_Smeargle),
// SPECIES_SPRITE(TYROGUE, gMonBackPic_Tyrogue),
// SPECIES_SPRITE(HITMONTOP, gMonBackPic_Hitmontop),
// SPECIES_SPRITE(SMOOCHUM, gMonBackPic_Smoochum),
// SPECIES_SPRITE(ELEKID, gMonBackPic_Elekid),
// SPECIES_SPRITE(MAGBY, gMonBackPic_Magby),
// SPECIES_SPRITE(MILTANK, gMonBackPic_Miltank),
// SPECIES_SPRITE(BLISSEY, gMonBackPic_Blissey),
// SPECIES_SPRITE(RAIKOU, gMonBackPic_Raikou),
// SPECIES_SPRITE(ENTEI, gMonBackPic_Entei),
// SPECIES_SPRITE(SUICUNE, gMonBackPic_Suicune),
// SPECIES_SPRITE(LARVITAR, gMonBackPic_Larvitar),
// SPECIES_SPRITE(PUPITAR, gMonBackPic_Pupitar),
// SPECIES_SPRITE(TYRANITAR, gMonBackPic_Tyranitar),
// SPECIES_SPRITE(LUGIA, gMonBackPic_Lugia),
// SPECIES_SPRITE(HO_OH, gMonBackPic_HoOh),
// SPECIES_SPRITE(CELEBI, gMonBackPic_Celebi),
// SPECIES_SPRITE(OLD_UNOWN_B, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_C, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_D, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_E, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_F, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_G, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_H, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_I, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_J, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_K, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_L, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_M, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_N, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_O, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_P, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Q, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_R, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_S, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_T, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_U, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_V, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_W, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_X, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Y, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Z, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(TREECKO, gMonBackPic_Treecko),
// SPECIES_SPRITE(GROVYLE, gMonBackPic_Grovyle),
// SPECIES_SPRITE(SCEPTILE, gMonBackPic_Sceptile),
// SPECIES_SPRITE(TORCHIC, gMonBackPic_Torchic),
// SPECIES_SPRITE(COMBUSKEN, gMonBackPic_Combusken),
// SPECIES_SPRITE(BLAZIKEN, gMonBackPic_Blaziken),
// SPECIES_SPRITE(MUDKIP, gMonBackPic_Mudkip),
// SPECIES_SPRITE(MARSHTOMP, gMonBackPic_Marshtomp),
// SPECIES_SPRITE(SWAMPERT, gMonBackPic_Swampert),
// SPECIES_SPRITE(POOCHYENA, gMonBackPic_Poochyena),
// SPECIES_SPRITE(MIGHTYENA, gMonBackPic_Mightyena),
// SPECIES_SPRITE(ZIGZAGOON, gMonBackPic_Zigzagoon),
// SPECIES_SPRITE(LINOONE, gMonBackPic_Linoone),
// SPECIES_SPRITE(WURMPLE, gMonBackPic_Wurmple),
// SPECIES_SPRITE(SILCOON, gMonBackPic_Silcoon),
// SPECIES_SPRITE(BEAUTIFLY, gMonBackPic_Beautifly),
// SPECIES_SPRITE(CASCOON, gMonBackPic_Cascoon),
// SPECIES_SPRITE(DUSTOX, gMonBackPic_Dustox),
// SPECIES_SPRITE(LOTAD, gMonBackPic_Lotad),
// SPECIES_SPRITE(LOMBRE, gMonBackPic_Lombre),
// SPECIES_SPRITE(LUDICOLO, gMonBackPic_Ludicolo),
// SPECIES_SPRITE(SEEDOT, gMonBackPic_Seedot),
// SPECIES_SPRITE(NUZLEAF, gMonBackPic_Nuzleaf),
// SPECIES_SPRITE(SHIFTRY, gMonBackPic_Shiftry),
// SPECIES_SPRITE(NINCADA, gMonBackPic_Nincada),
// SPECIES_SPRITE(NINJASK, gMonBackPic_Ninjask),
// SPECIES_SPRITE(SHEDINJA, gMonBackPic_Shedinja),
// SPECIES_SPRITE(TAILLOW, gMonBackPic_Taillow),
// SPECIES_SPRITE(SWELLOW, gMonBackPic_Swellow),
// SPECIES_SPRITE(SHROOMISH, gMonBackPic_Shroomish),
// SPECIES_SPRITE(BRELOOM, gMonBackPic_Breloom),
// SPECIES_SPRITE(SPINDA, gMonBackPic_Spinda),
// SPECIES_SPRITE(WINGULL, gMonBackPic_Wingull),
// SPECIES_SPRITE(PELIPPER, gMonBackPic_Pelipper),
// SPECIES_SPRITE(SURSKIT, gMonBackPic_Surskit),
// SPECIES_SPRITE(MASQUERAIN, gMonBackPic_Masquerain),
// SPECIES_SPRITE(WAILMER, gMonBackPic_Wailmer),
// SPECIES_SPRITE(WAILORD, gMonBackPic_Wailord),
// SPECIES_SPRITE(SKITTY, gMonBackPic_Skitty),
// SPECIES_SPRITE(DELCATTY, gMonBackPic_Delcatty),
// SPECIES_SPRITE(KECLEON, gMonBackPic_Kecleon),
// SPECIES_SPRITE(BALTOY, gMonBackPic_Baltoy),
// SPECIES_SPRITE(CLAYDOL, gMonBackPic_Claydol),
// SPECIES_SPRITE(NOSEPASS, gMonBackPic_Nosepass),
// SPECIES_SPRITE(TORKOAL, gMonBackPic_Torkoal),
// SPECIES_SPRITE(SABLEYE, gMonBackPic_Sableye),
// SPECIES_SPRITE(BARBOACH, gMonBackPic_Barboach),
// SPECIES_SPRITE(WHISCASH, gMonBackPic_Whiscash),
// SPECIES_SPRITE(LUVDISC, gMonBackPic_Luvdisc),
// SPECIES_SPRITE(CORPHISH, gMonBackPic_Corphish),
// SPECIES_SPRITE(CRAWDAUNT, gMonBackPic_Crawdaunt),
// SPECIES_SPRITE(FEEBAS, gMonBackPic_Feebas),
// SPECIES_SPRITE(MILOTIC, gMonBackPic_Milotic),
// SPECIES_SPRITE(CARVANHA, gMonBackPic_Carvanha),
// SPECIES_SPRITE(SHARPEDO, gMonBackPic_Sharpedo),
// SPECIES_SPRITE(TRAPINCH, gMonBackPic_Trapinch),
// SPECIES_SPRITE(VIBRAVA, gMonBackPic_Vibrava),
// SPECIES_SPRITE(FLYGON, gMonBackPic_Flygon),
// SPECIES_SPRITE(MAKUHITA, gMonBackPic_Makuhita),
// SPECIES_SPRITE(HARIYAMA, gMonBackPic_Hariyama),
// SPECIES_SPRITE(ELECTRIKE, gMonBackPic_Electrike),
// SPECIES_SPRITE(MANECTRIC, gMonBackPic_Manectric),
// SPECIES_SPRITE(NUMEL, gMonBackPic_Numel),
// SPECIES_SPRITE(CAMERUPT, gMonBackPic_Camerupt),
// SPECIES_SPRITE(SPHEAL, gMonBackPic_Spheal),
// SPECIES_SPRITE(SEALEO, gMonBackPic_Sealeo),
// SPECIES_SPRITE(WALREIN, gMonBackPic_Walrein),
// SPECIES_SPRITE(CACNEA, gMonBackPic_Cacnea),
// SPECIES_SPRITE(CACTURNE, gMonBackPic_Cacturne),
// SPECIES_SPRITE(SNORUNT, gMonBackPic_Snorunt),
// SPECIES_SPRITE(GLALIE, gMonBackPic_Glalie),
// SPECIES_SPRITE(LUNATONE, gMonBackPic_Lunatone),
// SPECIES_SPRITE(SOLROCK, gMonBackPic_Solrock),
// SPECIES_SPRITE(AZURILL, gMonBackPic_Azurill),
// SPECIES_SPRITE(SPOINK, gMonBackPic_Spoink),
// SPECIES_SPRITE(GRUMPIG, gMonBackPic_Grumpig),
// SPECIES_SPRITE(PLUSLE, gMonBackPic_Plusle),
// SPECIES_SPRITE(MINUN, gMonBackPic_Minun),
// SPECIES_SPRITE(MAWILE, gMonBackPic_Mawile),
// SPECIES_SPRITE(MEDITITE, gMonBackPic_Meditite),
// SPECIES_SPRITE(MEDICHAM, gMonBackPic_Medicham),
// SPECIES_SPRITE(SWABLU, gMonBackPic_Swablu),
// SPECIES_SPRITE(ALTARIA, gMonBackPic_Altaria),
// SPECIES_SPRITE(WYNAUT, gMonBackPic_Wynaut),
// SPECIES_SPRITE(DUSKULL, gMonBackPic_Duskull),
// SPECIES_SPRITE(DUSCLOPS, gMonBackPic_Dusclops),
// SPECIES_SPRITE(ROSELIA, gMonBackPic_Roselia),
// SPECIES_SPRITE(SLAKOTH, gMonBackPic_Slakoth),
// SPECIES_SPRITE(VIGOROTH, gMonBackPic_Vigoroth),
// SPECIES_SPRITE(SLAKING, gMonBackPic_Slaking),
// SPECIES_SPRITE(GULPIN, gMonBackPic_Gulpin),
// SPECIES_SPRITE(SWALOT, gMonBackPic_Swalot),
// SPECIES_SPRITE(TROPIUS, gMonBackPic_Tropius),
// SPECIES_SPRITE(WHISMUR, gMonBackPic_Whismur),
// SPECIES_SPRITE(LOUDRED, gMonBackPic_Loudred),
// SPECIES_SPRITE(EXPLOUD, gMonBackPic_Exploud),
// SPECIES_SPRITE(CLAMPERL, gMonBackPic_Clamperl),
// SPECIES_SPRITE(HUNTAIL, gMonBackPic_Huntail),
// SPECIES_SPRITE(GOREBYSS, gMonBackPic_Gorebyss),
// SPECIES_SPRITE(ABSOL, gMonBackPic_Absol),
// SPECIES_SPRITE(SHUPPET, gMonBackPic_Shuppet),
// SPECIES_SPRITE(BANETTE, gMonBackPic_Banette),
// SPECIES_SPRITE(SEVIPER, gMonBackPic_Seviper),
// SPECIES_SPRITE(ZANGOOSE, gMonBackPic_Zangoose),
// SPECIES_SPRITE(RELICANTH, gMonBackPic_Relicanth),
// SPECIES_SPRITE(ARON, gMonBackPic_Aron),
// SPECIES_SPRITE(LAIRON, gMonBackPic_Lairon),
// SPECIES_SPRITE(AGGRON, gMonBackPic_Aggron),
// SPECIES_SPRITE(CASTFORM, gMonBackPic_Castform),
// SPECIES_SPRITE(VOLBEAT, gMonBackPic_Volbeat),
// SPECIES_SPRITE(ILLUMISE, gMonBackPic_Illumise),
// SPECIES_SPRITE(LILEEP, gMonBackPic_Lileep),
// SPECIES_SPRITE(CRADILY, gMonBackPic_Cradily),
// SPECIES_SPRITE(ANORITH, gMonBackPic_Anorith),
// SPECIES_SPRITE(ARMALDO, gMonBackPic_Armaldo),
// SPECIES_SPRITE(RALTS, gMonBackPic_Ralts),
// SPECIES_SPRITE(KIRLIA, gMonBackPic_Kirlia),
// SPECIES_SPRITE(GARDEVOIR, gMonBackPic_Gardevoir),
// SPECIES_SPRITE(BAGON, gMonBackPic_Bagon),
// SPECIES_SPRITE(SHELGON, gMonBackPic_Shelgon),
// SPECIES_SPRITE(SALAMENCE, gMonBackPic_Salamence),
// SPECIES_SPRITE(BELDUM, gMonBackPic_Beldum),
// SPECIES_SPRITE(METANG, gMonBackPic_Metang),
// SPECIES_SPRITE(METAGROSS, gMonBackPic_Metagross),
// SPECIES_SPRITE(REGIROCK, gMonBackPic_Regirock),
// SPECIES_SPRITE(REGICE, gMonBackPic_Regice),
// SPECIES_SPRITE(REGISTEEL, gMonBackPic_Registeel),
// SPECIES_SPRITE(KYOGRE, gMonBackPic_Kyogre),
// SPECIES_SPRITE(GROUDON, gMonBackPic_Groudon),
// SPECIES_SPRITE(RAYQUAZA, gMonBackPic_Rayquaza),
// SPECIES_SPRITE(LATIAS, gMonBackPic_Latias),
// SPECIES_SPRITE(LATIOS, gMonBackPic_Latios),
// SPECIES_SPRITE(JIRACHI, gMonBackPic_Jirachi),
// SPECIES_SPRITE(DEOXYS, gMonBackPic_Deoxys),
// SPECIES_SPRITE(CHIMECHO, gMonBackPic_Chimecho),
// SPECIES_SPRITE(EGG, gMonFrontPic_Egg),
// SPECIES_SPRITE(UNOWN_B, gMonBackPic_UnownB),
// SPECIES_SPRITE(UNOWN_C, gMonBackPic_UnownC),
// SPECIES_SPRITE(UNOWN_D, gMonBackPic_UnownD),
// SPECIES_SPRITE(UNOWN_E, gMonBackPic_UnownE),
// SPECIES_SPRITE(UNOWN_F, gMonBackPic_UnownF),
// SPECIES_SPRITE(UNOWN_G, gMonBackPic_UnownG),
// SPECIES_SPRITE(UNOWN_H, gMonBackPic_UnownH),
// SPECIES_SPRITE(UNOWN_I, gMonBackPic_UnownI),
// SPECIES_SPRITE(UNOWN_J, gMonBackPic_UnownJ),
// SPECIES_SPRITE(UNOWN_K, gMonBackPic_UnownK),
// SPECIES_SPRITE(UNOWN_L, gMonBackPic_UnownL),
// SPECIES_SPRITE(UNOWN_M, gMonBackPic_UnownM),
// SPECIES_SPRITE(UNOWN_N, gMonBackPic_UnownN),
// SPECIES_SPRITE(UNOWN_O, gMonBackPic_UnownO),
// SPECIES_SPRITE(UNOWN_P, gMonBackPic_UnownP),
// SPECIES_SPRITE(UNOWN_Q, gMonBackPic_UnownQ),
// SPECIES_SPRITE(UNOWN_R, gMonBackPic_UnownR),
// SPECIES_SPRITE(UNOWN_S, gMonBackPic_UnownS),
// SPECIES_SPRITE(UNOWN_T, gMonBackPic_UnownT),
// SPECIES_SPRITE(UNOWN_U, gMonBackPic_UnownU),
// SPECIES_SPRITE(UNOWN_V, gMonBackPic_UnownV),
// SPECIES_SPRITE(UNOWN_W, gMonBackPic_UnownW),
// SPECIES_SPRITE(UNOWN_X, gMonBackPic_UnownX),
// SPECIES_SPRITE(UNOWN_Y, gMonBackPic_UnownY),
// SPECIES_SPRITE(UNOWN_Z, gMonBackPic_UnownZ),
// SPECIES_SPRITE(UNOWN_EMARK, gMonBackPic_UnownExclamationMark),
// SPECIES_SPRITE(UNOWN_QMARK, gMonBackPic_UnownQuestionMark),
// };

View File

@ -1,65 +0,0 @@
// This determines how much higher above the usual position the enemy Pokémon
// is during battle. Species that float or fly have nonzero values.
const u8 gEnemyMonElevation[NUM_SPECIES] =
{
[SPECIES_BUTTERFREE] = 8,
[SPECIES_BEEDRILL] = 8,
[SPECIES_PIDGEOT] = 4,
[SPECIES_FEAROW] = 6,
[SPECIES_ZUBAT] = 8,
[SPECIES_GOLBAT] = 8,
[SPECIES_VENOMOTH] = 8,
[SPECIES_GEODUDE] = 16,
[SPECIES_MAGNEMITE] = 16,
[SPECIES_MAGNETON] = 8,
[SPECIES_GASTLY] = 4,
[SPECIES_HAUNTER] = 4,
[SPECIES_VOLTORB] = 10,
[SPECIES_ELECTRODE] = 12,
[SPECIES_KOFFING] = 8,
[SPECIES_WEEZING] = 6,
[SPECIES_AERODACTYL] = 7,
[SPECIES_ARTICUNO] = 6,
[SPECIES_ZAPDOS] = 8,
[SPECIES_MOLTRES] = 5,
[SPECIES_DRAGONITE] = 6,
[SPECIES_MEW] = 8,
[SPECIES_LEDIAN] = 8,
[SPECIES_CROBAT] = 6,
[SPECIES_HOPPIP] = 11,
[SPECIES_SKIPLOOM] = 12,
[SPECIES_JUMPLUFF] = 9,
[SPECIES_YANMA] = 8,
[SPECIES_MISDREAVUS] = 8,
[SPECIES_UNOWN] = 8,
[SPECIES_GLIGAR] = 6,
[SPECIES_LUGIA] = 6,
[SPECIES_HO_OH] = 6,
[SPECIES_CELEBI] = 15,
[SPECIES_BEAUTIFLY] = 8,
[SPECIES_DUSTOX] = 10,
[SPECIES_NINJASK] = 10,
[SPECIES_SHEDINJA] = 8,
[SPECIES_WINGULL] = 16,
[SPECIES_PELIPPER] = 8,
[SPECIES_MASQUERAIN] = 10,
[SPECIES_BALTOY] = 4,
[SPECIES_CLAYDOL] = 10,
[SPECIES_FLYGON] = 7,
[SPECIES_GLALIE] = 12,
[SPECIES_LUNATONE] = 13,
[SPECIES_SOLROCK] = 4,
[SPECIES_SWABLU] = 12,
[SPECIES_ALTARIA] = 8,
[SPECIES_DUSKULL] = 9,
[SPECIES_SHUPPET] = 12,
[SPECIES_BANETTE] = 8,
[SPECIES_CASTFORM] = 16,
[SPECIES_BELDUM] = 8,
[SPECIES_RAYQUAZA] = 6,
[SPECIES_LATIAS] = 6,
[SPECIES_LATIOS] = 6,
[SPECIES_JIRACHI] = 12,
[SPECIES_DEOXYS] = 8,
[SPECIES_CHIMECHO] = 12,
};

View File

@ -1,416 +0,0 @@
// const u8 *const gMonFootprintTable[] =
// {
// [SPECIES_NONE] = gMonFootprint_Bulbasaur,
// [SPECIES_BULBASAUR] = gMonFootprint_Bulbasaur,
// [SPECIES_IVYSAUR] = gMonFootprint_Ivysaur,
// [SPECIES_VENUSAUR] = gMonFootprint_Venusaur,
// [SPECIES_CHARMANDER] = gMonFootprint_Charmander,
// [SPECIES_CHARMELEON] = gMonFootprint_Charmeleon,
// [SPECIES_CHARIZARD] = gMonFootprint_Charizard,
// [SPECIES_SQUIRTLE] = gMonFootprint_Squirtle,
// [SPECIES_WARTORTLE] = gMonFootprint_Wartortle,
// [SPECIES_BLASTOISE] = gMonFootprint_Blastoise,
// [SPECIES_CATERPIE] = gMonFootprint_Caterpie,
// [SPECIES_METAPOD] = gMonFootprint_Metapod,
// [SPECIES_BUTTERFREE] = gMonFootprint_Butterfree,
// [SPECIES_WEEDLE] = gMonFootprint_Weedle,
// [SPECIES_KAKUNA] = gMonFootprint_Kakuna,
// [SPECIES_BEEDRILL] = gMonFootprint_Beedrill,
// [SPECIES_PIDGEY] = gMonFootprint_Pidgey,
// [SPECIES_PIDGEOTTO] = gMonFootprint_Pidgeotto,
// [SPECIES_PIDGEOT] = gMonFootprint_Pidgeot,
// [SPECIES_RATTATA] = gMonFootprint_Rattata,
// [SPECIES_RATICATE] = gMonFootprint_Raticate,
// [SPECIES_SPEAROW] = gMonFootprint_Spearow,
// [SPECIES_FEAROW] = gMonFootprint_Fearow,
// [SPECIES_EKANS] = gMonFootprint_Ekans,
// [SPECIES_ARBOK] = gMonFootprint_Arbok,
// [SPECIES_PIKACHU] = gMonFootprint_Pikachu,
// [SPECIES_RAICHU] = gMonFootprint_Raichu,
// [SPECIES_SANDSHREW] = gMonFootprint_Sandshrew,
// [SPECIES_SANDSLASH] = gMonFootprint_Sandslash,
// [SPECIES_NIDORAN_F] = gMonFootprint_NidoranF,
// [SPECIES_NIDORINA] = gMonFootprint_Nidorina,
// [SPECIES_NIDOQUEEN] = gMonFootprint_Nidoqueen,
// [SPECIES_NIDORAN_M] = gMonFootprint_NidoranM,
// [SPECIES_NIDORINO] = gMonFootprint_Nidorino,
// [SPECIES_NIDOKING] = gMonFootprint_Nidoking,
// [SPECIES_CLEFAIRY] = gMonFootprint_Clefairy,
// [SPECIES_CLEFABLE] = gMonFootprint_Clefable,
// [SPECIES_VULPIX] = gMonFootprint_Vulpix,
// [SPECIES_NINETALES] = gMonFootprint_Ninetales,
// [SPECIES_JIGGLYPUFF] = gMonFootprint_Jigglypuff,
// [SPECIES_WIGGLYTUFF] = gMonFootprint_Wigglytuff,
// [SPECIES_ZUBAT] = gMonFootprint_Zubat,
// [SPECIES_GOLBAT] = gMonFootprint_Golbat,
// [SPECIES_ODDISH] = gMonFootprint_Oddish,
// [SPECIES_GLOOM] = gMonFootprint_Gloom,
// [SPECIES_VILEPLUME] = gMonFootprint_Vileplume,
// [SPECIES_PARAS] = gMonFootprint_Paras,
// [SPECIES_PARASECT] = gMonFootprint_Parasect,
// [SPECIES_VENONAT] = gMonFootprint_Venonat,
// [SPECIES_VENOMOTH] = gMonFootprint_Venomoth,
// [SPECIES_DIGLETT] = gMonFootprint_Diglett,
// [SPECIES_DUGTRIO] = gMonFootprint_Dugtrio,
// [SPECIES_MEOWTH] = gMonFootprint_Meowth,
// [SPECIES_PERSIAN] = gMonFootprint_Persian,
// [SPECIES_PSYDUCK] = gMonFootprint_Psyduck,
// [SPECIES_GOLDUCK] = gMonFootprint_Golduck,
// [SPECIES_MANKEY] = gMonFootprint_Mankey,
// [SPECIES_PRIMEAPE] = gMonFootprint_Primeape,
// [SPECIES_GROWLITHE] = gMonFootprint_Growlithe,
// [SPECIES_ARCANINE] = gMonFootprint_Arcanine,
// [SPECIES_POLIWAG] = gMonFootprint_Poliwag,
// [SPECIES_POLIWHIRL] = gMonFootprint_Poliwhirl,
// [SPECIES_POLIWRATH] = gMonFootprint_Poliwrath,
// [SPECIES_ABRA] = gMonFootprint_Abra,
// [SPECIES_KADABRA] = gMonFootprint_Kadabra,
// [SPECIES_ALAKAZAM] = gMonFootprint_Alakazam,
// [SPECIES_MACHOP] = gMonFootprint_Machop,
// [SPECIES_MACHOKE] = gMonFootprint_Machoke,
// [SPECIES_MACHAMP] = gMonFootprint_Machamp,
// [SPECIES_BELLSPROUT] = gMonFootprint_Bellsprout,
// [SPECIES_WEEPINBELL] = gMonFootprint_Weepinbell,
// [SPECIES_VICTREEBEL] = gMonFootprint_Victreebel,
// [SPECIES_TENTACOOL] = gMonFootprint_Tentacool,
// [SPECIES_TENTACRUEL] = gMonFootprint_Tentacruel,
// [SPECIES_GEODUDE] = gMonFootprint_Geodude,
// [SPECIES_GRAVELER] = gMonFootprint_Graveler,
// [SPECIES_GOLEM] = gMonFootprint_Golem,
// [SPECIES_PONYTA] = gMonFootprint_Ponyta,
// [SPECIES_RAPIDASH] = gMonFootprint_Rapidash,
// [SPECIES_SLOWPOKE] = gMonFootprint_Slowpoke,
// [SPECIES_SLOWBRO] = gMonFootprint_Slowbro,
// [SPECIES_MAGNEMITE] = gMonFootprint_Magnemite,
// [SPECIES_MAGNETON] = gMonFootprint_Magneton,
// [SPECIES_FARFETCHD] = gMonFootprint_Farfetchd,
// [SPECIES_DODUO] = gMonFootprint_Doduo,
// [SPECIES_DODRIO] = gMonFootprint_Dodrio,
// [SPECIES_SEEL] = gMonFootprint_Seel,
// [SPECIES_DEWGONG] = gMonFootprint_Dewgong,
// [SPECIES_GRIMER] = gMonFootprint_Grimer,
// [SPECIES_MUK] = gMonFootprint_Muk,
// [SPECIES_SHELLDER] = gMonFootprint_Shellder,
// [SPECIES_CLOYSTER] = gMonFootprint_Cloyster,
// [SPECIES_GASTLY] = gMonFootprint_Gastly,
// [SPECIES_HAUNTER] = gMonFootprint_Haunter,
// [SPECIES_GENGAR] = gMonFootprint_Gengar,
// [SPECIES_ONIX] = gMonFootprint_Onix,
// [SPECIES_DROWZEE] = gMonFootprint_Drowzee,
// [SPECIES_HYPNO] = gMonFootprint_Hypno,
// [SPECIES_KRABBY] = gMonFootprint_Krabby,
// [SPECIES_KINGLER] = gMonFootprint_Kingler,
// [SPECIES_VOLTORB] = gMonFootprint_Voltorb,
// [SPECIES_ELECTRODE] = gMonFootprint_Electrode,
// [SPECIES_EXEGGCUTE] = gMonFootprint_Exeggcute,
// [SPECIES_EXEGGUTOR] = gMonFootprint_Exeggutor,
// [SPECIES_CUBONE] = gMonFootprint_Cubone,
// [SPECIES_MAROWAK] = gMonFootprint_Marowak,
// [SPECIES_HITMONLEE] = gMonFootprint_Hitmonlee,
// [SPECIES_HITMONCHAN] = gMonFootprint_Hitmonchan,
// [SPECIES_LICKITUNG] = gMonFootprint_Lickitung,
// [SPECIES_KOFFING] = gMonFootprint_Koffing,
// [SPECIES_WEEZING] = gMonFootprint_Weezing,
// [SPECIES_RHYHORN] = gMonFootprint_Rhyhorn,
// [SPECIES_RHYDON] = gMonFootprint_Rhydon,
// [SPECIES_CHANSEY] = gMonFootprint_Chansey,
// [SPECIES_TANGELA] = gMonFootprint_Tangela,
// [SPECIES_KANGASKHAN] = gMonFootprint_Kangaskhan,
// [SPECIES_HORSEA] = gMonFootprint_Horsea,
// [SPECIES_SEADRA] = gMonFootprint_Seadra,
// [SPECIES_GOLDEEN] = gMonFootprint_Goldeen,
// [SPECIES_SEAKING] = gMonFootprint_Seaking,
// [SPECIES_STARYU] = gMonFootprint_Staryu,
// [SPECIES_STARMIE] = gMonFootprint_Starmie,
// [SPECIES_MR_MIME] = gMonFootprint_Mrmime,
// [SPECIES_SCYTHER] = gMonFootprint_Scyther,
// [SPECIES_JYNX] = gMonFootprint_Jynx,
// [SPECIES_ELECTABUZZ] = gMonFootprint_Electabuzz,
// [SPECIES_MAGMAR] = gMonFootprint_Magmar,
// [SPECIES_PINSIR] = gMonFootprint_Pinsir,
// [SPECIES_TAUROS] = gMonFootprint_Tauros,
// [SPECIES_MAGIKARP] = gMonFootprint_Magikarp,
// [SPECIES_GYARADOS] = gMonFootprint_Gyarados,
// [SPECIES_LAPRAS] = gMonFootprint_Lapras,
// [SPECIES_DITTO] = gMonFootprint_Ditto,
// [SPECIES_EEVEE] = gMonFootprint_Eevee,
// [SPECIES_VAPOREON] = gMonFootprint_Vaporeon,
// [SPECIES_JOLTEON] = gMonFootprint_Jolteon,
// [SPECIES_FLAREON] = gMonFootprint_Flareon,
// [SPECIES_PORYGON] = gMonFootprint_Porygon,
// [SPECIES_OMANYTE] = gMonFootprint_Omanyte,
// [SPECIES_OMASTAR] = gMonFootprint_Omastar,
// [SPECIES_KABUTO] = gMonFootprint_Kabuto,
// [SPECIES_KABUTOPS] = gMonFootprint_Kabutops,
// [SPECIES_AERODACTYL] = gMonFootprint_Aerodactyl,
// [SPECIES_SNORLAX] = gMonFootprint_Snorlax,
// [SPECIES_ARTICUNO] = gMonFootprint_Articuno,
// [SPECIES_ZAPDOS] = gMonFootprint_Zapdos,
// [SPECIES_MOLTRES] = gMonFootprint_Moltres,
// [SPECIES_DRATINI] = gMonFootprint_Dratini,
// [SPECIES_DRAGONAIR] = gMonFootprint_Dragonair,
// [SPECIES_DRAGONITE] = gMonFootprint_Dragonite,
// [SPECIES_MEWTWO] = gMonFootprint_Mewtwo,
// [SPECIES_MEW] = gMonFootprint_Mew,
// [SPECIES_CHIKORITA] = gMonFootprint_Chikorita,
// [SPECIES_BAYLEEF] = gMonFootprint_Bayleef,
// [SPECIES_MEGANIUM] = gMonFootprint_Meganium,
// [SPECIES_CYNDAQUIL] = gMonFootprint_Cyndaquil,
// [SPECIES_QUILAVA] = gMonFootprint_Quilava,
// [SPECIES_TYPHLOSION] = gMonFootprint_Typhlosion,
// [SPECIES_TOTODILE] = gMonFootprint_Totodile,
// [SPECIES_CROCONAW] = gMonFootprint_Croconaw,
// [SPECIES_FERALIGATR] = gMonFootprint_Feraligatr,
// [SPECIES_SENTRET] = gMonFootprint_Sentret,
// [SPECIES_FURRET] = gMonFootprint_Furret,
// [SPECIES_HOOTHOOT] = gMonFootprint_Hoothoot,
// [SPECIES_NOCTOWL] = gMonFootprint_Noctowl,
// [SPECIES_LEDYBA] = gMonFootprint_Ledyba,
// [SPECIES_LEDIAN] = gMonFootprint_Ledian,
// [SPECIES_SPINARAK] = gMonFootprint_Spinarak,
// [SPECIES_ARIADOS] = gMonFootprint_Ariados,
// [SPECIES_CROBAT] = gMonFootprint_Crobat,
// [SPECIES_CHINCHOU] = gMonFootprint_Chinchou,
// [SPECIES_LANTURN] = gMonFootprint_Lanturn,
// [SPECIES_PICHU] = gMonFootprint_Pichu,
// [SPECIES_CLEFFA] = gMonFootprint_Cleffa,
// [SPECIES_IGGLYBUFF] = gMonFootprint_Igglybuff,
// [SPECIES_TOGEPI] = gMonFootprint_Togepi,
// [SPECIES_TOGETIC] = gMonFootprint_Togetic,
// [SPECIES_NATU] = gMonFootprint_Natu,
// [SPECIES_XATU] = gMonFootprint_Xatu,
// [SPECIES_MAREEP] = gMonFootprint_Mareep,
// [SPECIES_FLAAFFY] = gMonFootprint_Flaaffy,
// [SPECIES_AMPHAROS] = gMonFootprint_Ampharos,
// [SPECIES_BELLOSSOM] = gMonFootprint_Bellossom,
// [SPECIES_MARILL] = gMonFootprint_Marill,
// [SPECIES_AZUMARILL] = gMonFootprint_Azumarill,
// [SPECIES_SUDOWOODO] = gMonFootprint_Sudowoodo,
// [SPECIES_POLITOED] = gMonFootprint_Politoed,
// [SPECIES_HOPPIP] = gMonFootprint_Hoppip,
// [SPECIES_SKIPLOOM] = gMonFootprint_Skiploom,
// [SPECIES_JUMPLUFF] = gMonFootprint_Jumpluff,
// [SPECIES_AIPOM] = gMonFootprint_Aipom,
// [SPECIES_SUNKERN] = gMonFootprint_Sunkern,
// [SPECIES_SUNFLORA] = gMonFootprint_Sunflora,
// [SPECIES_YANMA] = gMonFootprint_Yanma,
// [SPECIES_WOOPER] = gMonFootprint_Wooper,
// [SPECIES_QUAGSIRE] = gMonFootprint_Quagsire,
// [SPECIES_ESPEON] = gMonFootprint_Espeon,
// [SPECIES_UMBREON] = gMonFootprint_Umbreon,
// [SPECIES_MURKROW] = gMonFootprint_Murkrow,
// [SPECIES_SLOWKING] = gMonFootprint_Slowking,
// [SPECIES_MISDREAVUS] = gMonFootprint_Misdreavus,
// [SPECIES_UNOWN] = gMonFootprint_Unown,
// [SPECIES_WOBBUFFET] = gMonFootprint_Wobbuffet,
// [SPECIES_GIRAFARIG] = gMonFootprint_Girafarig,
// [SPECIES_PINECO] = gMonFootprint_Pineco,
// [SPECIES_FORRETRESS] = gMonFootprint_Forretress,
// [SPECIES_DUNSPARCE] = gMonFootprint_Dunsparce,
// [SPECIES_GLIGAR] = gMonFootprint_Gligar,
// [SPECIES_STEELIX] = gMonFootprint_Steelix,
// [SPECIES_SNUBBULL] = gMonFootprint_Snubbull,
// [SPECIES_GRANBULL] = gMonFootprint_Granbull,
// [SPECIES_QWILFISH] = gMonFootprint_Qwilfish,
// [SPECIES_SCIZOR] = gMonFootprint_Scizor,
// [SPECIES_SHUCKLE] = gMonFootprint_Shuckle,
// [SPECIES_HERACROSS] = gMonFootprint_Heracross,
// [SPECIES_SNEASEL] = gMonFootprint_Sneasel,
// [SPECIES_TEDDIURSA] = gMonFootprint_Teddiursa,
// [SPECIES_URSARING] = gMonFootprint_Ursaring,
// [SPECIES_SLUGMA] = gMonFootprint_Slugma,
// [SPECIES_MAGCARGO] = gMonFootprint_Magcargo,
// [SPECIES_SWINUB] = gMonFootprint_Swinub,
// [SPECIES_PILOSWINE] = gMonFootprint_Piloswine,
// [SPECIES_CORSOLA] = gMonFootprint_Corsola,
// [SPECIES_REMORAID] = gMonFootprint_Remoraid,
// [SPECIES_OCTILLERY] = gMonFootprint_Octillery,
// [SPECIES_DELIBIRD] = gMonFootprint_Delibird,
// [SPECIES_MANTINE] = gMonFootprint_Mantine,
// [SPECIES_SKARMORY] = gMonFootprint_Skarmory,
// [SPECIES_HOUNDOUR] = gMonFootprint_Houndour,
// [SPECIES_HOUNDOOM] = gMonFootprint_Houndoom,
// [SPECIES_KINGDRA] = gMonFootprint_Kingdra,
// [SPECIES_PHANPY] = gMonFootprint_Phanpy,
// [SPECIES_DONPHAN] = gMonFootprint_Donphan,
// [SPECIES_PORYGON2] = gMonFootprint_Porygon2,
// [SPECIES_STANTLER] = gMonFootprint_Stantler,
// [SPECIES_SMEARGLE] = gMonFootprint_Smeargle,
// [SPECIES_TYROGUE] = gMonFootprint_Tyrogue,
// [SPECIES_HITMONTOP] = gMonFootprint_Hitmontop,
// [SPECIES_SMOOCHUM] = gMonFootprint_Smoochum,
// [SPECIES_ELEKID] = gMonFootprint_Elekid,
// [SPECIES_MAGBY] = gMonFootprint_Magby,
// [SPECIES_MILTANK] = gMonFootprint_Miltank,
// [SPECIES_BLISSEY] = gMonFootprint_Blissey,
// [SPECIES_RAIKOU] = gMonFootprint_Raikou,
// [SPECIES_ENTEI] = gMonFootprint_Entei,
// [SPECIES_SUICUNE] = gMonFootprint_Suicune,
// [SPECIES_LARVITAR] = gMonFootprint_Larvitar,
// [SPECIES_PUPITAR] = gMonFootprint_Pupitar,
// [SPECIES_TYRANITAR] = gMonFootprint_Tyranitar,
// [SPECIES_LUGIA] = gMonFootprint_Lugia,
// [SPECIES_HO_OH] = gMonFootprint_HoOh,
// [SPECIES_CELEBI] = gMonFootprint_Celebi,
// [SPECIES_OLD_UNOWN_B] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_C] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_D] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_E] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_F] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_G] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_H] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_I] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_J] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_K] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_L] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_M] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_N] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_O] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_P] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_Q] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_R] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_S] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_T] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_U] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_V] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_W] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_X] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_Y] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_Z] = gMonFootprint_QuestionMark,
// [SPECIES_TREECKO] = gMonFootprint_Treecko,
// [SPECIES_GROVYLE] = gMonFootprint_Grovyle,
// [SPECIES_SCEPTILE] = gMonFootprint_Sceptile,
// [SPECIES_TORCHIC] = gMonFootprint_Torchic,
// [SPECIES_COMBUSKEN] = gMonFootprint_Combusken,
// [SPECIES_BLAZIKEN] = gMonFootprint_Blaziken,
// [SPECIES_MUDKIP] = gMonFootprint_Mudkip,
// [SPECIES_MARSHTOMP] = gMonFootprint_Marshtomp,
// [SPECIES_SWAMPERT] = gMonFootprint_Swampert,
// [SPECIES_POOCHYENA] = gMonFootprint_Poochyena,
// [SPECIES_MIGHTYENA] = gMonFootprint_Mightyena,
// [SPECIES_ZIGZAGOON] = gMonFootprint_Zigzagoon,
// [SPECIES_LINOONE] = gMonFootprint_Linoone,
// [SPECIES_WURMPLE] = gMonFootprint_Wurmple,
// [SPECIES_SILCOON] = gMonFootprint_Silcoon,
// [SPECIES_BEAUTIFLY] = gMonFootprint_Beautifly,
// [SPECIES_CASCOON] = gMonFootprint_Cascoon,
// [SPECIES_DUSTOX] = gMonFootprint_Dustox,
// [SPECIES_LOTAD] = gMonFootprint_Lotad,
// [SPECIES_LOMBRE] = gMonFootprint_Lombre,
// [SPECIES_LUDICOLO] = gMonFootprint_Ludicolo,
// [SPECIES_SEEDOT] = gMonFootprint_Seedot,
// [SPECIES_NUZLEAF] = gMonFootprint_Nuzleaf,
// [SPECIES_SHIFTRY] = gMonFootprint_Shiftry,
// [SPECIES_NINCADA] = gMonFootprint_Nincada,
// [SPECIES_NINJASK] = gMonFootprint_Ninjask,
// [SPECIES_SHEDINJA] = gMonFootprint_Shedinja,
// [SPECIES_TAILLOW] = gMonFootprint_Taillow,
// [SPECIES_SWELLOW] = gMonFootprint_Swellow,
// [SPECIES_SHROOMISH] = gMonFootprint_Shroomish,
// [SPECIES_BRELOOM] = gMonFootprint_Breloom,
// [SPECIES_SPINDA] = gMonFootprint_Spinda,
// [SPECIES_WINGULL] = gMonFootprint_Wingull,
// [SPECIES_PELIPPER] = gMonFootprint_Pelipper,
// [SPECIES_SURSKIT] = gMonFootprint_Surskit,
// [SPECIES_MASQUERAIN] = gMonFootprint_Masquerain,
// [SPECIES_WAILMER] = gMonFootprint_Wailmer,
// [SPECIES_WAILORD] = gMonFootprint_Wailord,
// [SPECIES_SKITTY] = gMonFootprint_Skitty,
// [SPECIES_DELCATTY] = gMonFootprint_Delcatty,
// [SPECIES_KECLEON] = gMonFootprint_Kecleon,
// [SPECIES_BALTOY] = gMonFootprint_Baltoy,
// [SPECIES_CLAYDOL] = gMonFootprint_Claydol,
// [SPECIES_NOSEPASS] = gMonFootprint_Nosepass,
// [SPECIES_TORKOAL] = gMonFootprint_Torkoal,
// [SPECIES_SABLEYE] = gMonFootprint_Sableye,
// [SPECIES_BARBOACH] = gMonFootprint_Barboach,
// [SPECIES_WHISCASH] = gMonFootprint_Whiscash,
// [SPECIES_LUVDISC] = gMonFootprint_Luvdisc,
// [SPECIES_CORPHISH] = gMonFootprint_Corphish,
// [SPECIES_CRAWDAUNT] = gMonFootprint_Crawdaunt,
// [SPECIES_FEEBAS] = gMonFootprint_Feebas,
// [SPECIES_MILOTIC] = gMonFootprint_Milotic,
// [SPECIES_CARVANHA] = gMonFootprint_Carvanha,
// [SPECIES_SHARPEDO] = gMonFootprint_Sharpedo,
// [SPECIES_TRAPINCH] = gMonFootprint_Trapinch,
// [SPECIES_VIBRAVA] = gMonFootprint_Vibrava,
// [SPECIES_FLYGON] = gMonFootprint_Flygon,
// [SPECIES_MAKUHITA] = gMonFootprint_Makuhita,
// [SPECIES_HARIYAMA] = gMonFootprint_Hariyama,
// [SPECIES_ELECTRIKE] = gMonFootprint_Electrike,
// [SPECIES_MANECTRIC] = gMonFootprint_Manectric,
// [SPECIES_NUMEL] = gMonFootprint_Numel,
// [SPECIES_CAMERUPT] = gMonFootprint_Camerupt,
// [SPECIES_SPHEAL] = gMonFootprint_Spheal,
// [SPECIES_SEALEO] = gMonFootprint_Sealeo,
// [SPECIES_WALREIN] = gMonFootprint_Walrein,
// [SPECIES_CACNEA] = gMonFootprint_Cacnea,
// [SPECIES_CACTURNE] = gMonFootprint_Cacturne,
// [SPECIES_SNORUNT] = gMonFootprint_Snorunt,
// [SPECIES_GLALIE] = gMonFootprint_Glalie,
// [SPECIES_LUNATONE] = gMonFootprint_Lunatone,
// [SPECIES_SOLROCK] = gMonFootprint_Solrock,
// [SPECIES_AZURILL] = gMonFootprint_Azurill,
// [SPECIES_SPOINK] = gMonFootprint_Spoink,
// [SPECIES_GRUMPIG] = gMonFootprint_Grumpig,
// [SPECIES_PLUSLE] = gMonFootprint_Plusle,
// [SPECIES_MINUN] = gMonFootprint_Minun,
// [SPECIES_MAWILE] = gMonFootprint_Mawile,
// [SPECIES_MEDITITE] = gMonFootprint_Meditite,
// [SPECIES_MEDICHAM] = gMonFootprint_Medicham,
// [SPECIES_SWABLU] = gMonFootprint_Swablu,
// [SPECIES_ALTARIA] = gMonFootprint_Altaria,
// [SPECIES_WYNAUT] = gMonFootprint_Wynaut,
// [SPECIES_DUSKULL] = gMonFootprint_Duskull,
// [SPECIES_DUSCLOPS] = gMonFootprint_Dusclops,
// [SPECIES_ROSELIA] = gMonFootprint_Roselia,
// [SPECIES_SLAKOTH] = gMonFootprint_Slakoth,
// [SPECIES_VIGOROTH] = gMonFootprint_Vigoroth,
// [SPECIES_SLAKING] = gMonFootprint_Slaking,
// [SPECIES_GULPIN] = gMonFootprint_Gulpin,
// [SPECIES_SWALOT] = gMonFootprint_Swalot,
// [SPECIES_TROPIUS] = gMonFootprint_Tropius,
// [SPECIES_WHISMUR] = gMonFootprint_Whismur,
// [SPECIES_LOUDRED] = gMonFootprint_Loudred,
// [SPECIES_EXPLOUD] = gMonFootprint_Exploud,
// [SPECIES_CLAMPERL] = gMonFootprint_Clamperl,
// [SPECIES_HUNTAIL] = gMonFootprint_Huntail,
// [SPECIES_GOREBYSS] = gMonFootprint_Gorebyss,
// [SPECIES_ABSOL] = gMonFootprint_Absol,
// [SPECIES_SHUPPET] = gMonFootprint_Shuppet,
// [SPECIES_BANETTE] = gMonFootprint_Banette,
// [SPECIES_SEVIPER] = gMonFootprint_Seviper,
// [SPECIES_ZANGOOSE] = gMonFootprint_Zangoose,
// [SPECIES_RELICANTH] = gMonFootprint_Relicanth,
// [SPECIES_ARON] = gMonFootprint_Aron,
// [SPECIES_LAIRON] = gMonFootprint_Lairon,
// [SPECIES_AGGRON] = gMonFootprint_Aggron,
// [SPECIES_CASTFORM] = gMonFootprint_Castform,
// [SPECIES_VOLBEAT] = gMonFootprint_Volbeat,
// [SPECIES_ILLUMISE] = gMonFootprint_Illumise,
// [SPECIES_LILEEP] = gMonFootprint_Lileep,
// [SPECIES_CRADILY] = gMonFootprint_Cradily,
// [SPECIES_ANORITH] = gMonFootprint_Anorith,
// [SPECIES_ARMALDO] = gMonFootprint_Armaldo,
// [SPECIES_RALTS] = gMonFootprint_Ralts,
// [SPECIES_KIRLIA] = gMonFootprint_Kirlia,
// [SPECIES_GARDEVOIR] = gMonFootprint_Gardevoir,
// [SPECIES_BAGON] = gMonFootprint_Bagon,
// [SPECIES_SHELGON] = gMonFootprint_Shelgon,
// [SPECIES_SALAMENCE] = gMonFootprint_Salamence,
// [SPECIES_BELDUM] = gMonFootprint_Beldum,
// [SPECIES_METANG] = gMonFootprint_Metang,
// [SPECIES_METAGROSS] = gMonFootprint_Metagross,
// [SPECIES_REGIROCK] = gMonFootprint_Regirock,
// [SPECIES_REGICE] = gMonFootprint_Regice,
// [SPECIES_REGISTEEL] = gMonFootprint_Registeel,
// [SPECIES_KYOGRE] = gMonFootprint_Kyogre,
// [SPECIES_GROUDON] = gMonFootprint_Groudon,
// [SPECIES_RAYQUAZA] = gMonFootprint_Rayquaza,
// [SPECIES_LATIAS] = gMonFootprint_Latias,
// [SPECIES_LATIOS] = gMonFootprint_Latios,
// [SPECIES_JIRACHI] = gMonFootprint_Jirachi,
// [SPECIES_DEOXYS] = gMonFootprint_Deoxys,
// [SPECIES_CHIMECHO] = gMonFootprint_Chimecho,
// [SPECIES_EGG] = gMonFootprint_Bulbasaur,
// };

File diff suppressed because it is too large Load Diff

View File

@ -1,443 +0,0 @@
// const struct CompressedSpriteSheet gMonFrontPicTable[] =
// {
// SPECIES_SPRITE(NONE, gMonFrontPic_CircledQuestionMark),
// SPECIES_SPRITE(BULBASAUR, gMonFrontPic_Bulbasaur),
// SPECIES_SPRITE(IVYSAUR, gMonFrontPic_Ivysaur),
// SPECIES_SPRITE(VENUSAUR, gMonFrontPic_Venusaur),
// SPECIES_SPRITE(CHARMANDER, gMonFrontPic_Charmander),
// SPECIES_SPRITE(CHARMELEON, gMonFrontPic_Charmeleon),
// SPECIES_SPRITE(CHARIZARD, gMonFrontPic_Charizard),
// SPECIES_SPRITE(SQUIRTLE, gMonFrontPic_Squirtle),
// SPECIES_SPRITE(WARTORTLE, gMonFrontPic_Wartortle),
// SPECIES_SPRITE(BLASTOISE, gMonFrontPic_Blastoise),
// SPECIES_SPRITE(CATERPIE, gMonFrontPic_Caterpie),
// SPECIES_SPRITE(METAPOD, gMonFrontPic_Metapod),
// SPECIES_SPRITE(BUTTERFREE, gMonFrontPic_Butterfree),
// SPECIES_SPRITE(WEEDLE, gMonFrontPic_Weedle),
// SPECIES_SPRITE(KAKUNA, gMonFrontPic_Kakuna),
// SPECIES_SPRITE(BEEDRILL, gMonFrontPic_Beedrill),
// SPECIES_SPRITE(PIDGEY, gMonFrontPic_Pidgey),
// SPECIES_SPRITE(PIDGEOTTO, gMonFrontPic_Pidgeotto),
// SPECIES_SPRITE(PIDGEOT, gMonFrontPic_Pidgeot),
// SPECIES_SPRITE(RATTATA, gMonFrontPic_Rattata),
// SPECIES_SPRITE(RATICATE, gMonFrontPic_Raticate),
// SPECIES_SPRITE(SPEAROW, gMonFrontPic_Spearow),
// SPECIES_SPRITE(FEAROW, gMonFrontPic_Fearow),
// SPECIES_SPRITE(EKANS, gMonFrontPic_Ekans),
// SPECIES_SPRITE(ARBOK, gMonFrontPic_Arbok),
// SPECIES_SPRITE(PIKACHU, gMonFrontPic_Pikachu),
// SPECIES_SPRITE(RAICHU, gMonFrontPic_Raichu),
// SPECIES_SPRITE(SANDSHREW, gMonFrontPic_Sandshrew),
// SPECIES_SPRITE(SANDSLASH, gMonFrontPic_Sandslash),
// SPECIES_SPRITE(NIDORAN_F, gMonFrontPic_NidoranF),
// SPECIES_SPRITE(NIDORINA, gMonFrontPic_Nidorina),
// SPECIES_SPRITE(NIDOQUEEN, gMonFrontPic_Nidoqueen),
// SPECIES_SPRITE(NIDORAN_M, gMonFrontPic_NidoranM),
// SPECIES_SPRITE(NIDORINO, gMonFrontPic_Nidorino),
// SPECIES_SPRITE(NIDOKING, gMonFrontPic_Nidoking),
// SPECIES_SPRITE(CLEFAIRY, gMonFrontPic_Clefairy),
// SPECIES_SPRITE(CLEFABLE, gMonFrontPic_Clefable),
// SPECIES_SPRITE(VULPIX, gMonFrontPic_Vulpix),
// SPECIES_SPRITE(NINETALES, gMonFrontPic_Ninetales),
// SPECIES_SPRITE(JIGGLYPUFF, gMonFrontPic_Jigglypuff),
// SPECIES_SPRITE(WIGGLYTUFF, gMonFrontPic_Wigglytuff),
// SPECIES_SPRITE(ZUBAT, gMonFrontPic_Zubat),
// SPECIES_SPRITE(GOLBAT, gMonFrontPic_Golbat),
// SPECIES_SPRITE(ODDISH, gMonFrontPic_Oddish),
// SPECIES_SPRITE(GLOOM, gMonFrontPic_Gloom),
// SPECIES_SPRITE(VILEPLUME, gMonFrontPic_Vileplume),
// SPECIES_SPRITE(PARAS, gMonFrontPic_Paras),
// SPECIES_SPRITE(PARASECT, gMonFrontPic_Parasect),
// SPECIES_SPRITE(VENONAT, gMonFrontPic_Venonat),
// SPECIES_SPRITE(VENOMOTH, gMonFrontPic_Venomoth),
// SPECIES_SPRITE(DIGLETT, gMonFrontPic_Diglett),
// SPECIES_SPRITE(DUGTRIO, gMonFrontPic_Dugtrio),
// SPECIES_SPRITE(MEOWTH, gMonFrontPic_Meowth),
// SPECIES_SPRITE(PERSIAN, gMonFrontPic_Persian),
// SPECIES_SPRITE(PSYDUCK, gMonFrontPic_Psyduck),
// SPECIES_SPRITE(GOLDUCK, gMonFrontPic_Golduck),
// SPECIES_SPRITE(MANKEY, gMonFrontPic_Mankey),
// SPECIES_SPRITE(PRIMEAPE, gMonFrontPic_Primeape),
// SPECIES_SPRITE(GROWLITHE, gMonFrontPic_Growlithe),
// SPECIES_SPRITE(ARCANINE, gMonFrontPic_Arcanine),
// SPECIES_SPRITE(POLIWAG, gMonFrontPic_Poliwag),
// SPECIES_SPRITE(POLIWHIRL, gMonFrontPic_Poliwhirl),
// SPECIES_SPRITE(POLIWRATH, gMonFrontPic_Poliwrath),
// SPECIES_SPRITE(ABRA, gMonFrontPic_Abra),
// SPECIES_SPRITE(KADABRA, gMonFrontPic_Kadabra),
// SPECIES_SPRITE(ALAKAZAM, gMonFrontPic_Alakazam),
// SPECIES_SPRITE(MACHOP, gMonFrontPic_Machop),
// SPECIES_SPRITE(MACHOKE, gMonFrontPic_Machoke),
// SPECIES_SPRITE(MACHAMP, gMonFrontPic_Machamp),
// SPECIES_SPRITE(BELLSPROUT, gMonFrontPic_Bellsprout),
// SPECIES_SPRITE(WEEPINBELL, gMonFrontPic_Weepinbell),
// SPECIES_SPRITE(VICTREEBEL, gMonFrontPic_Victreebel),
// SPECIES_SPRITE(TENTACOOL, gMonFrontPic_Tentacool),
// SPECIES_SPRITE(TENTACRUEL, gMonFrontPic_Tentacruel),
// SPECIES_SPRITE(GEODUDE, gMonFrontPic_Geodude),
// SPECIES_SPRITE(GRAVELER, gMonFrontPic_Graveler),
// SPECIES_SPRITE(GOLEM, gMonFrontPic_Golem),
// SPECIES_SPRITE(PONYTA, gMonFrontPic_Ponyta),
// SPECIES_SPRITE(RAPIDASH, gMonFrontPic_Rapidash),
// SPECIES_SPRITE(SLOWPOKE, gMonFrontPic_Slowpoke),
// SPECIES_SPRITE(SLOWBRO, gMonFrontPic_Slowbro),
// SPECIES_SPRITE(MAGNEMITE, gMonFrontPic_Magnemite),
// SPECIES_SPRITE(MAGNETON, gMonFrontPic_Magneton),
// SPECIES_SPRITE(FARFETCHD, gMonFrontPic_Farfetchd),
// SPECIES_SPRITE(DODUO, gMonFrontPic_Doduo),
// SPECIES_SPRITE(DODRIO, gMonFrontPic_Dodrio),
// SPECIES_SPRITE(SEEL, gMonFrontPic_Seel),
// SPECIES_SPRITE(DEWGONG, gMonFrontPic_Dewgong),
// SPECIES_SPRITE(GRIMER, gMonFrontPic_Grimer),
// SPECIES_SPRITE(MUK, gMonFrontPic_Muk),
// SPECIES_SPRITE(SHELLDER, gMonFrontPic_Shellder),
// SPECIES_SPRITE(CLOYSTER, gMonFrontPic_Cloyster),
// SPECIES_SPRITE(GASTLY, gMonFrontPic_Gastly),
// SPECIES_SPRITE(HAUNTER, gMonFrontPic_Haunter),
// SPECIES_SPRITE(GENGAR, gMonFrontPic_Gengar),
// SPECIES_SPRITE(ONIX, gMonFrontPic_Onix),
// SPECIES_SPRITE(DROWZEE, gMonFrontPic_Drowzee),
// SPECIES_SPRITE(HYPNO, gMonFrontPic_Hypno),
// SPECIES_SPRITE(KRABBY, gMonFrontPic_Krabby),
// SPECIES_SPRITE(KINGLER, gMonFrontPic_Kingler),
// SPECIES_SPRITE(VOLTORB, gMonFrontPic_Voltorb),
// SPECIES_SPRITE(ELECTRODE, gMonFrontPic_Electrode),
// SPECIES_SPRITE(EXEGGCUTE, gMonFrontPic_Exeggcute),
// SPECIES_SPRITE(EXEGGUTOR, gMonFrontPic_Exeggutor),
// SPECIES_SPRITE(CUBONE, gMonFrontPic_Cubone),
// SPECIES_SPRITE(MAROWAK, gMonFrontPic_Marowak),
// SPECIES_SPRITE(HITMONLEE, gMonFrontPic_Hitmonlee),
// SPECIES_SPRITE(HITMONCHAN, gMonFrontPic_Hitmonchan),
// SPECIES_SPRITE(LICKITUNG, gMonFrontPic_Lickitung),
// SPECIES_SPRITE(KOFFING, gMonFrontPic_Koffing),
// SPECIES_SPRITE(WEEZING, gMonFrontPic_Weezing),
// SPECIES_SPRITE(RHYHORN, gMonFrontPic_Rhyhorn),
// SPECIES_SPRITE(RHYDON, gMonFrontPic_Rhydon),
// SPECIES_SPRITE(CHANSEY, gMonFrontPic_Chansey),
// SPECIES_SPRITE(TANGELA, gMonFrontPic_Tangela),
// SPECIES_SPRITE(KANGASKHAN, gMonFrontPic_Kangaskhan),
// SPECIES_SPRITE(HORSEA, gMonFrontPic_Horsea),
// SPECIES_SPRITE(SEADRA, gMonFrontPic_Seadra),
// SPECIES_SPRITE(GOLDEEN, gMonFrontPic_Goldeen),
// SPECIES_SPRITE(SEAKING, gMonFrontPic_Seaking),
// SPECIES_SPRITE(STARYU, gMonFrontPic_Staryu),
// SPECIES_SPRITE(STARMIE, gMonFrontPic_Starmie),
// SPECIES_SPRITE(MR_MIME, gMonFrontPic_Mrmime),
// SPECIES_SPRITE(SCYTHER, gMonFrontPic_Scyther),
// SPECIES_SPRITE(JYNX, gMonFrontPic_Jynx),
// SPECIES_SPRITE(ELECTABUZZ, gMonFrontPic_Electabuzz),
// SPECIES_SPRITE(MAGMAR, gMonFrontPic_Magmar),
// SPECIES_SPRITE(PINSIR, gMonFrontPic_Pinsir),
// SPECIES_SPRITE(TAUROS, gMonFrontPic_Tauros),
// SPECIES_SPRITE(MAGIKARP, gMonFrontPic_Magikarp),
// SPECIES_SPRITE(GYARADOS, gMonFrontPic_Gyarados),
// SPECIES_SPRITE(LAPRAS, gMonFrontPic_Lapras),
// SPECIES_SPRITE(DITTO, gMonFrontPic_Ditto),
// SPECIES_SPRITE(EEVEE, gMonFrontPic_Eevee),
// SPECIES_SPRITE(VAPOREON, gMonFrontPic_Vaporeon),
// SPECIES_SPRITE(JOLTEON, gMonFrontPic_Jolteon),
// SPECIES_SPRITE(FLAREON, gMonFrontPic_Flareon),
// SPECIES_SPRITE(PORYGON, gMonFrontPic_Porygon),
// SPECIES_SPRITE(OMANYTE, gMonFrontPic_Omanyte),
// SPECIES_SPRITE(OMASTAR, gMonFrontPic_Omastar),
// SPECIES_SPRITE(KABUTO, gMonFrontPic_Kabuto),
// SPECIES_SPRITE(KABUTOPS, gMonFrontPic_Kabutops),
// SPECIES_SPRITE(AERODACTYL, gMonFrontPic_Aerodactyl),
// SPECIES_SPRITE(SNORLAX, gMonFrontPic_Snorlax),
// SPECIES_SPRITE(ARTICUNO, gMonFrontPic_Articuno),
// SPECIES_SPRITE(ZAPDOS, gMonFrontPic_Zapdos),
// SPECIES_SPRITE(MOLTRES, gMonFrontPic_Moltres),
// SPECIES_SPRITE(DRATINI, gMonFrontPic_Dratini),
// SPECIES_SPRITE(DRAGONAIR, gMonFrontPic_Dragonair),
// SPECIES_SPRITE(DRAGONITE, gMonFrontPic_Dragonite),
// SPECIES_SPRITE(MEWTWO, gMonFrontPic_Mewtwo),
// SPECIES_SPRITE(MEW, gMonFrontPic_Mew),
// SPECIES_SPRITE(CHIKORITA, gMonFrontPic_Chikorita),
// SPECIES_SPRITE(BAYLEEF, gMonFrontPic_Bayleef),
// SPECIES_SPRITE(MEGANIUM, gMonFrontPic_Meganium),
// SPECIES_SPRITE(CYNDAQUIL, gMonFrontPic_Cyndaquil),
// SPECIES_SPRITE(QUILAVA, gMonFrontPic_Quilava),
// SPECIES_SPRITE(TYPHLOSION, gMonFrontPic_Typhlosion),
// SPECIES_SPRITE(TOTODILE, gMonFrontPic_Totodile),
// SPECIES_SPRITE(CROCONAW, gMonFrontPic_Croconaw),
// SPECIES_SPRITE(FERALIGATR, gMonFrontPic_Feraligatr),
// SPECIES_SPRITE(SENTRET, gMonFrontPic_Sentret),
// SPECIES_SPRITE(FURRET, gMonFrontPic_Furret),
// SPECIES_SPRITE(HOOTHOOT, gMonFrontPic_Hoothoot),
// SPECIES_SPRITE(NOCTOWL, gMonFrontPic_Noctowl),
// SPECIES_SPRITE(LEDYBA, gMonFrontPic_Ledyba),
// SPECIES_SPRITE(LEDIAN, gMonFrontPic_Ledian),
// SPECIES_SPRITE(SPINARAK, gMonFrontPic_Spinarak),
// SPECIES_SPRITE(ARIADOS, gMonFrontPic_Ariados),
// SPECIES_SPRITE(CROBAT, gMonFrontPic_Crobat),
// SPECIES_SPRITE(CHINCHOU, gMonFrontPic_Chinchou),
// SPECIES_SPRITE(LANTURN, gMonFrontPic_Lanturn),
// SPECIES_SPRITE(PICHU, gMonFrontPic_Pichu),
// SPECIES_SPRITE(CLEFFA, gMonFrontPic_Cleffa),
// SPECIES_SPRITE(IGGLYBUFF, gMonFrontPic_Igglybuff),
// SPECIES_SPRITE(TOGEPI, gMonFrontPic_Togepi),
// SPECIES_SPRITE(TOGETIC, gMonFrontPic_Togetic),
// SPECIES_SPRITE(NATU, gMonFrontPic_Natu),
// SPECIES_SPRITE(XATU, gMonFrontPic_Xatu),
// SPECIES_SPRITE(MAREEP, gMonFrontPic_Mareep),
// SPECIES_SPRITE(FLAAFFY, gMonFrontPic_Flaaffy),
// SPECIES_SPRITE(AMPHAROS, gMonFrontPic_Ampharos),
// SPECIES_SPRITE(BELLOSSOM, gMonFrontPic_Bellossom),
// SPECIES_SPRITE(MARILL, gMonFrontPic_Marill),
// SPECIES_SPRITE(AZUMARILL, gMonFrontPic_Azumarill),
// SPECIES_SPRITE(SUDOWOODO, gMonFrontPic_Sudowoodo),
// SPECIES_SPRITE(POLITOED, gMonFrontPic_Politoed),
// SPECIES_SPRITE(HOPPIP, gMonFrontPic_Hoppip),
// SPECIES_SPRITE(SKIPLOOM, gMonFrontPic_Skiploom),
// SPECIES_SPRITE(JUMPLUFF, gMonFrontPic_Jumpluff),
// SPECIES_SPRITE(AIPOM, gMonFrontPic_Aipom),
// SPECIES_SPRITE(SUNKERN, gMonFrontPic_Sunkern),
// SPECIES_SPRITE(SUNFLORA, gMonFrontPic_Sunflora),
// SPECIES_SPRITE(YANMA, gMonFrontPic_Yanma),
// SPECIES_SPRITE(WOOPER, gMonFrontPic_Wooper),
// SPECIES_SPRITE(QUAGSIRE, gMonFrontPic_Quagsire),
// SPECIES_SPRITE(ESPEON, gMonFrontPic_Espeon),
// SPECIES_SPRITE(UMBREON, gMonFrontPic_Umbreon),
// SPECIES_SPRITE(MURKROW, gMonFrontPic_Murkrow),
// SPECIES_SPRITE(SLOWKING, gMonFrontPic_Slowking),
// SPECIES_SPRITE(MISDREAVUS, gMonFrontPic_Misdreavus),
// SPECIES_SPRITE(UNOWN, gMonFrontPic_UnownA),
// SPECIES_SPRITE(WOBBUFFET, gMonFrontPic_Wobbuffet),
// SPECIES_SPRITE(GIRAFARIG, gMonFrontPic_Girafarig),
// SPECIES_SPRITE(PINECO, gMonFrontPic_Pineco),
// SPECIES_SPRITE(FORRETRESS, gMonFrontPic_Forretress),
// SPECIES_SPRITE(DUNSPARCE, gMonFrontPic_Dunsparce),
// SPECIES_SPRITE(GLIGAR, gMonFrontPic_Gligar),
// SPECIES_SPRITE(STEELIX, gMonFrontPic_Steelix),
// SPECIES_SPRITE(SNUBBULL, gMonFrontPic_Snubbull),
// SPECIES_SPRITE(GRANBULL, gMonFrontPic_Granbull),
// SPECIES_SPRITE(QWILFISH, gMonFrontPic_Qwilfish),
// SPECIES_SPRITE(SCIZOR, gMonFrontPic_Scizor),
// SPECIES_SPRITE(SHUCKLE, gMonFrontPic_Shuckle),
// SPECIES_SPRITE(HERACROSS, gMonFrontPic_Heracross),
// SPECIES_SPRITE(SNEASEL, gMonFrontPic_Sneasel),
// SPECIES_SPRITE(TEDDIURSA, gMonFrontPic_Teddiursa),
// SPECIES_SPRITE(URSARING, gMonFrontPic_Ursaring),
// SPECIES_SPRITE(SLUGMA, gMonFrontPic_Slugma),
// SPECIES_SPRITE(MAGCARGO, gMonFrontPic_Magcargo),
// SPECIES_SPRITE(SWINUB, gMonFrontPic_Swinub),
// SPECIES_SPRITE(PILOSWINE, gMonFrontPic_Piloswine),
// SPECIES_SPRITE(CORSOLA, gMonFrontPic_Corsola),
// SPECIES_SPRITE(REMORAID, gMonFrontPic_Remoraid),
// SPECIES_SPRITE(OCTILLERY, gMonFrontPic_Octillery),
// SPECIES_SPRITE(DELIBIRD, gMonFrontPic_Delibird),
// SPECIES_SPRITE(MANTINE, gMonFrontPic_Mantine),
// SPECIES_SPRITE(SKARMORY, gMonFrontPic_Skarmory),
// SPECIES_SPRITE(HOUNDOUR, gMonFrontPic_Houndour),
// SPECIES_SPRITE(HOUNDOOM, gMonFrontPic_Houndoom),
// SPECIES_SPRITE(KINGDRA, gMonFrontPic_Kingdra),
// SPECIES_SPRITE(PHANPY, gMonFrontPic_Phanpy),
// SPECIES_SPRITE(DONPHAN, gMonFrontPic_Donphan),
// SPECIES_SPRITE(PORYGON2, gMonFrontPic_Porygon2),
// SPECIES_SPRITE(STANTLER, gMonFrontPic_Stantler),
// SPECIES_SPRITE(SMEARGLE, gMonFrontPic_Smeargle),
// SPECIES_SPRITE(TYROGUE, gMonFrontPic_Tyrogue),
// SPECIES_SPRITE(HITMONTOP, gMonFrontPic_Hitmontop),
// SPECIES_SPRITE(SMOOCHUM, gMonFrontPic_Smoochum),
// SPECIES_SPRITE(ELEKID, gMonFrontPic_Elekid),
// SPECIES_SPRITE(MAGBY, gMonFrontPic_Magby),
// SPECIES_SPRITE(MILTANK, gMonFrontPic_Miltank),
// SPECIES_SPRITE(BLISSEY, gMonFrontPic_Blissey),
// SPECIES_SPRITE(RAIKOU, gMonFrontPic_Raikou),
// SPECIES_SPRITE(ENTEI, gMonFrontPic_Entei),
// SPECIES_SPRITE(SUICUNE, gMonFrontPic_Suicune),
// SPECIES_SPRITE(LARVITAR, gMonFrontPic_Larvitar),
// SPECIES_SPRITE(PUPITAR, gMonFrontPic_Pupitar),
// SPECIES_SPRITE(TYRANITAR, gMonFrontPic_Tyranitar),
// SPECIES_SPRITE(LUGIA, gMonFrontPic_Lugia),
// SPECIES_SPRITE(HO_OH, gMonFrontPic_HoOh),
// SPECIES_SPRITE(CELEBI, gMonFrontPic_Celebi),
// SPECIES_SPRITE(OLD_UNOWN_B, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_C, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_D, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_E, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_F, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_G, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_H, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_I, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_J, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_K, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_L, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_M, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_N, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_O, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_P, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Q, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_R, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_S, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_T, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_U, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_V, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_W, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_X, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Y, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Z, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(TREECKO, gMonFrontPic_Treecko),
// SPECIES_SPRITE(GROVYLE, gMonFrontPic_Grovyle),
// SPECIES_SPRITE(SCEPTILE, gMonFrontPic_Sceptile),
// SPECIES_SPRITE(TORCHIC, gMonFrontPic_Torchic),
// SPECIES_SPRITE(COMBUSKEN, gMonFrontPic_Combusken),
// SPECIES_SPRITE(BLAZIKEN, gMonFrontPic_Blaziken),
// SPECIES_SPRITE(MUDKIP, gMonFrontPic_Mudkip),
// SPECIES_SPRITE(MARSHTOMP, gMonFrontPic_Marshtomp),
// SPECIES_SPRITE(SWAMPERT, gMonFrontPic_Swampert),
// SPECIES_SPRITE(POOCHYENA, gMonFrontPic_Poochyena),
// SPECIES_SPRITE(MIGHTYENA, gMonFrontPic_Mightyena),
// SPECIES_SPRITE(ZIGZAGOON, gMonFrontPic_Zigzagoon),
// SPECIES_SPRITE(LINOONE, gMonFrontPic_Linoone),
// SPECIES_SPRITE(WURMPLE, gMonFrontPic_Wurmple),
// SPECIES_SPRITE(SILCOON, gMonFrontPic_Silcoon),
// SPECIES_SPRITE(BEAUTIFLY, gMonFrontPic_Beautifly),
// SPECIES_SPRITE(CASCOON, gMonFrontPic_Cascoon),
// SPECIES_SPRITE(DUSTOX, gMonFrontPic_Dustox),
// SPECIES_SPRITE(LOTAD, gMonFrontPic_Lotad),
// SPECIES_SPRITE(LOMBRE, gMonFrontPic_Lombre),
// SPECIES_SPRITE(LUDICOLO, gMonFrontPic_Ludicolo),
// SPECIES_SPRITE(SEEDOT, gMonFrontPic_Seedot),
// SPECIES_SPRITE(NUZLEAF, gMonFrontPic_Nuzleaf),
// SPECIES_SPRITE(SHIFTRY, gMonFrontPic_Shiftry),
// SPECIES_SPRITE(NINCADA, gMonFrontPic_Nincada),
// SPECIES_SPRITE(NINJASK, gMonFrontPic_Ninjask),
// SPECIES_SPRITE(SHEDINJA, gMonFrontPic_Shedinja),
// SPECIES_SPRITE(TAILLOW, gMonFrontPic_Taillow),
// SPECIES_SPRITE(SWELLOW, gMonFrontPic_Swellow),
// SPECIES_SPRITE(SHROOMISH, gMonFrontPic_Shroomish),
// SPECIES_SPRITE(BRELOOM, gMonFrontPic_Breloom),
// SPECIES_SPRITE(SPINDA, gMonFrontPic_Spinda),
// SPECIES_SPRITE(WINGULL, gMonFrontPic_Wingull),
// SPECIES_SPRITE(PELIPPER, gMonFrontPic_Pelipper),
// SPECIES_SPRITE(SURSKIT, gMonFrontPic_Surskit),
// SPECIES_SPRITE(MASQUERAIN, gMonFrontPic_Masquerain),
// SPECIES_SPRITE(WAILMER, gMonFrontPic_Wailmer),
// SPECIES_SPRITE(WAILORD, gMonFrontPic_Wailord),
// SPECIES_SPRITE(SKITTY, gMonFrontPic_Skitty),
// SPECIES_SPRITE(DELCATTY, gMonFrontPic_Delcatty),
// SPECIES_SPRITE(KECLEON, gMonFrontPic_Kecleon),
// SPECIES_SPRITE(BALTOY, gMonFrontPic_Baltoy),
// SPECIES_SPRITE(CLAYDOL, gMonFrontPic_Claydol),
// SPECIES_SPRITE(NOSEPASS, gMonFrontPic_Nosepass),
// SPECIES_SPRITE(TORKOAL, gMonFrontPic_Torkoal),
// SPECIES_SPRITE(SABLEYE, gMonFrontPic_Sableye),
// SPECIES_SPRITE(BARBOACH, gMonFrontPic_Barboach),
// SPECIES_SPRITE(WHISCASH, gMonFrontPic_Whiscash),
// SPECIES_SPRITE(LUVDISC, gMonFrontPic_Luvdisc),
// SPECIES_SPRITE(CORPHISH, gMonFrontPic_Corphish),
// SPECIES_SPRITE(CRAWDAUNT, gMonFrontPic_Crawdaunt),
// SPECIES_SPRITE(FEEBAS, gMonFrontPic_Feebas),
// SPECIES_SPRITE(MILOTIC, gMonFrontPic_Milotic),
// SPECIES_SPRITE(CARVANHA, gMonFrontPic_Carvanha),
// SPECIES_SPRITE(SHARPEDO, gMonFrontPic_Sharpedo),
// SPECIES_SPRITE(TRAPINCH, gMonFrontPic_Trapinch),
// SPECIES_SPRITE(VIBRAVA, gMonFrontPic_Vibrava),
// SPECIES_SPRITE(FLYGON, gMonFrontPic_Flygon),
// SPECIES_SPRITE(MAKUHITA, gMonFrontPic_Makuhita),
// SPECIES_SPRITE(HARIYAMA, gMonFrontPic_Hariyama),
// SPECIES_SPRITE(ELECTRIKE, gMonFrontPic_Electrike),
// SPECIES_SPRITE(MANECTRIC, gMonFrontPic_Manectric),
// SPECIES_SPRITE(NUMEL, gMonFrontPic_Numel),
// SPECIES_SPRITE(CAMERUPT, gMonFrontPic_Camerupt),
// SPECIES_SPRITE(SPHEAL, gMonFrontPic_Spheal),
// SPECIES_SPRITE(SEALEO, gMonFrontPic_Sealeo),
// SPECIES_SPRITE(WALREIN, gMonFrontPic_Walrein),
// SPECIES_SPRITE(CACNEA, gMonFrontPic_Cacnea),
// SPECIES_SPRITE(CACTURNE, gMonFrontPic_Cacturne),
// SPECIES_SPRITE(SNORUNT, gMonFrontPic_Snorunt),
// SPECIES_SPRITE(GLALIE, gMonFrontPic_Glalie),
// SPECIES_SPRITE(LUNATONE, gMonFrontPic_Lunatone),
// SPECIES_SPRITE(SOLROCK, gMonFrontPic_Solrock),
// SPECIES_SPRITE(AZURILL, gMonFrontPic_Azurill),
// SPECIES_SPRITE(SPOINK, gMonFrontPic_Spoink),
// SPECIES_SPRITE(GRUMPIG, gMonFrontPic_Grumpig),
// SPECIES_SPRITE(PLUSLE, gMonFrontPic_Plusle),
// SPECIES_SPRITE(MINUN, gMonFrontPic_Minun),
// SPECIES_SPRITE(MAWILE, gMonFrontPic_Mawile),
// SPECIES_SPRITE(MEDITITE, gMonFrontPic_Meditite),
// SPECIES_SPRITE(MEDICHAM, gMonFrontPic_Medicham),
// SPECIES_SPRITE(SWABLU, gMonFrontPic_Swablu),
// SPECIES_SPRITE(ALTARIA, gMonFrontPic_Altaria),
// SPECIES_SPRITE(WYNAUT, gMonFrontPic_Wynaut),
// SPECIES_SPRITE(DUSKULL, gMonFrontPic_Duskull),
// SPECIES_SPRITE(DUSCLOPS, gMonFrontPic_Dusclops),
// SPECIES_SPRITE(ROSELIA, gMonFrontPic_Roselia),
// SPECIES_SPRITE(SLAKOTH, gMonFrontPic_Slakoth),
// SPECIES_SPRITE(VIGOROTH, gMonFrontPic_Vigoroth),
// SPECIES_SPRITE(SLAKING, gMonFrontPic_Slaking),
// SPECIES_SPRITE(GULPIN, gMonFrontPic_Gulpin),
// SPECIES_SPRITE(SWALOT, gMonFrontPic_Swalot),
// SPECIES_SPRITE(TROPIUS, gMonFrontPic_Tropius),
// SPECIES_SPRITE(WHISMUR, gMonFrontPic_Whismur),
// SPECIES_SPRITE(LOUDRED, gMonFrontPic_Loudred),
// SPECIES_SPRITE(EXPLOUD, gMonFrontPic_Exploud),
// SPECIES_SPRITE(CLAMPERL, gMonFrontPic_Clamperl),
// SPECIES_SPRITE(HUNTAIL, gMonFrontPic_Huntail),
// SPECIES_SPRITE(GOREBYSS, gMonFrontPic_Gorebyss),
// SPECIES_SPRITE(ABSOL, gMonFrontPic_Absol),
// SPECIES_SPRITE(SHUPPET, gMonFrontPic_Shuppet),
// SPECIES_SPRITE(BANETTE, gMonFrontPic_Banette),
// SPECIES_SPRITE(SEVIPER, gMonFrontPic_Seviper),
// SPECIES_SPRITE(ZANGOOSE, gMonFrontPic_Zangoose),
// SPECIES_SPRITE(RELICANTH, gMonFrontPic_Relicanth),
// SPECIES_SPRITE(ARON, gMonFrontPic_Aron),
// SPECIES_SPRITE(LAIRON, gMonFrontPic_Lairon),
// SPECIES_SPRITE(AGGRON, gMonFrontPic_Aggron),
// SPECIES_SPRITE(CASTFORM, gMonFrontPic_Castform),
// SPECIES_SPRITE(VOLBEAT, gMonFrontPic_Volbeat),
// SPECIES_SPRITE(ILLUMISE, gMonFrontPic_Illumise),
// SPECIES_SPRITE(LILEEP, gMonFrontPic_Lileep),
// SPECIES_SPRITE(CRADILY, gMonFrontPic_Cradily),
// SPECIES_SPRITE(ANORITH, gMonFrontPic_Anorith),
// SPECIES_SPRITE(ARMALDO, gMonFrontPic_Armaldo),
// SPECIES_SPRITE(RALTS, gMonFrontPic_Ralts),
// SPECIES_SPRITE(KIRLIA, gMonFrontPic_Kirlia),
// SPECIES_SPRITE(GARDEVOIR, gMonFrontPic_Gardevoir),
// SPECIES_SPRITE(BAGON, gMonFrontPic_Bagon),
// SPECIES_SPRITE(SHELGON, gMonFrontPic_Shelgon),
// SPECIES_SPRITE(SALAMENCE, gMonFrontPic_Salamence),
// SPECIES_SPRITE(BELDUM, gMonFrontPic_Beldum),
// SPECIES_SPRITE(METANG, gMonFrontPic_Metang),
// SPECIES_SPRITE(METAGROSS, gMonFrontPic_Metagross),
// SPECIES_SPRITE(REGIROCK, gMonFrontPic_Regirock),
// SPECIES_SPRITE(REGICE, gMonFrontPic_Regice),
// SPECIES_SPRITE(REGISTEEL, gMonFrontPic_Registeel),
// SPECIES_SPRITE(KYOGRE, gMonFrontPic_Kyogre),
// SPECIES_SPRITE(GROUDON, gMonFrontPic_Groudon),
// SPECIES_SPRITE(RAYQUAZA, gMonFrontPic_Rayquaza),
// SPECIES_SPRITE(LATIAS, gMonFrontPic_Latias),
// SPECIES_SPRITE(LATIOS, gMonFrontPic_Latios),
// SPECIES_SPRITE(JIRACHI, gMonFrontPic_Jirachi),
// SPECIES_SPRITE(DEOXYS, gMonFrontPic_Deoxys),
// SPECIES_SPRITE(CHIMECHO, gMonFrontPic_Chimecho),
// SPECIES_SPRITE(EGG, gMonFrontPic_Egg),
// SPECIES_SPRITE(UNOWN_B, gMonFrontPic_UnownB),
// SPECIES_SPRITE(UNOWN_C, gMonFrontPic_UnownC),
// SPECIES_SPRITE(UNOWN_D, gMonFrontPic_UnownD),
// SPECIES_SPRITE(UNOWN_E, gMonFrontPic_UnownE),
// SPECIES_SPRITE(UNOWN_F, gMonFrontPic_UnownF),
// SPECIES_SPRITE(UNOWN_G, gMonFrontPic_UnownG),
// SPECIES_SPRITE(UNOWN_H, gMonFrontPic_UnownH),
// SPECIES_SPRITE(UNOWN_I, gMonFrontPic_UnownI),
// SPECIES_SPRITE(UNOWN_J, gMonFrontPic_UnownJ),
// SPECIES_SPRITE(UNOWN_K, gMonFrontPic_UnownK),
// SPECIES_SPRITE(UNOWN_L, gMonFrontPic_UnownL),
// SPECIES_SPRITE(UNOWN_M, gMonFrontPic_UnownM),
// SPECIES_SPRITE(UNOWN_N, gMonFrontPic_UnownN),
// SPECIES_SPRITE(UNOWN_O, gMonFrontPic_UnownO),
// SPECIES_SPRITE(UNOWN_P, gMonFrontPic_UnownP),
// SPECIES_SPRITE(UNOWN_Q, gMonFrontPic_UnownQ),
// SPECIES_SPRITE(UNOWN_R, gMonFrontPic_UnownR),
// SPECIES_SPRITE(UNOWN_S, gMonFrontPic_UnownS),
// SPECIES_SPRITE(UNOWN_T, gMonFrontPic_UnownT),
// SPECIES_SPRITE(UNOWN_U, gMonFrontPic_UnownU),
// SPECIES_SPRITE(UNOWN_V, gMonFrontPic_UnownV),
// SPECIES_SPRITE(UNOWN_W, gMonFrontPic_UnownW),
// SPECIES_SPRITE(UNOWN_X, gMonFrontPic_UnownX),
// SPECIES_SPRITE(UNOWN_Y, gMonFrontPic_UnownY),
// SPECIES_SPRITE(UNOWN_Z, gMonFrontPic_UnownZ),
// SPECIES_SPRITE(UNOWN_EMARK, gMonFrontPic_UnownExclamationMark),
// SPECIES_SPRITE(UNOWN_QMARK, gMonFrontPic_UnownQuestionMark),
// };

View File

@ -1,443 +0,0 @@
// const struct CompressedSpritePalette gMonPaletteTable[] =
// {
// SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark),
// SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur),
// SPECIES_PAL(IVYSAUR, gMonPalette_Ivysaur),
// SPECIES_PAL(VENUSAUR, gMonPalette_Venusaur),
// SPECIES_PAL(CHARMANDER, gMonPalette_Charmander),
// SPECIES_PAL(CHARMELEON, gMonPalette_Charmeleon),
// SPECIES_PAL(CHARIZARD, gMonPalette_Charizard),
// SPECIES_PAL(SQUIRTLE, gMonPalette_Squirtle),
// SPECIES_PAL(WARTORTLE, gMonPalette_Wartortle),
// SPECIES_PAL(BLASTOISE, gMonPalette_Blastoise),
// SPECIES_PAL(CATERPIE, gMonPalette_Caterpie),
// SPECIES_PAL(METAPOD, gMonPalette_Metapod),
// SPECIES_PAL(BUTTERFREE, gMonPalette_Butterfree),
// SPECIES_PAL(WEEDLE, gMonPalette_Weedle),
// SPECIES_PAL(KAKUNA, gMonPalette_Kakuna),
// SPECIES_PAL(BEEDRILL, gMonPalette_Beedrill),
// SPECIES_PAL(PIDGEY, gMonPalette_Pidgey),
// SPECIES_PAL(PIDGEOTTO, gMonPalette_Pidgeotto),
// SPECIES_PAL(PIDGEOT, gMonPalette_Pidgeot),
// SPECIES_PAL(RATTATA, gMonPalette_Rattata),
// SPECIES_PAL(RATICATE, gMonPalette_Raticate),
// SPECIES_PAL(SPEAROW, gMonPalette_Spearow),
// SPECIES_PAL(FEAROW, gMonPalette_Fearow),
// SPECIES_PAL(EKANS, gMonPalette_Ekans),
// SPECIES_PAL(ARBOK, gMonPalette_Arbok),
// SPECIES_PAL(PIKACHU, gMonPalette_Pikachu),
// SPECIES_PAL(RAICHU, gMonPalette_Raichu),
// SPECIES_PAL(SANDSHREW, gMonPalette_Sandshrew),
// SPECIES_PAL(SANDSLASH, gMonPalette_Sandslash),
// SPECIES_PAL(NIDORAN_F, gMonPalette_NidoranF),
// SPECIES_PAL(NIDORINA, gMonPalette_Nidorina),
// SPECIES_PAL(NIDOQUEEN, gMonPalette_Nidoqueen),
// SPECIES_PAL(NIDORAN_M, gMonPalette_NidoranM),
// SPECIES_PAL(NIDORINO, gMonPalette_Nidorino),
// SPECIES_PAL(NIDOKING, gMonPalette_Nidoking),
// SPECIES_PAL(CLEFAIRY, gMonPalette_Clefairy),
// SPECIES_PAL(CLEFABLE, gMonPalette_Clefable),
// SPECIES_PAL(VULPIX, gMonPalette_Vulpix),
// SPECIES_PAL(NINETALES, gMonPalette_Ninetales),
// SPECIES_PAL(JIGGLYPUFF, gMonPalette_Jigglypuff),
// SPECIES_PAL(WIGGLYTUFF, gMonPalette_Wigglytuff),
// SPECIES_PAL(ZUBAT, gMonPalette_Zubat),
// SPECIES_PAL(GOLBAT, gMonPalette_Golbat),
// SPECIES_PAL(ODDISH, gMonPalette_Oddish),
// SPECIES_PAL(GLOOM, gMonPalette_Gloom),
// SPECIES_PAL(VILEPLUME, gMonPalette_Vileplume),
// SPECIES_PAL(PARAS, gMonPalette_Paras),
// SPECIES_PAL(PARASECT, gMonPalette_Parasect),
// SPECIES_PAL(VENONAT, gMonPalette_Venonat),
// SPECIES_PAL(VENOMOTH, gMonPalette_Venomoth),
// SPECIES_PAL(DIGLETT, gMonPalette_Diglett),
// SPECIES_PAL(DUGTRIO, gMonPalette_Dugtrio),
// SPECIES_PAL(MEOWTH, gMonPalette_Meowth),
// SPECIES_PAL(PERSIAN, gMonPalette_Persian),
// SPECIES_PAL(PSYDUCK, gMonPalette_Psyduck),
// SPECIES_PAL(GOLDUCK, gMonPalette_Golduck),
// SPECIES_PAL(MANKEY, gMonPalette_Mankey),
// SPECIES_PAL(PRIMEAPE, gMonPalette_Primeape),
// SPECIES_PAL(GROWLITHE, gMonPalette_Growlithe),
// SPECIES_PAL(ARCANINE, gMonPalette_Arcanine),
// SPECIES_PAL(POLIWAG, gMonPalette_Poliwag),
// SPECIES_PAL(POLIWHIRL, gMonPalette_Poliwhirl),
// SPECIES_PAL(POLIWRATH, gMonPalette_Poliwrath),
// SPECIES_PAL(ABRA, gMonPalette_Abra),
// SPECIES_PAL(KADABRA, gMonPalette_Kadabra),
// SPECIES_PAL(ALAKAZAM, gMonPalette_Alakazam),
// SPECIES_PAL(MACHOP, gMonPalette_Machop),
// SPECIES_PAL(MACHOKE, gMonPalette_Machoke),
// SPECIES_PAL(MACHAMP, gMonPalette_Machamp),
// SPECIES_PAL(BELLSPROUT, gMonPalette_Bellsprout),
// SPECIES_PAL(WEEPINBELL, gMonPalette_Weepinbell),
// SPECIES_PAL(VICTREEBEL, gMonPalette_Victreebel),
// SPECIES_PAL(TENTACOOL, gMonPalette_Tentacool),
// SPECIES_PAL(TENTACRUEL, gMonPalette_Tentacruel),
// SPECIES_PAL(GEODUDE, gMonPalette_Geodude),
// SPECIES_PAL(GRAVELER, gMonPalette_Graveler),
// SPECIES_PAL(GOLEM, gMonPalette_Golem),
// SPECIES_PAL(PONYTA, gMonPalette_Ponyta),
// SPECIES_PAL(RAPIDASH, gMonPalette_Rapidash),
// SPECIES_PAL(SLOWPOKE, gMonPalette_Slowpoke),
// SPECIES_PAL(SLOWBRO, gMonPalette_Slowbro),
// SPECIES_PAL(MAGNEMITE, gMonPalette_Magnemite),
// SPECIES_PAL(MAGNETON, gMonPalette_Magneton),
// SPECIES_PAL(FARFETCHD, gMonPalette_Farfetchd),
// SPECIES_PAL(DODUO, gMonPalette_Doduo),
// SPECIES_PAL(DODRIO, gMonPalette_Dodrio),
// SPECIES_PAL(SEEL, gMonPalette_Seel),
// SPECIES_PAL(DEWGONG, gMonPalette_Dewgong),
// SPECIES_PAL(GRIMER, gMonPalette_Grimer),
// SPECIES_PAL(MUK, gMonPalette_Muk),
// SPECIES_PAL(SHELLDER, gMonPalette_Shellder),
// SPECIES_PAL(CLOYSTER, gMonPalette_Cloyster),
// SPECIES_PAL(GASTLY, gMonPalette_Gastly),
// SPECIES_PAL(HAUNTER, gMonPalette_Haunter),
// SPECIES_PAL(GENGAR, gMonPalette_Gengar),
// SPECIES_PAL(ONIX, gMonPalette_Onix),
// SPECIES_PAL(DROWZEE, gMonPalette_Drowzee),
// SPECIES_PAL(HYPNO, gMonPalette_Hypno),
// SPECIES_PAL(KRABBY, gMonPalette_Krabby),
// SPECIES_PAL(KINGLER, gMonPalette_Kingler),
// SPECIES_PAL(VOLTORB, gMonPalette_Voltorb),
// SPECIES_PAL(ELECTRODE, gMonPalette_Electrode),
// SPECIES_PAL(EXEGGCUTE, gMonPalette_Exeggcute),
// SPECIES_PAL(EXEGGUTOR, gMonPalette_Exeggutor),
// SPECIES_PAL(CUBONE, gMonPalette_Cubone),
// SPECIES_PAL(MAROWAK, gMonPalette_Marowak),
// SPECIES_PAL(HITMONLEE, gMonPalette_Hitmonlee),
// SPECIES_PAL(HITMONCHAN, gMonPalette_Hitmonchan),
// SPECIES_PAL(LICKITUNG, gMonPalette_Lickitung),
// SPECIES_PAL(KOFFING, gMonPalette_Koffing),
// SPECIES_PAL(WEEZING, gMonPalette_Weezing),
// SPECIES_PAL(RHYHORN, gMonPalette_Rhyhorn),
// SPECIES_PAL(RHYDON, gMonPalette_Rhydon),
// SPECIES_PAL(CHANSEY, gMonPalette_Chansey),
// SPECIES_PAL(TANGELA, gMonPalette_Tangela),
// SPECIES_PAL(KANGASKHAN, gMonPalette_Kangaskhan),
// SPECIES_PAL(HORSEA, gMonPalette_Horsea),
// SPECIES_PAL(SEADRA, gMonPalette_Seadra),
// SPECIES_PAL(GOLDEEN, gMonPalette_Goldeen),
// SPECIES_PAL(SEAKING, gMonPalette_Seaking),
// SPECIES_PAL(STARYU, gMonPalette_Staryu),
// SPECIES_PAL(STARMIE, gMonPalette_Starmie),
// SPECIES_PAL(MR_MIME, gMonPalette_Mrmime),
// SPECIES_PAL(SCYTHER, gMonPalette_Scyther),
// SPECIES_PAL(JYNX, gMonPalette_Jynx),
// SPECIES_PAL(ELECTABUZZ, gMonPalette_Electabuzz),
// SPECIES_PAL(MAGMAR, gMonPalette_Magmar),
// SPECIES_PAL(PINSIR, gMonPalette_Pinsir),
// SPECIES_PAL(TAUROS, gMonPalette_Tauros),
// SPECIES_PAL(MAGIKARP, gMonPalette_Magikarp),
// SPECIES_PAL(GYARADOS, gMonPalette_Gyarados),
// SPECIES_PAL(LAPRAS, gMonPalette_Lapras),
// SPECIES_PAL(DITTO, gMonPalette_Ditto),
// SPECIES_PAL(EEVEE, gMonPalette_Eevee),
// SPECIES_PAL(VAPOREON, gMonPalette_Vaporeon),
// SPECIES_PAL(JOLTEON, gMonPalette_Jolteon),
// SPECIES_PAL(FLAREON, gMonPalette_Flareon),
// SPECIES_PAL(PORYGON, gMonPalette_Porygon),
// SPECIES_PAL(OMANYTE, gMonPalette_Omanyte),
// SPECIES_PAL(OMASTAR, gMonPalette_Omastar),
// SPECIES_PAL(KABUTO, gMonPalette_Kabuto),
// SPECIES_PAL(KABUTOPS, gMonPalette_Kabutops),
// SPECIES_PAL(AERODACTYL, gMonPalette_Aerodactyl),
// SPECIES_PAL(SNORLAX, gMonPalette_Snorlax),
// SPECIES_PAL(ARTICUNO, gMonPalette_Articuno),
// SPECIES_PAL(ZAPDOS, gMonPalette_Zapdos),
// SPECIES_PAL(MOLTRES, gMonPalette_Moltres),
// SPECIES_PAL(DRATINI, gMonPalette_Dratini),
// SPECIES_PAL(DRAGONAIR, gMonPalette_Dragonair),
// SPECIES_PAL(DRAGONITE, gMonPalette_Dragonite),
// SPECIES_PAL(MEWTWO, gMonPalette_Mewtwo),
// SPECIES_PAL(MEW, gMonPalette_Mew),
// SPECIES_PAL(CHIKORITA, gMonPalette_Chikorita),
// SPECIES_PAL(BAYLEEF, gMonPalette_Bayleef),
// SPECIES_PAL(MEGANIUM, gMonPalette_Meganium),
// SPECIES_PAL(CYNDAQUIL, gMonPalette_Cyndaquil),
// SPECIES_PAL(QUILAVA, gMonPalette_Quilava),
// SPECIES_PAL(TYPHLOSION, gMonPalette_Typhlosion),
// SPECIES_PAL(TOTODILE, gMonPalette_Totodile),
// SPECIES_PAL(CROCONAW, gMonPalette_Croconaw),
// SPECIES_PAL(FERALIGATR, gMonPalette_Feraligatr),
// SPECIES_PAL(SENTRET, gMonPalette_Sentret),
// SPECIES_PAL(FURRET, gMonPalette_Furret),
// SPECIES_PAL(HOOTHOOT, gMonPalette_Hoothoot),
// SPECIES_PAL(NOCTOWL, gMonPalette_Noctowl),
// SPECIES_PAL(LEDYBA, gMonPalette_Ledyba),
// SPECIES_PAL(LEDIAN, gMonPalette_Ledian),
// SPECIES_PAL(SPINARAK, gMonPalette_Spinarak),
// SPECIES_PAL(ARIADOS, gMonPalette_Ariados),
// SPECIES_PAL(CROBAT, gMonPalette_Crobat),
// SPECIES_PAL(CHINCHOU, gMonPalette_Chinchou),
// SPECIES_PAL(LANTURN, gMonPalette_Lanturn),
// SPECIES_PAL(PICHU, gMonPalette_Pichu),
// SPECIES_PAL(CLEFFA, gMonPalette_Cleffa),
// SPECIES_PAL(IGGLYBUFF, gMonPalette_Igglybuff),
// SPECIES_PAL(TOGEPI, gMonPalette_Togepi),
// SPECIES_PAL(TOGETIC, gMonPalette_Togetic),
// SPECIES_PAL(NATU, gMonPalette_Natu),
// SPECIES_PAL(XATU, gMonPalette_Xatu),
// SPECIES_PAL(MAREEP, gMonPalette_Mareep),
// SPECIES_PAL(FLAAFFY, gMonPalette_Flaaffy),
// SPECIES_PAL(AMPHAROS, gMonPalette_Ampharos),
// SPECIES_PAL(BELLOSSOM, gMonPalette_Bellossom),
// SPECIES_PAL(MARILL, gMonPalette_Marill),
// SPECIES_PAL(AZUMARILL, gMonPalette_Azumarill),
// SPECIES_PAL(SUDOWOODO, gMonPalette_Sudowoodo),
// SPECIES_PAL(POLITOED, gMonPalette_Politoed),
// SPECIES_PAL(HOPPIP, gMonPalette_Hoppip),
// SPECIES_PAL(SKIPLOOM, gMonPalette_Skiploom),
// SPECIES_PAL(JUMPLUFF, gMonPalette_Jumpluff),
// SPECIES_PAL(AIPOM, gMonPalette_Aipom),
// SPECIES_PAL(SUNKERN, gMonPalette_Sunkern),
// SPECIES_PAL(SUNFLORA, gMonPalette_Sunflora),
// SPECIES_PAL(YANMA, gMonPalette_Yanma),
// SPECIES_PAL(WOOPER, gMonPalette_Wooper),
// SPECIES_PAL(QUAGSIRE, gMonPalette_Quagsire),
// SPECIES_PAL(ESPEON, gMonPalette_Espeon),
// SPECIES_PAL(UMBREON, gMonPalette_Umbreon),
// SPECIES_PAL(MURKROW, gMonPalette_Murkrow),
// SPECIES_PAL(SLOWKING, gMonPalette_Slowking),
// SPECIES_PAL(MISDREAVUS, gMonPalette_Misdreavus),
// SPECIES_PAL(UNOWN, gMonPalette_Unown),
// SPECIES_PAL(WOBBUFFET, gMonPalette_Wobbuffet),
// SPECIES_PAL(GIRAFARIG, gMonPalette_Girafarig),
// SPECIES_PAL(PINECO, gMonPalette_Pineco),
// SPECIES_PAL(FORRETRESS, gMonPalette_Forretress),
// SPECIES_PAL(DUNSPARCE, gMonPalette_Dunsparce),
// SPECIES_PAL(GLIGAR, gMonPalette_Gligar),
// SPECIES_PAL(STEELIX, gMonPalette_Steelix),
// SPECIES_PAL(SNUBBULL, gMonPalette_Snubbull),
// SPECIES_PAL(GRANBULL, gMonPalette_Granbull),
// SPECIES_PAL(QWILFISH, gMonPalette_Qwilfish),
// SPECIES_PAL(SCIZOR, gMonPalette_Scizor),
// SPECIES_PAL(SHUCKLE, gMonPalette_Shuckle),
// SPECIES_PAL(HERACROSS, gMonPalette_Heracross),
// SPECIES_PAL(SNEASEL, gMonPalette_Sneasel),
// SPECIES_PAL(TEDDIURSA, gMonPalette_Teddiursa),
// SPECIES_PAL(URSARING, gMonPalette_Ursaring),
// SPECIES_PAL(SLUGMA, gMonPalette_Slugma),
// SPECIES_PAL(MAGCARGO, gMonPalette_Magcargo),
// SPECIES_PAL(SWINUB, gMonPalette_Swinub),
// SPECIES_PAL(PILOSWINE, gMonPalette_Piloswine),
// SPECIES_PAL(CORSOLA, gMonPalette_Corsola),
// SPECIES_PAL(REMORAID, gMonPalette_Remoraid),
// SPECIES_PAL(OCTILLERY, gMonPalette_Octillery),
// SPECIES_PAL(DELIBIRD, gMonPalette_Delibird),
// SPECIES_PAL(MANTINE, gMonPalette_Mantine),
// SPECIES_PAL(SKARMORY, gMonPalette_Skarmory),
// SPECIES_PAL(HOUNDOUR, gMonPalette_Houndour),
// SPECIES_PAL(HOUNDOOM, gMonPalette_Houndoom),
// SPECIES_PAL(KINGDRA, gMonPalette_Kingdra),
// SPECIES_PAL(PHANPY, gMonPalette_Phanpy),
// SPECIES_PAL(DONPHAN, gMonPalette_Donphan),
// SPECIES_PAL(PORYGON2, gMonPalette_Porygon2),
// SPECIES_PAL(STANTLER, gMonPalette_Stantler),
// SPECIES_PAL(SMEARGLE, gMonPalette_Smeargle),
// SPECIES_PAL(TYROGUE, gMonPalette_Tyrogue),
// SPECIES_PAL(HITMONTOP, gMonPalette_Hitmontop),
// SPECIES_PAL(SMOOCHUM, gMonPalette_Smoochum),
// SPECIES_PAL(ELEKID, gMonPalette_Elekid),
// SPECIES_PAL(MAGBY, gMonPalette_Magby),
// SPECIES_PAL(MILTANK, gMonPalette_Miltank),
// SPECIES_PAL(BLISSEY, gMonPalette_Blissey),
// SPECIES_PAL(RAIKOU, gMonPalette_Raikou),
// SPECIES_PAL(ENTEI, gMonPalette_Entei),
// SPECIES_PAL(SUICUNE, gMonPalette_Suicune),
// SPECIES_PAL(LARVITAR, gMonPalette_Larvitar),
// SPECIES_PAL(PUPITAR, gMonPalette_Pupitar),
// SPECIES_PAL(TYRANITAR, gMonPalette_Tyranitar),
// SPECIES_PAL(LUGIA, gMonPalette_Lugia),
// SPECIES_PAL(HO_OH, gMonPalette_HoOh),
// SPECIES_PAL(CELEBI, gMonPalette_Celebi),
// SPECIES_PAL(OLD_UNOWN_B, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_C, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_D, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_E, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_F, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_G, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_H, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_I, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_J, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_K, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_L, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_M, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_N, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_O, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_P, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_Q, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_R, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_S, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_T, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_U, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_V, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_W, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_X, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_Y, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_Z, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(TREECKO, gMonPalette_Treecko),
// SPECIES_PAL(GROVYLE, gMonPalette_Grovyle),
// SPECIES_PAL(SCEPTILE, gMonPalette_Sceptile),
// SPECIES_PAL(TORCHIC, gMonPalette_Torchic),
// SPECIES_PAL(COMBUSKEN, gMonPalette_Combusken),
// SPECIES_PAL(BLAZIKEN, gMonPalette_Blaziken),
// SPECIES_PAL(MUDKIP, gMonPalette_Mudkip),
// SPECIES_PAL(MARSHTOMP, gMonPalette_Marshtomp),
// SPECIES_PAL(SWAMPERT, gMonPalette_Swampert),
// SPECIES_PAL(POOCHYENA, gMonPalette_Poochyena),
// SPECIES_PAL(MIGHTYENA, gMonPalette_Mightyena),
// SPECIES_PAL(ZIGZAGOON, gMonPalette_Zigzagoon),
// SPECIES_PAL(LINOONE, gMonPalette_Linoone),
// SPECIES_PAL(WURMPLE, gMonPalette_Wurmple),
// SPECIES_PAL(SILCOON, gMonPalette_Silcoon),
// SPECIES_PAL(BEAUTIFLY, gMonPalette_Beautifly),
// SPECIES_PAL(CASCOON, gMonPalette_Cascoon),
// SPECIES_PAL(DUSTOX, gMonPalette_Dustox),
// SPECIES_PAL(LOTAD, gMonPalette_Lotad),
// SPECIES_PAL(LOMBRE, gMonPalette_Lombre),
// SPECIES_PAL(LUDICOLO, gMonPalette_Ludicolo),
// SPECIES_PAL(SEEDOT, gMonPalette_Seedot),
// SPECIES_PAL(NUZLEAF, gMonPalette_Nuzleaf),
// SPECIES_PAL(SHIFTRY, gMonPalette_Shiftry),
// SPECIES_PAL(NINCADA, gMonPalette_Nincada),
// SPECIES_PAL(NINJASK, gMonPalette_Ninjask),
// SPECIES_PAL(SHEDINJA, gMonPalette_Shedinja),
// SPECIES_PAL(TAILLOW, gMonPalette_Taillow),
// SPECIES_PAL(SWELLOW, gMonPalette_Swellow),
// SPECIES_PAL(SHROOMISH, gMonPalette_Shroomish),
// SPECIES_PAL(BRELOOM, gMonPalette_Breloom),
// SPECIES_PAL(SPINDA, gMonPalette_Spinda),
// SPECIES_PAL(WINGULL, gMonPalette_Wingull),
// SPECIES_PAL(PELIPPER, gMonPalette_Pelipper),
// SPECIES_PAL(SURSKIT, gMonPalette_Surskit),
// SPECIES_PAL(MASQUERAIN, gMonPalette_Masquerain),
// SPECIES_PAL(WAILMER, gMonPalette_Wailmer),
// SPECIES_PAL(WAILORD, gMonPalette_Wailord),
// SPECIES_PAL(SKITTY, gMonPalette_Skitty),
// SPECIES_PAL(DELCATTY, gMonPalette_Delcatty),
// SPECIES_PAL(KECLEON, gMonPalette_Kecleon),
// SPECIES_PAL(BALTOY, gMonPalette_Baltoy),
// SPECIES_PAL(CLAYDOL, gMonPalette_Claydol),
// SPECIES_PAL(NOSEPASS, gMonPalette_Nosepass),
// SPECIES_PAL(TORKOAL, gMonPalette_Torkoal),
// SPECIES_PAL(SABLEYE, gMonPalette_Sableye),
// SPECIES_PAL(BARBOACH, gMonPalette_Barboach),
// SPECIES_PAL(WHISCASH, gMonPalette_Whiscash),
// SPECIES_PAL(LUVDISC, gMonPalette_Luvdisc),
// SPECIES_PAL(CORPHISH, gMonPalette_Corphish),
// SPECIES_PAL(CRAWDAUNT, gMonPalette_Crawdaunt),
// SPECIES_PAL(FEEBAS, gMonPalette_Feebas),
// SPECIES_PAL(MILOTIC, gMonPalette_Milotic),
// SPECIES_PAL(CARVANHA, gMonPalette_Carvanha),
// SPECIES_PAL(SHARPEDO, gMonPalette_Sharpedo),
// SPECIES_PAL(TRAPINCH, gMonPalette_Trapinch),
// SPECIES_PAL(VIBRAVA, gMonPalette_Vibrava),
// SPECIES_PAL(FLYGON, gMonPalette_Flygon),
// SPECIES_PAL(MAKUHITA, gMonPalette_Makuhita),
// SPECIES_PAL(HARIYAMA, gMonPalette_Hariyama),
// SPECIES_PAL(ELECTRIKE, gMonPalette_Electrike),
// SPECIES_PAL(MANECTRIC, gMonPalette_Manectric),
// SPECIES_PAL(NUMEL, gMonPalette_Numel),
// SPECIES_PAL(CAMERUPT, gMonPalette_Camerupt),
// SPECIES_PAL(SPHEAL, gMonPalette_Spheal),
// SPECIES_PAL(SEALEO, gMonPalette_Sealeo),
// SPECIES_PAL(WALREIN, gMonPalette_Walrein),
// SPECIES_PAL(CACNEA, gMonPalette_Cacnea),
// SPECIES_PAL(CACTURNE, gMonPalette_Cacturne),
// SPECIES_PAL(SNORUNT, gMonPalette_Snorunt),
// SPECIES_PAL(GLALIE, gMonPalette_Glalie),
// SPECIES_PAL(LUNATONE, gMonPalette_Lunatone),
// SPECIES_PAL(SOLROCK, gMonPalette_Solrock),
// SPECIES_PAL(AZURILL, gMonPalette_Azurill),
// SPECIES_PAL(SPOINK, gMonPalette_Spoink),
// SPECIES_PAL(GRUMPIG, gMonPalette_Grumpig),
// SPECIES_PAL(PLUSLE, gMonPalette_Plusle),
// SPECIES_PAL(MINUN, gMonPalette_Minun),
// SPECIES_PAL(MAWILE, gMonPalette_Mawile),
// SPECIES_PAL(MEDITITE, gMonPalette_Meditite),
// SPECIES_PAL(MEDICHAM, gMonPalette_Medicham),
// SPECIES_PAL(SWABLU, gMonPalette_Swablu),
// SPECIES_PAL(ALTARIA, gMonPalette_Altaria),
// SPECIES_PAL(WYNAUT, gMonPalette_Wynaut),
// SPECIES_PAL(DUSKULL, gMonPalette_Duskull),
// SPECIES_PAL(DUSCLOPS, gMonPalette_Dusclops),
// SPECIES_PAL(ROSELIA, gMonPalette_Roselia),
// SPECIES_PAL(SLAKOTH, gMonPalette_Slakoth),
// SPECIES_PAL(VIGOROTH, gMonPalette_Vigoroth),
// SPECIES_PAL(SLAKING, gMonPalette_Slaking),
// SPECIES_PAL(GULPIN, gMonPalette_Gulpin),
// SPECIES_PAL(SWALOT, gMonPalette_Swalot),
// SPECIES_PAL(TROPIUS, gMonPalette_Tropius),
// SPECIES_PAL(WHISMUR, gMonPalette_Whismur),
// SPECIES_PAL(LOUDRED, gMonPalette_Loudred),
// SPECIES_PAL(EXPLOUD, gMonPalette_Exploud),
// SPECIES_PAL(CLAMPERL, gMonPalette_Clamperl),
// SPECIES_PAL(HUNTAIL, gMonPalette_Huntail),
// SPECIES_PAL(GOREBYSS, gMonPalette_Gorebyss),
// SPECIES_PAL(ABSOL, gMonPalette_Absol),
// SPECIES_PAL(SHUPPET, gMonPalette_Shuppet),
// SPECIES_PAL(BANETTE, gMonPalette_Banette),
// SPECIES_PAL(SEVIPER, gMonPalette_Seviper),
// SPECIES_PAL(ZANGOOSE, gMonPalette_Zangoose),
// SPECIES_PAL(RELICANTH, gMonPalette_Relicanth),
// SPECIES_PAL(ARON, gMonPalette_Aron),
// SPECIES_PAL(LAIRON, gMonPalette_Lairon),
// SPECIES_PAL(AGGRON, gMonPalette_Aggron),
// SPECIES_PAL(CASTFORM, gMonPalette_Castform),
// SPECIES_PAL(VOLBEAT, gMonPalette_Volbeat),
// SPECIES_PAL(ILLUMISE, gMonPalette_Illumise),
// SPECIES_PAL(LILEEP, gMonPalette_Lileep),
// SPECIES_PAL(CRADILY, gMonPalette_Cradily),
// SPECIES_PAL(ANORITH, gMonPalette_Anorith),
// SPECIES_PAL(ARMALDO, gMonPalette_Armaldo),
// SPECIES_PAL(RALTS, gMonPalette_Ralts),
// SPECIES_PAL(KIRLIA, gMonPalette_Kirlia),
// SPECIES_PAL(GARDEVOIR, gMonPalette_Gardevoir),
// SPECIES_PAL(BAGON, gMonPalette_Bagon),
// SPECIES_PAL(SHELGON, gMonPalette_Shelgon),
// SPECIES_PAL(SALAMENCE, gMonPalette_Salamence),
// SPECIES_PAL(BELDUM, gMonPalette_Beldum),
// SPECIES_PAL(METANG, gMonPalette_Metang),
// SPECIES_PAL(METAGROSS, gMonPalette_Metagross),
// SPECIES_PAL(REGIROCK, gMonPalette_Regirock),
// SPECIES_PAL(REGICE, gMonPalette_Regice),
// SPECIES_PAL(REGISTEEL, gMonPalette_Registeel),
// SPECIES_PAL(KYOGRE, gMonPalette_Kyogre),
// SPECIES_PAL(GROUDON, gMonPalette_Groudon),
// SPECIES_PAL(RAYQUAZA, gMonPalette_Rayquaza),
// SPECIES_PAL(LATIAS, gMonPalette_Latias),
// SPECIES_PAL(LATIOS, gMonPalette_Latios),
// SPECIES_PAL(JIRACHI, gMonPalette_Jirachi),
// SPECIES_PAL(DEOXYS, gMonPalette_Deoxys),
// SPECIES_PAL(CHIMECHO, gMonPalette_Chimecho),
// SPECIES_PAL(EGG, gMonPalette_Egg),
// SPECIES_PAL(UNOWN_B, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_C, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_D, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_E, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_F, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_G, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_H, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_I, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_J, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_K, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_L, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_M, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_N, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_O, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_P, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_Q, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_R, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_S, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_T, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_U, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_V, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_W, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_X, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_Y, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_Z, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_EMARK, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_QMARK, gMonPalette_Unown),
// };

View File

@ -1,443 +0,0 @@
// const struct CompressedSpritePalette gMonShinyPaletteTable[] =
// {
// SPECIES_SHINY_PAL(NONE, gMonShinyPalette_CircledQuestionMark),
// SPECIES_SHINY_PAL(BULBASAUR, gMonShinyPalette_Bulbasaur),
// SPECIES_SHINY_PAL(IVYSAUR, gMonShinyPalette_Ivysaur),
// SPECIES_SHINY_PAL(VENUSAUR, gMonShinyPalette_Venusaur),
// SPECIES_SHINY_PAL(CHARMANDER, gMonShinyPalette_Charmander),
// SPECIES_SHINY_PAL(CHARMELEON, gMonShinyPalette_Charmeleon),
// SPECIES_SHINY_PAL(CHARIZARD, gMonShinyPalette_Charizard),
// SPECIES_SHINY_PAL(SQUIRTLE, gMonShinyPalette_Squirtle),
// SPECIES_SHINY_PAL(WARTORTLE, gMonShinyPalette_Wartortle),
// SPECIES_SHINY_PAL(BLASTOISE, gMonShinyPalette_Blastoise),
// SPECIES_SHINY_PAL(CATERPIE, gMonShinyPalette_Caterpie),
// SPECIES_SHINY_PAL(METAPOD, gMonShinyPalette_Metapod),
// SPECIES_SHINY_PAL(BUTTERFREE, gMonShinyPalette_Butterfree),
// SPECIES_SHINY_PAL(WEEDLE, gMonShinyPalette_Weedle),
// SPECIES_SHINY_PAL(KAKUNA, gMonShinyPalette_Kakuna),
// SPECIES_SHINY_PAL(BEEDRILL, gMonShinyPalette_Beedrill),
// SPECIES_SHINY_PAL(PIDGEY, gMonShinyPalette_Pidgey),
// SPECIES_SHINY_PAL(PIDGEOTTO, gMonShinyPalette_Pidgeotto),
// SPECIES_SHINY_PAL(PIDGEOT, gMonShinyPalette_Pidgeot),
// SPECIES_SHINY_PAL(RATTATA, gMonShinyPalette_Rattata),
// SPECIES_SHINY_PAL(RATICATE, gMonShinyPalette_Raticate),
// SPECIES_SHINY_PAL(SPEAROW, gMonShinyPalette_Spearow),
// SPECIES_SHINY_PAL(FEAROW, gMonShinyPalette_Fearow),
// SPECIES_SHINY_PAL(EKANS, gMonShinyPalette_Ekans),
// SPECIES_SHINY_PAL(ARBOK, gMonShinyPalette_Arbok),
// SPECIES_SHINY_PAL(PIKACHU, gMonShinyPalette_Pikachu),
// SPECIES_SHINY_PAL(RAICHU, gMonShinyPalette_Raichu),
// SPECIES_SHINY_PAL(SANDSHREW, gMonShinyPalette_Sandshrew),
// SPECIES_SHINY_PAL(SANDSLASH, gMonShinyPalette_Sandslash),
// SPECIES_SHINY_PAL(NIDORAN_F, gMonShinyPalette_NidoranF),
// SPECIES_SHINY_PAL(NIDORINA, gMonShinyPalette_Nidorina),
// SPECIES_SHINY_PAL(NIDOQUEEN, gMonShinyPalette_Nidoqueen),
// SPECIES_SHINY_PAL(NIDORAN_M, gMonShinyPalette_NidoranM),
// SPECIES_SHINY_PAL(NIDORINO, gMonShinyPalette_Nidorino),
// SPECIES_SHINY_PAL(NIDOKING, gMonShinyPalette_Nidoking),
// SPECIES_SHINY_PAL(CLEFAIRY, gMonShinyPalette_Clefairy),
// SPECIES_SHINY_PAL(CLEFABLE, gMonShinyPalette_Clefable),
// SPECIES_SHINY_PAL(VULPIX, gMonShinyPalette_Vulpix),
// SPECIES_SHINY_PAL(NINETALES, gMonShinyPalette_Ninetales),
// SPECIES_SHINY_PAL(JIGGLYPUFF, gMonShinyPalette_Jigglypuff),
// SPECIES_SHINY_PAL(WIGGLYTUFF, gMonShinyPalette_Wigglytuff),
// SPECIES_SHINY_PAL(ZUBAT, gMonShinyPalette_Zubat),
// SPECIES_SHINY_PAL(GOLBAT, gMonShinyPalette_Golbat),
// SPECIES_SHINY_PAL(ODDISH, gMonShinyPalette_Oddish),
// SPECIES_SHINY_PAL(GLOOM, gMonShinyPalette_Gloom),
// SPECIES_SHINY_PAL(VILEPLUME, gMonShinyPalette_Vileplume),
// SPECIES_SHINY_PAL(PARAS, gMonShinyPalette_Paras),
// SPECIES_SHINY_PAL(PARASECT, gMonShinyPalette_Parasect),
// SPECIES_SHINY_PAL(VENONAT, gMonShinyPalette_Venonat),
// SPECIES_SHINY_PAL(VENOMOTH, gMonShinyPalette_Venomoth),
// SPECIES_SHINY_PAL(DIGLETT, gMonShinyPalette_Diglett),
// SPECIES_SHINY_PAL(DUGTRIO, gMonShinyPalette_Dugtrio),
// SPECIES_SHINY_PAL(MEOWTH, gMonShinyPalette_Meowth),
// SPECIES_SHINY_PAL(PERSIAN, gMonShinyPalette_Persian),
// SPECIES_SHINY_PAL(PSYDUCK, gMonShinyPalette_Psyduck),
// SPECIES_SHINY_PAL(GOLDUCK, gMonShinyPalette_Golduck),
// SPECIES_SHINY_PAL(MANKEY, gMonShinyPalette_Mankey),
// SPECIES_SHINY_PAL(PRIMEAPE, gMonShinyPalette_Primeape),
// SPECIES_SHINY_PAL(GROWLITHE, gMonShinyPalette_Growlithe),
// SPECIES_SHINY_PAL(ARCANINE, gMonShinyPalette_Arcanine),
// SPECIES_SHINY_PAL(POLIWAG, gMonShinyPalette_Poliwag),
// SPECIES_SHINY_PAL(POLIWHIRL, gMonShinyPalette_Poliwhirl),
// SPECIES_SHINY_PAL(POLIWRATH, gMonShinyPalette_Poliwrath),
// SPECIES_SHINY_PAL(ABRA, gMonShinyPalette_Abra),
// SPECIES_SHINY_PAL(KADABRA, gMonShinyPalette_Kadabra),
// SPECIES_SHINY_PAL(ALAKAZAM, gMonShinyPalette_Alakazam),
// SPECIES_SHINY_PAL(MACHOP, gMonShinyPalette_Machop),
// SPECIES_SHINY_PAL(MACHOKE, gMonShinyPalette_Machoke),
// SPECIES_SHINY_PAL(MACHAMP, gMonShinyPalette_Machamp),
// SPECIES_SHINY_PAL(BELLSPROUT, gMonShinyPalette_Bellsprout),
// SPECIES_SHINY_PAL(WEEPINBELL, gMonShinyPalette_Weepinbell),
// SPECIES_SHINY_PAL(VICTREEBEL, gMonShinyPalette_Victreebel),
// SPECIES_SHINY_PAL(TENTACOOL, gMonShinyPalette_Tentacool),
// SPECIES_SHINY_PAL(TENTACRUEL, gMonShinyPalette_Tentacruel),
// SPECIES_SHINY_PAL(GEODUDE, gMonShinyPalette_Geodude),
// SPECIES_SHINY_PAL(GRAVELER, gMonShinyPalette_Graveler),
// SPECIES_SHINY_PAL(GOLEM, gMonShinyPalette_Golem),
// SPECIES_SHINY_PAL(PONYTA, gMonShinyPalette_Ponyta),
// SPECIES_SHINY_PAL(RAPIDASH, gMonShinyPalette_Rapidash),
// SPECIES_SHINY_PAL(SLOWPOKE, gMonShinyPalette_Slowpoke),
// SPECIES_SHINY_PAL(SLOWBRO, gMonShinyPalette_Slowbro),
// SPECIES_SHINY_PAL(MAGNEMITE, gMonShinyPalette_Magnemite),
// SPECIES_SHINY_PAL(MAGNETON, gMonShinyPalette_Magneton),
// SPECIES_SHINY_PAL(FARFETCHD, gMonShinyPalette_Farfetchd),
// SPECIES_SHINY_PAL(DODUO, gMonShinyPalette_Doduo),
// SPECIES_SHINY_PAL(DODRIO, gMonShinyPalette_Dodrio),
// SPECIES_SHINY_PAL(SEEL, gMonShinyPalette_Seel),
// SPECIES_SHINY_PAL(DEWGONG, gMonShinyPalette_Dewgong),
// SPECIES_SHINY_PAL(GRIMER, gMonShinyPalette_Grimer),
// SPECIES_SHINY_PAL(MUK, gMonShinyPalette_Muk),
// SPECIES_SHINY_PAL(SHELLDER, gMonShinyPalette_Shellder),
// SPECIES_SHINY_PAL(CLOYSTER, gMonShinyPalette_Cloyster),
// SPECIES_SHINY_PAL(GASTLY, gMonShinyPalette_Gastly),
// SPECIES_SHINY_PAL(HAUNTER, gMonShinyPalette_Haunter),
// SPECIES_SHINY_PAL(GENGAR, gMonShinyPalette_Gengar),
// SPECIES_SHINY_PAL(ONIX, gMonShinyPalette_Onix),
// SPECIES_SHINY_PAL(DROWZEE, gMonShinyPalette_Drowzee),
// SPECIES_SHINY_PAL(HYPNO, gMonShinyPalette_Hypno),
// SPECIES_SHINY_PAL(KRABBY, gMonShinyPalette_Krabby),
// SPECIES_SHINY_PAL(KINGLER, gMonShinyPalette_Kingler),
// SPECIES_SHINY_PAL(VOLTORB, gMonShinyPalette_Voltorb),
// SPECIES_SHINY_PAL(ELECTRODE, gMonShinyPalette_Electrode),
// SPECIES_SHINY_PAL(EXEGGCUTE, gMonShinyPalette_Exeggcute),
// SPECIES_SHINY_PAL(EXEGGUTOR, gMonShinyPalette_Exeggutor),
// SPECIES_SHINY_PAL(CUBONE, gMonShinyPalette_Cubone),
// SPECIES_SHINY_PAL(MAROWAK, gMonShinyPalette_Marowak),
// SPECIES_SHINY_PAL(HITMONLEE, gMonShinyPalette_Hitmonlee),
// SPECIES_SHINY_PAL(HITMONCHAN, gMonShinyPalette_Hitmonchan),
// SPECIES_SHINY_PAL(LICKITUNG, gMonShinyPalette_Lickitung),
// SPECIES_SHINY_PAL(KOFFING, gMonShinyPalette_Koffing),
// SPECIES_SHINY_PAL(WEEZING, gMonShinyPalette_Weezing),
// SPECIES_SHINY_PAL(RHYHORN, gMonShinyPalette_Rhyhorn),
// SPECIES_SHINY_PAL(RHYDON, gMonShinyPalette_Rhydon),
// SPECIES_SHINY_PAL(CHANSEY, gMonShinyPalette_Chansey),
// SPECIES_SHINY_PAL(TANGELA, gMonShinyPalette_Tangela),
// SPECIES_SHINY_PAL(KANGASKHAN, gMonShinyPalette_Kangaskhan),
// SPECIES_SHINY_PAL(HORSEA, gMonShinyPalette_Horsea),
// SPECIES_SHINY_PAL(SEADRA, gMonShinyPalette_Seadra),
// SPECIES_SHINY_PAL(GOLDEEN, gMonShinyPalette_Goldeen),
// SPECIES_SHINY_PAL(SEAKING, gMonShinyPalette_Seaking),
// SPECIES_SHINY_PAL(STARYU, gMonShinyPalette_Staryu),
// SPECIES_SHINY_PAL(STARMIE, gMonShinyPalette_Starmie),
// SPECIES_SHINY_PAL(MR_MIME, gMonShinyPalette_Mrmime),
// SPECIES_SHINY_PAL(SCYTHER, gMonShinyPalette_Scyther),
// SPECIES_SHINY_PAL(JYNX, gMonShinyPalette_Jynx),
// SPECIES_SHINY_PAL(ELECTABUZZ, gMonShinyPalette_Electabuzz),
// SPECIES_SHINY_PAL(MAGMAR, gMonShinyPalette_Magmar),
// SPECIES_SHINY_PAL(PINSIR, gMonShinyPalette_Pinsir),
// SPECIES_SHINY_PAL(TAUROS, gMonShinyPalette_Tauros),
// SPECIES_SHINY_PAL(MAGIKARP, gMonShinyPalette_Magikarp),
// SPECIES_SHINY_PAL(GYARADOS, gMonShinyPalette_Gyarados),
// SPECIES_SHINY_PAL(LAPRAS, gMonShinyPalette_Lapras),
// SPECIES_SHINY_PAL(DITTO, gMonShinyPalette_Ditto),
// SPECIES_SHINY_PAL(EEVEE, gMonShinyPalette_Eevee),
// SPECIES_SHINY_PAL(VAPOREON, gMonShinyPalette_Vaporeon),
// SPECIES_SHINY_PAL(JOLTEON, gMonShinyPalette_Jolteon),
// SPECIES_SHINY_PAL(FLAREON, gMonShinyPalette_Flareon),
// SPECIES_SHINY_PAL(PORYGON, gMonShinyPalette_Porygon),
// SPECIES_SHINY_PAL(OMANYTE, gMonShinyPalette_Omanyte),
// SPECIES_SHINY_PAL(OMASTAR, gMonShinyPalette_Omastar),
// SPECIES_SHINY_PAL(KABUTO, gMonShinyPalette_Kabuto),
// SPECIES_SHINY_PAL(KABUTOPS, gMonShinyPalette_Kabutops),
// SPECIES_SHINY_PAL(AERODACTYL, gMonShinyPalette_Aerodactyl),
// SPECIES_SHINY_PAL(SNORLAX, gMonShinyPalette_Snorlax),
// SPECIES_SHINY_PAL(ARTICUNO, gMonShinyPalette_Articuno),
// SPECIES_SHINY_PAL(ZAPDOS, gMonShinyPalette_Zapdos),
// SPECIES_SHINY_PAL(MOLTRES, gMonShinyPalette_Moltres),
// SPECIES_SHINY_PAL(DRATINI, gMonShinyPalette_Dratini),
// SPECIES_SHINY_PAL(DRAGONAIR, gMonShinyPalette_Dragonair),
// SPECIES_SHINY_PAL(DRAGONITE, gMonShinyPalette_Dragonite),
// SPECIES_SHINY_PAL(MEWTWO, gMonShinyPalette_Mewtwo),
// SPECIES_SHINY_PAL(MEW, gMonShinyPalette_Mew),
// SPECIES_SHINY_PAL(CHIKORITA, gMonShinyPalette_Chikorita),
// SPECIES_SHINY_PAL(BAYLEEF, gMonShinyPalette_Bayleef),
// SPECIES_SHINY_PAL(MEGANIUM, gMonShinyPalette_Meganium),
// SPECIES_SHINY_PAL(CYNDAQUIL, gMonShinyPalette_Cyndaquil),
// SPECIES_SHINY_PAL(QUILAVA, gMonShinyPalette_Quilava),
// SPECIES_SHINY_PAL(TYPHLOSION, gMonShinyPalette_Typhlosion),
// SPECIES_SHINY_PAL(TOTODILE, gMonShinyPalette_Totodile),
// SPECIES_SHINY_PAL(CROCONAW, gMonShinyPalette_Croconaw),
// SPECIES_SHINY_PAL(FERALIGATR, gMonShinyPalette_Feraligatr),
// SPECIES_SHINY_PAL(SENTRET, gMonShinyPalette_Sentret),
// SPECIES_SHINY_PAL(FURRET, gMonShinyPalette_Furret),
// SPECIES_SHINY_PAL(HOOTHOOT, gMonShinyPalette_Hoothoot),
// SPECIES_SHINY_PAL(NOCTOWL, gMonShinyPalette_Noctowl),
// SPECIES_SHINY_PAL(LEDYBA, gMonShinyPalette_Ledyba),
// SPECIES_SHINY_PAL(LEDIAN, gMonShinyPalette_Ledian),
// SPECIES_SHINY_PAL(SPINARAK, gMonShinyPalette_Spinarak),
// SPECIES_SHINY_PAL(ARIADOS, gMonShinyPalette_Ariados),
// SPECIES_SHINY_PAL(CROBAT, gMonShinyPalette_Crobat),
// SPECIES_SHINY_PAL(CHINCHOU, gMonShinyPalette_Chinchou),
// SPECIES_SHINY_PAL(LANTURN, gMonShinyPalette_Lanturn),
// SPECIES_SHINY_PAL(PICHU, gMonShinyPalette_Pichu),
// SPECIES_SHINY_PAL(CLEFFA, gMonShinyPalette_Cleffa),
// SPECIES_SHINY_PAL(IGGLYBUFF, gMonShinyPalette_Igglybuff),
// SPECIES_SHINY_PAL(TOGEPI, gMonShinyPalette_Togepi),
// SPECIES_SHINY_PAL(TOGETIC, gMonShinyPalette_Togetic),
// SPECIES_SHINY_PAL(NATU, gMonShinyPalette_Natu),
// SPECIES_SHINY_PAL(XATU, gMonShinyPalette_Xatu),
// SPECIES_SHINY_PAL(MAREEP, gMonShinyPalette_Mareep),
// SPECIES_SHINY_PAL(FLAAFFY, gMonShinyPalette_Flaaffy),
// SPECIES_SHINY_PAL(AMPHAROS, gMonShinyPalette_Ampharos),
// SPECIES_SHINY_PAL(BELLOSSOM, gMonShinyPalette_Bellossom),
// SPECIES_SHINY_PAL(MARILL, gMonShinyPalette_Marill),
// SPECIES_SHINY_PAL(AZUMARILL, gMonShinyPalette_Azumarill),
// SPECIES_SHINY_PAL(SUDOWOODO, gMonShinyPalette_Sudowoodo),
// SPECIES_SHINY_PAL(POLITOED, gMonShinyPalette_Politoed),
// SPECIES_SHINY_PAL(HOPPIP, gMonShinyPalette_Hoppip),
// SPECIES_SHINY_PAL(SKIPLOOM, gMonShinyPalette_Skiploom),
// SPECIES_SHINY_PAL(JUMPLUFF, gMonShinyPalette_Jumpluff),
// SPECIES_SHINY_PAL(AIPOM, gMonShinyPalette_Aipom),
// SPECIES_SHINY_PAL(SUNKERN, gMonShinyPalette_Sunkern),
// SPECIES_SHINY_PAL(SUNFLORA, gMonShinyPalette_Sunflora),
// SPECIES_SHINY_PAL(YANMA, gMonShinyPalette_Yanma),
// SPECIES_SHINY_PAL(WOOPER, gMonShinyPalette_Wooper),
// SPECIES_SHINY_PAL(QUAGSIRE, gMonShinyPalette_Quagsire),
// SPECIES_SHINY_PAL(ESPEON, gMonShinyPalette_Espeon),
// SPECIES_SHINY_PAL(UMBREON, gMonShinyPalette_Umbreon),
// SPECIES_SHINY_PAL(MURKROW, gMonShinyPalette_Murkrow),
// SPECIES_SHINY_PAL(SLOWKING, gMonShinyPalette_Slowking),
// SPECIES_SHINY_PAL(MISDREAVUS, gMonShinyPalette_Misdreavus),
// SPECIES_SHINY_PAL(UNOWN, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(WOBBUFFET, gMonShinyPalette_Wobbuffet),
// SPECIES_SHINY_PAL(GIRAFARIG, gMonShinyPalette_Girafarig),
// SPECIES_SHINY_PAL(PINECO, gMonShinyPalette_Pineco),
// SPECIES_SHINY_PAL(FORRETRESS, gMonShinyPalette_Forretress),
// SPECIES_SHINY_PAL(DUNSPARCE, gMonShinyPalette_Dunsparce),
// SPECIES_SHINY_PAL(GLIGAR, gMonShinyPalette_Gligar),
// SPECIES_SHINY_PAL(STEELIX, gMonShinyPalette_Steelix),
// SPECIES_SHINY_PAL(SNUBBULL, gMonShinyPalette_Snubbull),
// SPECIES_SHINY_PAL(GRANBULL, gMonShinyPalette_Granbull),
// SPECIES_SHINY_PAL(QWILFISH, gMonShinyPalette_Qwilfish),
// SPECIES_SHINY_PAL(SCIZOR, gMonShinyPalette_Scizor),
// SPECIES_SHINY_PAL(SHUCKLE, gMonShinyPalette_Shuckle),
// SPECIES_SHINY_PAL(HERACROSS, gMonShinyPalette_Heracross),
// SPECIES_SHINY_PAL(SNEASEL, gMonShinyPalette_Sneasel),
// SPECIES_SHINY_PAL(TEDDIURSA, gMonShinyPalette_Teddiursa),
// SPECIES_SHINY_PAL(URSARING, gMonShinyPalette_Ursaring),
// SPECIES_SHINY_PAL(SLUGMA, gMonShinyPalette_Slugma),
// SPECIES_SHINY_PAL(MAGCARGO, gMonShinyPalette_Magcargo),
// SPECIES_SHINY_PAL(SWINUB, gMonShinyPalette_Swinub),
// SPECIES_SHINY_PAL(PILOSWINE, gMonShinyPalette_Piloswine),
// SPECIES_SHINY_PAL(CORSOLA, gMonShinyPalette_Corsola),
// SPECIES_SHINY_PAL(REMORAID, gMonShinyPalette_Remoraid),
// SPECIES_SHINY_PAL(OCTILLERY, gMonShinyPalette_Octillery),
// SPECIES_SHINY_PAL(DELIBIRD, gMonShinyPalette_Delibird),
// SPECIES_SHINY_PAL(MANTINE, gMonShinyPalette_Mantine),
// SPECIES_SHINY_PAL(SKARMORY, gMonShinyPalette_Skarmory),
// SPECIES_SHINY_PAL(HOUNDOUR, gMonShinyPalette_Houndour),
// SPECIES_SHINY_PAL(HOUNDOOM, gMonShinyPalette_Houndoom),
// SPECIES_SHINY_PAL(KINGDRA, gMonShinyPalette_Kingdra),
// SPECIES_SHINY_PAL(PHANPY, gMonShinyPalette_Phanpy),
// SPECIES_SHINY_PAL(DONPHAN, gMonShinyPalette_Donphan),
// SPECIES_SHINY_PAL(PORYGON2, gMonShinyPalette_Porygon2),
// SPECIES_SHINY_PAL(STANTLER, gMonShinyPalette_Stantler),
// SPECIES_SHINY_PAL(SMEARGLE, gMonShinyPalette_Smeargle),
// SPECIES_SHINY_PAL(TYROGUE, gMonShinyPalette_Tyrogue),
// SPECIES_SHINY_PAL(HITMONTOP, gMonShinyPalette_Hitmontop),
// SPECIES_SHINY_PAL(SMOOCHUM, gMonShinyPalette_Smoochum),
// SPECIES_SHINY_PAL(ELEKID, gMonShinyPalette_Elekid),
// SPECIES_SHINY_PAL(MAGBY, gMonShinyPalette_Magby),
// SPECIES_SHINY_PAL(MILTANK, gMonShinyPalette_Miltank),
// SPECIES_SHINY_PAL(BLISSEY, gMonShinyPalette_Blissey),
// SPECIES_SHINY_PAL(RAIKOU, gMonShinyPalette_Raikou),
// SPECIES_SHINY_PAL(ENTEI, gMonShinyPalette_Entei),
// SPECIES_SHINY_PAL(SUICUNE, gMonShinyPalette_Suicune),
// SPECIES_SHINY_PAL(LARVITAR, gMonShinyPalette_Larvitar),
// SPECIES_SHINY_PAL(PUPITAR, gMonShinyPalette_Pupitar),
// SPECIES_SHINY_PAL(TYRANITAR, gMonShinyPalette_Tyranitar),
// SPECIES_SHINY_PAL(LUGIA, gMonShinyPalette_Lugia),
// SPECIES_SHINY_PAL(HO_OH, gMonShinyPalette_HoOh),
// SPECIES_SHINY_PAL(CELEBI, gMonShinyPalette_Celebi),
// SPECIES_SHINY_PAL(OLD_UNOWN_B, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_C, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_D, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_E, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_F, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_G, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_H, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_I, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_J, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_K, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_L, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_M, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_N, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_O, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_P, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_Q, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_R, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_S, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_T, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_U, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_V, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_W, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_X, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_Y, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_Z, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(TREECKO, gMonShinyPalette_Treecko),
// SPECIES_SHINY_PAL(GROVYLE, gMonShinyPalette_Grovyle),
// SPECIES_SHINY_PAL(SCEPTILE, gMonShinyPalette_Sceptile),
// SPECIES_SHINY_PAL(TORCHIC, gMonShinyPalette_Torchic),
// SPECIES_SHINY_PAL(COMBUSKEN, gMonShinyPalette_Combusken),
// SPECIES_SHINY_PAL(BLAZIKEN, gMonShinyPalette_Blaziken),
// SPECIES_SHINY_PAL(MUDKIP, gMonShinyPalette_Mudkip),
// SPECIES_SHINY_PAL(MARSHTOMP, gMonShinyPalette_Marshtomp),
// SPECIES_SHINY_PAL(SWAMPERT, gMonShinyPalette_Swampert),
// SPECIES_SHINY_PAL(POOCHYENA, gMonShinyPalette_Poochyena),
// SPECIES_SHINY_PAL(MIGHTYENA, gMonShinyPalette_Mightyena),
// SPECIES_SHINY_PAL(ZIGZAGOON, gMonShinyPalette_Zigzagoon),
// SPECIES_SHINY_PAL(LINOONE, gMonShinyPalette_Linoone),
// SPECIES_SHINY_PAL(WURMPLE, gMonShinyPalette_Wurmple),
// SPECIES_SHINY_PAL(SILCOON, gMonShinyPalette_Silcoon),
// SPECIES_SHINY_PAL(BEAUTIFLY, gMonShinyPalette_Beautifly),
// SPECIES_SHINY_PAL(CASCOON, gMonShinyPalette_Cascoon),
// SPECIES_SHINY_PAL(DUSTOX, gMonShinyPalette_Dustox),
// SPECIES_SHINY_PAL(LOTAD, gMonShinyPalette_Lotad),
// SPECIES_SHINY_PAL(LOMBRE, gMonShinyPalette_Lombre),
// SPECIES_SHINY_PAL(LUDICOLO, gMonShinyPalette_Ludicolo),
// SPECIES_SHINY_PAL(SEEDOT, gMonShinyPalette_Seedot),
// SPECIES_SHINY_PAL(NUZLEAF, gMonShinyPalette_Nuzleaf),
// SPECIES_SHINY_PAL(SHIFTRY, gMonShinyPalette_Shiftry),
// SPECIES_SHINY_PAL(NINCADA, gMonShinyPalette_Nincada),
// SPECIES_SHINY_PAL(NINJASK, gMonShinyPalette_Ninjask),
// SPECIES_SHINY_PAL(SHEDINJA, gMonShinyPalette_Shedinja),
// SPECIES_SHINY_PAL(TAILLOW, gMonShinyPalette_Taillow),
// SPECIES_SHINY_PAL(SWELLOW, gMonShinyPalette_Swellow),
// SPECIES_SHINY_PAL(SHROOMISH, gMonShinyPalette_Shroomish),
// SPECIES_SHINY_PAL(BRELOOM, gMonShinyPalette_Breloom),
// SPECIES_SHINY_PAL(SPINDA, gMonShinyPalette_Spinda),
// SPECIES_SHINY_PAL(WINGULL, gMonShinyPalette_Wingull),
// SPECIES_SHINY_PAL(PELIPPER, gMonShinyPalette_Pelipper),
// SPECIES_SHINY_PAL(SURSKIT, gMonShinyPalette_Surskit),
// SPECIES_SHINY_PAL(MASQUERAIN, gMonShinyPalette_Masquerain),
// SPECIES_SHINY_PAL(WAILMER, gMonShinyPalette_Wailmer),
// SPECIES_SHINY_PAL(WAILORD, gMonShinyPalette_Wailord),
// SPECIES_SHINY_PAL(SKITTY, gMonShinyPalette_Skitty),
// SPECIES_SHINY_PAL(DELCATTY, gMonShinyPalette_Delcatty),
// SPECIES_SHINY_PAL(KECLEON, gMonShinyPalette_Kecleon),
// SPECIES_SHINY_PAL(BALTOY, gMonShinyPalette_Baltoy),
// SPECIES_SHINY_PAL(CLAYDOL, gMonShinyPalette_Claydol),
// SPECIES_SHINY_PAL(NOSEPASS, gMonShinyPalette_Nosepass),
// SPECIES_SHINY_PAL(TORKOAL, gMonShinyPalette_Torkoal),
// SPECIES_SHINY_PAL(SABLEYE, gMonShinyPalette_Sableye),
// SPECIES_SHINY_PAL(BARBOACH, gMonShinyPalette_Barboach),
// SPECIES_SHINY_PAL(WHISCASH, gMonShinyPalette_Whiscash),
// SPECIES_SHINY_PAL(LUVDISC, gMonShinyPalette_Luvdisc),
// SPECIES_SHINY_PAL(CORPHISH, gMonShinyPalette_Corphish),
// SPECIES_SHINY_PAL(CRAWDAUNT, gMonShinyPalette_Crawdaunt),
// SPECIES_SHINY_PAL(FEEBAS, gMonShinyPalette_Feebas),
// SPECIES_SHINY_PAL(MILOTIC, gMonShinyPalette_Milotic),
// SPECIES_SHINY_PAL(CARVANHA, gMonShinyPalette_Carvanha),
// SPECIES_SHINY_PAL(SHARPEDO, gMonShinyPalette_Sharpedo),
// SPECIES_SHINY_PAL(TRAPINCH, gMonShinyPalette_Trapinch),
// SPECIES_SHINY_PAL(VIBRAVA, gMonShinyPalette_Vibrava),
// SPECIES_SHINY_PAL(FLYGON, gMonShinyPalette_Flygon),
// SPECIES_SHINY_PAL(MAKUHITA, gMonShinyPalette_Makuhita),
// SPECIES_SHINY_PAL(HARIYAMA, gMonShinyPalette_Hariyama),
// SPECIES_SHINY_PAL(ELECTRIKE, gMonShinyPalette_Electrike),
// SPECIES_SHINY_PAL(MANECTRIC, gMonShinyPalette_Manectric),
// SPECIES_SHINY_PAL(NUMEL, gMonShinyPalette_Numel),
// SPECIES_SHINY_PAL(CAMERUPT, gMonShinyPalette_Camerupt),
// SPECIES_SHINY_PAL(SPHEAL, gMonShinyPalette_Spheal),
// SPECIES_SHINY_PAL(SEALEO, gMonShinyPalette_Sealeo),
// SPECIES_SHINY_PAL(WALREIN, gMonShinyPalette_Walrein),
// SPECIES_SHINY_PAL(CACNEA, gMonShinyPalette_Cacnea),
// SPECIES_SHINY_PAL(CACTURNE, gMonShinyPalette_Cacturne),
// SPECIES_SHINY_PAL(SNORUNT, gMonShinyPalette_Snorunt),
// SPECIES_SHINY_PAL(GLALIE, gMonShinyPalette_Glalie),
// SPECIES_SHINY_PAL(LUNATONE, gMonShinyPalette_Lunatone),
// SPECIES_SHINY_PAL(SOLROCK, gMonShinyPalette_Solrock),
// SPECIES_SHINY_PAL(AZURILL, gMonShinyPalette_Azurill),
// SPECIES_SHINY_PAL(SPOINK, gMonShinyPalette_Spoink),
// SPECIES_SHINY_PAL(GRUMPIG, gMonShinyPalette_Grumpig),
// SPECIES_SHINY_PAL(PLUSLE, gMonShinyPalette_Plusle),
// SPECIES_SHINY_PAL(MINUN, gMonShinyPalette_Minun),
// SPECIES_SHINY_PAL(MAWILE, gMonShinyPalette_Mawile),
// SPECIES_SHINY_PAL(MEDITITE, gMonShinyPalette_Meditite),
// SPECIES_SHINY_PAL(MEDICHAM, gMonShinyPalette_Medicham),
// SPECIES_SHINY_PAL(SWABLU, gMonShinyPalette_Swablu),
// SPECIES_SHINY_PAL(ALTARIA, gMonShinyPalette_Altaria),
// SPECIES_SHINY_PAL(WYNAUT, gMonShinyPalette_Wynaut),
// SPECIES_SHINY_PAL(DUSKULL, gMonShinyPalette_Duskull),
// SPECIES_SHINY_PAL(DUSCLOPS, gMonShinyPalette_Dusclops),
// SPECIES_SHINY_PAL(ROSELIA, gMonShinyPalette_Roselia),
// SPECIES_SHINY_PAL(SLAKOTH, gMonShinyPalette_Slakoth),
// SPECIES_SHINY_PAL(VIGOROTH, gMonShinyPalette_Vigoroth),
// SPECIES_SHINY_PAL(SLAKING, gMonShinyPalette_Slaking),
// SPECIES_SHINY_PAL(GULPIN, gMonShinyPalette_Gulpin),
// SPECIES_SHINY_PAL(SWALOT, gMonShinyPalette_Swalot),
// SPECIES_SHINY_PAL(TROPIUS, gMonShinyPalette_Tropius),
// SPECIES_SHINY_PAL(WHISMUR, gMonShinyPalette_Whismur),
// SPECIES_SHINY_PAL(LOUDRED, gMonShinyPalette_Loudred),
// SPECIES_SHINY_PAL(EXPLOUD, gMonShinyPalette_Exploud),
// SPECIES_SHINY_PAL(CLAMPERL, gMonShinyPalette_Clamperl),
// SPECIES_SHINY_PAL(HUNTAIL, gMonShinyPalette_Huntail),
// SPECIES_SHINY_PAL(GOREBYSS, gMonShinyPalette_Gorebyss),
// SPECIES_SHINY_PAL(ABSOL, gMonShinyPalette_Absol),
// SPECIES_SHINY_PAL(SHUPPET, gMonShinyPalette_Shuppet),
// SPECIES_SHINY_PAL(BANETTE, gMonShinyPalette_Banette),
// SPECIES_SHINY_PAL(SEVIPER, gMonShinyPalette_Seviper),
// SPECIES_SHINY_PAL(ZANGOOSE, gMonShinyPalette_Zangoose),
// SPECIES_SHINY_PAL(RELICANTH, gMonShinyPalette_Relicanth),
// SPECIES_SHINY_PAL(ARON, gMonShinyPalette_Aron),
// SPECIES_SHINY_PAL(LAIRON, gMonShinyPalette_Lairon),
// SPECIES_SHINY_PAL(AGGRON, gMonShinyPalette_Aggron),
// SPECIES_SHINY_PAL(CASTFORM, gMonShinyPalette_Castform),
// SPECIES_SHINY_PAL(VOLBEAT, gMonShinyPalette_Volbeat),
// SPECIES_SHINY_PAL(ILLUMISE, gMonShinyPalette_Illumise),
// SPECIES_SHINY_PAL(LILEEP, gMonShinyPalette_Lileep),
// SPECIES_SHINY_PAL(CRADILY, gMonShinyPalette_Cradily),
// SPECIES_SHINY_PAL(ANORITH, gMonShinyPalette_Anorith),
// SPECIES_SHINY_PAL(ARMALDO, gMonShinyPalette_Armaldo),
// SPECIES_SHINY_PAL(RALTS, gMonShinyPalette_Ralts),
// SPECIES_SHINY_PAL(KIRLIA, gMonShinyPalette_Kirlia),
// SPECIES_SHINY_PAL(GARDEVOIR, gMonShinyPalette_Gardevoir),
// SPECIES_SHINY_PAL(BAGON, gMonShinyPalette_Bagon),
// SPECIES_SHINY_PAL(SHELGON, gMonShinyPalette_Shelgon),
// SPECIES_SHINY_PAL(SALAMENCE, gMonShinyPalette_Salamence),
// SPECIES_SHINY_PAL(BELDUM, gMonShinyPalette_Beldum),
// SPECIES_SHINY_PAL(METANG, gMonShinyPalette_Metang),
// SPECIES_SHINY_PAL(METAGROSS, gMonShinyPalette_Metagross),
// SPECIES_SHINY_PAL(REGIROCK, gMonShinyPalette_Regirock),
// SPECIES_SHINY_PAL(REGICE, gMonShinyPalette_Regice),
// SPECIES_SHINY_PAL(REGISTEEL, gMonShinyPalette_Registeel),
// SPECIES_SHINY_PAL(KYOGRE, gMonShinyPalette_Kyogre),
// SPECIES_SHINY_PAL(GROUDON, gMonShinyPalette_Groudon),
// SPECIES_SHINY_PAL(RAYQUAZA, gMonShinyPalette_Rayquaza),
// SPECIES_SHINY_PAL(LATIAS, gMonShinyPalette_Latias),
// SPECIES_SHINY_PAL(LATIOS, gMonShinyPalette_Latios),
// SPECIES_SHINY_PAL(JIRACHI, gMonShinyPalette_Jirachi),
// SPECIES_SHINY_PAL(DEOXYS, gMonShinyPalette_Deoxys),
// SPECIES_SHINY_PAL(CHIMECHO, gMonShinyPalette_Chimecho),
// SPECIES_SHINY_PAL(EGG, gMonPalette_Egg),
// SPECIES_SHINY_PAL(UNOWN_B, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_C, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_D, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_E, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_F, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_G, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_H, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_I, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_J, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_K, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_L, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_M, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_N, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_O, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_P, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_Q, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_R, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_S, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_T, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_U, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_V, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_W, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_X, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_Y, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_Z, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_EMARK, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_QMARK, gMonShinyPalette_Unown),
// };

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,414 +0,0 @@
// const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = {
// [SPECIES_NONE] = _("??????????"),
// [SPECIES_BULBASAUR] = _("BULBASAUR"),
// [SPECIES_IVYSAUR] = _("IVYSAUR"),
// [SPECIES_VENUSAUR] = _("VENUSAUR"),
// [SPECIES_CHARMANDER] = _("CHARMANDER"),
// [SPECIES_CHARMELEON] = _("CHARMELEON"),
// [SPECIES_CHARIZARD] = _("CHARIZARD"),
// [SPECIES_SQUIRTLE] = _("SQUIRTLE"),
// [SPECIES_WARTORTLE] = _("WARTORTLE"),
// [SPECIES_BLASTOISE] = _("BLASTOISE"),
// [SPECIES_CATERPIE] = _("CATERPIE"),
// [SPECIES_METAPOD] = _("METAPOD"),
// [SPECIES_BUTTERFREE] = _("BUTTERFREE"),
// [SPECIES_WEEDLE] = _("WEEDLE"),
// [SPECIES_KAKUNA] = _("KAKUNA"),
// [SPECIES_BEEDRILL] = _("BEEDRILL"),
// [SPECIES_PIDGEY] = _("PIDGEY"),
// [SPECIES_PIDGEOTTO] = _("PIDGEOTTO"),
// [SPECIES_PIDGEOT] = _("PIDGEOT"),
// [SPECIES_RATTATA] = _("RATTATA"),
// [SPECIES_RATICATE] = _("RATICATE"),
// [SPECIES_SPEAROW] = _("SPEAROW"),
// [SPECIES_FEAROW] = _("FEAROW"),
// [SPECIES_EKANS] = _("EKANS"),
// [SPECIES_ARBOK] = _("ARBOK"),
// [SPECIES_PIKACHU] = _("PIKACHU"),
// [SPECIES_RAICHU] = _("RAICHU"),
// [SPECIES_SANDSHREW] = _("SANDSHREW"),
// [SPECIES_SANDSLASH] = _("SANDSLASH"),
// [SPECIES_NIDORAN_F] = _("NIDORAN♀"),
// [SPECIES_NIDORINA] = _("NIDORINA"),
// [SPECIES_NIDOQUEEN] = _("NIDOQUEEN"),
// [SPECIES_NIDORAN_M] = _("NIDORAN♂"),
// [SPECIES_NIDORINO] = _("NIDORINO"),
// [SPECIES_NIDOKING] = _("NIDOKING"),
// [SPECIES_CLEFAIRY] = _("CLEFAIRY"),
// [SPECIES_CLEFABLE] = _("CLEFABLE"),
// [SPECIES_VULPIX] = _("VULPIX"),
// [SPECIES_NINETALES] = _("NINETALES"),
// [SPECIES_JIGGLYPUFF] = _("JIGGLYPUFF"),
// [SPECIES_WIGGLYTUFF] = _("WIGGLYTUFF"),
// [SPECIES_ZUBAT] = _("ZUBAT"),
// [SPECIES_GOLBAT] = _("GOLBAT"),
// [SPECIES_ODDISH] = _("ODDISH"),
// [SPECIES_GLOOM] = _("GLOOM"),
// [SPECIES_VILEPLUME] = _("VILEPLUME"),
// [SPECIES_PARAS] = _("PARAS"),
// [SPECIES_PARASECT] = _("PARASECT"),
// [SPECIES_VENONAT] = _("VENONAT"),
// [SPECIES_VENOMOTH] = _("VENOMOTH"),
// [SPECIES_DIGLETT] = _("DIGLETT"),
// [SPECIES_DUGTRIO] = _("DUGTRIO"),
// [SPECIES_MEOWTH] = _("MEOWTH"),
// [SPECIES_PERSIAN] = _("PERSIAN"),
// [SPECIES_PSYDUCK] = _("PSYDUCK"),
// [SPECIES_GOLDUCK] = _("GOLDUCK"),
// [SPECIES_MANKEY] = _("MANKEY"),
// [SPECIES_PRIMEAPE] = _("PRIMEAPE"),
// [SPECIES_GROWLITHE] = _("GROWLITHE"),
// [SPECIES_ARCANINE] = _("ARCANINE"),
// [SPECIES_POLIWAG] = _("POLIWAG"),
// [SPECIES_POLIWHIRL] = _("POLIWHIRL"),
// [SPECIES_POLIWRATH] = _("POLIWRATH"),
// [SPECIES_ABRA] = _("ABRA"),
// [SPECIES_KADABRA] = _("KADABRA"),
// [SPECIES_ALAKAZAM] = _("ALAKAZAM"),
// [SPECIES_MACHOP] = _("MACHOP"),
// [SPECIES_MACHOKE] = _("MACHOKE"),
// [SPECIES_MACHAMP] = _("MACHAMP"),
// [SPECIES_BELLSPROUT] = _("BELLSPROUT"),
// [SPECIES_WEEPINBELL] = _("WEEPINBELL"),
// [SPECIES_VICTREEBEL] = _("VICTREEBEL"),
// [SPECIES_TENTACOOL] = _("TENTACOOL"),
// [SPECIES_TENTACRUEL] = _("TENTACRUEL"),
// [SPECIES_GEODUDE] = _("GEODUDE"),
// [SPECIES_GRAVELER] = _("GRAVELER"),
// [SPECIES_GOLEM] = _("GOLEM"),
// [SPECIES_PONYTA] = _("PONYTA"),
// [SPECIES_RAPIDASH] = _("RAPIDASH"),
// [SPECIES_SLOWPOKE] = _("SLOWPOKE"),
// [SPECIES_SLOWBRO] = _("SLOWBRO"),
// [SPECIES_MAGNEMITE] = _("MAGNEMITE"),
// [SPECIES_MAGNETON] = _("MAGNETON"),
// [SPECIES_FARFETCHD] = _("FARFETCH'D"),
// [SPECIES_DODUO] = _("DODUO"),
// [SPECIES_DODRIO] = _("DODRIO"),
// [SPECIES_SEEL] = _("SEEL"),
// [SPECIES_DEWGONG] = _("DEWGONG"),
// [SPECIES_GRIMER] = _("GRIMER"),
// [SPECIES_MUK] = _("MUK"),
// [SPECIES_SHELLDER] = _("SHELLDER"),
// [SPECIES_CLOYSTER] = _("CLOYSTER"),
// [SPECIES_GASTLY] = _("GASTLY"),
// [SPECIES_HAUNTER] = _("HAUNTER"),
// [SPECIES_GENGAR] = _("GENGAR"),
// [SPECIES_ONIX] = _("ONIX"),
// [SPECIES_DROWZEE] = _("DROWZEE"),
// [SPECIES_HYPNO] = _("HYPNO"),
// [SPECIES_KRABBY] = _("KRABBY"),
// [SPECIES_KINGLER] = _("KINGLER"),
// [SPECIES_VOLTORB] = _("VOLTORB"),
// [SPECIES_ELECTRODE] = _("ELECTRODE"),
// [SPECIES_EXEGGCUTE] = _("EXEGGCUTE"),
// [SPECIES_EXEGGUTOR] = _("EXEGGUTOR"),
// [SPECIES_CUBONE] = _("CUBONE"),
// [SPECIES_MAROWAK] = _("MAROWAK"),
// [SPECIES_HITMONLEE] = _("HITMONLEE"),
// [SPECIES_HITMONCHAN] = _("HITMONCHAN"),
// [SPECIES_LICKITUNG] = _("LICKITUNG"),
// [SPECIES_KOFFING] = _("KOFFING"),
// [SPECIES_WEEZING] = _("WEEZING"),
// [SPECIES_RHYHORN] = _("RHYHORN"),
// [SPECIES_RHYDON] = _("RHYDON"),
// [SPECIES_CHANSEY] = _("CHANSEY"),
// [SPECIES_TANGELA] = _("TANGELA"),
// [SPECIES_KANGASKHAN] = _("KANGASKHAN"),
// [SPECIES_HORSEA] = _("HORSEA"),
// [SPECIES_SEADRA] = _("SEADRA"),
// [SPECIES_GOLDEEN] = _("GOLDEEN"),
// [SPECIES_SEAKING] = _("SEAKING"),
// [SPECIES_STARYU] = _("STARYU"),
// [SPECIES_STARMIE] = _("STARMIE"),
// [SPECIES_MR_MIME] = _("MR. MIME"),
// [SPECIES_SCYTHER] = _("SCYTHER"),
// [SPECIES_JYNX] = _("JYNX"),
// [SPECIES_ELECTABUZZ] = _("ELECTABUZZ"),
// [SPECIES_MAGMAR] = _("MAGMAR"),
// [SPECIES_PINSIR] = _("PINSIR"),
// [SPECIES_TAUROS] = _("TAUROS"),
// [SPECIES_MAGIKARP] = _("MAGIKARP"),
// [SPECIES_GYARADOS] = _("GYARADOS"),
// [SPECIES_LAPRAS] = _("LAPRAS"),
// [SPECIES_DITTO] = _("DITTO"),
// [SPECIES_EEVEE] = _("EEVEE"),
// [SPECIES_VAPOREON] = _("VAPOREON"),
// [SPECIES_JOLTEON] = _("JOLTEON"),
// [SPECIES_FLAREON] = _("FLAREON"),
// [SPECIES_PORYGON] = _("PORYGON"),
// [SPECIES_OMANYTE] = _("OMANYTE"),
// [SPECIES_OMASTAR] = _("OMASTAR"),
// [SPECIES_KABUTO] = _("KABUTO"),
// [SPECIES_KABUTOPS] = _("KABUTOPS"),
// [SPECIES_AERODACTYL] = _("AERODACTYL"),
// [SPECIES_SNORLAX] = _("SNORLAX"),
// [SPECIES_ARTICUNO] = _("ARTICUNO"),
// [SPECIES_ZAPDOS] = _("ZAPDOS"),
// [SPECIES_MOLTRES] = _("MOLTRES"),
// [SPECIES_DRATINI] = _("DRATINI"),
// [SPECIES_DRAGONAIR] = _("DRAGONAIR"),
// [SPECIES_DRAGONITE] = _("DRAGONITE"),
// [SPECIES_MEWTWO] = _("MEWTWO"),
// [SPECIES_MEW] = _("MEW"),
// [SPECIES_CHIKORITA] = _("CHIKORITA"),
// [SPECIES_BAYLEEF] = _("BAYLEEF"),
// [SPECIES_MEGANIUM] = _("MEGANIUM"),
// [SPECIES_CYNDAQUIL] = _("CYNDAQUIL"),
// [SPECIES_QUILAVA] = _("QUILAVA"),
// [SPECIES_TYPHLOSION] = _("TYPHLOSION"),
// [SPECIES_TOTODILE] = _("TOTODILE"),
// [SPECIES_CROCONAW] = _("CROCONAW"),
// [SPECIES_FERALIGATR] = _("FERALIGATR"),
// [SPECIES_SENTRET] = _("SENTRET"),
// [SPECIES_FURRET] = _("FURRET"),
// [SPECIES_HOOTHOOT] = _("HOOTHOOT"),
// [SPECIES_NOCTOWL] = _("NOCTOWL"),
// [SPECIES_LEDYBA] = _("LEDYBA"),
// [SPECIES_LEDIAN] = _("LEDIAN"),
// [SPECIES_SPINARAK] = _("SPINARAK"),
// [SPECIES_ARIADOS] = _("ARIADOS"),
// [SPECIES_CROBAT] = _("CROBAT"),
// [SPECIES_CHINCHOU] = _("CHINCHOU"),
// [SPECIES_LANTURN] = _("LANTURN"),
// [SPECIES_PICHU] = _("PICHU"),
// [SPECIES_CLEFFA] = _("CLEFFA"),
// [SPECIES_IGGLYBUFF] = _("IGGLYBUFF"),
// [SPECIES_TOGEPI] = _("TOGEPI"),
// [SPECIES_TOGETIC] = _("TOGETIC"),
// [SPECIES_NATU] = _("NATU"),
// [SPECIES_XATU] = _("XATU"),
// [SPECIES_MAREEP] = _("MAREEP"),
// [SPECIES_FLAAFFY] = _("FLAAFFY"),
// [SPECIES_AMPHAROS] = _("AMPHAROS"),
// [SPECIES_BELLOSSOM] = _("BELLOSSOM"),
// [SPECIES_MARILL] = _("MARILL"),
// [SPECIES_AZUMARILL] = _("AZUMARILL"),
// [SPECIES_SUDOWOODO] = _("SUDOWOODO"),
// [SPECIES_POLITOED] = _("POLITOED"),
// [SPECIES_HOPPIP] = _("HOPPIP"),
// [SPECIES_SKIPLOOM] = _("SKIPLOOM"),
// [SPECIES_JUMPLUFF] = _("JUMPLUFF"),
// [SPECIES_AIPOM] = _("AIPOM"),
// [SPECIES_SUNKERN] = _("SUNKERN"),
// [SPECIES_SUNFLORA] = _("SUNFLORA"),
// [SPECIES_YANMA] = _("YANMA"),
// [SPECIES_WOOPER] = _("WOOPER"),
// [SPECIES_QUAGSIRE] = _("QUAGSIRE"),
// [SPECIES_ESPEON] = _("ESPEON"),
// [SPECIES_UMBREON] = _("UMBREON"),
// [SPECIES_MURKROW] = _("MURKROW"),
// [SPECIES_SLOWKING] = _("SLOWKING"),
// [SPECIES_MISDREAVUS] = _("MISDREAVUS"),
// [SPECIES_UNOWN] = _("UNOWN"),
// [SPECIES_WOBBUFFET] = _("WOBBUFFET"),
// [SPECIES_GIRAFARIG] = _("GIRAFARIG"),
// [SPECIES_PINECO] = _("PINECO"),
// [SPECIES_FORRETRESS] = _("FORRETRESS"),
// [SPECIES_DUNSPARCE] = _("DUNSPARCE"),
// [SPECIES_GLIGAR] = _("GLIGAR"),
// [SPECIES_STEELIX] = _("STEELIX"),
// [SPECIES_SNUBBULL] = _("SNUBBULL"),
// [SPECIES_GRANBULL] = _("GRANBULL"),
// [SPECIES_QWILFISH] = _("QWILFISH"),
// [SPECIES_SCIZOR] = _("SCIZOR"),
// [SPECIES_SHUCKLE] = _("SHUCKLE"),
// [SPECIES_HERACROSS] = _("HERACROSS"),
// [SPECIES_SNEASEL] = _("SNEASEL"),
// [SPECIES_TEDDIURSA] = _("TEDDIURSA"),
// [SPECIES_URSARING] = _("URSARING"),
// [SPECIES_SLUGMA] = _("SLUGMA"),
// [SPECIES_MAGCARGO] = _("MAGCARGO"),
// [SPECIES_SWINUB] = _("SWINUB"),
// [SPECIES_PILOSWINE] = _("PILOSWINE"),
// [SPECIES_CORSOLA] = _("CORSOLA"),
// [SPECIES_REMORAID] = _("REMORAID"),
// [SPECIES_OCTILLERY] = _("OCTILLERY"),
// [SPECIES_DELIBIRD] = _("DELIBIRD"),
// [SPECIES_MANTINE] = _("MANTINE"),
// [SPECIES_SKARMORY] = _("SKARMORY"),
// [SPECIES_HOUNDOUR] = _("HOUNDOUR"),
// [SPECIES_HOUNDOOM] = _("HOUNDOOM"),
// [SPECIES_KINGDRA] = _("KINGDRA"),
// [SPECIES_PHANPY] = _("PHANPY"),
// [SPECIES_DONPHAN] = _("DONPHAN"),
// [SPECIES_PORYGON2] = _("PORYGON2"),
// [SPECIES_STANTLER] = _("STANTLER"),
// [SPECIES_SMEARGLE] = _("SMEARGLE"),
// [SPECIES_TYROGUE] = _("TYROGUE"),
// [SPECIES_HITMONTOP] = _("HITMONTOP"),
// [SPECIES_SMOOCHUM] = _("SMOOCHUM"),
// [SPECIES_ELEKID] = _("ELEKID"),
// [SPECIES_MAGBY] = _("MAGBY"),
// [SPECIES_MILTANK] = _("MILTANK"),
// [SPECIES_BLISSEY] = _("BLISSEY"),
// [SPECIES_RAIKOU] = _("RAIKOU"),
// [SPECIES_ENTEI] = _("ENTEI"),
// [SPECIES_SUICUNE] = _("SUICUNE"),
// [SPECIES_LARVITAR] = _("LARVITAR"),
// [SPECIES_PUPITAR] = _("PUPITAR"),
// [SPECIES_TYRANITAR] = _("TYRANITAR"),
// [SPECIES_LUGIA] = _("LUGIA"),
// [SPECIES_HO_OH] = _("HO-OH"),
// [SPECIES_CELEBI] = _("CELEBI"),
// [SPECIES_OLD_UNOWN_B] = _("?"),
// [SPECIES_OLD_UNOWN_C] = _("?"),
// [SPECIES_OLD_UNOWN_D] = _("?"),
// [SPECIES_OLD_UNOWN_E] = _("?"),
// [SPECIES_OLD_UNOWN_F] = _("?"),
// [SPECIES_OLD_UNOWN_G] = _("?"),
// [SPECIES_OLD_UNOWN_H] = _("?"),
// [SPECIES_OLD_UNOWN_I] = _("?"),
// [SPECIES_OLD_UNOWN_J] = _("?"),
// [SPECIES_OLD_UNOWN_K] = _("?"),
// [SPECIES_OLD_UNOWN_L] = _("?"),
// [SPECIES_OLD_UNOWN_M] = _("?"),
// [SPECIES_OLD_UNOWN_N] = _("?"),
// [SPECIES_OLD_UNOWN_O] = _("?"),
// [SPECIES_OLD_UNOWN_P] = _("?"),
// [SPECIES_OLD_UNOWN_Q] = _("?"),
// [SPECIES_OLD_UNOWN_R] = _("?"),
// [SPECIES_OLD_UNOWN_S] = _("?"),
// [SPECIES_OLD_UNOWN_T] = _("?"),
// [SPECIES_OLD_UNOWN_U] = _("?"),
// [SPECIES_OLD_UNOWN_V] = _("?"),
// [SPECIES_OLD_UNOWN_W] = _("?"),
// [SPECIES_OLD_UNOWN_X] = _("?"),
// [SPECIES_OLD_UNOWN_Y] = _("?"),
// [SPECIES_OLD_UNOWN_Z] = _("?"),
// [SPECIES_TREECKO] = _("TREECKO"),
// [SPECIES_GROVYLE] = _("GROVYLE"),
// [SPECIES_SCEPTILE] = _("SCEPTILE"),
// [SPECIES_TORCHIC] = _("TORCHIC"),
// [SPECIES_COMBUSKEN] = _("COMBUSKEN"),
// [SPECIES_BLAZIKEN] = _("BLAZIKEN"),
// [SPECIES_MUDKIP] = _("MUDKIP"),
// [SPECIES_MARSHTOMP] = _("MARSHTOMP"),
// [SPECIES_SWAMPERT] = _("SWAMPERT"),
// [SPECIES_POOCHYENA] = _("POOCHYENA"),
// [SPECIES_MIGHTYENA] = _("MIGHTYENA"),
// [SPECIES_ZIGZAGOON] = _("ZIGZAGOON"),
// [SPECIES_LINOONE] = _("LINOONE"),
// [SPECIES_WURMPLE] = _("WURMPLE"),
// [SPECIES_SILCOON] = _("SILCOON"),
// [SPECIES_BEAUTIFLY] = _("BEAUTIFLY"),
// [SPECIES_CASCOON] = _("CASCOON"),
// [SPECIES_DUSTOX] = _("DUSTOX"),
// [SPECIES_LOTAD] = _("LOTAD"),
// [SPECIES_LOMBRE] = _("LOMBRE"),
// [SPECIES_LUDICOLO] = _("LUDICOLO"),
// [SPECIES_SEEDOT] = _("SEEDOT"),
// [SPECIES_NUZLEAF] = _("NUZLEAF"),
// [SPECIES_SHIFTRY] = _("SHIFTRY"),
// [SPECIES_NINCADA] = _("NINCADA"),
// [SPECIES_NINJASK] = _("NINJASK"),
// [SPECIES_SHEDINJA] = _("SHEDINJA"),
// [SPECIES_TAILLOW] = _("TAILLOW"),
// [SPECIES_SWELLOW] = _("SWELLOW"),
// [SPECIES_SHROOMISH] = _("SHROOMISH"),
// [SPECIES_BRELOOM] = _("BRELOOM"),
// [SPECIES_SPINDA] = _("SPINDA"),
// [SPECIES_WINGULL] = _("WINGULL"),
// [SPECIES_PELIPPER] = _("PELIPPER"),
// [SPECIES_SURSKIT] = _("SURSKIT"),
// [SPECIES_MASQUERAIN] = _("MASQUERAIN"),
// [SPECIES_WAILMER] = _("WAILMER"),
// [SPECIES_WAILORD] = _("WAILORD"),
// [SPECIES_SKITTY] = _("SKITTY"),
// [SPECIES_DELCATTY] = _("DELCATTY"),
// [SPECIES_KECLEON] = _("KECLEON"),
// [SPECIES_BALTOY] = _("BALTOY"),
// [SPECIES_CLAYDOL] = _("CLAYDOL"),
// [SPECIES_NOSEPASS] = _("NOSEPASS"),
// [SPECIES_TORKOAL] = _("TORKOAL"),
// [SPECIES_SABLEYE] = _("SABLEYE"),
// [SPECIES_BARBOACH] = _("BARBOACH"),
// [SPECIES_WHISCASH] = _("WHISCASH"),
// [SPECIES_LUVDISC] = _("LUVDISC"),
// [SPECIES_CORPHISH] = _("CORPHISH"),
// [SPECIES_CRAWDAUNT] = _("CRAWDAUNT"),
// [SPECIES_FEEBAS] = _("FEEBAS"),
// [SPECIES_MILOTIC] = _("MILOTIC"),
// [SPECIES_CARVANHA] = _("CARVANHA"),
// [SPECIES_SHARPEDO] = _("SHARPEDO"),
// [SPECIES_TRAPINCH] = _("TRAPINCH"),
// [SPECIES_VIBRAVA] = _("VIBRAVA"),
// [SPECIES_FLYGON] = _("FLYGON"),
// [SPECIES_MAKUHITA] = _("MAKUHITA"),
// [SPECIES_HARIYAMA] = _("HARIYAMA"),
// [SPECIES_ELECTRIKE] = _("ELECTRIKE"),
// [SPECIES_MANECTRIC] = _("MANECTRIC"),
// [SPECIES_NUMEL] = _("NUMEL"),
// [SPECIES_CAMERUPT] = _("CAMERUPT"),
// [SPECIES_SPHEAL] = _("SPHEAL"),
// [SPECIES_SEALEO] = _("SEALEO"),
// [SPECIES_WALREIN] = _("WALREIN"),
// [SPECIES_CACNEA] = _("CACNEA"),
// [SPECIES_CACTURNE] = _("CACTURNE"),
// [SPECIES_SNORUNT] = _("SNORUNT"),
// [SPECIES_GLALIE] = _("GLALIE"),
// [SPECIES_LUNATONE] = _("LUNATONE"),
// [SPECIES_SOLROCK] = _("SOLROCK"),
// [SPECIES_AZURILL] = _("AZURILL"),
// [SPECIES_SPOINK] = _("SPOINK"),
// [SPECIES_GRUMPIG] = _("GRUMPIG"),
// [SPECIES_PLUSLE] = _("PLUSLE"),
// [SPECIES_MINUN] = _("MINUN"),
// [SPECIES_MAWILE] = _("MAWILE"),
// [SPECIES_MEDITITE] = _("MEDITITE"),
// [SPECIES_MEDICHAM] = _("MEDICHAM"),
// [SPECIES_SWABLU] = _("SWABLU"),
// [SPECIES_ALTARIA] = _("ALTARIA"),
// [SPECIES_WYNAUT] = _("WYNAUT"),
// [SPECIES_DUSKULL] = _("DUSKULL"),
// [SPECIES_DUSCLOPS] = _("DUSCLOPS"),
// [SPECIES_ROSELIA] = _("ROSELIA"),
// [SPECIES_SLAKOTH] = _("SLAKOTH"),
// [SPECIES_VIGOROTH] = _("VIGOROTH"),
// [SPECIES_SLAKING] = _("SLAKING"),
// [SPECIES_GULPIN] = _("GULPIN"),
// [SPECIES_SWALOT] = _("SWALOT"),
// [SPECIES_TROPIUS] = _("TROPIUS"),
// [SPECIES_WHISMUR] = _("WHISMUR"),
// [SPECIES_LOUDRED] = _("LOUDRED"),
// [SPECIES_EXPLOUD] = _("EXPLOUD"),
// [SPECIES_CLAMPERL] = _("CLAMPERL"),
// [SPECIES_HUNTAIL] = _("HUNTAIL"),
// [SPECIES_GOREBYSS] = _("GOREBYSS"),
// [SPECIES_ABSOL] = _("ABSOL"),
// [SPECIES_SHUPPET] = _("SHUPPET"),
// [SPECIES_BANETTE] = _("BANETTE"),
// [SPECIES_SEVIPER] = _("SEVIPER"),
// [SPECIES_ZANGOOSE] = _("ZANGOOSE"),
// [SPECIES_RELICANTH] = _("RELICANTH"),
// [SPECIES_ARON] = _("ARON"),
// [SPECIES_LAIRON] = _("LAIRON"),
// [SPECIES_AGGRON] = _("AGGRON"),
// [SPECIES_CASTFORM] = _("CASTFORM"),
// [SPECIES_VOLBEAT] = _("VOLBEAT"),
// [SPECIES_ILLUMISE] = _("ILLUMISE"),
// [SPECIES_LILEEP] = _("LILEEP"),
// [SPECIES_CRADILY] = _("CRADILY"),
// [SPECIES_ANORITH] = _("ANORITH"),
// [SPECIES_ARMALDO] = _("ARMALDO"),
// [SPECIES_RALTS] = _("RALTS"),
// [SPECIES_KIRLIA] = _("KIRLIA"),
// [SPECIES_GARDEVOIR] = _("GARDEVOIR"),
// [SPECIES_BAGON] = _("BAGON"),
// [SPECIES_SHELGON] = _("SHELGON"),
// [SPECIES_SALAMENCE] = _("SALAMENCE"),
// [SPECIES_BELDUM] = _("BELDUM"),
// [SPECIES_METANG] = _("METANG"),
// [SPECIES_METAGROSS] = _("METAGROSS"),
// [SPECIES_REGIROCK] = _("REGIROCK"),
// [SPECIES_REGICE] = _("REGICE"),
// [SPECIES_REGISTEEL] = _("REGISTEEL"),
// [SPECIES_KYOGRE] = _("KYOGRE"),
// [SPECIES_GROUDON] = _("GROUDON"),
// [SPECIES_RAYQUAZA] = _("RAYQUAZA"),
// [SPECIES_LATIAS] = _("LATIAS"),
// [SPECIES_LATIOS] = _("LATIOS"),
// [SPECIES_JIRACHI] = _("JIRACHI"),
// [SPECIES_DEOXYS] = _("DEOXYS"),
// [SPECIES_CHIMECHO] = _("CHIMECHO"),
// };

View File

@ -8263,62 +8263,62 @@
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_MEWTWO"
"species": "SPECIES_CLEFAIRY"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_MEWTWO"
"species": "SPECIES_CLEFAIRY"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_MEWTWO"
"species": "SPECIES_CLEFAIRY"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_MEW"
"species": "SPECIES_CLEFAIRY"
},
{
"min_level": 2,
"max_level": 2,
"species": "SPECIES_MEW"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 2,
"max_level": 2,
"species": "SPECIES_MEW"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 4,
"max_level": 4,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 4,
"max_level": 4,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 5,
"max_level": 5,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 4,
"max_level": 4,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
}
]
}

View File

@ -32,7 +32,6 @@
// Combination of RSE's Day-Care (re-used on Four Island), FRLG's Day-Care, and egg_hatch.c
extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
struct EggHatchData
{
@ -605,7 +604,7 @@ static void Debug_AddDaycareSteps(u16 numSteps)
u8 GetNumLevelsGainedFromDaycare(void)
{
if (GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0)
if (GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[gSpecialVar_0x8004].mon, MON_DATA_SPECIES) != 0)
return GetNumLevelsGainedForDaycareMon(&gSaveBlock1Ptr->daycare.mons[gSpecialVar_0x8004]);
return 0;
@ -651,14 +650,17 @@ static u16 GetEggSpecies(u16 species)
// Working backwards up to 5 times seems arbitrary, since the maximum number
// of times would only be 3 for 3-stage evolutions.
for (i = 0; i < EVOS_PER_MON; i++)
for (i = 0; i < 5; i++)
{
found = FALSE;
for (j = 1; j < NUM_SPECIES; j++)
{
for (k = 0; k < EVOS_PER_MON; k++)
const struct Evolution *evolutions = GetSpeciesEvolutions(j);
if (evolutions == NULL)
continue;
for (k = 0; evolutions[k].method != EVOLUTIONS_END; k++)
{
if (gEvolutionTable[j][k].targetSpecies == species)
if (SanitizeSpeciesId(evolutions[k].targetSpecies) == species)
{
species = j;
found = TRUE;
@ -1650,7 +1652,7 @@ static void AddHatchedMonToParty(u8 id)
SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
pokeNum = GetMonData(mon, MON_DATA_SPECIES);
GetSpeciesName(name, pokeNum);
StringCopy(name, GetSpeciesName(pokeNum));
SetMonData(mon, MON_DATA_NICKNAME, name);
pokeNum = SpeciesToNationalPokedexNum(pokeNum);

View File

@ -27,7 +27,6 @@
#include "constants/pokemon.h"
#include "constants/items.h"
extern struct Evolution gEvolutionTable[][EVOS_PER_MON];
struct EvoInfo
{
@ -546,14 +545,19 @@ static void CB2_TradeEvolutionSceneUpdate(void)
static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
{
u32 data = 0;
if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE)
const struct Evolution *evolutions = GetSpeciesEvolutions(preEvoSpecies);
if (evolutions == NULL)
{
return;
}
if (evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE)
{
s32 i;
struct Pokemon* shedinja = &gPlayerParty[gPlayerPartyCount];
CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &gEvolutionTable[preEvoSpecies][1].targetSpecies);
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, gSpeciesInfo[gEvolutionTable[preEvoSpecies][1].targetSpecies].speciesName);
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &evolutions[1].targetSpecies);
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, GetSpeciesName(evolutions[1].targetSpecies));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data);
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data);
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data);
@ -570,8 +574,8 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
CalculateMonStats(&gPlayerParty[gPlayerPartyCount]);
CalculatePlayerPartyCount();
GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), FLAG_SET_SEEN);
GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), FLAG_SET_CAUGHT);
GetSetPokedexFlag(SpeciesToNationalPokedexNum(evolutions[1].targetSpecies), FLAG_SET_SEEN);
GetSetPokedexFlag(SpeciesToNationalPokedexNum(evolutions[1].targetSpecies), FLAG_SET_CAUGHT);
if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA
&& GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE
@ -983,7 +987,7 @@ static void Task_EvolutionScene(u8 taskId)
{
// Selected move to forget
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
if (IsHMMove2(move))
if (IsMoveHM(move))
{
// Can't forget HMs
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_TABLE_START]);
@ -1384,7 +1388,7 @@ static void Task_TradeEvolutionScene(u8 taskId)
{
// Selected move to forget
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
if (IsHMMove2(move))
if (IsMoveHM(move))
{
// Can't forget HMs
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_TABLE_START]);

View File

@ -693,6 +693,11 @@ u8 ItemId_GetSecondaryId(u16 itemId)
return gItems[SanitizeItemId(itemId)].secondaryId;
}
u32 ItemId_GetFlingPower(u32 itemId)
{
return gItems[SanitizeItemId(itemId)].flingPower;
}
const u8 *ItemId_GetEffect(u32 itemId)
{
if (itemId == ITEM_ENIGMA_BERRY)

View File

@ -816,30 +816,30 @@ static void MoveLearnerInitListMenu(void)
static void PrintMoveInfo(u16 move)
{
u8 buffer[50];
BlitMenuInfoIcon(2, gBattleMoves[move].type + 1, 1, 4);
BlitMenuInfoIcon(2, gMovesInfo[move].type + 1, 1, 4);
if (gBattleMoves[move].power < 2)
if (gMovesInfo[move].power < 2)
{
PrintTextOnWindow(3, gText_ThreeHyphens, 1, 4, 0, 0);
}
else
{
ConvertIntToDecimalStringN(buffer, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(buffer, gMovesInfo[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
PrintTextOnWindow(3, buffer, 1, 4, 0, 0);
}
if (gBattleMoves[move].accuracy == 0)
if (gMovesInfo[move].accuracy == 0)
{
PrintTextOnWindow(3, gText_ThreeHyphens, 1, 18, 0, 1);
}
else
{
ConvertIntToDecimalStringN(buffer, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(buffer, gMovesInfo[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
PrintTextOnWindow(3, buffer, 1, 18, 0, 1);
}
ConvertIntToDecimalStringN(buffer, gBattleMoves[move].pp, STR_CONV_MODE_LEFT_ALIGN, 2);
ConvertIntToDecimalStringN(buffer, gMovesInfo[move].pp, STR_CONV_MODE_LEFT_ALIGN, 2);
PrintTextOnWindow(4, buffer, 2, 2, 0, 0);
PrintTextOnWindow(5, gMoveDescriptionPointers[move - 1], 1, 0, 0, 0);
PrintTextOnWindow(5, gMovesInfo[move].description, 1, 0, 0, 0);
}
static void LoadMoveInfoUI(void)

View File

@ -733,7 +733,7 @@ void ListMenu_LoadMonIconPalette(u8 palOffset, u16 speciesId)
void ListMenu_DrawMonIconGraphics(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y)
{
BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32);
BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality), x, y, 32, 32);
}
void ListMenuLoadStdPalAt(u8 palOffset, u8 palId)

View File

@ -4459,7 +4459,7 @@ void Task_AbilityCapsule(u8 taskId)
}
gPartyMenuUseExitCallback = TRUE;
GetMonNickname(&gPlayerParty[tMonId], gStringVar1);
StringCopy(gStringVar2, gAbilityNames[GetAbilityBySpecies(tSpecies, tAbilityNum)]);
StringCopy(gStringVar2, gAbilitiesInfo[GetAbilityBySpecies(tSpecies, tAbilityNum)].name);
StringExpandPlaceholders(gStringVar4, askText);
PlaySE(SE_SELECT);
DisplayPartyMenuMessage(gStringVar4, 1);
@ -4546,7 +4546,7 @@ void Task_AbilityPatch(u8 taskId)
}
gPartyMenuUseExitCallback = TRUE;
GetMonNickname(&gPlayerParty[tMonId], gStringVar1);
StringCopy(gStringVar2, gAbilityNames[GetAbilityBySpecies(tSpecies, tAbilityNum)]);
StringCopy(gStringVar2, gAbilitiesInfo[GetAbilityBySpecies(tSpecies, tAbilityNum)].name);
StringExpandPlaceholders(gStringVar4, askText);
PlaySE(SE_SELECT);
DisplayPartyMenuMessage(gStringVar4, 1);
@ -5111,26 +5111,14 @@ void ItemUseCB_PPUp(u8 taskId, TaskFunc func)
u16 ItemIdToBattleMoveId(u16 item)
{
u16 tmNumber = item - ITEM_TM01;
return gTMHMMoves[tmNumber];
}
bool8 IsMoveHm(u16 move)
{
u8 i;
for (i = 0; i < NUM_HIDDEN_MACHINES - 1; ++i) // no dive
if (gTMHMMoves[i + NUM_TECHNICAL_MACHINES] == move)
return TRUE;
return FALSE;
return (ItemId_GetPocket(item) == POCKET_TM_CASE) ? gItems[item].secondaryId : MOVE_NONE;
}
bool8 MonKnowsMove(struct Pokemon *mon, u16 move)
{
u8 i;
for (i = 0; i < MAX_MON_MOVES; ++i)
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (GetMonData(mon, MON_DATA_MOVE1 + i) == move)
return TRUE;
@ -5138,6 +5126,18 @@ bool8 MonKnowsMove(struct Pokemon *mon, u16 move)
return FALSE;
}
bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move)
{
u8 i;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (GetBoxMonData(boxMon, MON_DATA_MOVE1 + i) == move)
return TRUE;
}
return FALSE;
}
static void DisplayLearnMoveMessage(const u8 *str)
{
StringExpandPlaceholders(gStringVar4, str);
@ -5410,8 +5410,6 @@ static void Task_TryLearningNextMoveAfterText(u8 taskId)
Task_TryLearningNextMove(taskId);
}
#define SOME_OFFSET 6
void ItemUseCB_RareCandy(u8 taskId, TaskFunc func)
{
struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];

View File

@ -138,8 +138,6 @@ static void ItemPrintFunc_OrderedListMenu(u8 windowId, u32 itemId, u8 y);
static void Task_DexScreen_RegisterNonKantoMonBeforeNationalDex(u8 taskId);
static void Task_DexScreen_RegisterMonToPokedex(u8 taskId);
#include "data/pokemon_graphics/footprint_table.h"
const u32 sCategoryMonInfoBgTiles[] = INCBIN_U32("graphics/pokedex/mini_page.4bpp.lz");
const u32 sKantoDexTiles[] = INCBIN_U32("graphics/pokedex/kanto_dex_bgtiles.4bpp.lz");
const u32 sNatDexTiles[] = INCBIN_U32("graphics/pokedex/national_dex_bgtiles.4bpp.lz");
@ -201,7 +199,6 @@ const u16 sBlitTiles_WideEllipse[] = INCBIN_U16("graphics/pokedex/blit_wide_elli
static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
#include "data/pokemon/pokedex_text.h"
#include "data/pokemon/pokedex_entries.h"
static const struct BgTemplate sBgTemplates[] = {
{

File diff suppressed because it is too large Load Diff

View File

@ -28,892 +28,6 @@ const u16 gMonIconPalettes[][16] = {
INCBIN_U16("graphics/pokemon/icon_palettes/pal5.gbapal")
};
// const u8 *const gMonIconTable[] = {
// [SPECIES_NONE] = gMonIcon_QuestionMark,
// [SPECIES_BULBASAUR] = gMonIcon_Bulbasaur,
// [SPECIES_IVYSAUR] = gMonIcon_Ivysaur,
// [SPECIES_VENUSAUR] = gMonIcon_Venusaur,
// [SPECIES_CHARMANDER] = gMonIcon_Charmander,
// [SPECIES_CHARMELEON] = gMonIcon_Charmeleon,
// [SPECIES_CHARIZARD] = gMonIcon_Charizard,
// [SPECIES_SQUIRTLE] = gMonIcon_Squirtle,
// [SPECIES_WARTORTLE] = gMonIcon_Wartortle,
// [SPECIES_BLASTOISE] = gMonIcon_Blastoise,
// [SPECIES_CATERPIE] = gMonIcon_Caterpie,
// [SPECIES_METAPOD] = gMonIcon_Metapod,
// [SPECIES_BUTTERFREE] = gMonIcon_Butterfree,
// [SPECIES_WEEDLE] = gMonIcon_Weedle,
// [SPECIES_KAKUNA] = gMonIcon_Kakuna,
// [SPECIES_BEEDRILL] = gMonIcon_Beedrill,
// [SPECIES_PIDGEY] = gMonIcon_Pidgey,
// [SPECIES_PIDGEOTTO] = gMonIcon_Pidgeotto,
// [SPECIES_PIDGEOT] = gMonIcon_Pidgeot,
// [SPECIES_RATTATA] = gMonIcon_Rattata,
// [SPECIES_RATICATE] = gMonIcon_Raticate,
// [SPECIES_SPEAROW] = gMonIcon_Spearow,
// [SPECIES_FEAROW] = gMonIcon_Fearow,
// [SPECIES_EKANS] = gMonIcon_Ekans,
// [SPECIES_ARBOK] = gMonIcon_Arbok,
// [SPECIES_PIKACHU] = gMonIcon_Pikachu,
// [SPECIES_RAICHU] = gMonIcon_Raichu,
// [SPECIES_SANDSHREW] = gMonIcon_Sandshrew,
// [SPECIES_SANDSLASH] = gMonIcon_Sandslash,
// [SPECIES_NIDORAN_F] = gMonIcon_NidoranF,
// [SPECIES_NIDORINA] = gMonIcon_Nidorina,
// [SPECIES_NIDOQUEEN] = gMonIcon_Nidoqueen,
// [SPECIES_NIDORAN_M] = gMonIcon_NidoranM,
// [SPECIES_NIDORINO] = gMonIcon_Nidorino,
// [SPECIES_NIDOKING] = gMonIcon_Nidoking,
// [SPECIES_CLEFAIRY] = gMonIcon_Clefairy,
// [SPECIES_CLEFABLE] = gMonIcon_Clefable,
// [SPECIES_VULPIX] = gMonIcon_Vulpix,
// [SPECIES_NINETALES] = gMonIcon_Ninetales,
// [SPECIES_JIGGLYPUFF] = gMonIcon_Jigglypuff,
// [SPECIES_WIGGLYTUFF] = gMonIcon_Wigglytuff,
// [SPECIES_ZUBAT] = gMonIcon_Zubat,
// [SPECIES_GOLBAT] = gMonIcon_Golbat,
// [SPECIES_ODDISH] = gMonIcon_Oddish,
// [SPECIES_GLOOM] = gMonIcon_Gloom,
// [SPECIES_VILEPLUME] = gMonIcon_Vileplume,
// [SPECIES_PARAS] = gMonIcon_Paras,
// [SPECIES_PARASECT] = gMonIcon_Parasect,
// [SPECIES_VENONAT] = gMonIcon_Venonat,
// [SPECIES_VENOMOTH] = gMonIcon_Venomoth,
// [SPECIES_DIGLETT] = gMonIcon_Diglett,
// [SPECIES_DUGTRIO] = gMonIcon_Dugtrio,
// [SPECIES_MEOWTH] = gMonIcon_Meowth,
// [SPECIES_PERSIAN] = gMonIcon_Persian,
// [SPECIES_PSYDUCK] = gMonIcon_Psyduck,
// [SPECIES_GOLDUCK] = gMonIcon_Golduck,
// [SPECIES_MANKEY] = gMonIcon_Mankey,
// [SPECIES_PRIMEAPE] = gMonIcon_Primeape,
// [SPECIES_GROWLITHE] = gMonIcon_Growlithe,
// [SPECIES_ARCANINE] = gMonIcon_Arcanine,
// [SPECIES_POLIWAG] = gMonIcon_Poliwag,
// [SPECIES_POLIWHIRL] = gMonIcon_Poliwhirl,
// [SPECIES_POLIWRATH] = gMonIcon_Poliwrath,
// [SPECIES_ABRA] = gMonIcon_Abra,
// [SPECIES_KADABRA] = gMonIcon_Kadabra,
// [SPECIES_ALAKAZAM] = gMonIcon_Alakazam,
// [SPECIES_MACHOP] = gMonIcon_Machop,
// [SPECIES_MACHOKE] = gMonIcon_Machoke,
// [SPECIES_MACHAMP] = gMonIcon_Machamp,
// [SPECIES_BELLSPROUT] = gMonIcon_Bellsprout,
// [SPECIES_WEEPINBELL] = gMonIcon_Weepinbell,
// [SPECIES_VICTREEBEL] = gMonIcon_Victreebel,
// [SPECIES_TENTACOOL] = gMonIcon_Tentacool,
// [SPECIES_TENTACRUEL] = gMonIcon_Tentacruel,
// [SPECIES_GEODUDE] = gMonIcon_Geodude,
// [SPECIES_GRAVELER] = gMonIcon_Graveler,
// [SPECIES_GOLEM] = gMonIcon_Golem,
// [SPECIES_PONYTA] = gMonIcon_Ponyta,
// [SPECIES_RAPIDASH] = gMonIcon_Rapidash,
// [SPECIES_SLOWPOKE] = gMonIcon_Slowpoke,
// [SPECIES_SLOWBRO] = gMonIcon_Slowbro,
// [SPECIES_MAGNEMITE] = gMonIcon_Magnemite,
// [SPECIES_MAGNETON] = gMonIcon_Magneton,
// [SPECIES_FARFETCHD] = gMonIcon_Farfetchd,
// [SPECIES_DODUO] = gMonIcon_Doduo,
// [SPECIES_DODRIO] = gMonIcon_Dodrio,
// [SPECIES_SEEL] = gMonIcon_Seel,
// [SPECIES_DEWGONG] = gMonIcon_Dewgong,
// [SPECIES_GRIMER] = gMonIcon_Grimer,
// [SPECIES_MUK] = gMonIcon_Muk,
// [SPECIES_SHELLDER] = gMonIcon_Shellder,
// [SPECIES_CLOYSTER] = gMonIcon_Cloyster,
// [SPECIES_GASTLY] = gMonIcon_Gastly,
// [SPECIES_HAUNTER] = gMonIcon_Haunter,
// [SPECIES_GENGAR] = gMonIcon_Gengar,
// [SPECIES_ONIX] = gMonIcon_Onix,
// [SPECIES_DROWZEE] = gMonIcon_Drowzee,
// [SPECIES_HYPNO] = gMonIcon_Hypno,
// [SPECIES_KRABBY] = gMonIcon_Krabby,
// [SPECIES_KINGLER] = gMonIcon_Kingler,
// [SPECIES_VOLTORB] = gMonIcon_Voltorb,
// [SPECIES_ELECTRODE] = gMonIcon_Electrode,
// [SPECIES_EXEGGCUTE] = gMonIcon_Exeggcute,
// [SPECIES_EXEGGUTOR] = gMonIcon_Exeggutor,
// [SPECIES_CUBONE] = gMonIcon_Cubone,
// [SPECIES_MAROWAK] = gMonIcon_Marowak,
// [SPECIES_HITMONLEE] = gMonIcon_Hitmonlee,
// [SPECIES_HITMONCHAN] = gMonIcon_Hitmonchan,
// [SPECIES_LICKITUNG] = gMonIcon_Lickitung,
// [SPECIES_KOFFING] = gMonIcon_Koffing,
// [SPECIES_WEEZING] = gMonIcon_Weezing,
// [SPECIES_RHYHORN] = gMonIcon_Rhyhorn,
// [SPECIES_RHYDON] = gMonIcon_Rhydon,
// [SPECIES_CHANSEY] = gMonIcon_Chansey,
// [SPECIES_TANGELA] = gMonIcon_Tangela,
// [SPECIES_KANGASKHAN] = gMonIcon_Kangaskhan,
// [SPECIES_HORSEA] = gMonIcon_Horsea,
// [SPECIES_SEADRA] = gMonIcon_Seadra,
// [SPECIES_GOLDEEN] = gMonIcon_Goldeen,
// [SPECIES_SEAKING] = gMonIcon_Seaking,
// [SPECIES_STARYU] = gMonIcon_Staryu,
// [SPECIES_STARMIE] = gMonIcon_Starmie,
// [SPECIES_MR_MIME] = gMonIcon_Mrmime,
// [SPECIES_SCYTHER] = gMonIcon_Scyther,
// [SPECIES_JYNX] = gMonIcon_Jynx,
// [SPECIES_ELECTABUZZ] = gMonIcon_Electabuzz,
// [SPECIES_MAGMAR] = gMonIcon_Magmar,
// [SPECIES_PINSIR] = gMonIcon_Pinsir,
// [SPECIES_TAUROS] = gMonIcon_Tauros,
// [SPECIES_MAGIKARP] = gMonIcon_Magikarp,
// [SPECIES_GYARADOS] = gMonIcon_Gyarados,
// [SPECIES_LAPRAS] = gMonIcon_Lapras,
// [SPECIES_DITTO] = gMonIcon_Ditto,
// [SPECIES_EEVEE] = gMonIcon_Eevee,
// [SPECIES_VAPOREON] = gMonIcon_Vaporeon,
// [SPECIES_JOLTEON] = gMonIcon_Jolteon,
// [SPECIES_FLAREON] = gMonIcon_Flareon,
// [SPECIES_PORYGON] = gMonIcon_Porygon,
// [SPECIES_OMANYTE] = gMonIcon_Omanyte,
// [SPECIES_OMASTAR] = gMonIcon_Omastar,
// [SPECIES_KABUTO] = gMonIcon_Kabuto,
// [SPECIES_KABUTOPS] = gMonIcon_Kabutops,
// [SPECIES_AERODACTYL] = gMonIcon_Aerodactyl,
// [SPECIES_SNORLAX] = gMonIcon_Snorlax,
// [SPECIES_ARTICUNO] = gMonIcon_Articuno,
// [SPECIES_ZAPDOS] = gMonIcon_Zapdos,
// [SPECIES_MOLTRES] = gMonIcon_Moltres,
// [SPECIES_DRATINI] = gMonIcon_Dratini,
// [SPECIES_DRAGONAIR] = gMonIcon_Dragonair,
// [SPECIES_DRAGONITE] = gMonIcon_Dragonite,
// [SPECIES_MEWTWO] = gMonIcon_Mewtwo,
// [SPECIES_MEW] = gMonIcon_Mew,
// [SPECIES_CHIKORITA] = gMonIcon_Chikorita,
// [SPECIES_BAYLEEF] = gMonIcon_Bayleef,
// [SPECIES_MEGANIUM] = gMonIcon_Meganium,
// [SPECIES_CYNDAQUIL] = gMonIcon_Cyndaquil,
// [SPECIES_QUILAVA] = gMonIcon_Quilava,
// [SPECIES_TYPHLOSION] = gMonIcon_Typhlosion,
// [SPECIES_TOTODILE] = gMonIcon_Totodile,
// [SPECIES_CROCONAW] = gMonIcon_Croconaw,
// [SPECIES_FERALIGATR] = gMonIcon_Feraligatr,
// [SPECIES_SENTRET] = gMonIcon_Sentret,
// [SPECIES_FURRET] = gMonIcon_Furret,
// [SPECIES_HOOTHOOT] = gMonIcon_Hoothoot,
// [SPECIES_NOCTOWL] = gMonIcon_Noctowl,
// [SPECIES_LEDYBA] = gMonIcon_Ledyba,
// [SPECIES_LEDIAN] = gMonIcon_Ledian,
// [SPECIES_SPINARAK] = gMonIcon_Spinarak,
// [SPECIES_ARIADOS] = gMonIcon_Ariados,
// [SPECIES_CROBAT] = gMonIcon_Crobat,
// [SPECIES_CHINCHOU] = gMonIcon_Chinchou,
// [SPECIES_LANTURN] = gMonIcon_Lanturn,
// [SPECIES_PICHU] = gMonIcon_Pichu,
// [SPECIES_CLEFFA] = gMonIcon_Cleffa,
// [SPECIES_IGGLYBUFF] = gMonIcon_Igglybuff,
// [SPECIES_TOGEPI] = gMonIcon_Togepi,
// [SPECIES_TOGETIC] = gMonIcon_Togetic,
// [SPECIES_NATU] = gMonIcon_Natu,
// [SPECIES_XATU] = gMonIcon_Xatu,
// [SPECIES_MAREEP] = gMonIcon_Mareep,
// [SPECIES_FLAAFFY] = gMonIcon_Flaaffy,
// [SPECIES_AMPHAROS] = gMonIcon_Ampharos,
// [SPECIES_BELLOSSOM] = gMonIcon_Bellossom,
// [SPECIES_MARILL] = gMonIcon_Marill,
// [SPECIES_AZUMARILL] = gMonIcon_Azumarill,
// [SPECIES_SUDOWOODO] = gMonIcon_Sudowoodo,
// [SPECIES_POLITOED] = gMonIcon_Politoed,
// [SPECIES_HOPPIP] = gMonIcon_Hoppip,
// [SPECIES_SKIPLOOM] = gMonIcon_Skiploom,
// [SPECIES_JUMPLUFF] = gMonIcon_Jumpluff,
// [SPECIES_AIPOM] = gMonIcon_Aipom,
// [SPECIES_SUNKERN] = gMonIcon_Sunkern,
// [SPECIES_SUNFLORA] = gMonIcon_Sunflora,
// [SPECIES_YANMA] = gMonIcon_Yanma,
// [SPECIES_WOOPER] = gMonIcon_Wooper,
// [SPECIES_QUAGSIRE] = gMonIcon_Quagsire,
// [SPECIES_ESPEON] = gMonIcon_Espeon,
// [SPECIES_UMBREON] = gMonIcon_Umbreon,
// [SPECIES_MURKROW] = gMonIcon_Murkrow,
// [SPECIES_SLOWKING] = gMonIcon_Slowking,
// [SPECIES_MISDREAVUS] = gMonIcon_Misdreavus,
// [SPECIES_UNOWN] = gMonIcon_UnownA,
// [SPECIES_WOBBUFFET] = gMonIcon_Wobbuffet,
// [SPECIES_GIRAFARIG] = gMonIcon_Girafarig,
// [SPECIES_PINECO] = gMonIcon_Pineco,
// [SPECIES_FORRETRESS] = gMonIcon_Forretress,
// [SPECIES_DUNSPARCE] = gMonIcon_Dunsparce,
// [SPECIES_GLIGAR] = gMonIcon_Gligar,
// [SPECIES_STEELIX] = gMonIcon_Steelix,
// [SPECIES_SNUBBULL] = gMonIcon_Snubbull,
// [SPECIES_GRANBULL] = gMonIcon_Granbull,
// [SPECIES_QWILFISH] = gMonIcon_Qwilfish,
// [SPECIES_SCIZOR] = gMonIcon_Scizor,
// [SPECIES_SHUCKLE] = gMonIcon_Shuckle,
// [SPECIES_HERACROSS] = gMonIcon_Heracross,
// [SPECIES_SNEASEL] = gMonIcon_Sneasel,
// [SPECIES_TEDDIURSA] = gMonIcon_Teddiursa,
// [SPECIES_URSARING] = gMonIcon_Ursaring,
// [SPECIES_SLUGMA] = gMonIcon_Slugma,
// [SPECIES_MAGCARGO] = gMonIcon_Magcargo,
// [SPECIES_SWINUB] = gMonIcon_Swinub,
// [SPECIES_PILOSWINE] = gMonIcon_Piloswine,
// [SPECIES_CORSOLA] = gMonIcon_Corsola,
// [SPECIES_REMORAID] = gMonIcon_Remoraid,
// [SPECIES_OCTILLERY] = gMonIcon_Octillery,
// [SPECIES_DELIBIRD] = gMonIcon_Delibird,
// [SPECIES_MANTINE] = gMonIcon_Mantine,
// [SPECIES_SKARMORY] = gMonIcon_Skarmory,
// [SPECIES_HOUNDOUR] = gMonIcon_Houndour,
// [SPECIES_HOUNDOOM] = gMonIcon_Houndoom,
// [SPECIES_KINGDRA] = gMonIcon_Kingdra,
// [SPECIES_PHANPY] = gMonIcon_Phanpy,
// [SPECIES_DONPHAN] = gMonIcon_Donphan,
// [SPECIES_PORYGON2] = gMonIcon_Porygon2,
// [SPECIES_STANTLER] = gMonIcon_Stantler,
// [SPECIES_SMEARGLE] = gMonIcon_Smeargle,
// [SPECIES_TYROGUE] = gMonIcon_Tyrogue,
// [SPECIES_HITMONTOP] = gMonIcon_Hitmontop,
// [SPECIES_SMOOCHUM] = gMonIcon_Smoochum,
// [SPECIES_ELEKID] = gMonIcon_Elekid,
// [SPECIES_MAGBY] = gMonIcon_Magby,
// [SPECIES_MILTANK] = gMonIcon_Miltank,
// [SPECIES_BLISSEY] = gMonIcon_Blissey,
// [SPECIES_RAIKOU] = gMonIcon_Raikou,
// [SPECIES_ENTEI] = gMonIcon_Entei,
// [SPECIES_SUICUNE] = gMonIcon_Suicune,
// [SPECIES_LARVITAR] = gMonIcon_Larvitar,
// [SPECIES_PUPITAR] = gMonIcon_Pupitar,
// [SPECIES_TYRANITAR] = gMonIcon_Tyranitar,
// [SPECIES_LUGIA] = gMonIcon_Lugia,
// [SPECIES_HO_OH] = gMonIcon_HoOh,
// [SPECIES_CELEBI] = gMonIcon_Celebi,
// [SPECIES_OLD_UNOWN_B] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_C] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_D] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_E] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_F] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_G] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_H] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_I] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_J] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_K] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_L] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_M] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_N] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_O] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_P] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_Q] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_R] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_S] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_T] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_U] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_V] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_W] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_X] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_Y] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_Z] = gMonIcon_QuestionMark,
// [SPECIES_TREECKO] = gMonIcon_Treecko,
// [SPECIES_GROVYLE] = gMonIcon_Grovyle,
// [SPECIES_SCEPTILE] = gMonIcon_Sceptile,
// [SPECIES_TORCHIC] = gMonIcon_Torchic,
// [SPECIES_COMBUSKEN] = gMonIcon_Combusken,
// [SPECIES_BLAZIKEN] = gMonIcon_Blaziken,
// [SPECIES_MUDKIP] = gMonIcon_Mudkip,
// [SPECIES_MARSHTOMP] = gMonIcon_Marshtomp,
// [SPECIES_SWAMPERT] = gMonIcon_Swampert,
// [SPECIES_POOCHYENA] = gMonIcon_Poochyena,
// [SPECIES_MIGHTYENA] = gMonIcon_Mightyena,
// [SPECIES_ZIGZAGOON] = gMonIcon_Zigzagoon,
// [SPECIES_LINOONE] = gMonIcon_Linoone,
// [SPECIES_WURMPLE] = gMonIcon_Wurmple,
// [SPECIES_SILCOON] = gMonIcon_Silcoon,
// [SPECIES_BEAUTIFLY] = gMonIcon_Beautifly,
// [SPECIES_CASCOON] = gMonIcon_Cascoon,
// [SPECIES_DUSTOX] = gMonIcon_Dustox,
// [SPECIES_LOTAD] = gMonIcon_Lotad,
// [SPECIES_LOMBRE] = gMonIcon_Lombre,
// [SPECIES_LUDICOLO] = gMonIcon_Ludicolo,
// [SPECIES_SEEDOT] = gMonIcon_Seedot,
// [SPECIES_NUZLEAF] = gMonIcon_Nuzleaf,
// [SPECIES_SHIFTRY] = gMonIcon_Shiftry,
// [SPECIES_NINCADA] = gMonIcon_Nincada,
// [SPECIES_NINJASK] = gMonIcon_Ninjask,
// [SPECIES_SHEDINJA] = gMonIcon_Shedinja,
// [SPECIES_TAILLOW] = gMonIcon_Taillow,
// [SPECIES_SWELLOW] = gMonIcon_Swellow,
// [SPECIES_SHROOMISH] = gMonIcon_Shroomish,
// [SPECIES_BRELOOM] = gMonIcon_Breloom,
// [SPECIES_SPINDA] = gMonIcon_Spinda,
// [SPECIES_WINGULL] = gMonIcon_Wingull,
// [SPECIES_PELIPPER] = gMonIcon_Pelipper,
// [SPECIES_SURSKIT] = gMonIcon_Surskit,
// [SPECIES_MASQUERAIN] = gMonIcon_Masquerain,
// [SPECIES_WAILMER] = gMonIcon_Wailmer,
// [SPECIES_WAILORD] = gMonIcon_Wailord,
// [SPECIES_SKITTY] = gMonIcon_Skitty,
// [SPECIES_DELCATTY] = gMonIcon_Delcatty,
// [SPECIES_KECLEON] = gMonIcon_Kecleon,
// [SPECIES_BALTOY] = gMonIcon_Baltoy,
// [SPECIES_CLAYDOL] = gMonIcon_Claydol,
// [SPECIES_NOSEPASS] = gMonIcon_Nosepass,
// [SPECIES_TORKOAL] = gMonIcon_Torkoal,
// [SPECIES_SABLEYE] = gMonIcon_Sableye,
// [SPECIES_BARBOACH] = gMonIcon_Barboach,
// [SPECIES_WHISCASH] = gMonIcon_Whiscash,
// [SPECIES_LUVDISC] = gMonIcon_Luvdisc,
// [SPECIES_CORPHISH] = gMonIcon_Corphish,
// [SPECIES_CRAWDAUNT] = gMonIcon_Crawdaunt,
// [SPECIES_FEEBAS] = gMonIcon_Feebas,
// [SPECIES_MILOTIC] = gMonIcon_Milotic,
// [SPECIES_CARVANHA] = gMonIcon_Carvanha,
// [SPECIES_SHARPEDO] = gMonIcon_Sharpedo,
// [SPECIES_TRAPINCH] = gMonIcon_Trapinch,
// [SPECIES_VIBRAVA] = gMonIcon_Vibrava,
// [SPECIES_FLYGON] = gMonIcon_Flygon,
// [SPECIES_MAKUHITA] = gMonIcon_Makuhita,
// [SPECIES_HARIYAMA] = gMonIcon_Hariyama,
// [SPECIES_ELECTRIKE] = gMonIcon_Electrike,
// [SPECIES_MANECTRIC] = gMonIcon_Manectric,
// [SPECIES_NUMEL] = gMonIcon_Numel,
// [SPECIES_CAMERUPT] = gMonIcon_Camerupt,
// [SPECIES_SPHEAL] = gMonIcon_Spheal,
// [SPECIES_SEALEO] = gMonIcon_Sealeo,
// [SPECIES_WALREIN] = gMonIcon_Walrein,
// [SPECIES_CACNEA] = gMonIcon_Cacnea,
// [SPECIES_CACTURNE] = gMonIcon_Cacturne,
// [SPECIES_SNORUNT] = gMonIcon_Snorunt,
// [SPECIES_GLALIE] = gMonIcon_Glalie,
// [SPECIES_LUNATONE] = gMonIcon_Lunatone,
// [SPECIES_SOLROCK] = gMonIcon_Solrock,
// [SPECIES_AZURILL] = gMonIcon_Azurill,
// [SPECIES_SPOINK] = gMonIcon_Spoink,
// [SPECIES_GRUMPIG] = gMonIcon_Grumpig,
// [SPECIES_PLUSLE] = gMonIcon_Plusle,
// [SPECIES_MINUN] = gMonIcon_Minun,
// [SPECIES_MAWILE] = gMonIcon_Mawile,
// [SPECIES_MEDITITE] = gMonIcon_Meditite,
// [SPECIES_MEDICHAM] = gMonIcon_Medicham,
// [SPECIES_SWABLU] = gMonIcon_Swablu,
// [SPECIES_ALTARIA] = gMonIcon_Altaria,
// [SPECIES_WYNAUT] = gMonIcon_Wynaut,
// [SPECIES_DUSKULL] = gMonIcon_Duskull,
// [SPECIES_DUSCLOPS] = gMonIcon_Dusclops,
// [SPECIES_ROSELIA] = gMonIcon_Roselia,
// [SPECIES_SLAKOTH] = gMonIcon_Slakoth,
// [SPECIES_VIGOROTH] = gMonIcon_Vigoroth,
// [SPECIES_SLAKING] = gMonIcon_Slaking,
// [SPECIES_GULPIN] = gMonIcon_Gulpin,
// [SPECIES_SWALOT] = gMonIcon_Swalot,
// [SPECIES_TROPIUS] = gMonIcon_Tropius,
// [SPECIES_WHISMUR] = gMonIcon_Whismur,
// [SPECIES_LOUDRED] = gMonIcon_Loudred,
// [SPECIES_EXPLOUD] = gMonIcon_Exploud,
// [SPECIES_CLAMPERL] = gMonIcon_Clamperl,
// [SPECIES_HUNTAIL] = gMonIcon_Huntail,
// [SPECIES_GOREBYSS] = gMonIcon_Gorebyss,
// [SPECIES_ABSOL] = gMonIcon_Absol,
// [SPECIES_SHUPPET] = gMonIcon_Shuppet,
// [SPECIES_BANETTE] = gMonIcon_Banette,
// [SPECIES_SEVIPER] = gMonIcon_Seviper,
// [SPECIES_ZANGOOSE] = gMonIcon_Zangoose,
// [SPECIES_RELICANTH] = gMonIcon_Relicanth,
// [SPECIES_ARON] = gMonIcon_Aron,
// [SPECIES_LAIRON] = gMonIcon_Lairon,
// [SPECIES_AGGRON] = gMonIcon_Aggron,
// [SPECIES_CASTFORM] = gMonIcon_Castform,
// [SPECIES_VOLBEAT] = gMonIcon_Volbeat,
// [SPECIES_ILLUMISE] = gMonIcon_Illumise,
// [SPECIES_LILEEP] = gMonIcon_Lileep,
// [SPECIES_CRADILY] = gMonIcon_Cradily,
// [SPECIES_ANORITH] = gMonIcon_Anorith,
// [SPECIES_ARMALDO] = gMonIcon_Armaldo,
// [SPECIES_RALTS] = gMonIcon_Ralts,
// [SPECIES_KIRLIA] = gMonIcon_Kirlia,
// [SPECIES_GARDEVOIR] = gMonIcon_Gardevoir,
// [SPECIES_BAGON] = gMonIcon_Bagon,
// [SPECIES_SHELGON] = gMonIcon_Shelgon,
// [SPECIES_SALAMENCE] = gMonIcon_Salamence,
// [SPECIES_BELDUM] = gMonIcon_Beldum,
// [SPECIES_METANG] = gMonIcon_Metang,
// [SPECIES_METAGROSS] = gMonIcon_Metagross,
// [SPECIES_REGIROCK] = gMonIcon_Regirock,
// [SPECIES_REGICE] = gMonIcon_Regice,
// [SPECIES_REGISTEEL] = gMonIcon_Registeel,
// [SPECIES_KYOGRE] = gMonIcon_Kyogre,
// [SPECIES_GROUDON] = gMonIcon_Groudon,
// [SPECIES_RAYQUAZA] = gMonIcon_Rayquaza,
// [SPECIES_LATIAS] = gMonIcon_Latias,
// [SPECIES_LATIOS] = gMonIcon_Latios,
// [SPECIES_JIRACHI] = gMonIcon_Jirachi,
// [SPECIES_DEOXYS] = gMonIcon_Deoxys,
// [SPECIES_CHIMECHO] = gMonIcon_Chimecho,
// [SPECIES_EGG] = gMonIcon_Egg,
// [SPECIES_UNOWN_B] = gMonIcon_UnownB,
// [SPECIES_UNOWN_C] = gMonIcon_UnownC,
// [SPECIES_UNOWN_D] = gMonIcon_UnownD,
// [SPECIES_UNOWN_E] = gMonIcon_UnownE,
// [SPECIES_UNOWN_F] = gMonIcon_UnownF,
// [SPECIES_UNOWN_G] = gMonIcon_UnownG,
// [SPECIES_UNOWN_H] = gMonIcon_UnownH,
// [SPECIES_UNOWN_I] = gMonIcon_UnownI,
// [SPECIES_UNOWN_J] = gMonIcon_UnownJ,
// [SPECIES_UNOWN_K] = gMonIcon_UnownK,
// [SPECIES_UNOWN_L] = gMonIcon_UnownL,
// [SPECIES_UNOWN_M] = gMonIcon_UnownM,
// [SPECIES_UNOWN_N] = gMonIcon_UnownN,
// [SPECIES_UNOWN_O] = gMonIcon_UnownO,
// [SPECIES_UNOWN_P] = gMonIcon_UnownP,
// [SPECIES_UNOWN_Q] = gMonIcon_UnownQ,
// [SPECIES_UNOWN_R] = gMonIcon_UnownR,
// [SPECIES_UNOWN_S] = gMonIcon_UnownS,
// [SPECIES_UNOWN_T] = gMonIcon_UnownT,
// [SPECIES_UNOWN_U] = gMonIcon_UnownU,
// [SPECIES_UNOWN_V] = gMonIcon_UnownV,
// [SPECIES_UNOWN_W] = gMonIcon_UnownW,
// [SPECIES_UNOWN_X] = gMonIcon_UnownX,
// [SPECIES_UNOWN_Y] = gMonIcon_UnownY,
// [SPECIES_UNOWN_Z] = gMonIcon_UnownZ,
// [SPECIES_UNOWN_EMARK] = gMonIcon_UnownExclamationMark,
// [SPECIES_UNOWN_QMARK] = gMonIcon_UnownQuestionMark
// };
// const u8 gMonIconPaletteIndices[] = {
// [SPECIES_NONE] = 0,
// [SPECIES_BULBASAUR] = 1,
// [SPECIES_IVYSAUR] = 1,
// [SPECIES_VENUSAUR] = 1,
// [SPECIES_CHARMANDER] = 0,
// [SPECIES_CHARMELEON] = 0,
// [SPECIES_CHARIZARD] = 0,
// [SPECIES_SQUIRTLE] = 0,
// [SPECIES_WARTORTLE] = 2,
// [SPECIES_BLASTOISE] = 2,
// [SPECIES_CATERPIE] = 1,
// [SPECIES_METAPOD] = 1,
// [SPECIES_BUTTERFREE] = 0,
// [SPECIES_WEEDLE] = 1,
// [SPECIES_KAKUNA] = 2,
// [SPECIES_BEEDRILL] = 2,
// [SPECIES_PIDGEY] = 0,
// [SPECIES_PIDGEOTTO] = 0,
// [SPECIES_PIDGEOT] = 0,
// [SPECIES_RATTATA] = 2,
// [SPECIES_RATICATE] = 1,
// [SPECIES_SPEAROW] = 0,
// [SPECIES_FEAROW] = 0,
// [SPECIES_EKANS] = 2,
// [SPECIES_ARBOK] = 2,
// [SPECIES_PIKACHU] = 2,
// [SPECIES_RAICHU] = 0,
// [SPECIES_SANDSHREW] = 2,
// [SPECIES_SANDSLASH] = 2,
// [SPECIES_NIDORAN_F] = 2,
// [SPECIES_NIDORINA] = 2,
// [SPECIES_NIDOQUEEN] = 2,
// [SPECIES_NIDORAN_M] = 2,
// [SPECIES_NIDORINO] = 2,
// [SPECIES_NIDOKING] = 2,
// [SPECIES_CLEFAIRY] = 0,
// [SPECIES_CLEFABLE] = 0,
// [SPECIES_VULPIX] = 2,
// [SPECIES_NINETALES] = 1,
// [SPECIES_JIGGLYPUFF] = 0,
// [SPECIES_WIGGLYTUFF] = 0,
// [SPECIES_ZUBAT] = 2,
// [SPECIES_GOLBAT] = 2,
// [SPECIES_ODDISH] = 1,
// [SPECIES_GLOOM] = 0,
// [SPECIES_VILEPLUME] = 0,
// [SPECIES_PARAS] = 0,
// [SPECIES_PARASECT] = 0,
// [SPECIES_VENONAT] = 0,
// [SPECIES_VENOMOTH] = 2,
// [SPECIES_DIGLETT] = 2,
// [SPECIES_DUGTRIO] = 2,
// [SPECIES_MEOWTH] = 1,
// [SPECIES_PERSIAN] = 1,
// [SPECIES_PSYDUCK] = 1,
// [SPECIES_GOLDUCK] = 2,
// [SPECIES_MANKEY] = 1,
// [SPECIES_PRIMEAPE] = 2,
// [SPECIES_GROWLITHE] = 0,
// [SPECIES_ARCANINE] = 0,
// [SPECIES_POLIWAG] = 0,
// [SPECIES_POLIWHIRL] = 0,
// [SPECIES_POLIWRATH] = 0,
// [SPECIES_ABRA] = 2,
// [SPECIES_KADABRA] = 2,
// [SPECIES_ALAKAZAM] = 2,
// [SPECIES_MACHOP] = 0,
// [SPECIES_MACHOKE] = 2,
// [SPECIES_MACHAMP] = 0,
// [SPECIES_BELLSPROUT] = 1,
// [SPECIES_WEEPINBELL] = 1,
// [SPECIES_VICTREEBEL] = 1,
// [SPECIES_TENTACOOL] = 2,
// [SPECIES_TENTACRUEL] = 2,
// [SPECIES_GEODUDE] = 1,
// [SPECIES_GRAVELER] = 1,
// [SPECIES_GOLEM] = 1,
// [SPECIES_PONYTA] = 0,
// [SPECIES_RAPIDASH] = 0,
// [SPECIES_SLOWPOKE] = 0,
// [SPECIES_SLOWBRO] = 0,
// [SPECIES_MAGNEMITE] = 0,
// [SPECIES_MAGNETON] = 0,
// [SPECIES_FARFETCHD] = 1,
// [SPECIES_DODUO] = 2,
// [SPECIES_DODRIO] = 2,
// [SPECIES_SEEL] = 2,
// [SPECIES_DEWGONG] = 2,
// [SPECIES_GRIMER] = 2,
// [SPECIES_MUK] = 2,
// [SPECIES_SHELLDER] = 2,
// [SPECIES_CLOYSTER] = 2,
// [SPECIES_GASTLY] = 2,
// [SPECIES_HAUNTER] = 2,
// [SPECIES_GENGAR] = 2,
// [SPECIES_ONIX] = 2,
// [SPECIES_DROWZEE] = 2,
// [SPECIES_HYPNO] = 1,
// [SPECIES_KRABBY] = 2,
// [SPECIES_KINGLER] = 2,
// [SPECIES_VOLTORB] = 0,
// [SPECIES_ELECTRODE] = 0,
// [SPECIES_EXEGGCUTE] = 0,
// [SPECIES_EXEGGUTOR] = 1,
// [SPECIES_CUBONE] = 1,
// [SPECIES_MAROWAK] = 1,
// [SPECIES_HITMONLEE] = 2,
// [SPECIES_HITMONCHAN] = 2,
// [SPECIES_LICKITUNG] = 1,
// [SPECIES_KOFFING] = 2,
// [SPECIES_WEEZING] = 2,
// [SPECIES_RHYHORN] = 1,
// [SPECIES_RHYDON] = 1,
// [SPECIES_CHANSEY] = 0,
// [SPECIES_TANGELA] = 0,
// [SPECIES_KANGASKHAN] = 1,
// [SPECIES_HORSEA] = 0,
// [SPECIES_SEADRA] = 0,
// [SPECIES_GOLDEEN] = 0,
// [SPECIES_SEAKING] = 0,
// [SPECIES_STARYU] = 2,
// [SPECIES_STARMIE] = 2,
// [SPECIES_MR_MIME] = 0,
// [SPECIES_SCYTHER] = 1,
// [SPECIES_JYNX] = 2,
// [SPECIES_ELECTABUZZ] = 1,
// [SPECIES_MAGMAR] = 0,
// [SPECIES_PINSIR] = 2,
// [SPECIES_TAUROS] = 2,
// [SPECIES_MAGIKARP] = 0,
// [SPECIES_GYARADOS] = 0,
// [SPECIES_LAPRAS] = 2,
// [SPECIES_DITTO] = 2,
// [SPECIES_EEVEE] = 2,
// [SPECIES_VAPOREON] = 0,
// [SPECIES_JOLTEON] = 0,
// [SPECIES_FLAREON] = 0,
// [SPECIES_PORYGON] = 0,
// [SPECIES_OMANYTE] = 0,
// [SPECIES_OMASTAR] = 0,
// [SPECIES_KABUTO] = 2,
// [SPECIES_KABUTOPS] = 2,
// [SPECIES_AERODACTYL] = 0,
// [SPECIES_SNORLAX] = 1,
// [SPECIES_ARTICUNO] = 0,
// [SPECIES_ZAPDOS] = 0,
// [SPECIES_MOLTRES] = 0,
// [SPECIES_DRATINI] = 0,
// [SPECIES_DRAGONAIR] = 0,
// [SPECIES_DRAGONITE] = 2,
// [SPECIES_MEWTWO] = 2,
// [SPECIES_MEW] = 0,
// [SPECIES_CHIKORITA] = 1,
// [SPECIES_BAYLEEF] = 1,
// [SPECIES_MEGANIUM] = 1,
// [SPECIES_CYNDAQUIL] = 1,
// [SPECIES_QUILAVA] = 1,
// [SPECIES_TYPHLOSION] = 1,
// [SPECIES_TOTODILE] = 2,
// [SPECIES_CROCONAW] = 2,
// [SPECIES_FERALIGATR] = 2,
// [SPECIES_SENTRET] = 2,
// [SPECIES_FURRET] = 2,
// [SPECIES_HOOTHOOT] = 2,
// [SPECIES_NOCTOWL] = 2,
// [SPECIES_LEDYBA] = 0,
// [SPECIES_LEDIAN] = 0,
// [SPECIES_SPINARAK] = 1,
// [SPECIES_ARIADOS] = 0,
// [SPECIES_CROBAT] = 2,
// [SPECIES_CHINCHOU] = 2,
// [SPECIES_LANTURN] = 0,
// [SPECIES_PICHU] = 0,
// [SPECIES_CLEFFA] = 0,
// [SPECIES_IGGLYBUFF] = 1,
// [SPECIES_TOGEPI] = 2,
// [SPECIES_TOGETIC] = 2,
// [SPECIES_NATU] = 0,
// [SPECIES_XATU] = 0,
// [SPECIES_MAREEP] = 2,
// [SPECIES_FLAAFFY] = 0,
// [SPECIES_AMPHAROS] = 0,
// [SPECIES_BELLOSSOM] = 1,
// [SPECIES_MARILL] = 2,
// [SPECIES_AZUMARILL] = 2,
// [SPECIES_SUDOWOODO] = 1,
// [SPECIES_POLITOED] = 1,
// [SPECIES_HOPPIP] = 1,
// [SPECIES_SKIPLOOM] = 1,
// [SPECIES_JUMPLUFF] = 2,
// [SPECIES_AIPOM] = 2,
// [SPECIES_SUNKERN] = 1,
// [SPECIES_SUNFLORA] = 1,
// [SPECIES_YANMA] = 1,
// [SPECIES_WOOPER] = 0,
// [SPECIES_QUAGSIRE] = 0,
// [SPECIES_ESPEON] = 2,
// [SPECIES_UMBREON] = 2,
// [SPECIES_MURKROW] = 2,
// [SPECIES_SLOWKING] = 0,
// [SPECIES_MISDREAVUS] = 0,
// [SPECIES_UNOWN] = 0,
// [SPECIES_WOBBUFFET] = 0,
// [SPECIES_GIRAFARIG] = 1,
// [SPECIES_PINECO] = 0,
// [SPECIES_FORRETRESS] = 2,
// [SPECIES_DUNSPARCE] = 2,
// [SPECIES_GLIGAR] = 2,
// [SPECIES_STEELIX] = 0,
// [SPECIES_SNUBBULL] = 0,
// [SPECIES_GRANBULL] = 2,
// [SPECIES_QWILFISH] = 0,
// [SPECIES_SCIZOR] = 0,
// [SPECIES_SHUCKLE] = 1,
// [SPECIES_HERACROSS] = 2,
// [SPECIES_SNEASEL] = 0,
// [SPECIES_TEDDIURSA] = 0,
// [SPECIES_URSARING] = 2,
// [SPECIES_SLUGMA] = 0,
// [SPECIES_MAGCARGO] = 0,
// [SPECIES_SWINUB] = 2,
// [SPECIES_PILOSWINE] = 2,
// [SPECIES_CORSOLA] = 0,
// [SPECIES_REMORAID] = 0,
// [SPECIES_OCTILLERY] = 0,
// [SPECIES_DELIBIRD] = 0,
// [SPECIES_MANTINE] = 2,
// [SPECIES_SKARMORY] = 0,
// [SPECIES_HOUNDOUR] = 0,
// [SPECIES_HOUNDOOM] = 0,
// [SPECIES_KINGDRA] = 0,
// [SPECIES_PHANPY] = 0,
// [SPECIES_DONPHAN] = 0,
// [SPECIES_PORYGON2] = 0,
// [SPECIES_STANTLER] = 2,
// [SPECIES_SMEARGLE] = 1,
// [SPECIES_TYROGUE] = 2,
// [SPECIES_HITMONTOP] = 2,
// [SPECIES_SMOOCHUM] = 1,
// [SPECIES_ELEKID] = 1,
// [SPECIES_MAGBY] = 1,
// [SPECIES_MILTANK] = 1,
// [SPECIES_BLISSEY] = 1,
// [SPECIES_RAIKOU] = 0,
// [SPECIES_ENTEI] = 2,
// [SPECIES_SUICUNE] = 0,
// [SPECIES_LARVITAR] = 1,
// [SPECIES_PUPITAR] = 0,
// [SPECIES_TYRANITAR] = 1,
// [SPECIES_LUGIA] = 0,
// [SPECIES_HO_OH] = 1,
// [SPECIES_CELEBI] = 1,
// [SPECIES_OLD_UNOWN_B] = 0,
// [SPECIES_OLD_UNOWN_C] = 0,
// [SPECIES_OLD_UNOWN_D] = 0,
// [SPECIES_OLD_UNOWN_E] = 0,
// [SPECIES_OLD_UNOWN_F] = 0,
// [SPECIES_OLD_UNOWN_G] = 0,
// [SPECIES_OLD_UNOWN_H] = 0,
// [SPECIES_OLD_UNOWN_I] = 0,
// [SPECIES_OLD_UNOWN_J] = 0,
// [SPECIES_OLD_UNOWN_K] = 0,
// [SPECIES_OLD_UNOWN_L] = 0,
// [SPECIES_OLD_UNOWN_M] = 0,
// [SPECIES_OLD_UNOWN_N] = 0,
// [SPECIES_OLD_UNOWN_O] = 0,
// [SPECIES_OLD_UNOWN_P] = 0,
// [SPECIES_OLD_UNOWN_Q] = 0,
// [SPECIES_OLD_UNOWN_R] = 0,
// [SPECIES_OLD_UNOWN_S] = 0,
// [SPECIES_OLD_UNOWN_T] = 0,
// [SPECIES_OLD_UNOWN_U] = 0,
// [SPECIES_OLD_UNOWN_V] = 0,
// [SPECIES_OLD_UNOWN_W] = 0,
// [SPECIES_OLD_UNOWN_X] = 0,
// [SPECIES_OLD_UNOWN_Y] = 0,
// [SPECIES_OLD_UNOWN_Z] = 0,
// [SPECIES_TREECKO] = 1,
// [SPECIES_GROVYLE] = 0,
// [SPECIES_SCEPTILE] = 1,
// [SPECIES_TORCHIC] = 0,
// [SPECIES_COMBUSKEN] = 0,
// [SPECIES_BLAZIKEN] = 0,
// [SPECIES_MUDKIP] = 0,
// [SPECIES_MARSHTOMP] = 0,
// [SPECIES_SWAMPERT] = 0,
// [SPECIES_POOCHYENA] = 2,
// [SPECIES_MIGHTYENA] = 2,
// [SPECIES_ZIGZAGOON] = 2,
// [SPECIES_LINOONE] = 2,
// [SPECIES_WURMPLE] = 0,
// [SPECIES_SILCOON] = 2,
// [SPECIES_BEAUTIFLY] = 0,
// [SPECIES_CASCOON] = 2,
// [SPECIES_DUSTOX] = 1,
// [SPECIES_LOTAD] = 1,
// [SPECIES_LOMBRE] = 1,
// [SPECIES_LUDICOLO] = 1,
// [SPECIES_SEEDOT] = 1,
// [SPECIES_NUZLEAF] = 1,
// [SPECIES_SHIFTRY] = 0,
// [SPECIES_NINCADA] = 1,
// [SPECIES_NINJASK] = 1,
// [SPECIES_SHEDINJA] = 1,
// [SPECIES_TAILLOW] = 2,
// [SPECIES_SWELLOW] = 2,
// [SPECIES_SHROOMISH] = 1,
// [SPECIES_BRELOOM] = 1,
// [SPECIES_SPINDA] = 1,
// [SPECIES_WINGULL] = 0,
// [SPECIES_PELIPPER] = 0,
// [SPECIES_SURSKIT] = 2,
// [SPECIES_MASQUERAIN] = 0,
// [SPECIES_WAILMER] = 2,
// [SPECIES_WAILORD] = 0,
// [SPECIES_SKITTY] = 0,
// [SPECIES_DELCATTY] = 2,
// [SPECIES_KECLEON] = 1,
// [SPECIES_BALTOY] = 1,
// [SPECIES_CLAYDOL] = 0,
// [SPECIES_NOSEPASS] = 0,
// [SPECIES_TORKOAL] = 1,
// [SPECIES_SABLEYE] = 2,
// [SPECIES_BARBOACH] = 0,
// [SPECIES_WHISCASH] = 0,
// [SPECIES_LUVDISC] = 0,
// [SPECIES_CORPHISH] = 0,
// [SPECIES_CRAWDAUNT] = 0,
// [SPECIES_FEEBAS] = 2,
// [SPECIES_MILOTIC] = 0,
// [SPECIES_CARVANHA] = 0,
// [SPECIES_SHARPEDO] = 0,
// [SPECIES_TRAPINCH] = 1,
// [SPECIES_VIBRAVA] = 1,
// [SPECIES_FLYGON] = 1,
// [SPECIES_MAKUHITA] = 2,
// [SPECIES_HARIYAMA] = 1,
// [SPECIES_ELECTRIKE] = 1,
// [SPECIES_MANECTRIC] = 0,
// [SPECIES_NUMEL] = 1,
// [SPECIES_CAMERUPT] = 0,
// [SPECIES_SPHEAL] = 2,
// [SPECIES_SEALEO] = 2,
// [SPECIES_WALREIN] = 0,
// [SPECIES_CACNEA] = 1,
// [SPECIES_CACTURNE] = 1,
// [SPECIES_SNORUNT] = 2,
// [SPECIES_GLALIE] = 0,
// [SPECIES_LUNATONE] = 1,
// [SPECIES_SOLROCK] = 0,
// [SPECIES_AZURILL] = 2,
// [SPECIES_SPOINK] = 0,
// [SPECIES_GRUMPIG] = 2,
// [SPECIES_PLUSLE] = 0,
// [SPECIES_MINUN] = 0,
// [SPECIES_MAWILE] = 2,
// [SPECIES_MEDITITE] = 0,
// [SPECIES_MEDICHAM] = 0,
// [SPECIES_SWABLU] = 0,
// [SPECIES_ALTARIA] = 0,
// [SPECIES_WYNAUT] = 0,
// [SPECIES_DUSKULL] = 0,
// [SPECIES_DUSCLOPS] = 0,
// [SPECIES_ROSELIA] = 0,
// [SPECIES_SLAKOTH] = 2,
// [SPECIES_VIGOROTH] = 2,
// [SPECIES_SLAKING] = 1,
// [SPECIES_GULPIN] = 1,
// [SPECIES_SWALOT] = 2,
// [SPECIES_TROPIUS] = 1,
// [SPECIES_WHISMUR] = 0,
// [SPECIES_LOUDRED] = 2,
// [SPECIES_EXPLOUD] = 2,
// [SPECIES_CLAMPERL] = 0,
// [SPECIES_HUNTAIL] = 0,
// [SPECIES_GOREBYSS] = 0,
// [SPECIES_ABSOL] = 0,
// [SPECIES_SHUPPET] = 0,
// [SPECIES_BANETTE] = 0,
// [SPECIES_SEVIPER] = 2,
// [SPECIES_ZANGOOSE] = 0,
// [SPECIES_RELICANTH] = 1,
// [SPECIES_ARON] = 2,
// [SPECIES_LAIRON] = 2,
// [SPECIES_AGGRON] = 2,
// [SPECIES_CASTFORM] = 0,
// [SPECIES_VOLBEAT] = 0,
// [SPECIES_ILLUMISE] = 2,
// [SPECIES_LILEEP] = 2,
// [SPECIES_CRADILY] = 0,
// [SPECIES_ANORITH] = 0,
// [SPECIES_ARMALDO] = 0,
// [SPECIES_RALTS] = 1,
// [SPECIES_KIRLIA] = 1,
// [SPECIES_GARDEVOIR] = 1,
// [SPECIES_BAGON] = 2,
// [SPECIES_SHELGON] = 2,
// [SPECIES_SALAMENCE] = 0,
// [SPECIES_BELDUM] = 0,
// [SPECIES_METANG] = 0,
// [SPECIES_METAGROSS] = 0,
// [SPECIES_REGIROCK] = 2,
// [SPECIES_REGICE] = 2,
// [SPECIES_REGISTEEL] = 2,
// [SPECIES_KYOGRE] = 2,
// [SPECIES_GROUDON] = 0,
// [SPECIES_RAYQUAZA] = 1,
// [SPECIES_LATIAS] = 0,
// [SPECIES_LATIOS] = 2,
// [SPECIES_JIRACHI] = 0,
// [SPECIES_DEOXYS] = 0,
// [SPECIES_CHIMECHO] = 0,
// [SPECIES_EGG] = 1,
// [SPECIES_UNOWN_B] = 0,
// [SPECIES_UNOWN_C] = 0,
// [SPECIES_UNOWN_D] = 0,
// [SPECIES_UNOWN_E] = 0,
// [SPECIES_UNOWN_F] = 0,
// [SPECIES_UNOWN_G] = 0,
// [SPECIES_UNOWN_H] = 0,
// [SPECIES_UNOWN_I] = 0,
// [SPECIES_UNOWN_J] = 0,
// [SPECIES_UNOWN_K] = 0,
// [SPECIES_UNOWN_L] = 0,
// [SPECIES_UNOWN_M] = 0,
// [SPECIES_UNOWN_N] = 0,
// [SPECIES_UNOWN_O] = 0,
// [SPECIES_UNOWN_P] = 0,
// [SPECIES_UNOWN_Q] = 0,
// [SPECIES_UNOWN_R] = 0,
// [SPECIES_UNOWN_S] = 0,
// [SPECIES_UNOWN_T] = 0,
// [SPECIES_UNOWN_U] = 0,
// [SPECIES_UNOWN_V] = 0,
// [SPECIES_UNOWN_W] = 0,
// [SPECIES_UNOWN_X] = 0,
// [SPECIES_UNOWN_Y] = 0,
// [SPECIES_UNOWN_Z] = 0,
// [SPECIES_UNOWN_EMARK] = 0,
// [SPECIES_UNOWN_QMARK] = 0
// };
const struct SpritePalette gMonIconPaletteTable[] = {
{ gMonIconPalettes[0], POKE_ICON_BASE_PAL_TAG + 0 },
{ gMonIconPalettes[1], POKE_ICON_BASE_PAL_TAG + 1 },
@ -1018,7 +132,7 @@ u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subprior
struct MonIconSpriteTemplate iconTemplate =
{
.oam = &sMonIconOamData,
.image = GetMonIconPtr(species, personality, extra),
.image = GetMonIconPtr(species, personality),
.anims = sMonIconAnims,
.affineAnims = sMonIconAffineAnims,
.callback = callback,
@ -1048,7 +162,7 @@ u8 CreateMonIcon_HandleDeoxys(u16 species, SpriteCallback callback, s16 x, s16 y
.paletteTag = POKE_ICON_BASE_PAL_TAG + gSpeciesInfo[species].iconPalIndex,
};
iconTemplate.image = GetMonIconTiles(species, extra);
iconTemplate.image = GetMonIconTiles(species, 0);
spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
UpdateMonIconFrame(&gSprites[spriteId]);
@ -1108,17 +222,26 @@ u16 MailSpeciesToIconSpecies(u16 species)
}
}
const u8 *GetMonIconTiles(u16 species, bool32 extra)
const u8 *GetMonIconTiles(u16 species, u32 personality)
{
const u8 *iconSprite = gSpeciesInfo[species].iconSprite;
if (species == SPECIES_DEOXYS && extra == TRUE)
iconSprite += 0x400;
const u8 *iconSprite;
if (species > NUM_SPECIES)
species = SPECIES_NONE;
if (gSpeciesInfo[species].iconSpriteFemale != NULL && IsPersonalityFemale(species, personality))
iconSprite = gSpeciesInfo[species].iconSpriteFemale;
else if (gSpeciesInfo[species].iconSprite != NULL)
iconSprite = gSpeciesInfo[species].iconSprite;
else
iconSprite = gSpeciesInfo[SPECIES_NONE].iconSprite;
return iconSprite;
}
const u8 *GetMonIconPtr(u16 species, u32 personality, bool32 extra)
const u8 *GetMonIconPtr(u16 species, u32 personality)
{
return GetMonIconTiles(GetIconSpecies(species, personality), extra);
return GetMonIconTiles(GetIconSpecies(species, personality), personality);
}
void DestroyMonIcon(struct Sprite *sprite)

View File

@ -938,7 +938,7 @@ static void SpriteCB_HeldMon(struct Sprite *sprite)
sprite->y = gStorage->cursorSprite->y + gStorage->cursorSprite->y2 + 4;
}
static u16 TryLoadMonIconTiles(u16 species)
static u16 TryLoadMonIconTiles(u16 species, u32 personality)
{
u16 i, offset;
@ -964,7 +964,7 @@ static u16 TryLoadMonIconTiles(u16 species)
gStorage->iconSpeciesList[i] = species;
gStorage->numIconsPerSpecies[i]++;
offset = 16 * i;
CpuCopy32(GetMonIconTiles(species, TRUE), (void *)(OBJ_VRAM0) + offset * 32, 0x200);
CpuCopy32(GetMonIconTiles(species, personality), (void *)(OBJ_VRAM0) + offset * 32, 0x200);
return offset;
}
@ -992,7 +992,7 @@ struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u
species = GetIconSpecies(species, personality);
template.paletteTag = PALTAG_MON_ICON_0 + gSpeciesInfo[species].iconPalIndex;
tileNum = TryLoadMonIconTiles(species);
tileNum = TryLoadMonIconTiles(species, personality);
if (tileNum == 0xFFFF)
return NULL;

View File

@ -405,7 +405,7 @@ static void MultiMove_SetIconToBg(u8 x, u8 y)
if (species != SPECIES_NONE)
{
const u8 *iconGfx = GetMonIconPtr(species, personality, 1);
const u8 *iconGfx = GetMonIconPtr(species, personality);
u8 palNum = GetValidMonIconPalIndex(species) + 8;
BlitBitmapRectToWindow4BitTo8Bit(gStorage->multiMoveWindowId, iconGfx, 0, 0, 32, 32, 24 * x, 24 * y, 32, 32, palNum);
}

Some files were not shown because too many files have changed in this diff Show More