diff --git a/constants/battle_constants.asm b/constants/battle_constants.asm index cde50b4d6..2cd52d5e5 100644 --- a/constants/battle_constants.asm +++ b/constants/battle_constants.asm @@ -37,6 +37,11 @@ DEF MOVE_ACC rb DEF MOVE_PP rb DEF MOVE_LENGTH EQU _RS +; move damage categories (see data/moves/categories.asm) +; selects Attack/Defense vs Special per move, instead of deriving it from type +DEF PHYSICAL_MOVE EQU 0 +DEF SPECIAL_MOVE EQU 1 + ; battle type constants (wBattleType values) const_def const BATTLE_TYPE_NORMAL ; 0 diff --git a/constants/move_constants.asm b/constants/move_constants.asm index 1dccabfd7..e4d49a0e1 100644 --- a/constants/move_constants.asm +++ b/constants/move_constants.asm @@ -170,6 +170,26 @@ const SUPER_FANG ; a2 const SLASH ; a3 const SUBSTITUTE ; a4 + const FAIRY_WIND + const DAZZLING_GLEAM + const FLEUR_CANNON + const DRAIN_KISS + const DRAIN_PUNCH + const POISON_NEEDLE + const POISON_JAB + const POISON_SLASH + const CRUNCH + const DARK_PULSE + const PHANTOM_FORCE + const DRAGON_BREATH + const DRACO_METEOR + const ICICLE_SHARD + const HURRICANE + const IRON_HEAD + const IRON_TAIL + const FLASH_CANNON + const NIGHTMARE + const HEX const STRUGGLE ; a5 DEF NUM_ATTACKS EQU const_value - 1 diff --git a/constants/move_effect_constants.asm b/constants/move_effect_constants.asm index 6914fafdf..69f97d587 100644 --- a/constants/move_effect_constants.asm +++ b/constants/move_effect_constants.asm @@ -91,4 +91,8 @@ const LEECH_SEED_EFFECT ; $54 const SPLASH_EFFECT ; $55 const DISABLE_EFFECT ; $56 + const POISON_SIDE_EFFECT3 ; $57 75% chance to poison + const SMOG_SIDE_EFFECT ; $58 lowers accuracy 1 stage + 30% chance to poison + const PARALYZE_SIDE_EFFECT3 ; $59 always paralyzes (move still deals damage) + const CONFUSION_SIDE_EFFECT2 ; $5A always confuses (move still deals damage) DEF NUM_MOVE_EFFECTS EQU const_value - 1 diff --git a/constants/type_constants.asm b/constants/type_constants.asm index 8226af1ab..91cbbebc7 100644 --- a/constants/type_constants.asm +++ b/constants/type_constants.asm @@ -11,6 +11,7 @@ DEF PHYSICAL EQU const_value const BIRD ; $06 const BUG ; $07 const GHOST ; $08 + const STEEL ; $09 DEF UNUSED_TYPES EQU const_value const_next 20 @@ -24,5 +25,7 @@ DEF SPECIAL EQU const_value const PSYCHIC_TYPE ; $18 const ICE ; $19 const DRAGON ; $1A + const DARK ; $1B + const FAIRY ; $1C DEF NUM_TYPES EQU const_value diff --git a/data/battle/critical_hit_moves.asm b/data/battle/critical_hit_moves.asm index a567a9348..c752f4e13 100644 --- a/data/battle/critical_hit_moves.asm +++ b/data/battle/critical_hit_moves.asm @@ -3,4 +3,5 @@ HighCriticalMoves: db RAZOR_LEAF db CRABHAMMER db SLASH + db RAZOR_WIND db -1 ; end diff --git a/data/battle/residual_effects_2.asm b/data/battle/residual_effects_2.asm index f58bb47cc..8c2b81953 100644 --- a/data/battle/residual_effects_2.asm +++ b/data/battle/residual_effects_2.asm @@ -29,4 +29,5 @@ ResidualEffects2: db SPECIAL_DOWN2_EFFECT db ACCURACY_DOWN2_EFFECT db EVASION_DOWN2_EFFECT + db SMOG_SIDE_EFFECT db -1 ; end diff --git a/data/moves/animations.asm b/data/moves/animations.asm index bd362c530..e1f9e97ac 100644 --- a/data/moves/animations.asm +++ b/data/moves/animations.asm @@ -164,6 +164,26 @@ AttackAnimationPointers: dw SuperFangAnim dw SlashAnim dw SubstituteAnim + dw SonicBoomAnim + dw PsychicAnim + dw HyperBeamAnim + dw LovelyKissAnim + dw DizzyPunchAnim + dw TwineedleAnim + dw DizzyPunchAnim + dw SlashAnim + dw BiteAnim + dw PsychicAnim + dw PsychicAnim + dw FlamethrowerAnim + dw HyperBeamAnim + dw SpikeCannonAnim + dw GustAnim + dw HeadbuttAnim + dw TailWhipAnim + dw IceBeamAnim + dw DreamEaterAnim + dw PsywaveAnim dw StruggleAnim assert_table_length NUM_ATTACKS dw ShowPicAnim diff --git a/data/moves/categories.asm b/data/moves/categories.asm new file mode 100644 index 000000000..a724e3d0a --- /dev/null +++ b/data/moves/categories.asm @@ -0,0 +1,193 @@ +; Damage category for each move, in move-id order (see GetMoveCategory). +; PHYSICAL_MOVE uses Attack/Defense; SPECIAL_MOVE uses Special. +; Defaults follow the move's type (the original Gen 1 split); a few moves +; are overridden so their category no longer depends on type. + +MoveCategories: + table_width 1 + db PHYSICAL_MOVE ; POUND + db PHYSICAL_MOVE ; KARATE_CHOP + db PHYSICAL_MOVE ; DOUBLESLAP + db PHYSICAL_MOVE ; COMET_PUNCH + db PHYSICAL_MOVE ; MEGA_PUNCH + db SPECIAL_MOVE ; PAY_DAY + db SPECIAL_MOVE ; FIRE_PUNCH + db SPECIAL_MOVE ; ICE_PUNCH + db SPECIAL_MOVE ; THUNDERPUNCH + db PHYSICAL_MOVE ; SCRATCH + db PHYSICAL_MOVE ; VICEGRIP + db PHYSICAL_MOVE ; GUILLOTINE + db PHYSICAL_MOVE ; RAZOR_WIND + db PHYSICAL_MOVE ; SWORDS_DANCE + db PHYSICAL_MOVE ; CUT + db PHYSICAL_MOVE ; GUST + db PHYSICAL_MOVE ; WING_ATTACK + db PHYSICAL_MOVE ; WHIRLWIND + db PHYSICAL_MOVE ; FLY + db PHYSICAL_MOVE ; BIND + db PHYSICAL_MOVE ; SLAM + db SPECIAL_MOVE ; VINE_WHIP + db PHYSICAL_MOVE ; STOMP + db PHYSICAL_MOVE ; DOUBLE_KICK + db PHYSICAL_MOVE ; MEGA_KICK + db PHYSICAL_MOVE ; JUMP_KICK + db PHYSICAL_MOVE ; ROLLING_KICK + db PHYSICAL_MOVE ; SAND_ATTACK + db PHYSICAL_MOVE ; HEADBUTT + db PHYSICAL_MOVE ; HORN_ATTACK + db PHYSICAL_MOVE ; FURY_ATTACK + db PHYSICAL_MOVE ; HORN_DRILL + db PHYSICAL_MOVE ; TACKLE + db PHYSICAL_MOVE ; BODY_SLAM + db PHYSICAL_MOVE ; WRAP + db PHYSICAL_MOVE ; TAKE_DOWN + db PHYSICAL_MOVE ; THRASH + db PHYSICAL_MOVE ; DOUBLE_EDGE + db PHYSICAL_MOVE ; TAIL_WHIP + db PHYSICAL_MOVE ; POISON_STING + db PHYSICAL_MOVE ; TWINEEDLE + db PHYSICAL_MOVE ; PIN_MISSILE + db PHYSICAL_MOVE ; LEER + db PHYSICAL_MOVE ; BITE + db PHYSICAL_MOVE ; GROWL + db PHYSICAL_MOVE ; ROAR + db SPECIAL_MOVE ; SING + db PHYSICAL_MOVE ; SUPERSONIC + db PHYSICAL_MOVE ; SONICBOOM + db PHYSICAL_MOVE ; DISABLE + db PHYSICAL_MOVE ; ACID + db SPECIAL_MOVE ; EMBER + db SPECIAL_MOVE ; FLAMETHROWER + db SPECIAL_MOVE ; MIST + db SPECIAL_MOVE ; WATER_GUN + db SPECIAL_MOVE ; HYDRO_PUMP + db SPECIAL_MOVE ; SURF + db SPECIAL_MOVE ; ICE_BEAM + db SPECIAL_MOVE ; BLIZZARD + db SPECIAL_MOVE ; PSYBEAM + db SPECIAL_MOVE ; BUBBLEBEAM + db SPECIAL_MOVE ; AURORA_BEAM + db PHYSICAL_MOVE ; HYPER_BEAM + db PHYSICAL_MOVE ; PECK + db PHYSICAL_MOVE ; DRILL_PECK + db PHYSICAL_MOVE ; SUBMISSION + db PHYSICAL_MOVE ; LOW_KICK + db PHYSICAL_MOVE ; COUNTER + db PHYSICAL_MOVE ; SEISMIC_TOSS + db PHYSICAL_MOVE ; STRENGTH + db SPECIAL_MOVE ; ABSORB + db SPECIAL_MOVE ; MEGA_DRAIN + db SPECIAL_MOVE ; LEECH_SEED + db PHYSICAL_MOVE ; GROWTH + db SPECIAL_MOVE ; RAZOR_LEAF + db SPECIAL_MOVE ; SOLARBEAM + db PHYSICAL_MOVE ; POISONPOWDER + db SPECIAL_MOVE ; STUN_SPORE + db SPECIAL_MOVE ; SLEEP_POWDER + db SPECIAL_MOVE ; PETAL_DANCE + db PHYSICAL_MOVE ; STRING_SHOT + db SPECIAL_MOVE ; DRAGON_RAGE + db SPECIAL_MOVE ; FIRE_SPIN + db SPECIAL_MOVE ; THUNDERSHOCK + db SPECIAL_MOVE ; THUNDERBOLT + db SPECIAL_MOVE ; THUNDER_WAVE + db SPECIAL_MOVE ; THUNDER + db PHYSICAL_MOVE ; ROCK_THROW + db PHYSICAL_MOVE ; EARTHQUAKE + db PHYSICAL_MOVE ; FISSURE + db PHYSICAL_MOVE ; DIG + db PHYSICAL_MOVE ; TOXIC + db SPECIAL_MOVE ; CONFUSION + db SPECIAL_MOVE ; PSYCHIC_M + db SPECIAL_MOVE ; HYPNOSIS + db SPECIAL_MOVE ; MEDITATE + db SPECIAL_MOVE ; AGILITY + db PHYSICAL_MOVE ; QUICK_ATTACK + db PHYSICAL_MOVE ; RAGE + db SPECIAL_MOVE ; TELEPORT + db PHYSICAL_MOVE ; NIGHT_SHADE + db PHYSICAL_MOVE ; MIMIC + db PHYSICAL_MOVE ; SCREECH + db PHYSICAL_MOVE ; DOUBLE_TEAM + db PHYSICAL_MOVE ; RECOVER + db PHYSICAL_MOVE ; HARDEN + db PHYSICAL_MOVE ; MINIMIZE + db PHYSICAL_MOVE ; SMOKESCREEN + db PHYSICAL_MOVE ; CONFUSE_RAY + db SPECIAL_MOVE ; WITHDRAW + db PHYSICAL_MOVE ; DEFENSE_CURL + db SPECIAL_MOVE ; BARRIER + db SPECIAL_MOVE ; LIGHT_SCREEN + db SPECIAL_MOVE ; HAZE + db SPECIAL_MOVE ; REFLECT + db PHYSICAL_MOVE ; FOCUS_ENERGY + db PHYSICAL_MOVE ; BIDE + db PHYSICAL_MOVE ; METRONOME + db PHYSICAL_MOVE ; MIRROR_MOVE + db PHYSICAL_MOVE ; SELFDESTRUCT + db SPECIAL_MOVE ; EGG_BOMB + db PHYSICAL_MOVE ; LICK + db PHYSICAL_MOVE ; SMOG + db PHYSICAL_MOVE ; SLUDGE + db PHYSICAL_MOVE ; BONE_CLUB + db SPECIAL_MOVE ; FIRE_BLAST + db SPECIAL_MOVE ; WATERFALL + db SPECIAL_MOVE ; CLAMP + db PHYSICAL_MOVE ; SWIFT + db PHYSICAL_MOVE ; SKULL_BASH + db PHYSICAL_MOVE ; SPIKE_CANNON + db PHYSICAL_MOVE ; CONSTRICT + db SPECIAL_MOVE ; AMNESIA + db SPECIAL_MOVE ; KINESIS + db PHYSICAL_MOVE ; SOFTBOILED + db PHYSICAL_MOVE ; HI_JUMP_KICK + db PHYSICAL_MOVE ; GLARE + db SPECIAL_MOVE ; DREAM_EATER + db PHYSICAL_MOVE ; POISON_GAS + db SPECIAL_MOVE ; BARRAGE + db PHYSICAL_MOVE ; LEECH_LIFE + db SPECIAL_MOVE ; LOVELY_KISS + db PHYSICAL_MOVE ; SKY_ATTACK + db PHYSICAL_MOVE ; TRANSFORM + db SPECIAL_MOVE ; BUBBLE + db PHYSICAL_MOVE ; DIZZY_PUNCH + db SPECIAL_MOVE ; SPORE + db PHYSICAL_MOVE ; FLASH + db SPECIAL_MOVE ; PSYWAVE + db PHYSICAL_MOVE ; SPLASH + db PHYSICAL_MOVE ; ACID_ARMOR + db SPECIAL_MOVE ; CRABHAMMER + db PHYSICAL_MOVE ; EXPLOSION + db PHYSICAL_MOVE ; FURY_SWIPES + db PHYSICAL_MOVE ; BONEMERANG + db SPECIAL_MOVE ; REST + db PHYSICAL_MOVE ; ROCK_SLIDE + db PHYSICAL_MOVE ; HYPER_FANG + db PHYSICAL_MOVE ; SHARPEN + db PHYSICAL_MOVE ; CONVERSION + db PHYSICAL_MOVE ; TRI_ATTACK + db PHYSICAL_MOVE ; SUPER_FANG + db PHYSICAL_MOVE ; SLASH + db PHYSICAL_MOVE ; SUBSTITUTE + db SPECIAL_MOVE ; FAIRY_WIND + db SPECIAL_MOVE ; DAZZLING_GLEAM + db SPECIAL_MOVE ; FLEUR_CANNON + db SPECIAL_MOVE ; DRAIN_KISS + db PHYSICAL_MOVE ; DRAIN_PUNCH + db PHYSICAL_MOVE ; POISON_NEEDLE + db PHYSICAL_MOVE ; POISON_JAB + db PHYSICAL_MOVE ; POISON_SLASH + db SPECIAL_MOVE ; CRUNCH + db SPECIAL_MOVE ; DARK_PULSE + db PHYSICAL_MOVE ; PHANTOM_FORCE + db SPECIAL_MOVE ; DRAGON_BREATH + db SPECIAL_MOVE ; DRACO_METEOR + db SPECIAL_MOVE ; ICICLE_SHARD + db PHYSICAL_MOVE ; HURRICANE + db PHYSICAL_MOVE ; IRON_HEAD + db PHYSICAL_MOVE ; IRON_TAIL + db PHYSICAL_MOVE ; FLASH_CANNON + db PHYSICAL_MOVE ; NIGHTMARE + db PHYSICAL_MOVE ; HEX + db PHYSICAL_MOVE ; STRUGGLE + assert_table_length NUM_ATTACKS diff --git a/data/moves/effects_pointers.asm b/data/moves/effects_pointers.asm index fc7c08c5c..745344d84 100644 --- a/data/moves/effects_pointers.asm +++ b/data/moves/effects_pointers.asm @@ -87,4 +87,8 @@ MoveEffectPointerTable: dw LeechSeedEffect ; LEECH_SEED_EFFECT dw SplashEffect ; SPLASH_EFFECT dw DisableEffect ; DISABLE_EFFECT + dw PoisonEffect ; POISON_SIDE_EFFECT3 + dw SmogSideEffect ; SMOG_SIDE_EFFECT + dw ParalyzeAllSideEffect ; PARALYZE_SIDE_EFFECT3 + dw ConfusionAllSideEffect ; CONFUSION_SIDE_EFFECT2 assert_table_length NUM_MOVE_EFFECTS diff --git a/data/moves/moves.asm b/data/moves/moves.asm index ac638721a..4bf495dd5 100644 --- a/data/moves/moves.asm +++ b/data/moves/moves.asm @@ -13,53 +13,53 @@ Moves: table_width MOVE_LENGTH move POUND, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35 move KARATE_CHOP, NO_ADDITIONAL_EFFECT, 50, NORMAL, 100, 25 - move DOUBLESLAP, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 10 - move COMET_PUNCH, TWO_TO_FIVE_ATTACKS_EFFECT, 18, NORMAL, 85, 15 - move MEGA_PUNCH, NO_ADDITIONAL_EFFECT, 80, NORMAL, 85, 20 - move PAY_DAY, PAY_DAY_EFFECT, 40, NORMAL, 100, 20 + move DOUBLESLAP, TWO_TO_FIVE_ATTACKS_EFFECT, 25, NORMAL, 85, 25 + move COMET_PUNCH, TWO_TO_FIVE_ATTACKS_EFFECT, 25, STEEL, 85, 15 + move MEGA_PUNCH, NO_ADDITIONAL_EFFECT, 80, FIGHTING, 100, 20 + move PAY_DAY, PAY_DAY_EFFECT, 40, DARK, 100, 20 move FIRE_PUNCH, BURN_SIDE_EFFECT1, 75, FIRE, 100, 15 move ICE_PUNCH, FREEZE_SIDE_EFFECT1, 75, ICE, 100, 15 move THUNDERPUNCH, PARALYZE_SIDE_EFFECT1, 75, ELECTRIC, 100, 15 move SCRATCH, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35 move VICEGRIP, NO_ADDITIONAL_EFFECT, 55, NORMAL, 100, 30 move GUILLOTINE, OHKO_EFFECT, 1, NORMAL, 30, 5 - move RAZOR_WIND, CHARGE_EFFECT, 80, NORMAL, 75, 10 + move RAZOR_WIND, NO_ADDITIONAL_EFFECT, 55, FLYING, 95, 25 move SWORDS_DANCE, ATTACK_UP2_EFFECT, 0, NORMAL, 100, 30 move CUT, NO_ADDITIONAL_EFFECT, 50, NORMAL, 95, 30 move GUST, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35 move WING_ATTACK, NO_ADDITIONAL_EFFECT, 35, FLYING, 100, 35 move WHIRLWIND, SWITCH_AND_TELEPORT_EFFECT, 0, NORMAL, 85, 20 move FLY, FLY_EFFECT, 70, FLYING, 95, 15 - move BIND, TRAPPING_EFFECT, 15, NORMAL, 75, 20 - move SLAM, NO_ADDITIONAL_EFFECT, 80, NORMAL, 75, 20 + move BIND, TRAPPING_EFFECT, 15, ROCK, 100, 20 + move SLAM, NO_ADDITIONAL_EFFECT, 80, FIGHTING, 100, 20 move VINE_WHIP, NO_ADDITIONAL_EFFECT, 35, GRASS, 100, 10 move STOMP, FLINCH_SIDE_EFFECT2, 65, NORMAL, 100, 20 move DOUBLE_KICK, ATTACK_TWICE_EFFECT, 30, FIGHTING, 100, 30 - move MEGA_KICK, NO_ADDITIONAL_EFFECT, 120, NORMAL, 75, 5 - move JUMP_KICK, JUMP_KICK_EFFECT, 70, FIGHTING, 95, 25 + move MEGA_KICK, NO_ADDITIONAL_EFFECT, 120, FIGHTING, 100, 5 + move JUMP_KICK, NO_ADDITIONAL_EFFECT, 70, FIGHTING, 95, 25 move ROLLING_KICK, FLINCH_SIDE_EFFECT2, 60, FIGHTING, 85, 15 move SAND_ATTACK, ACCURACY_DOWN1_EFFECT, 0, NORMAL, 100, 15 move HEADBUTT, FLINCH_SIDE_EFFECT2, 70, NORMAL, 100, 15 - move HORN_ATTACK, NO_ADDITIONAL_EFFECT, 65, NORMAL, 100, 25 + move HORN_ATTACK, NO_ADDITIONAL_EFFECT, 65, ROCK, 100, 25 move FURY_ATTACK, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 20 move HORN_DRILL, OHKO_EFFECT, 1, NORMAL, 30, 5 move TACKLE, NO_ADDITIONAL_EFFECT, 35, NORMAL, 95, 35 move BODY_SLAM, PARALYZE_SIDE_EFFECT2, 85, NORMAL, 100, 15 - move WRAP, TRAPPING_EFFECT, 15, NORMAL, 85, 20 + move WRAP, TRAPPING_EFFECT, 15, NORMAL, 100, 35 move TAKE_DOWN, RECOIL_EFFECT, 90, NORMAL, 85, 20 move THRASH, THRASH_PETAL_DANCE_EFFECT, 90, NORMAL, 100, 20 move DOUBLE_EDGE, RECOIL_EFFECT, 100, NORMAL, 100, 15 move TAIL_WHIP, DEFENSE_DOWN1_EFFECT, 0, NORMAL, 100, 30 - move POISON_STING, POISON_SIDE_EFFECT1, 15, POISON, 100, 35 - move TWINEEDLE, TWINEEDLE_EFFECT, 25, BUG, 100, 20 - move PIN_MISSILE, TWO_TO_FIVE_ATTACKS_EFFECT, 14, BUG, 85, 20 + move POISON_STING, POISON_SIDE_EFFECT3, 25, POISON, 100, 35 + move TWINEEDLE, TWINEEDLE_EFFECT, 35, BUG, 100, 20 + move PIN_MISSILE, TWO_TO_FIVE_ATTACKS_EFFECT, 25, BUG, 85, 20 move LEER, DEFENSE_DOWN1_EFFECT, 0, NORMAL, 100, 30 move BITE, FLINCH_SIDE_EFFECT1, 60, NORMAL, 100, 25 move GROWL, ATTACK_DOWN1_EFFECT, 0, NORMAL, 100, 40 move ROAR, SWITCH_AND_TELEPORT_EFFECT, 0, NORMAL, 100, 20 - move SING, SLEEP_EFFECT, 0, NORMAL, 55, 15 - move SUPERSONIC, CONFUSION_EFFECT, 0, NORMAL, 55, 20 - move SONICBOOM, SPECIAL_DAMAGE_EFFECT, 1, NORMAL, 90, 20 + move SING, SLEEP_EFFECT, 0, FAIRY, 100, 15 + move SUPERSONIC, CONFUSION_EFFECT, 0, NORMAL, 100, 15 + move SONICBOOM, SPECIAL_DAMAGE_EFFECT, 40, FLYING, 100, 20 move DISABLE, DISABLE_EFFECT, 0, NORMAL, 55, 20 move ACID, DEFENSE_DOWN_SIDE_EFFECT, 40, POISON, 100, 30 move EMBER, BURN_SIDE_EFFECT1, 40, FIRE, 100, 25 @@ -76,49 +76,49 @@ Moves: move HYPER_BEAM, HYPER_BEAM_EFFECT, 150, NORMAL, 90, 5 move PECK, NO_ADDITIONAL_EFFECT, 35, FLYING, 100, 35 move DRILL_PECK, NO_ADDITIONAL_EFFECT, 80, FLYING, 100, 20 - move SUBMISSION, RECOIL_EFFECT, 80, FIGHTING, 80, 25 + move SUBMISSION, NO_ADDITIONAL_EFFECT, 80, FIGHTING, 95, 25 move LOW_KICK, FLINCH_SIDE_EFFECT2, 50, FIGHTING, 90, 20 move COUNTER, NO_ADDITIONAL_EFFECT, 1, FIGHTING, 100, 20 - move SEISMIC_TOSS, SPECIAL_DAMAGE_EFFECT, 1, FIGHTING, 100, 20 + move SEISMIC_TOSS, NO_ADDITIONAL_EFFECT, 80, FIGHTING, 100, 20 move STRENGTH, NO_ADDITIONAL_EFFECT, 80, NORMAL, 100, 15 - move ABSORB, DRAIN_HP_EFFECT, 20, GRASS, 100, 20 - move MEGA_DRAIN, DRAIN_HP_EFFECT, 40, GRASS, 100, 10 + move ABSORB, DRAIN_HP_EFFECT, 30, GRASS, 100, 20 + move MEGA_DRAIN, DRAIN_HP_EFFECT, 60, GRASS, 100, 10 move LEECH_SEED, LEECH_SEED_EFFECT, 0, GRASS, 90, 10 move GROWTH, SPECIAL_UP1_EFFECT, 0, NORMAL, 100, 40 move RAZOR_LEAF, NO_ADDITIONAL_EFFECT, 55, GRASS, 95, 25 move SOLARBEAM, CHARGE_EFFECT, 120, GRASS, 100, 10 - move POISONPOWDER, POISON_EFFECT, 0, POISON, 75, 35 - move STUN_SPORE, PARALYZE_EFFECT, 0, GRASS, 75, 30 - move SLEEP_POWDER, SLEEP_EFFECT, 0, GRASS, 75, 15 + move POISONPOWDER, POISON_EFFECT, 0, POISON, 100, 35 + move STUN_SPORE, PARALYZE_EFFECT, 0, GRASS, 100, 30 + move SLEEP_POWDER, SLEEP_EFFECT, 0, GRASS, 100, 15 move PETAL_DANCE, THRASH_PETAL_DANCE_EFFECT, 70, GRASS, 100, 20 move STRING_SHOT, SPEED_DOWN1_EFFECT, 0, BUG, 95, 40 move DRAGON_RAGE, SPECIAL_DAMAGE_EFFECT, 1, DRAGON, 100, 10 - move FIRE_SPIN, TRAPPING_EFFECT, 15, FIRE, 70, 15 + move FIRE_SPIN, TRAPPING_EFFECT, 25, FIRE, 100, 15 move THUNDERSHOCK, PARALYZE_SIDE_EFFECT1, 40, ELECTRIC, 100, 30 move THUNDERBOLT, PARALYZE_SIDE_EFFECT1, 95, ELECTRIC, 100, 15 move THUNDER_WAVE, PARALYZE_EFFECT, 0, ELECTRIC, 100, 20 move THUNDER, PARALYZE_SIDE_EFFECT1, 120, ELECTRIC, 70, 10 - move ROCK_THROW, NO_ADDITIONAL_EFFECT, 50, ROCK, 65, 15 + move ROCK_THROW, NO_ADDITIONAL_EFFECT, 50, ROCK, 100, 15 move EARTHQUAKE, NO_ADDITIONAL_EFFECT, 100, GROUND, 100, 10 move FISSURE, OHKO_EFFECT, 1, GROUND, 30, 5 move DIG, CHARGE_EFFECT, 100, GROUND, 100, 10 - move TOXIC, POISON_EFFECT, 0, POISON, 85, 10 + move TOXIC, POISON_EFFECT, 0, POISON, 100, 10 move CONFUSION, CONFUSION_SIDE_EFFECT, 50, PSYCHIC_TYPE, 100, 25 move PSYCHIC_M, SPECIAL_DOWN_SIDE_EFFECT, 90, PSYCHIC_TYPE, 100, 10 - move HYPNOSIS, SLEEP_EFFECT, 0, PSYCHIC_TYPE, 60, 20 + move HYPNOSIS, SLEEP_EFFECT, 0, PSYCHIC_TYPE, 100, 20 move MEDITATE, ATTACK_UP1_EFFECT, 0, PSYCHIC_TYPE, 100, 40 move AGILITY, SPEED_UP2_EFFECT, 0, PSYCHIC_TYPE, 100, 30 move QUICK_ATTACK, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 30 move RAGE, RAGE_EFFECT, 20, NORMAL, 100, 20 move TELEPORT, SWITCH_AND_TELEPORT_EFFECT, 0, PSYCHIC_TYPE, 100, 20 - move NIGHT_SHADE, SPECIAL_DAMAGE_EFFECT, 0, GHOST, 100, 15 + move NIGHT_SHADE, NO_ADDITIONAL_EFFECT, 75, GHOST, 100, 15 move MIMIC, MIMIC_EFFECT, 0, NORMAL, 100, 10 - move SCREECH, DEFENSE_DOWN2_EFFECT, 0, NORMAL, 85, 40 + move SCREECH, DEFENSE_DOWN2_EFFECT, 0, NORMAL, 100, 40 move DOUBLE_TEAM, EVASION_UP1_EFFECT, 0, NORMAL, 100, 15 move RECOVER, HEAL_EFFECT, 0, NORMAL, 100, 20 move HARDEN, DEFENSE_UP1_EFFECT, 0, NORMAL, 100, 30 move MINIMIZE, EVASION_UP1_EFFECT, 0, NORMAL, 100, 20 - move SMOKESCREEN, ACCURACY_DOWN1_EFFECT, 0, NORMAL, 100, 20 + move SMOKESCREEN, ACCURACY_DOWN2_EFFECT, 0, NORMAL, 100, 20 move CONFUSE_RAY, CONFUSION_EFFECT, 0, GHOST, 100, 10 move WITHDRAW, DEFENSE_UP1_EFFECT, 0, WATER, 100, 40 move DEFENSE_CURL, DEFENSE_UP1_EFFECT, 0, NORMAL, 100, 40 @@ -131,43 +131,43 @@ Moves: move METRONOME, METRONOME_EFFECT, 0, NORMAL, 100, 10 move MIRROR_MOVE, MIRROR_MOVE_EFFECT, 0, FLYING, 100, 20 move SELFDESTRUCT, EXPLODE_EFFECT, 130, NORMAL, 100, 5 - move EGG_BOMB, NO_ADDITIONAL_EFFECT, 100, NORMAL, 75, 10 - move LICK, PARALYZE_SIDE_EFFECT2, 20, GHOST, 100, 30 - move SMOG, POISON_SIDE_EFFECT2, 20, POISON, 70, 20 + move EGG_BOMB, NO_ADDITIONAL_EFFECT, 100, GRASS, 95, 10 + move LICK, PARALYZE_SIDE_EFFECT3, 25, GHOST, 100, 30 + move SMOG, SMOG_SIDE_EFFECT, 20, POISON, 100, 15 move SLUDGE, POISON_SIDE_EFFECT2, 65, POISON, 100, 20 - move BONE_CLUB, FLINCH_SIDE_EFFECT1, 65, GROUND, 85, 20 + move BONE_CLUB, FLINCH_SIDE_EFFECT1, 65, GROUND, 100, 20 move FIRE_BLAST, BURN_SIDE_EFFECT2, 120, FIRE, 85, 5 move WATERFALL, NO_ADDITIONAL_EFFECT, 80, WATER, 100, 15 move CLAMP, TRAPPING_EFFECT, 35, WATER, 75, 10 move SWIFT, SWIFT_EFFECT, 60, NORMAL, 100, 20 move SKULL_BASH, CHARGE_EFFECT, 100, NORMAL, 100, 15 - move SPIKE_CANNON, TWO_TO_FIVE_ATTACKS_EFFECT, 20, NORMAL, 100, 15 - move CONSTRICT, SPEED_DOWN_SIDE_EFFECT, 10, NORMAL, 100, 35 + move SPIKE_CANNON, TWO_TO_FIVE_ATTACKS_EFFECT, 20, ROCK, 100, 15 + move CONSTRICT, FLINCH_SIDE_EFFECT2, 35, GHOST, 100, 15 move AMNESIA, SPECIAL_UP2_EFFECT, 0, PSYCHIC_TYPE, 100, 20 move KINESIS, ACCURACY_DOWN1_EFFECT, 0, PSYCHIC_TYPE, 80, 15 move SOFTBOILED, HEAL_EFFECT, 0, NORMAL, 100, 10 move HI_JUMP_KICK, JUMP_KICK_EFFECT, 85, FIGHTING, 90, 20 move GLARE, PARALYZE_EFFECT, 0, NORMAL, 75, 30 move DREAM_EATER, DREAM_EATER_EFFECT, 100, PSYCHIC_TYPE, 100, 15 - move POISON_GAS, POISON_EFFECT, 0, POISON, 55, 40 - move BARRAGE, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 20 - move LEECH_LIFE, DRAIN_HP_EFFECT, 20, BUG, 100, 15 - move LOVELY_KISS, SLEEP_EFFECT, 0, NORMAL, 75, 10 + move POISON_GAS, POISON_EFFECT, 0, POISON, 100, 40 + move BARRAGE, TWO_TO_FIVE_ATTACKS_EFFECT, 25, DRAGON, 85, 20 + move LEECH_LIFE, DRAIN_HP_EFFECT, 80, BUG, 100, 15 + move LOVELY_KISS, SLEEP_EFFECT, 0, FAIRY, 100, 10 move SKY_ATTACK, CHARGE_EFFECT, 140, FLYING, 90, 5 move TRANSFORM, TRANSFORM_EFFECT, 0, NORMAL, 100, 10 move BUBBLE, SPEED_DOWN_SIDE_EFFECT, 20, WATER, 100, 30 move DIZZY_PUNCH, NO_ADDITIONAL_EFFECT, 70, NORMAL, 100, 10 move SPORE, SLEEP_EFFECT, 0, GRASS, 100, 15 move FLASH, ACCURACY_DOWN1_EFFECT, 0, NORMAL, 70, 20 - move PSYWAVE, SPECIAL_DAMAGE_EFFECT, 1, PSYCHIC_TYPE, 80, 15 + move PSYWAVE, CONFUSION_SIDE_EFFECT2, 25, PSYCHIC_TYPE, 100, 15 move SPLASH, SPLASH_EFFECT, 0, NORMAL, 100, 40 move ACID_ARMOR, DEFENSE_UP2_EFFECT, 0, POISON, 100, 40 - move CRABHAMMER, NO_ADDITIONAL_EFFECT, 90, WATER, 85, 10 + move CRABHAMMER, NO_ADDITIONAL_EFFECT, 90, WATER, 100, 10 move EXPLOSION, EXPLODE_EFFECT, 170, NORMAL, 100, 5 move FURY_SWIPES, TWO_TO_FIVE_ATTACKS_EFFECT, 18, NORMAL, 80, 15 - move BONEMERANG, ATTACK_TWICE_EFFECT, 50, GROUND, 90, 10 + move BONEMERANG, ATTACK_TWICE_EFFECT, 55, GROUND, 100, 10 move REST, HEAL_EFFECT, 0, PSYCHIC_TYPE, 100, 10 - move ROCK_SLIDE, NO_ADDITIONAL_EFFECT, 75, ROCK, 90, 10 + move ROCK_SLIDE, FLINCH_SIDE_EFFECT2, 75, ROCK, 100, 10 move HYPER_FANG, FLINCH_SIDE_EFFECT1, 80, NORMAL, 90, 15 move SHARPEN, ATTACK_UP1_EFFECT, 0, NORMAL, 100, 30 move CONVERSION, CONVERSION_EFFECT, 0, NORMAL, 100, 30 @@ -175,5 +175,25 @@ Moves: move SUPER_FANG, SUPER_FANG_EFFECT, 1, NORMAL, 90, 10 move SLASH, NO_ADDITIONAL_EFFECT, 70, NORMAL, 100, 20 move SUBSTITUTE, SUBSTITUTE_EFFECT, 0, NORMAL, 100, 10 + move FAIRY_WIND, SPEED_DOWN1_EFFECT, 20, FAIRY, 100, 30 + move DAZZLING_GLEAM, NO_ADDITIONAL_EFFECT, 80, FAIRY, 100, 10 + move FLEUR_CANNON, HYPER_BEAM_EFFECT, 150, FAIRY, 90, 5 + move DRAIN_KISS, DRAIN_HP_EFFECT, 40, FAIRY, 100, 15 + move DRAIN_PUNCH, DRAIN_HP_EFFECT, 40, FIGHTING, 100, 15 + move POISON_NEEDLE, TWINEEDLE_EFFECT, 35, POISON, 100, 20 + move POISON_JAB, POISON_SIDE_EFFECT2, 80, POISON, 100, 10 + move POISON_SLASH, POISON_SIDE_EFFECT2, 70, POISON, 100, 15 + move CRUNCH, FLINCH_SIDE_EFFECT2, 60, DARK, 100, 15 + move DARK_PULSE, NO_ADDITIONAL_EFFECT, 90, DARK, 100, 15 + move PHANTOM_FORCE, NO_ADDITIONAL_EFFECT, 90, GHOST, 100, 10 + move DRAGON_BREATH, PARALYZE_SIDE_EFFECT2, 80, DRAGON, 100, 5 + move DRACO_METEOR, HYPER_BEAM_EFFECT, 150, DRAGON, 90, 5 + move ICICLE_SHARD, TWO_TO_FIVE_ATTACKS_EFFECT, 35, ICE, 85, 20 + move HURRICANE, CONFUSION_SIDE_EFFECT, 110, FLYING, 80, 5 + move IRON_HEAD, FLINCH_SIDE_EFFECT2, 75, STEEL, 100, 10 + move IRON_TAIL, DEFENSE_DOWN_SIDE_EFFECT, 90, STEEL, 100, 10 + move FLASH_CANNON, SPECIAL_DOWN_SIDE_EFFECT, 80, STEEL, 100, 10 + move NIGHTMARE, DREAM_EATER_EFFECT, 100, GHOST, 100, 5 + move HEX, DISABLE_EFFECT, 50, GHOST, 100, 15 move STRUGGLE, RECOIL_EFFECT, 50, NORMAL, 100, 10 assert_table_length NUM_ATTACKS diff --git a/data/moves/names.asm b/data/moves/names.asm index caecc06cf..39b6834b8 100644 --- a/data/moves/names.asm +++ b/data/moves/names.asm @@ -165,5 +165,25 @@ MoveNames:: li "SUPER FANG" li "SLASH" li "SUBSTITUTE" + li "FAIRY WIND" + li "DAZZLE GLEAM" + li "FLEUR CANNON" + li "DRAIN KISS" + li "DRAIN PUNCH" + li "POISONNEEDLE" + li "POISON JAB" + li "POISON SLASH" + li "CRUNCH" + li "DARK PULSE" + li "PHANTOMFORCE" + li "DRAGONBREATH" + li "DRACO METEOR" + li "ICICLE SHARD" + li "HURRICANE" + li "IRON HEAD" + li "IRON TAIL" + li "FLASH CANNON" + li "NIGHTMARE" + li "HEX" li "STRUGGLE" assert_list_length NUM_ATTACKS diff --git a/data/moves/sfx.asm b/data/moves/sfx.asm index 59f4cb2cf..fccd40db5 100644 --- a/data/moves/sfx.asm +++ b/data/moves/sfx.asm @@ -165,6 +165,26 @@ MoveSoundTable: db SFX_BATTLE_26, $f0, $ff ; SUPER_FANG db SFX_NOT_VERY_EFFECTIVE, $01, $ff ; SLASH db SFX_BATTLE_2C, $d8, $04 ; SUBSTITUTE + db SFX_BATTLE_27, $00, $80 ; FAIRY_WIND + db SFX_PSYCHIC_M, $00, $80 ; DAZZLING_GLEAM + db SFX_BATTLE_36, $00, $80 ; FLEUR_CANNON + db SFX_BATTLE_09, $88, $10 ; DRAIN_KISS + db SFX_FAINT_FALL, $ff, $04 ; DRAIN_PUNCH + db SFX_BATTLE_1B, $20, $c0 ; POISON_NEEDLE + db SFX_FAINT_FALL, $ff, $04 ; POISON_JAB + db SFX_NOT_VERY_EFFECTIVE, $01, $ff ; POISON_SLASH + db SFX_BATTLE_1E, $00, $80 ; CRUNCH + db SFX_PSYCHIC_M, $00, $80 ; DARK_PULSE + db SFX_PSYCHIC_M, $00, $80 ; PHANTOM_FORCE + db SFX_BATTLE_19, $21, $e0 ; DRAGON_BREATH + db SFX_BATTLE_36, $00, $80 ; DRACO_METEOR + db SFX_BATTLE_26, $1f, $18 ; ICICLE_SHARD + db SFX_BATTLE_12, $00, $c0 ; HURRICANE + db SFX_BATTLE_18, $00, $80 ; IRON_HEAD + db SFX_BATTLE_21, $00, $80 ; IRON_TAIL + db SFX_BATTLE_28, $40, $80 ; FLASH_CANNON + db SFX_BATTLE_35, $42, $01 ; NIGHTMARE + db SFX_BATTLE_0C, $f0, $f0 ; HEX db SFX_BATTLE_0B, $00, $80 ; STRUGGLE assert_table_length NUM_ATTACKS db SFX_BATTLE_0B, $00, $80 diff --git a/data/pokemon/base_stats/aerodactyl.asm b/data/pokemon/base_stats/aerodactyl.asm index aad1aff51..f834215b9 100644 --- a/data/pokemon/base_stats/aerodactyl.asm +++ b/data/pokemon/base_stats/aerodactyl.asm @@ -3,7 +3,7 @@ db 80, 105, 65, 130, 60 ; hp atk def spd spc - db ROCK, FLYING ; type + db ROCK, DRAGON ; type db 45 ; catch rate db 202 ; base exp diff --git a/data/pokemon/base_stats/arbok.asm b/data/pokemon/base_stats/arbok.asm index c34316ce9..89aa2d016 100644 --- a/data/pokemon/base_stats/arbok.asm +++ b/data/pokemon/base_stats/arbok.asm @@ -3,7 +3,7 @@ db 60, 85, 69, 80, 65 ; hp atk def spd spc - db POISON, POISON ; type + db POISON, DARK ; type db 90 ; catch rate db 147 ; base exp diff --git a/data/pokemon/base_stats/blastoise.asm b/data/pokemon/base_stats/blastoise.asm index 512c66a34..a90dd41cb 100644 --- a/data/pokemon/base_stats/blastoise.asm +++ b/data/pokemon/base_stats/blastoise.asm @@ -3,7 +3,7 @@ db 79, 83, 100, 78, 85 ; hp atk def spd spc - db WATER, WATER ; type + db WATER, STEEL ; type db 45 ; catch rate db 210 ; base exp diff --git a/data/pokemon/base_stats/charizard.asm b/data/pokemon/base_stats/charizard.asm index 715e0f7f9..efb08e2d1 100644 --- a/data/pokemon/base_stats/charizard.asm +++ b/data/pokemon/base_stats/charizard.asm @@ -3,7 +3,7 @@ db 78, 84, 78, 100, 85 ; hp atk def spd spc - db FIRE, FLYING ; type + db FIRE, DRAGON ; type db 45 ; catch rate db 209 ; base exp diff --git a/data/pokemon/base_stats/clefable.asm b/data/pokemon/base_stats/clefable.asm index 0aef84054..8c0374498 100644 --- a/data/pokemon/base_stats/clefable.asm +++ b/data/pokemon/base_stats/clefable.asm @@ -3,7 +3,7 @@ db 95, 70, 73, 60, 85 ; hp atk def spd spc - db NORMAL, NORMAL ; type + db FAIRY, FAIRY ; type db 25 ; catch rate db 129 ; base exp diff --git a/data/pokemon/base_stats/clefairy.asm b/data/pokemon/base_stats/clefairy.asm index 136b30be1..03f5e2148 100644 --- a/data/pokemon/base_stats/clefairy.asm +++ b/data/pokemon/base_stats/clefairy.asm @@ -3,7 +3,7 @@ db 70, 45, 48, 35, 60 ; hp atk def spd spc - db NORMAL, NORMAL ; type + db FAIRY, FAIRY ; type db 150 ; catch rate db 68 ; base exp diff --git a/data/pokemon/base_stats/dragonair.asm b/data/pokemon/base_stats/dragonair.asm index 1178ebccc..6cef2a448 100644 --- a/data/pokemon/base_stats/dragonair.asm +++ b/data/pokemon/base_stats/dragonair.asm @@ -4,7 +4,7 @@ ; hp atk def spd spc db DRAGON, DRAGON ; type - db 45 ; catch rate + db 150 ; catch rate db 144 ; base exp INCBIN "gfx/pokemon/front/dragonair.pic", 0, 1 ; sprite dimensions diff --git a/data/pokemon/base_stats/dragonite.asm b/data/pokemon/base_stats/dragonite.asm index 968d53b62..d94c28027 100644 --- a/data/pokemon/base_stats/dragonite.asm +++ b/data/pokemon/base_stats/dragonite.asm @@ -3,7 +3,7 @@ db 91, 134, 95, 80, 100 ; hp atk def spd spc - db DRAGON, FLYING ; type + db DRAGON, DRAGON ; type db 45 ; catch rate db 218 ; base exp diff --git a/data/pokemon/base_stats/dratini.asm b/data/pokemon/base_stats/dratini.asm index 42a938228..0a74a89e6 100644 --- a/data/pokemon/base_stats/dratini.asm +++ b/data/pokemon/base_stats/dratini.asm @@ -4,7 +4,7 @@ ; hp atk def spd spc db DRAGON, DRAGON ; type - db 45 ; catch rate + db 190 ; catch rate db 67 ; base exp INCBIN "gfx/pokemon/front/dratini.pic", 0, 1 ; sprite dimensions diff --git a/data/pokemon/base_stats/electrode.asm b/data/pokemon/base_stats/electrode.asm index 59f217679..f5a4cd89b 100644 --- a/data/pokemon/base_stats/electrode.asm +++ b/data/pokemon/base_stats/electrode.asm @@ -3,7 +3,7 @@ db 60, 50, 70, 140, 80 ; hp atk def spd spc - db ELECTRIC, ELECTRIC ; type + db ELECTRIC, STEEL ; type db 60 ; catch rate db 150 ; base exp diff --git a/data/pokemon/base_stats/farfetchd.asm b/data/pokemon/base_stats/farfetchd.asm index 8e0d79e4d..b4bbdca2b 100644 --- a/data/pokemon/base_stats/farfetchd.asm +++ b/data/pokemon/base_stats/farfetchd.asm @@ -3,7 +3,7 @@ db 52, 65, 55, 60, 58 ; hp atk def spd spc - db NORMAL, FLYING ; type + db FLYING, FIGHTING ; type db 45 ; catch rate db 94 ; base exp diff --git a/data/pokemon/base_stats/fearow.asm b/data/pokemon/base_stats/fearow.asm index 33ad5c5ab..ec5d663b5 100644 --- a/data/pokemon/base_stats/fearow.asm +++ b/data/pokemon/base_stats/fearow.asm @@ -3,7 +3,7 @@ db 65, 90, 65, 100, 61 ; hp atk def spd spc - db NORMAL, FLYING ; type + db FLYING, DARK ; type db 90 ; catch rate db 162 ; base exp diff --git a/data/pokemon/base_stats/gastly.asm b/data/pokemon/base_stats/gastly.asm index f48b42349..2e49d11c2 100644 --- a/data/pokemon/base_stats/gastly.asm +++ b/data/pokemon/base_stats/gastly.asm @@ -3,7 +3,7 @@ db 30, 35, 30, 80, 100 ; hp atk def spd spc - db GHOST, POISON ; type + db GHOST, GHOST ; type db 190 ; catch rate db 95 ; base exp diff --git a/data/pokemon/base_stats/gengar.asm b/data/pokemon/base_stats/gengar.asm index 3a07a4412..dcc302164 100644 --- a/data/pokemon/base_stats/gengar.asm +++ b/data/pokemon/base_stats/gengar.asm @@ -3,7 +3,7 @@ db 60, 65, 60, 110, 130 ; hp atk def spd spc - db GHOST, POISON ; type + db GHOST, GHOST ; type db 45 ; catch rate db 190 ; base exp diff --git a/data/pokemon/base_stats/geodude.asm b/data/pokemon/base_stats/geodude.asm index 849e12347..d9d59fb4f 100644 --- a/data/pokemon/base_stats/geodude.asm +++ b/data/pokemon/base_stats/geodude.asm @@ -3,7 +3,7 @@ db 40, 80, 100, 20, 30 ; hp atk def spd spc - db ROCK, GROUND ; type + db ROCK, ROCK ; type db 255 ; catch rate db 86 ; base exp diff --git a/data/pokemon/base_stats/goldeen.asm b/data/pokemon/base_stats/goldeen.asm index 35ea24181..f4dc383c3 100644 --- a/data/pokemon/base_stats/goldeen.asm +++ b/data/pokemon/base_stats/goldeen.asm @@ -3,7 +3,7 @@ db 45, 67, 60, 63, 50 ; hp atk def spd spc - db WATER, WATER ; type + db WATER, FAIRY ; type db 225 ; catch rate db 111 ; base exp diff --git a/data/pokemon/base_stats/golduck.asm b/data/pokemon/base_stats/golduck.asm index eb79d1004..7dd776b79 100644 --- a/data/pokemon/base_stats/golduck.asm +++ b/data/pokemon/base_stats/golduck.asm @@ -1,9 +1,9 @@ db DEX_GOLDUCK ; pokedex id - db 80, 82, 78, 85, 80 + db 80, 80, 85, 101, 100 ; hp atk def spd spc - db WATER, WATER ; type + db WATER, PSYCHIC_TYPE ; type db 75 ; catch rate db 174 ; base exp @@ -18,8 +18,8 @@ DOUBLE_EDGE, BUBBLEBEAM, WATER_GUN, ICE_BEAM, BLIZZARD, \ HYPER_BEAM, PAY_DAY, SUBMISSION, COUNTER, SEISMIC_TOSS, \ RAGE, DIG, MIMIC, DOUBLE_TEAM, BIDE, \ - SWIFT, SKULL_BASH, REST, SUBSTITUTE, SURF, \ - STRENGTH + SWIFT, SKULL_BASH, REST, SUBSTITUTE, PSYCHIC_M, \ + STRENGTH, SURF ; end db 0 ; padding diff --git a/data/pokemon/base_stats/golem.asm b/data/pokemon/base_stats/golem.asm index adcefb3f0..718a5cfee 100644 --- a/data/pokemon/base_stats/golem.asm +++ b/data/pokemon/base_stats/golem.asm @@ -3,7 +3,7 @@ db 80, 110, 130, 45, 55 ; hp atk def spd spc - db ROCK, GROUND ; type + db ROCK, ROCK ; type db 45 ; catch rate db 177 ; base exp diff --git a/data/pokemon/base_stats/graveler.asm b/data/pokemon/base_stats/graveler.asm index af0b3dcc4..794b3d9bd 100644 --- a/data/pokemon/base_stats/graveler.asm +++ b/data/pokemon/base_stats/graveler.asm @@ -3,7 +3,7 @@ db 55, 95, 115, 35, 45 ; hp atk def spd spc - db ROCK, GROUND ; type + db ROCK, ROCK ; type db 120 ; catch rate db 134 ; base exp diff --git a/data/pokemon/base_stats/gyarados.asm b/data/pokemon/base_stats/gyarados.asm index f08d29c94..11228347d 100644 --- a/data/pokemon/base_stats/gyarados.asm +++ b/data/pokemon/base_stats/gyarados.asm @@ -3,7 +3,7 @@ db 95, 125, 79, 81, 100 ; hp atk def spd spc - db WATER, FLYING ; type + db WATER, DRAGON ; type db 45 ; catch rate db 214 ; base exp diff --git a/data/pokemon/base_stats/haunter.asm b/data/pokemon/base_stats/haunter.asm index 71e943477..147982081 100644 --- a/data/pokemon/base_stats/haunter.asm +++ b/data/pokemon/base_stats/haunter.asm @@ -3,7 +3,7 @@ db 45, 50, 45, 95, 115 ; hp atk def spd spc - db GHOST, POISON ; type + db GHOST, GHOST ; type db 90 ; catch rate db 126 ; base exp diff --git a/data/pokemon/base_stats/hypno.asm b/data/pokemon/base_stats/hypno.asm index 760276db7..797e54505 100644 --- a/data/pokemon/base_stats/hypno.asm +++ b/data/pokemon/base_stats/hypno.asm @@ -3,7 +3,7 @@ db 85, 73, 70, 67, 115 ; hp atk def spd spc - db PSYCHIC_TYPE, PSYCHIC_TYPE ; type + db PSYCHIC_TYPE, DARK ; type db 75 ; catch rate db 165 ; base exp diff --git a/data/pokemon/base_stats/kabutops.asm b/data/pokemon/base_stats/kabutops.asm index 62585d70b..187a56988 100644 --- a/data/pokemon/base_stats/kabutops.asm +++ b/data/pokemon/base_stats/kabutops.asm @@ -3,7 +3,7 @@ db 60, 115, 105, 80, 70 ; hp atk def spd spc - db ROCK, WATER ; type + db ROCK, STEEL ; type db 45 ; catch rate db 201 ; base exp diff --git a/data/pokemon/base_stats/magnemite.asm b/data/pokemon/base_stats/magnemite.asm index 6242d692d..ceb3ddf3f 100644 --- a/data/pokemon/base_stats/magnemite.asm +++ b/data/pokemon/base_stats/magnemite.asm @@ -3,7 +3,7 @@ db 25, 35, 70, 45, 95 ; hp atk def spd spc - db ELECTRIC, ELECTRIC ; type + db ELECTRIC, STEEL ; type db 190 ; catch rate db 89 ; base exp diff --git a/data/pokemon/base_stats/magneton.asm b/data/pokemon/base_stats/magneton.asm index 13d2e595f..5aeeb8fea 100644 --- a/data/pokemon/base_stats/magneton.asm +++ b/data/pokemon/base_stats/magneton.asm @@ -3,7 +3,7 @@ db 50, 60, 95, 70, 120 ; hp atk def spd spc - db ELECTRIC, ELECTRIC ; type + db ELECTRIC, STEEL ; type db 60 ; catch rate db 161 ; base exp diff --git a/data/pokemon/base_stats/mrmime.asm b/data/pokemon/base_stats/mrmime.asm index 20c965084..303c2a543 100644 --- a/data/pokemon/base_stats/mrmime.asm +++ b/data/pokemon/base_stats/mrmime.asm @@ -3,7 +3,7 @@ db 40, 45, 65, 90, 100 ; hp atk def spd spc - db PSYCHIC_TYPE, PSYCHIC_TYPE ; type + db PSYCHIC_TYPE, FAIRY ; type db 45 ; catch rate db 136 ; base exp diff --git a/data/pokemon/base_stats/ninetales.asm b/data/pokemon/base_stats/ninetales.asm index 2c2bc6157..64c38a3f0 100644 --- a/data/pokemon/base_stats/ninetales.asm +++ b/data/pokemon/base_stats/ninetales.asm @@ -3,7 +3,7 @@ db 73, 76, 75, 100, 100 ; hp atk def spd spc - db FIRE, FIRE ; type + db FIRE, GHOST ; type db 75 ; catch rate db 178 ; base exp diff --git a/data/pokemon/base_stats/oddish.asm b/data/pokemon/base_stats/oddish.asm index 60172ea44..ccefbb0fc 100644 --- a/data/pokemon/base_stats/oddish.asm +++ b/data/pokemon/base_stats/oddish.asm @@ -3,7 +3,7 @@ db 45, 50, 55, 30, 75 ; hp atk def spd spc - db GRASS, POISON ; type + db GRASS, GRASS ; type db 255 ; catch rate db 78 ; base exp diff --git a/data/pokemon/base_stats/onix.asm b/data/pokemon/base_stats/onix.asm index 29d2f6772..e3f6c9e86 100644 --- a/data/pokemon/base_stats/onix.asm +++ b/data/pokemon/base_stats/onix.asm @@ -3,7 +3,7 @@ db 35, 45, 160, 70, 30 ; hp atk def spd spc - db ROCK, GROUND ; type + db ROCK, ROCK ; type db 45 ; catch rate db 108 ; base exp diff --git a/data/pokemon/base_stats/parasect.asm b/data/pokemon/base_stats/parasect.asm index 5fa09fc93..ef65d5414 100644 --- a/data/pokemon/base_stats/parasect.asm +++ b/data/pokemon/base_stats/parasect.asm @@ -3,7 +3,7 @@ db 60, 95, 80, 30, 80 ; hp atk def spd spc - db BUG, GRASS ; type + db BUG, GHOST ; type db 75 ; catch rate db 128 ; base exp diff --git a/data/pokemon/base_stats/persian.asm b/data/pokemon/base_stats/persian.asm index ec214eadf..59f932a57 100644 --- a/data/pokemon/base_stats/persian.asm +++ b/data/pokemon/base_stats/persian.asm @@ -3,7 +3,7 @@ db 65, 70, 60, 115, 65 ; hp atk def spd spc - db NORMAL, NORMAL ; type + db NORMAL, DARK ; type db 90 ; catch rate db 148 ; base exp diff --git a/data/pokemon/base_stats/pinsir.asm b/data/pokemon/base_stats/pinsir.asm index 946feaf18..bfb586b93 100644 --- a/data/pokemon/base_stats/pinsir.asm +++ b/data/pokemon/base_stats/pinsir.asm @@ -3,7 +3,7 @@ db 65, 125, 100, 85, 55 ; hp atk def spd spc - db BUG, BUG ; type + db BUG, DARK ; type db 45 ; catch rate db 200 ; base exp diff --git a/data/pokemon/base_stats/psyduck.asm b/data/pokemon/base_stats/psyduck.asm index b3fb9f418..26e1de981 100644 --- a/data/pokemon/base_stats/psyduck.asm +++ b/data/pokemon/base_stats/psyduck.asm @@ -3,7 +3,7 @@ db 50, 52, 48, 55, 50 ; hp atk def spd spc - db WATER, WATER ; type + db WATER, PSYCHIC_TYPE ; type db 190 ; catch rate db 80 ; base exp diff --git a/data/pokemon/base_stats/rhydon.asm b/data/pokemon/base_stats/rhydon.asm index c6b175001..2b9ef885d 100644 --- a/data/pokemon/base_stats/rhydon.asm +++ b/data/pokemon/base_stats/rhydon.asm @@ -3,7 +3,7 @@ db 105, 130, 120, 40, 45 ; hp atk def spd spc - db GROUND, ROCK ; type + db GROUND, STEEL ; type db 60 ; catch rate db 204 ; base exp diff --git a/data/pokemon/base_stats/rhyhorn.asm b/data/pokemon/base_stats/rhyhorn.asm index 6f4bb31bf..a94da50e9 100644 --- a/data/pokemon/base_stats/rhyhorn.asm +++ b/data/pokemon/base_stats/rhyhorn.asm @@ -3,7 +3,7 @@ db 80, 85, 95, 25, 30 ; hp atk def spd spc - db GROUND, ROCK ; type + db GROUND, STEEL ; type db 120 ; catch rate db 135 ; base exp diff --git a/data/pokemon/base_stats/sandslash.asm b/data/pokemon/base_stats/sandslash.asm index 5a50dd257..9b63386cc 100644 --- a/data/pokemon/base_stats/sandslash.asm +++ b/data/pokemon/base_stats/sandslash.asm @@ -3,7 +3,7 @@ db 75, 100, 110, 65, 55 ; hp atk def spd spc - db GROUND, GROUND ; type + db GROUND, STEEL ; type db 90 ; catch rate db 163 ; base exp diff --git a/data/pokemon/base_stats/seaking.asm b/data/pokemon/base_stats/seaking.asm index 532a4c70b..48aca6bf7 100644 --- a/data/pokemon/base_stats/seaking.asm +++ b/data/pokemon/base_stats/seaking.asm @@ -3,7 +3,7 @@ db 80, 92, 65, 68, 80 ; hp atk def spd spc - db WATER, WATER ; type + db WATER, FAIRY ; type db 60 ; catch rate db 170 ; base exp diff --git a/data/pokemon/base_stats/spearow.asm b/data/pokemon/base_stats/spearow.asm index 161f4100e..ceec7265c 100644 --- a/data/pokemon/base_stats/spearow.asm +++ b/data/pokemon/base_stats/spearow.asm @@ -3,7 +3,7 @@ db 40, 60, 30, 70, 31 ; hp atk def spd spc - db NORMAL, FLYING ; type + db FLYING, DARK ; type db 255 ; catch rate db 58 ; base exp diff --git a/data/pokemon/base_stats/tentacruel.asm b/data/pokemon/base_stats/tentacruel.asm index ad8f773ea..c151c0b8c 100644 --- a/data/pokemon/base_stats/tentacruel.asm +++ b/data/pokemon/base_stats/tentacruel.asm @@ -3,7 +3,7 @@ db 80, 70, 65, 100, 120 ; hp atk def spd spc - db WATER, POISON ; type + db WATER, DARK ; type db 60 ; catch rate db 205 ; base exp diff --git a/data/pokemon/base_stats/venomoth.asm b/data/pokemon/base_stats/venomoth.asm index c01ee2630..532b93eec 100644 --- a/data/pokemon/base_stats/venomoth.asm +++ b/data/pokemon/base_stats/venomoth.asm @@ -3,7 +3,7 @@ db 70, 65, 60, 90, 90 ; hp atk def spd spc - db BUG, POISON ; type + db BUG, PSYCHIC_TYPE ; type db 75 ; catch rate db 138 ; base exp diff --git a/data/pokemon/base_stats/voltorb.asm b/data/pokemon/base_stats/voltorb.asm index 4ad657019..fe9d5040b 100644 --- a/data/pokemon/base_stats/voltorb.asm +++ b/data/pokemon/base_stats/voltorb.asm @@ -3,7 +3,7 @@ db 40, 30, 50, 100, 55 ; hp atk def spd spc - db ELECTRIC, ELECTRIC ; type + db ELECTRIC, STEEL ; type db 190 ; catch rate db 103 ; base exp diff --git a/data/pokemon/evos_moves.asm b/data/pokemon/evos_moves.asm index 6a6704f98..aa5a05a09 100644 --- a/data/pokemon/evos_moves.asm +++ b/data/pokemon/evos_moves.asm @@ -253,7 +253,7 @@ ClefairyEvosMoves: SpearowEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 20, FEAROW + db EVOLVE_LEVEL, 18, FEAROW db 0 ; Learnset db 9, LEER @@ -344,7 +344,7 @@ ExeggcuteEvosMoves: GrimerEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 38, MUK + db EVOLVE_LEVEL, 26, MUK db 0 ; Learnset db 30, POISON_GAS @@ -387,7 +387,7 @@ NidoqueenEvosMoves: CuboneEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 28, MAROWAK + db EVOLVE_LEVEL, 22, MAROWAK db 0 ; Learnset db 25, LEER @@ -399,7 +399,7 @@ CuboneEvosMoves: RhyhornEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 42, RHYDON + db EVOLVE_LEVEL, 36, RHYDON db 0 ; Learnset db 30, STOMP @@ -478,7 +478,7 @@ TentacoolEvosMoves: GastlyEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 25, HAUNTER + db EVOLVE_LEVEL, 20, HAUNTER db 0 ; Learnset db 27, HYPNOSIS @@ -595,7 +595,7 @@ FearowEvosMoves: PidgeyEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 18, PIDGEOTTO + db EVOLVE_LEVEL, 14, PIDGEOTTO db 0 ; Learnset db 5, SAND_ATTACK @@ -621,7 +621,7 @@ SlowpokeEvosMoves: KadabraEvosMoves: ; Evolutions - db EVOLVE_TRADE, 1, ALAKAZAM + db EVOLVE_LEVEL, 35, ALAKAZAM db 0 ; Learnset db 16, CONFUSION @@ -634,7 +634,7 @@ KadabraEvosMoves: GravelerEvosMoves: ; Evolutions - db EVOLVE_TRADE, 1, GOLEM + db EVOLVE_LEVEL, 35, GOLEM db 0 ; Learnset db 11, DEFENSE_CURL @@ -659,7 +659,7 @@ ChanseyEvosMoves: MachokeEvosMoves: ; Evolutions - db EVOLVE_TRADE, 1, MACHAMP + db EVOLVE_LEVEL, 35, MACHAMP db 0 ; Learnset db 20, LOW_KICK @@ -726,7 +726,7 @@ ParasectEvosMoves: PsyduckEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 33, GOLDUCK + db EVOLVE_LEVEL, 26, GOLDUCK db 0 ; Learnset db 28, TAIL_WHIP @@ -810,7 +810,7 @@ MagnetonEvosMoves: KoffingEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 35, WEEZING + db EVOLVE_LEVEL, 26, WEEZING db 0 ; Learnset db 32, SLUDGE @@ -828,7 +828,7 @@ MissingNo38EvosMoves: MankeyEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 28, PRIMEAPE + db EVOLVE_LEVEL, 26, PRIMEAPE db 0 ; Learnset db 15, KARATE_CHOP @@ -840,7 +840,7 @@ MankeyEvosMoves: SeelEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 34, DEWGONG + db EVOLVE_LEVEL, 26, DEWGONG db 0 ; Learnset db 30, GROWL @@ -904,7 +904,7 @@ FarfetchdEvosMoves: VenonatEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 31, VENOMOTH + db EVOLVE_LEVEL, 18, VENOMOTH db 0 ; Learnset db 24, POISONPOWDER @@ -946,7 +946,7 @@ MissingNo45EvosMoves: DoduoEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 31, DODRIO + db EVOLVE_LEVEL, 26, DODRIO db 0 ; Learnset db 20, GROWL @@ -959,7 +959,7 @@ DoduoEvosMoves: PoliwagEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 25, POLIWHIRL + db EVOLVE_LEVEL, 16, POLIWHIRL db 0 ; Learnset db 16, HYPNOSIS @@ -1017,7 +1017,7 @@ DittoEvosMoves: MeowthEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 28, PERSIAN + db EVOLVE_LEVEL, 24, PERSIAN db 0 ; Learnset db 12, BITE @@ -1029,7 +1029,7 @@ MeowthEvosMoves: KrabbyEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 28, KINGLER + db EVOLVE_LEVEL, 22, KINGLER db 0 ; Learnset db 20, VICEGRIP @@ -1131,7 +1131,7 @@ DragonairEvosMoves: KabutoEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 40, KABUTOPS + db EVOLVE_LEVEL, 26, KABUTOPS db 0 ; Learnset db 34, ABSORB @@ -1152,7 +1152,7 @@ KabutopsEvosMoves: HorseaEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 32, SEADRA + db EVOLVE_LEVEL, 28, SEADRA db 0 ; Learnset db 19, SMOKESCREEN @@ -1187,7 +1187,7 @@ MissingNo5FEvosMoves: SandshrewEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 22, SANDSLASH + db EVOLVE_LEVEL, 18, SANDSLASH db 0 ; Learnset db 10, SAND_ATTACK @@ -1210,7 +1210,7 @@ SandslashEvosMoves: OmanyteEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 40, OMASTAR + db EVOLVE_LEVEL, 26, OMASTAR db 0 ; Learnset db 34, HORN_ATTACK @@ -1306,7 +1306,7 @@ VaporeonEvosMoves: MachopEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 28, MACHOKE + db EVOLVE_LEVEL, 22, MACHOKE db 0 ; Learnset db 20, LOW_KICK @@ -1330,7 +1330,7 @@ ZubatEvosMoves: EkansEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 22, ARBOK + db EVOLVE_LEVEL, 18, ARBOK db 0 ; Learnset db 10, POISON_STING @@ -1342,7 +1342,7 @@ EkansEvosMoves: ParasEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 24, PARASECT + db EVOLVE_LEVEL, 16, PARASECT db 0 ; Learnset db 13, STUN_SPORE @@ -1693,7 +1693,7 @@ MissingNo92EvosMoves: HaunterEvosMoves: ; Evolutions - db EVOLVE_TRADE, 1, GENGAR + db EVOLVE_LEVEL, 35, GENGAR db 0 ; Learnset db 29, HYPNOSIS @@ -1721,7 +1721,7 @@ AlakazamEvosMoves: PidgeottoEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 36, PIDGEOT + db EVOLVE_LEVEL, 30, PIDGEOT db 0 ; Learnset db 5, SAND_ATTACK @@ -1799,7 +1799,7 @@ MissingNo9CEvosMoves: GoldeenEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 33, SEAKING + db EVOLVE_LEVEL, 22, SEAKING db 0 ; Learnset db 19, SUPERSONIC @@ -1848,7 +1848,7 @@ MissingNoA2EvosMoves: PonytaEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 40, RAPIDASH + db EVOLVE_LEVEL, 26, RAPIDASH db 0 ; Learnset db 30, TAIL_WHIP @@ -1873,7 +1873,7 @@ RapidashEvosMoves: RattataEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 20, RATICATE + db EVOLVE_LEVEL, 16, RATICATE db 0 ; Learnset db 7, QUICK_ATTACK @@ -1920,7 +1920,7 @@ NidorinaEvosMoves: GeodudeEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 25, GRAVELER + db EVOLVE_LEVEL, 20, GRAVELER db 0 ; Learnset db 11, DEFENSE_CURL @@ -1959,7 +1959,7 @@ MissingNoACEvosMoves: MagnemiteEvosMoves: ; Evolutions - db EVOLVE_LEVEL, 30, MAGNETON + db EVOLVE_LEVEL, 26, MAGNETON db 0 ; Learnset db 21, SONICBOOM diff --git a/data/types/names.asm b/data/types/names.asm index 8fbcacb6a..595bab3a3 100644 --- a/data/types/names.asm +++ b/data/types/names.asm @@ -10,6 +10,7 @@ TypeNames: dw .Bird dw .Bug dw .Ghost + dw .Steel REPT UNUSED_TYPES_END - UNUSED_TYPES dw .Normal @@ -22,6 +23,8 @@ ENDR dw .Psychic dw .Ice dw .Dragon + dw .Dark + dw .Fairy assert_table_length NUM_TYPES @@ -41,3 +44,6 @@ ENDR .Bug: db "BUG@" .Ghost: db "GHOST@" .Dragon: db "DRAGON@" +.Steel: db "STEEL@" +.Dark: db "DARK@" +.Fairy: db "FAIRY@" diff --git a/data/types/type_matchups.asm b/data/types/type_matchups.asm index 52e3d9561..f9880483a 100644 --- a/data/types/type_matchups.asm +++ b/data/types/type_matchups.asm @@ -75,11 +75,52 @@ TypeEffects: db ROCK, BUG, SUPER_EFFECTIVE db ROCK, ICE, SUPER_EFFECTIVE db GHOST, NORMAL, NO_EFFECT - db GHOST, PSYCHIC_TYPE, NO_EFFECT + db GHOST, PSYCHIC_TYPE, SUPER_EFFECTIVE db FIRE, DRAGON, NOT_VERY_EFFECTIVE db WATER, DRAGON, NOT_VERY_EFFECTIVE db ELECTRIC, DRAGON, NOT_VERY_EFFECTIVE db GRASS, DRAGON, NOT_VERY_EFFECTIVE db ICE, DRAGON, SUPER_EFFECTIVE db DRAGON, DRAGON, SUPER_EFFECTIVE +; Steel + db STEEL, ICE, SUPER_EFFECTIVE + db STEEL, ROCK, SUPER_EFFECTIVE + db STEEL, FAIRY, SUPER_EFFECTIVE + db STEEL, FIRE, NOT_VERY_EFFECTIVE + db STEEL, WATER, NOT_VERY_EFFECTIVE + db STEEL, ELECTRIC, NOT_VERY_EFFECTIVE + db STEEL, STEEL, NOT_VERY_EFFECTIVE + db FIGHTING, STEEL, SUPER_EFFECTIVE + db GROUND, STEEL, SUPER_EFFECTIVE + db FIRE, STEEL, SUPER_EFFECTIVE + db NORMAL, STEEL, NOT_VERY_EFFECTIVE + db GRASS, STEEL, NOT_VERY_EFFECTIVE + db ICE, STEEL, NOT_VERY_EFFECTIVE + db FLYING, STEEL, NOT_VERY_EFFECTIVE + db PSYCHIC_TYPE, STEEL, NOT_VERY_EFFECTIVE + db BUG, STEEL, NOT_VERY_EFFECTIVE + db ROCK, STEEL, NOT_VERY_EFFECTIVE + db DRAGON, STEEL, NOT_VERY_EFFECTIVE + db POISON, STEEL, NO_EFFECT +; Dark + db DARK, PSYCHIC_TYPE, SUPER_EFFECTIVE + db DARK, GHOST, SUPER_EFFECTIVE + db DARK, FIGHTING, NOT_VERY_EFFECTIVE + db DARK, DARK, NOT_VERY_EFFECTIVE + db DARK, FAIRY, NOT_VERY_EFFECTIVE + db FIGHTING, DARK, SUPER_EFFECTIVE + db BUG, DARK, SUPER_EFFECTIVE + db FAIRY, DARK, SUPER_EFFECTIVE + db GHOST, DARK, NOT_VERY_EFFECTIVE + db PSYCHIC_TYPE, DARK, NO_EFFECT +; Fairy + db FAIRY, FIGHTING, SUPER_EFFECTIVE + db FAIRY, DRAGON, SUPER_EFFECTIVE + db FAIRY, FIRE, NOT_VERY_EFFECTIVE + db FAIRY, POISON, NOT_VERY_EFFECTIVE + db FAIRY, STEEL, NOT_VERY_EFFECTIVE + db POISON, FAIRY, SUPER_EFFECTIVE + db FIGHTING, FAIRY, NOT_VERY_EFFECTIVE + db BUG, FAIRY, NOT_VERY_EFFECTIVE + db DRAGON, FAIRY, NO_EFFECT db -1 ; end diff --git a/engine/battle/core.asm b/engine/battle/core.asm index fc17ec441..d4cd3022f 100644 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -368,15 +368,15 @@ MainInBattleLoop: callfar SwitchEnemyMon .noLinkBattle ld a, [wPlayerSelectedMove] - cp QUICK_ATTACK + call CheckPriorityMove jr nz, .playerDidNotUseQuickAttack ld a, [wEnemySelectedMove] - cp QUICK_ATTACK + call CheckPriorityMove jr z, .compareSpeed ; if both used Quick Attack jp .playerMovesFirst ; if player used Quick Attack and enemy didn't .playerDidNotUseQuickAttack ld a, [wEnemySelectedMove] - cp QUICK_ATTACK + call CheckPriorityMove jr z, .enemyMovesFirst ; if enemy used Quick Attack and player didn't ld a, [wPlayerSelectedMove] cp COUNTER @@ -467,6 +467,14 @@ MainInBattleLoop: call CheckNumAttacksLeft jp MainInBattleLoop +CheckPriorityMove: +; Returns z if the move id in a is a high-priority move that moves first +; (Quick Attack or Constrict). + cp QUICK_ATTACK + ret z + cp CONSTRICT + ret + HandlePoisonBurnLeechSeed: ld hl, wBattleMonHP ld de, wBattleMonStatus @@ -3363,13 +3371,8 @@ CheckPlayerStatusConditions: jp .returnToHL .HeldInPlaceCheck - ld a, [wEnemyBattleStatus1] - bit USING_TRAPPING_MOVE, a ; is enemy using a multi-turn move like wrap? - jp z, .FlinchedCheck - ld hl, CantMoveText - call PrintText - ld hl, ExecutePlayerMoveDone ; player can't move this turn - jp .returnToHL +; Trapping moves like Wrap no longer hold the target in place: it can still act +; (attack or switch) to break free, instead of losing every turn. .FlinchedCheck ld hl, wPlayerBattleStatus1 @@ -4026,6 +4029,17 @@ IgnoredOrdersText: text_far _IgnoredOrdersText text_end +; Returns the damage category (PHYSICAL_MOVE or SPECIAL_MOVE) in a for the move +; id passed in a. Used to choose Attack/Defense vs Special per move. +GetMoveCategory: + dec a + ld c, a + ld b, 0 + ld hl, MoveCategories + add hl, bc + ld a, [hl] + ret + ; sets b, c, d, and e for the CalculateDamage routine in the case of an attack by the player mon GetDamageVarsForPlayerAttack: xor a @@ -4037,9 +4051,10 @@ GetDamageVarsForPlayerAttack: and a ld d, a ; d = move power ret z ; return if move power is zero - ld a, [hl] ; a = [wPlayerMoveType] - cp SPECIAL ; types >= SPECIAL are all special - jr nc, .specialAttack + ld a, [wPlayerMoveNum] + call GetMoveCategory ; a = move's damage category (independent of type) + and a + jr nz, .specialAttack ; SPECIAL_MOVE uses Special; PHYSICAL_MOVE uses Attack/Defense ; physical attack ld hl, wEnemyMonDefense ld a, [hli] @@ -4150,9 +4165,10 @@ GetDamageVarsForEnemyAttack: ld d, a ; d = move power and a ret z ; return if move power is zero - ld a, [hl] ; a = [wEnemyMoveType] - cp SPECIAL ; types >= SPECIAL are all special - jr nc, .specialAttack + ld a, [wEnemyMoveNum] + call GetMoveCategory ; a = move's damage category (independent of type) + and a + jr nz, .specialAttack ; SPECIAL_MOVE uses Special; PHYSICAL_MOVE uses Attack/Defense ; physical attack ld hl, wBattleMonDefense ld a, [hli] @@ -5708,13 +5724,8 @@ CheckEnemyStatusConditions: ld hl, ExecuteEnemyMoveDone ; enemy can't move this turn jp .enemyReturnToHL .checkIfTrapped - ld a, [wPlayerBattleStatus1] - bit USING_TRAPPING_MOVE, a ; is the player using a multi-turn attack like warp - jp z, .checkIfFlinched - ld hl, CantMoveText - call PrintText - ld hl, ExecuteEnemyMoveDone ; enemy can't move this turn - jp .enemyReturnToHL +; Trapping moves like Wrap no longer hold the target in place: it can still act +; (attack or switch) to break free, instead of losing every turn. .checkIfFlinched ld hl, wEnemyBattleStatus1 bit FLINCHED, [hl] ; check if enemy mon flinched diff --git a/engine/battle/effects.asm b/engine/battle/effects.asm index 20e792d82..853ef8b64 100644 --- a/engine/battle/effects.asm +++ b/engine/battle/effects.asm @@ -103,6 +103,12 @@ PoisonEffect: cp POISON_SIDE_EFFECT2 ld b, 40 percent + 1 ; chance of poisoning jr z, .sideEffectTest + cp POISON_SIDE_EFFECT3 + ld b, 75 percent + 1 ; chance of poisoning + jr z, .sideEffectTest + cp SMOG_SIDE_EFFECT + ld b, 30 percent + 1 ; chance of poisoning + jr z, .sideEffectTest push hl push de call MoveHitTest ; apply accuracy tests @@ -169,6 +175,22 @@ BadlyPoisonedText: text_far _BadlyPoisonedText text_end +SmogSideEffect: +; Custom effect: always lowers the target's accuracy by one stage, +; then has a 30% chance to poison the target. + ldh a, [hWhoseTurn] + and a + ld hl, wPlayerMoveEffect + jr z, .gotEffectPointer + ld hl, wEnemyMoveEffect +.gotEffectPointer + ld [hl], ACCURACY_DOWN1_EFFECT ; masquerade as an accuracy-down move + push hl + call StatModifierDownEffect + pop hl + ld [hl], SMOG_SIDE_EFFECT ; restore so PoisonEffect takes the 30% branch + jp PoisonEffect + DrainHPEffect: jpfar DrainHPEffect_ @@ -1162,6 +1184,73 @@ ConfusionEffectFailed: call DelayFrames jp ConditionalPrintButItFailed +ConfusionAllSideEffect: +; Guaranteed confusion side effect: the move still deals damage, and the +; target is always confused (does nothing if it is already confused). + ldh a, [hWhoseTurn] + and a + ld hl, wEnemyBattleStatus1 + ld bc, wEnemyConfusedCounter + jr z, .confuseTarget + ld hl, wPlayerBattleStatus1 + ld bc, wPlayerConfusedCounter +.confuseTarget + bit CONFUSED, [hl] + ret nz ; already confused + set CONFUSED, [hl] + call BattleRandom + and $3 + inc a + inc a + ld [bc], a ; confusion lasts 2-5 turns + ld hl, BecameConfusedText + jp PrintText + +ParalyzeAllSideEffect: +; Guaranteed paralyze side effect: the move still deals damage, and the target +; is always paralyzed, subject to the same restrictions as the paralyze side +; effects (no substitute, target not already statused, and the target must not +; share a type with the move). + call CheckTargetSubstitute + ret nz ; can't affect a substitute + ldh a, [hWhoseTurn] + and a + jr nz, .enemyAttacking +; player is attacking the enemy + ld a, [wEnemyMonStatus] + and a + ret nz ; can't status an already-statused target + ld a, [wPlayerMoveType] + ld b, a + ld a, [wEnemyMonType1] + cp b + ret z + ld a, [wEnemyMonType2] + cp b + ret z + ld a, 1 << PAR + ld [wEnemyMonStatus], a + call QuarterSpeedDueToParalysis + ld a, ENEMY_HUD_SHAKE_ANIM + call PlayBattleAnimation + jp PrintMayNotAttackText +.enemyAttacking + ld a, [wBattleMonStatus] + and a + ret nz + ld a, [wEnemyMoveType] + ld b, a + ld a, [wBattleMonType1] + cp b + ret z + ld a, [wBattleMonType2] + cp b + ret z + ld a, 1 << PAR + ld [wBattleMonStatus], a + call QuarterSpeedDueToParalysis + jp PrintMayNotAttackText + ParalyzeEffect: jpfar ParalyzeEffect_ diff --git a/main.asm b/main.asm index 951afdc23..1542e19c8 100644 --- a/main.asm +++ b/main.asm @@ -202,6 +202,7 @@ SECTION "Battle Core", ROMX INCLUDE "engine/battle/core.asm" INCLUDE "engine/battle/effects.asm" +INCLUDE "data/moves/categories.asm" SECTION "bank10", ROMX @@ -351,6 +352,8 @@ INCLUDE "gfx/fishing.asm" INCLUDE "data/moves/animations.asm" INCLUDE "data/battle_anims/subanimations.asm" INCLUDE "data/battle_anims/frame_blocks.asm" + +SECTION "bank1E_2", ROMX INCLUDE "engine/movie/evolution.asm" INCLUDE "engine/overworld/elevator.asm" INCLUDE "engine/items/tm_prices.asm"