summaryrefslogtreecommitdiff
path: root/data/battle
diff options
context:
space:
mode:
Diffstat (limited to 'data/battle')
-rw-r--r--data/battle/accuracy_multipliers.asm2
-rw-r--r--data/battle/ai/constant_damage_effects.asm11
-rw-r--r--data/battle/ai/encore_moves.asm35
-rw-r--r--data/battle/ai/rain_dance_moves.asm16
-rw-r--r--data/battle/ai/reckless_moves.asm10
-rw-r--r--data/battle/ai/residual_moves.asm17
-rw-r--r--data/battle/ai/risky_effects.asm8
-rw-r--r--data/battle/ai/stall_moves.asm38
-rw-r--r--data/battle/ai/status_only_effects.asm10
-rw-r--r--data/battle/ai/sunny_day_moves.asm13
-rw-r--r--data/battle/ai/useful_moves.asm24
-rw-r--r--data/battle/battle_text.asm1293
-rw-r--r--data/battle/held_consumables.asm26
-rw-r--r--data/battle/held_heal_status.asm11
-rw-r--r--data/battle/held_stat_up.asm10
-rw-r--r--data/battle/metronome_exception_moves.asm18
-rw-r--r--data/battle/stat_multipliers.asm5
-rw-r--r--data/battle/stat_multipliers_2.asm20
-rw-r--r--data/battle/type_boost_items.asm20
-rw-r--r--data/battle/type_matchups.asm119
-rw-r--r--data/battle/weather_modifiers.asm10
-rw-r--r--data/battle/wobble_probabilities.asm27
22 files changed, 309 insertions, 1434 deletions
diff --git a/data/battle/accuracy_multipliers.asm b/data/battle/accuracy_multipliers.asm
index a5a309bbd..4b52a0909 100644
--- a/data/battle/accuracy_multipliers.asm
+++ b/data/battle/accuracy_multipliers.asm
@@ -1,5 +1,5 @@
; Multiplier ratios for accuracy from modifier -6 to +6
-; (for other stats, see data/battle/stat_multipliers.asm)
+; (for other stats, see data/battle/stat_multipliers.asm).
AccuracyLevelMultipliers:
db 33, 100 ; -6 = 33%
diff --git a/data/battle/ai/constant_damage_effects.asm b/data/battle/ai/constant_damage_effects.asm
new file mode 100644
index 000000000..0ce67c191
--- /dev/null
+++ b/data/battle/ai/constant_damage_effects.asm
@@ -0,0 +1,11 @@
+; AIDamageCalc uses BattleCommand_ConstantDamage
+; to calculate damage for these instead of
+; BattleCommand_DamageCalc and BattleCommand_Stab.
+
+ConstantDamageEffects: ; 39413
+ db EFFECT_SUPER_FANG
+ db EFFECT_STATIC_DAMAGE
+ db EFFECT_LEVEL_DAMAGE
+ db EFFECT_PSYWAVE
+ db -1 ; end
+; 39418
diff --git a/data/battle/ai/encore_moves.asm b/data/battle/ai/encore_moves.asm
new file mode 100644
index 000000000..b18f2419d
--- /dev/null
+++ b/data/battle/ai/encore_moves.asm
@@ -0,0 +1,35 @@
+; AI_SMART encourages these moves with Encore.
+
+EncoreMoves: ; 38c85
+ db SWORDS_DANCE
+ db WHIRLWIND
+ db LEER
+ db ROAR
+ db DISABLE
+ db MIST
+ db LEECH_SEED
+ db GROWTH
+ db POISONPOWDER
+ db STRING_SHOT
+ db MEDITATE
+ db AGILITY
+ db TELEPORT
+ db SCREECH
+ db HAZE
+ db FOCUS_ENERGY
+ db DREAM_EATER
+ db POISON_GAS
+ db SPLASH
+ db SHARPEN
+ db CONVERSION
+ db SUPER_FANG
+ db SUBSTITUTE
+ db TRIPLE_KICK
+ db SPIDER_WEB
+ db MIND_READER
+ db FLAME_WHEEL
+ db AEROBLAST
+ db COTTON_SPORE
+ db POWDER_SNOW
+ db -1 ; end
+; 38ca4
diff --git a/data/battle/ai/rain_dance_moves.asm b/data/battle/ai/rain_dance_moves.asm
new file mode 100644
index 000000000..05cf68670
--- /dev/null
+++ b/data/battle/ai/rain_dance_moves.asm
@@ -0,0 +1,16 @@
+; AI_SMART prefers these moves during rain.
+
+RainDanceMoves: ; 390e7
+ db WATER_GUN
+ db HYDRO_PUMP
+ db SURF
+ db BUBBLEBEAM
+ db THUNDER
+ db WATERFALL
+ db CLAMP
+ db BUBBLE
+ db CRABHAMMER
+ db OCTAZOOKA
+ db WHIRLPOOL
+ db -1 ; end
+; 390f3
diff --git a/data/battle/ai/reckless_moves.asm b/data/battle/ai/reckless_moves.asm
new file mode 100644
index 000000000..40bc070d8
--- /dev/null
+++ b/data/battle/ai/reckless_moves.asm
@@ -0,0 +1,10 @@
+; AI_AGGRESSIVE does not discourage these moves
+; even if a stronger one is available.
+
+RecklessMoves: ; 393e2
+ db EFFECT_SELFDESTRUCT
+ db EFFECT_RAMPAGE
+ db EFFECT_MULTI_HIT
+ db EFFECT_DOUBLE_HIT
+ db -1 ; end
+; 393e7
diff --git a/data/battle/ai/residual_moves.asm b/data/battle/ai/residual_moves.asm
new file mode 100644
index 000000000..99407e238
--- /dev/null
+++ b/data/battle/ai/residual_moves.asm
@@ -0,0 +1,17 @@
+; AI_CAUTIOUS discourages these moves after the first turn.
+
+ResidualMoves:
+ db MIST
+ db LEECH_SEED
+ db POISONPOWDER
+ db STUN_SPORE
+ db THUNDER_WAVE
+ db FOCUS_ENERGY
+ db BIDE
+ db POISON_GAS
+ db TRANSFORM
+ db CONVERSION
+ db SUBSTITUTE
+ db SPIKES
+ db -1 ; end
+; 39453
diff --git a/data/battle/ai/risky_effects.asm b/data/battle/ai/risky_effects.asm
new file mode 100644
index 000000000..2ca0bc655
--- /dev/null
+++ b/data/battle/ai/risky_effects.asm
@@ -0,0 +1,8 @@
+; AI_RISKY will not use these effects at max HP
+; even if they would KO the player.
+
+RiskyEffects: ; 394ff
+ db EFFECT_SELFDESTRUCT
+ db EFFECT_OHKO
+ db -1 ; end
+; 39502
diff --git a/data/battle/ai/stall_moves.asm b/data/battle/ai/stall_moves.asm
new file mode 100644
index 000000000..5a017dadf
--- /dev/null
+++ b/data/battle/ai/stall_moves.asm
@@ -0,0 +1,38 @@
+; AI_OPPORTUNIST discourages these moves
+; when the player's HP is low.
+
+StallMoves: ; 39348
+ db SWORDS_DANCE
+ db TAIL_WHIP
+ db LEER
+ db GROWL
+ db DISABLE
+ db MIST
+ db COUNTER
+ db LEECH_SEED
+ db GROWTH
+ db STRING_SHOT
+ db MEDITATE
+ db AGILITY
+ db RAGE
+ db MIMIC
+ db SCREECH
+ db HARDEN
+ db WITHDRAW
+ db DEFENSE_CURL
+ db BARRIER
+ db LIGHT_SCREEN
+ db HAZE
+ db REFLECT
+ db FOCUS_ENERGY
+ db BIDE
+ db AMNESIA
+ db TRANSFORM
+ db SPLASH
+ db ACID_ARMOR
+ db SHARPEN
+ db CONVERSION
+ db SUBSTITUTE
+ db FLAME_WHEEL
+ db -1 ; end
+; 39369
diff --git a/data/battle/ai/status_only_effects.asm b/data/battle/ai/status_only_effects.asm
new file mode 100644
index 000000000..daeadb46c
--- /dev/null
+++ b/data/battle/ai/status_only_effects.asm
@@ -0,0 +1,10 @@
+; AI_BASIC discourages these effects if the player
+; already has a status condition.
+
+StatusOnlyEffects: ; 385db
+ db EFFECT_SLEEP
+ db EFFECT_TOXIC
+ db EFFECT_POISON
+ db EFFECT_PARALYZE
+ db -1 ; end
+; 385e0
diff --git a/data/battle/ai/sunny_day_moves.asm b/data/battle/ai/sunny_day_moves.asm
new file mode 100644
index 000000000..0ec59bc9e
--- /dev/null
+++ b/data/battle/ai/sunny_day_moves.asm
@@ -0,0 +1,13 @@
+; AI_SMART prefers these moves during harsh sunlight.
+
+SunnyDayMoves: ; 39134
+ db FIRE_PUNCH
+ db EMBER
+ db FLAMETHROWER
+ db FIRE_SPIN
+ db FIRE_BLAST
+ db SACRED_FIRE
+ db MORNING_SUN
+ db SYNTHESIS
+ db -1 ; end
+; 3913d
diff --git a/data/battle/ai/useful_moves.asm b/data/battle/ai/useful_moves.asm
new file mode 100644
index 000000000..3bab9e598
--- /dev/null
+++ b/data/battle/ai/useful_moves.asm
@@ -0,0 +1,24 @@
+; AI_SMART knows these moves are usable all-around.
+
+UsefulMoves: ; 39301
+ db DOUBLE_EDGE
+ db SING
+ db FLAMETHROWER
+ db HYDRO_PUMP
+ db SURF
+ db ICE_BEAM
+ db BLIZZARD
+ db HYPER_BEAM
+ db SLEEP_POWDER
+ db THUNDERBOLT
+ db THUNDER
+ db EARTHQUAKE
+ db TOXIC
+ db PSYCHIC_M
+ db HYPNOSIS
+ db RECOVER
+ db FIRE_BLAST
+ db SOFTBOILED
+ db SUPER_FANG
+ db -1 ; end
+; 39315
diff --git a/data/battle/battle_text.asm b/data/battle/battle_text.asm
deleted file mode 100644
index 1a609b476..000000000
--- a/data/battle/battle_text.asm
+++ /dev/null
@@ -1,1293 +0,0 @@
-BattleText::
-
-BattleText_PlayerPickedUpPayDayMoney: ; 0x80730
- text "<PLAYER> picked up"
- line "¥@"
- deciram wPayDayMoney, 3, 6
- text "!"
- prompt
-; 0x80746
-
-WildPokemonAppearedText: ; 0x80746
- text "Wild @"
- text_from_ram wEnemyMonNick
- text_start
- line "appeared!"
- prompt
-; 0x8075c
-
-HookedPokemonAttackedText: ; 0x8075c
- text "The hooked"
- line "@"
- text_from_ram wEnemyMonNick
- text_start
- cont "attacked!"
- prompt
-; 0x80778
-
-PokemonFellFromTreeText: ; 0x80778
- text_from_ram wEnemyMonNick
- text " fell"
- line "out of the tree!"
- prompt
-; 0x80793
-
-WildCelebiAppearedText: ; 0x80793
- text "Wild @"
- text_from_ram wEnemyMonNick
- text_start
- line "appeared!"
- prompt
-; 0x807a9
-
-WantsToBattleText:: ; 0x807a9
- text "<ENEMY>"
- line "wants to battle!"
- prompt
-; 0x807bd
-
-BattleText_WildFled: ; 0x807bd
- text "Wild @"
- text_from_ram wEnemyMonNick
- text_start
- line "fled!"
- prompt
-; 0x807cf
-
-BattleText_EnemyFled: ; 0x807cf
- text "Enemy @"
- text_from_ram wEnemyMonNick
- text_start
- line "fled!"
- prompt
-; 0x807e2
-
-HurtByPoisonText: ; 0x807e2
- text "<USER>"
- line "is hurt by poison!"
- prompt
-; 0x807f8
-
-HurtByBurnText: ; 0x807f8
- text "<USER>'s"
- line "hurt by its burn!"
- prompt
-; 0x8080e
-
-LeechSeedSapsText: ; 0x8080e
- text "LEECH SEED saps"
- line "<USER>!"
- prompt
-; 0x80822
-
-HasANightmareText: ; 0x80822
- text "<USER>"
- line "has a NIGHTMARE!"
- prompt
-; 0x80836
-
-HurtByCurseText: ; 0x80836
- text "<USER>'s"
- line "hurt by the CURSE!"
- prompt
-; 0x8084d
-
-SandstormHitsText: ; 0x8084d
- text "The SANDSTORM hits"
- line "<USER>!"
- prompt
-; 0x80864
-
-PerishCountText: ; 0x80864
- text "<USER>'s"
- line "PERISH count is @"
- deciram wd265, 1, 1
- text "!"
- prompt
-; 0x80880
-
-BattleText_TargetRecoveredWithItem: ; 0x80880
- text "<TARGET>"
- line "recovered with"
- cont "@"
- text_from_ram wStringBuffer1
- text "."
- prompt
-; 0x80899
-
-BattleText_UserRecoveredPPUsing: ; 0x80899
- text "<USER>"
- line "recovered PP using"
- cont "@"
- text_from_ram wStringBuffer1
- text "."
- prompt
-; 0x808b6
-
-BattleText_TargetWasHitByFutureSight: ; 0x808b6
- text "<TARGET>"
- line "was hit by FUTURE"
- cont "SIGHT!"
- prompt
-; 0x808d2
-
-BattleText_SafeguardFaded: ; 0x808d2
- text "<USER>'s"
- line "SAFEGUARD faded!"
- prompt
-; 0x808e7
-
-BattleText_PkmnLightScreenFell: ; 0x808e7
- text_from_ram wStringBuffer1
- text " #MON's"
- line "LIGHT SCREEN fell!"
- prompt
-; 0x80905
-
-BattleText_PkmnReflectFaded: ; 0x80905
- text_from_ram wStringBuffer1
- text " #MON's"
- line "REFLECT faded!"
- prompt
-; 0x8091f
-
-BattleText_RainContinuesToFall: ; 0x8091f
- text "Rain continues to"
- line "fall."
- prompt
-; 0x80938
-
-BattleText_TheSunlightIsStrong: ; 0x80938
- text "The sunlight is"
- line "strong."
- prompt
-; 0x80951
-
-BattleText_TheSandstormRages: ; 0x80951
- text "The SANDSTORM"
- line "rages."
- prompt
-; 0x80967
-
-BattleText_TheRainStopped: ; 0x80967
- text "The rain stopped."
- prompt
-; 0x8097a
-
-BattleText_TheSunlightFaded: ; 0x8097a
- text "The sunlight"
- line "faded."
- prompt
-; 0x8098f
-
-BattleText_TheSandstormSubsided: ; 0x8098f
- text "The SANDSTORM"
- line "subsided."
- prompt
-; 0x809a8
-
-BattleText_EnemyPkmnFainted: ; 0x809a8
- text "Enemy @"
- text_from_ram wEnemyMonNick
- text_start
- line "fainted!"
- prompt
-; 0x809be
-
-GotMoneyForWinningText:
- text "<PLAYER> got ¥@"
- deciram wBattleReward, 3, 6
- text_start
- line "for winning!"
- prompt
-
-BattleText_EnemyWasDefeated: ; 0x809da
- text "<ENEMY>"
- line "was defeated!"
- prompt
-; 0x809eb
-
-TiedAgainstText: ; 0x809eb
- text "Tied against"
- line "<ENEMY>!"
- prompt
-; 0x809fc
-
-SentSomeToMomText:
- text "<PLAYER> got ¥@"
- deciram wBattleReward, 3, 6
- text_start
- line "for winning!"
- cont "Sent some to MOM!"
- prompt
-
-SentHalfToMomText:
- text "Sent half to MOM!"
- prompt
-
-SentAllToMomText:
- text "Sent all to MOM!"
- prompt
-
-BattleText_0x80a4f: ; 0x80a4f
- text "<RIVAL>: Huh? I"
- line "should've chosen"
- cont "your #MON!"
- prompt
-; 0x80a75
-
-BattleText_PkmnFainted: ; 0x80a75
- text_from_ram wBattleMonNick
- text_start
- line "fainted!"
- prompt
-; 0x80a83
-
-BattleText_UseNextMon: ; 0x80a83
- text "Use next #MON?"
- done
-; 0x80a93
-
-BattleText_0x80a93: ; 0x80a93
- text "<RIVAL>: Yes!"
- line "I guess I chose a"
- cont "good #MON!"
- prompt
-; 0x80ab9
-
-LostAgainstText: ; 0x80ab9
- text "Lost against"
- line "<ENEMY>!"
- prompt
-; 0x80aca
-
-BattleText_EnemyIsAboutToUseWillPlayerChangePkmn: ; 0x80aca
- text "<ENEMY>"
- line "is about to use"
- cont "@"
- text_from_ram wEnemyMonNick
- text "."
-
- para "Will <PLAYER>"
- line "change #MON?"
- done
-; 0x80af8
-
-BattleText_EnemySentOut: ; 0x80af8
- text "<ENEMY>"
- line "sent out"
- cont "@"
- text_from_ram wEnemyMonNick
- text "!"
- done
-; 0x80b0b
-
-BattleText_TheresNoWillToBattle: ; 0x80b0b
- text "There's no will to"
- line "battle!"
- prompt
-; 0x80b26
-
-BattleText_AnEGGCantBattle: ; 0x80b26
- text "An EGG can't"
- line "battle!"
- prompt
-; 0x80b3b
-
-BattleText_CantEscape2: ; 0x80b3b
- text "Can't escape!"
- prompt
-; 0x80b49
-
-BattleText_TheresNoEscapeFromTrainerBattle: ; 0x80b49
- text "No! There's no"
- line "running from a"
- cont "trainer battle!"
- prompt
-
-BattleText_GotAwaySafely: ; 0x80b77
- text "Got away safely!"
- prompt
-
-BattleText_UserFledUsingAStringBuffer1: ; 0x80b89
- text "<USER>"
- line "fled using a"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x80ba0
-
-BattleText_CantEscape: ; 0x80ba0
- text "Can't escape!"
- prompt
-; 0x80bae
-
-BattleText_UserHurtBySpikes: ; 0x80bae
- text "<USER>'s"
- line "hurt by SPIKES!"
- prompt
-; 0x80bc2
-
-RecoveredUsingText: ; 0x80bc2
- text "<TARGET>"
- line "recovered using a"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x80bde
-
-BattleText_UsersStringBuffer1Activated: ; 0x80bde
- text "<USER>'s"
- line "@"
- text_from_ram wStringBuffer1
- text_start
- cont "activated!"
- prompt
-; 0x80bf3
-
-BattleText_ItemsCantBeUsedHere: ; 0x80bf3
- text "Items can't be"
- line "used here."
- prompt
-; 0x80c0d
-
-BattleText_PkmnIsAlreadyOut: ; 0x80c0d
- text_from_ram wBattleMonNick
- text_start
- line "is already out."
- prompt
-; 0x80c22
-
-BattleText_PkmnCantBeRecalled: ; 0x80c22
- text_from_ram wBattleMonNick
- text_start
- line "can't be recalled!"
- prompt
-; 0x80c39
-
-BattleText_TheresNoPPLeftForThisMove: ; 0x80c39
- text "There's no PP left"
- line "for this move!"
- prompt
-; 0x80c5b
-
-BattleText_TheMoveIsDisabled: ; 0x80c5b
- text "The move is"
- line "DISABLED!"
- prompt
-; 0x80c72
-
-BattleText_PkmnHasNoMovesLeft: ; 0x80c72
- text_from_ram wBattleMonNick
- text_start
- line "has no moves left!"
- done
-; 0x80c8a
-
-BattleText_TargetsEncoreEnded: ; 0x80c8a
- text "<TARGET>'s"
- line "ENCORE ended!"
- prompt
-; 0x80c9c
-
-BattleText_StringBuffer1GrewToLevel: ; 0x80c9c
- text_from_ram wStringBuffer1
- text " grew to"
- line "level @"
- deciram wCurPartyLevel, 1, 3
- text "!@"
- sound_dex_fanfare_50_79
- db "@@"
-; 0x80cb9
-
-BattleText_WildPkmnIsEating: ; 0x80cba
- text "Wild @"
- text_from_ram wEnemyMonNick
- text_start
- line "is eating!"
- prompt
-; 0x80cd1
-
-BattleText_WildPkmnIsAngry: ; 0x80cd1
- text "Wild @"
- text_from_ram wEnemyMonNick
- text_start
- line "is angry!"
- prompt
-; 0x80ce7
-
-FastAsleepText: ; 0x80ce7
- text "<USER>"
- line "is fast asleep!"
- prompt
-; 0x80cfa
-
-WokeUpText: ; 0x80cfa
- text "<USER>"
- line "woke up!"
- prompt
-; 0x80d06
-
-FrozenSolidText: ; 0x80d06
- text "<USER>"
- line "is frozen solid!"
- prompt
-; 0x80d1a
-
-FlinchedText: ; 0x80d1a
- text "<USER>"
- line "flinched!"
- prompt
-; 0x80d27
-
-MustRechargeText: ; 0x80d27
- text "<USER>"
- line "must recharge!"
- prompt
-; 0x80d39
-
-DisabledNoMoreText: ; 0x80d39
- text "<USER>'s"
- line "disabled no more!"
- prompt
-; 0x80d4f
-
-IsConfusedText: ; 0x80d4f
- text "<USER>"
- line "is confused!"
- prompt
-; 0x80d5f
-
-HurtItselfText: ; 0x80d5f
- text "It hurt itself in"
- line "its confusion!"
- prompt
-; 0x80d81
-
-ConfusedNoMoreText: ; 0x80d81
- text "<USER>'s"
- line "confused no more!"
- prompt
-; 0x80d97
-
-BecameConfusedText: ; 0x80d97
- text "<TARGET>"
- line "became confused!"
- prompt
-; ItemHealedConfusion
-
-BattleText_ItemHealedConfusion: ; ItemHealedConfusion
- text "A @"
- text_from_ram wStringBuffer1
- text " rid"
- line "<TARGET>"
- cont "of its confusion."
- prompt
-; 0x80dcc
-
-AlreadyConfusedText: ; 0x80dcc
- text "<TARGET>'s"
- line "already confused!"
- prompt
-; 0x80de2
-
-BattleText_UsersHurtByStringBuffer1: ; 0x80de2
- text "<USER>'s"
- line "hurt by"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x80df5
-
-BattleText_UserWasReleasedFromStringBuffer1: ; 0x80df5
- text "<USER>"
- line "was released from"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x80e11
-
-UsedBindText: ; 0x80e11
- text "<USER>"
- line "used BIND on"
- cont "<TARGET>!"
- prompt
-; 0x80e24
-
-WhirlpoolTrapText: ; 0x80e24
- text "<TARGET>"
- line "was trapped!"
- prompt
-; 0x80e34
-
-FireSpinTrapText: ; 0x80e34
- text "<TARGET>"
- line "was trapped!"
- prompt
-; 0x80e44
-
-WrappedByText: ; 0x80e44
- text "<TARGET>"
- line "was WRAPPED by"
- cont "<USER>!"
- prompt
-; 0x80e59
-
-ClampedByText: ; 0x80e59
- text "<TARGET>"
- line "was CLAMPED by"
- cont "<USER>!"
- prompt
-; 0x80e6e
-
-StoringEnergyText: ; 0x80e6e
- text "<USER>"
- line "is storing energy!"
- prompt
-; 0x80e84
-
-UnleashedEnergyText: ; 0x80e84
- text "<USER>"
- line "unleashed energy!"
- prompt
-; 0x80e99
-
-HungOnText: ; 0x80e99
- text "<TARGET>"
- line "hung on with"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x80eb0
-
-EnduredText: ; 0x80eb0
- text "<TARGET>"
- line "ENDURED the hit!"
- prompt
-; 0x80ec4
-
-InLoveWithText: ; 0x80ec4
- text "<USER>"
- line "is in love with"
- cont "<TARGET>!"
- prompt
-; 0x80eda
-
-InfatuationText: ; 0x80eda
- text "<USER>'s"
- line "infatuation kept"
- cont "it from attacking!"
- prompt
-; 0x80f02
-
-DisabledMoveText: ; 0x80f02
- text "<USER>'s"
- line "@"
- text_from_ram wStringBuffer1
- text " is"
- cont "DISABLED!"
- prompt
-; 0x80f19
-
-LoafingAroundText: ; 0x80f19
- text_from_ram wBattleMonNick
- text " is"
- line "loafing around."
- prompt
-; 0x80f31
-
-BeganToNapText: ; 0x80f31
- text_from_ram wBattleMonNick
- text " began"
- line "to nap!"
- prompt
-; 0x80f44
-
-WontObeyText: ; 0x80f44
- text_from_ram wBattleMonNick
- text " won't"
- line "obey!"
- prompt
-; 0x80f54
-
-TurnedAwayText: ; 0x80f54
- text_from_ram wBattleMonNick
- text " turned"
- line "away!"
- prompt
-; 0x80f66
-
-IgnoredOrdersText: ; 0x80f66
- text_from_ram wBattleMonNick
- text " ignored"
- line "orders!"
- prompt
-; 0x80f7b
-
-IgnoredSleepingText: ; 0x80f7b
- text_from_ram wBattleMonNick
- text " ignored"
- line "orders…sleeping!"
- prompt
-; 0x80f99
-
-NoPPLeftText: ; 0x80f99
- text "But no PP is left"
- line "for the move!"
- prompt
-; 0x80fba
-
-HasNoPPLeftText: ; 0x80fba
- text "<USER>"
- line "has no PP left for"
- cont "@"
- text_from_ram wStringBuffer2
- text "!"
- prompt
-; 0x80fd7
-
-WentToSleepText: ; 0x80fd7
- text "<USER>"
- line "went to sleep!"
- done
-; 0x80fe9
-
-RestedText: ; 0x80fe9
- text "<USER>"
- line "fell asleep and"
- cont "became healthy!"
- done
-; 0x8100c
-
-RegainedHealthText: ; 0x8100c
- text "<USER>"
- line "regained health!"
- prompt
-; 0x81020
-
-AttackMissedText: ; 0x81020
- text "<USER>'s"
- line "attack missed!"
- prompt
-; 0x81033
-
-AttackMissed2Text: ; 0x81033
- text "<USER>'s"
- line "attack missed!"
- prompt
-; 0x81046
-
-CrashedText: ; 0x81046
- text "<USER>"
- line "kept going and"
- cont "crashed!"
- prompt
-; 0x81061
-
-UnaffectedText: ; 0x81061
- text "<TARGET>'s"
- line "unaffected!"
- prompt
-; 0x81071
-
-DoesntAffectText: ; 0x81071
- text "It doesn't affect"
- line "<TARGET>!"
- prompt
-; 0x81086
-
-CriticalHitText: ; 0x81086
- text "A critical hit!"
- prompt
-; 0x81097
-
-OneHitKOText: ; 0x81097
- text "It's a one-hit KO!"
- prompt
-; 0x810aa
-
-SuperEffectiveText: ; 0x810aa
- text "It's super-"
- line "effective!"
- prompt
-; 0x810c1
-
-NotVeryEffectiveText: ; 0x810c1
- text "It's not very"
- line "effective…"
- prompt
-; 0x810da
-
-TookDownWithItText: ; 0x810da
- text "<TARGET>"
- line "took down with it,"
- cont "<USER>!"
- prompt
-; 0x810f3
-
-RageBuildingText: ; 0x810f3
- text "<USER>'s"
- line "RAGE is building!"
- prompt
-; 0x81109
-
-GotAnEncoreText: ; 0x81109
- text "<TARGET>"
- line "got an ENCORE!"
- prompt
-; 0x8111b
-
-SharedPainText: ; 0x8111b
- text "The battlers"
- line "shared pain!"
- prompt
-; 0x81136
-
-TookAimText: ; 0x81136
- text "<USER>"
- line "took aim!"
- prompt
-; 0x81143
-
-SketchedText: ; 0x81143
- text "<USER>"
- line "SKETCHED"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x81156
-
-DestinyBondEffectText: ; 0x81156
- text "<USER>'s"
- line "trying to take its"
- cont "opponent with it!"
- prompt
-; 0x8117f
-
-SpiteEffectText: ; 0x8117f
- text "<TARGET>'s"
- line "@"
- text_from_ram wStringBuffer1
- text " was"
- cont "reduced by @"
- deciram wd265, 1, 1
- text "!"
- prompt
-; 0x811a0
-
-BellChimedText: ; 0x811a0
- text "A bell chimed!"
- line ""
- prompt
-; 0x811b1
-
-FellAsleepText: ; 0x811b1
- text "<TARGET>"
- line "fell asleep!"
- prompt
-; 0x811c1
-
-AlreadyAsleepText: ; 0x811c1
- text "<TARGET>'s"
- line "already asleep!"
- prompt
-; 0x811d5
-
-WasPoisonedText: ; 0x811d5
- text "<TARGET>"
- line "was poisoned!"
- prompt
-; 0x811e6
-
-BadlyPoisonedText: ; 0x811e6
- text "<TARGET>'s"
- line "badly poisoned!"
- prompt
-; 0x811fa
-
-AlreadyPoisonedText: ; 0x811fa
- text "<TARGET>'s"
- line "already poisoned!"
- prompt
-; 0x81210
-
-SuckedHealthText: ; 0x81210
- text "Sucked health from"
- line "<TARGET>!"
- prompt
-; 0x81227
-
-DreamEatenText: ; 0x81227
- text "<TARGET>'s"
- line "dream was eaten!"
- prompt
-; 0x8123c
-
-WasBurnedText: ; 0x8123c
- text "<TARGET>"
- line "was burned!"
- prompt
-; 0x8124b
-
-DefrostedOpponentText: ; 0x8124b
- text "<TARGET>"
- line "was defrosted!"
- prompt
-; 0x8125d
-
-WasFrozenText: ; 0x8125d
- text "<TARGET>"
- line "was frozen solid!"
- prompt
-; 0x81272
-
-WontRiseAnymoreText: ; 0x81272
- text "<USER>'s"
- line "@"
- text_from_ram wStringBuffer2
- text " won't"
- cont "rise anymore!"
- prompt
-; 0x8128f
-
-WontDropAnymoreText: ; 0x8128f
- text "<TARGET>'s"
- line "@"
- text_from_ram wStringBuffer2
- text " won't"
- cont "drop anymore!"
- prompt
-; 0x812ac
-
-FledFromBattleText:: ; 0x812ac
- text "<USER>"
- line "fled from battle!"
- prompt
-; 0x812c1
-
-FledInFearText: ; 0x812c1
- text "<TARGET>"
- line "fled in fear!"
- prompt
-; 0x812d2
-
-BlownAwayText: ; 0x812d2
- text "<TARGET>"
- line "was blown away!"
- prompt
-; 0x812e5
-
-PlayerHitTimesText: ; 0x812e5
- text "Hit @"
- deciram wPlayerDamageTaken, 1, 1
- text " times!"
- prompt
-; 0x812f8
-
-EnemyHitTimesText: ; 0x812f8
- text "Hit @"
- deciram wEnemyDamageTaken, 1, 1
- text " times!"
- prompt
-; 0x8130b
-
-MistText: ; 0x8130b
- text "<USER>'s"
- line "shrouded in MIST!"
- prompt
-; 0x81321
-
-ProtectedByMistText: ; 0x81321
- text "<TARGET>'s"
- line "protected by MIST."
- prompt
-; 0x81338
-
-GettingPumpedText: ; 0x81338
- interpret_data
- text "<USER>'s"
- line "getting pumped!"
- prompt
-; 0x8134d
-
-RecoilText: ; 0x8134d
- text "<USER>'s"
- line "hit with recoil!"
- prompt
-; 0x81362
-
-MadeSubstituteText: ; 0x81362
- text "<USER>"
- line "made a SUBSTITUTE!"
- prompt
-; 0x81378
-
-HasSubstituteText: ; 0x81378
- text "<USER>"
- line "has a SUBSTITUTE!"
- prompt
-; 0x8138d
-
-TooWeakSubText: ; 0x8138d
- text "Too weak to make"
- line "a SUBSTITUTE!"
- prompt
-; 0x813ad
-
-SubTookDamageText: ; 0x813ad
- text "The SUBSTITUTE"
- line "took damage for"
- cont "<TARGET>!"
- prompt
-; 0x813d0
-
-SubFadedText: ; 0x813d0
- text "<TARGET>'s"
- line "SUBSTITUTE faded!"
- prompt
-; 0x813e6
-
-LearnedMoveText: ; 0x813e6
- text "<USER>"
- line "learned"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x813f8
-
-WasSeededText: ; 0x813f8
- text "<TARGET>"
- line "was seeded!"
- prompt
-; 0x81407
-
-EvadedText: ; 0x81407
- text "<TARGET>"
- line "evaded the attack!"
- prompt
-; 0x8141d
-
-WasDisabledText: ; 0x8141d
- text "<TARGET>'s"
- line "@"
- text_from_ram wStringBuffer1
- text " was"
- cont "DISABLED!"
- prompt
-; 0x81435
-
-CoinsScatteredText: ; 0x81435
- text "Coins scattered"
- line "everywhere!"
- prompt
-; 0x81452
-
-TransformedTypeText: ; 0x81452
- text "<USER>"
- line "transformed into"
- cont "the @"
- text_from_ram wStringBuffer1
- text "-type!"
- prompt
-; 0x81476
-
-EliminatedStatsText: ; 0x81476
- text "All stat changes"
- line "were eliminated!"
- prompt
-; 0x81499
-
-TransformedText: ; 0x81499
- text "<USER>"
- line "TRANSFORMED into"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x814b4
-
-LightScreenEffectText: ; 0x814b4
- text "<USER>'s"
- line "SPCL.DEF rose!"
- prompt
-; 0x814c7
-
-ReflectEffectText: ; 0x814c7
- text "<USER>'s"
- line "DEFENSE rose!"
- prompt
-; 0x814d9
-
-NothingHappenedText: ; 0x814d9
- text "But nothing"
- line "happened."
- prompt
-; 0x814f0
-
-ButItFailedText: ; 0x814f0
- text "But it failed!"
- prompt
-; 0x81500
-
-ItFailedText: ; 0x81500
- text "It failed!"
- prompt
-; 0x8150c
-
-DidntAffect1Text: ; 0x8150c
- text "It didn't affect"
- line "<TARGET>!"
- prompt
-; 0x81520
-
-DidntAffect2Text: ; 0x81520
- text "It didn't affect"
- line "<TARGET>!"
- prompt
-; 0x81534
-
-HPIsFullText: ; 0x81534
- text "<USER>'s"
- line "HP is full!"
- prompt
-; 0x81544
-
-DraggedOutText: ; 0x81544
- text "<USER>"
- line "was dragged out!"
- prompt
-; 0x81558
-
-ParalyzedText: ; 0x81558
- text "<TARGET>'s"
- line "paralyzed! Maybe"
- cont "it can't attack!"
- prompt
-; 0x8157d
-
-FullyParalyzedText: ; 0x8157d
- text "<USER>'s"
- line "fully paralyzed!"
- prompt
-; 0x81592
-
-AlreadyParalyzedText: ; 0x81592
- text "<TARGET>'s"
- line "already paralyzed!"
- prompt
-; 0x815a9
-
-ProtectedByText: ; 0x815a9
- text "<TARGET>'s"
- line "protected by"
- cont "@"
- text_from_ram wStringBuffer1
- text "!"
- prompt
-; 0x815c1
-
-MirrorMoveFailedText: ; 0x815c1
- text "The MIRROR MOVE"
- next "failed!"
- prompt
-; 0x815da
-
-StoleText: ; 0x815da
- text "<USER>"
- line "stole @"
- text_from_ram wStringBuffer1
- text_start
- cont "from its foe!"
- prompt
-; 0x815f7
-
-CantEscapeNowText: ; 0x815f7
- text "<TARGET>"
- line "can't escape now!"
- prompt
-; 0x8160b
-
-StartedNightmareText: ; 0x8160b
- text "<TARGET>"
- line "started to have a"
- cont "NIGHTMARE!"
- prompt
-; 0x8162b
-
-WasDefrostedText: ; 0x8162b
- text "<USER>"
- line "was defrosted!"
- prompt
-; 0x8163d
-
-PutACurseText: ; 0x8163d
- text "<USER>"
- line "cut its own HP and"
-
- para "put a CURSE on"
- line "<TARGET>!"
- prompt
-; 0x81665
-
-ProtectedItselfText: ; 0x81665
- text "<USER>"
- line "PROTECTED itself!"
- prompt
-; 0x8167a
-
-ProtectingItselfText: ; 0x8167a
- text "<TARGET>'s"
- line "PROTECTING itself!"
- done
-; 0x81691
-
-SpikesText: ; 0x81691
- text "SPIKES scattered"
- line "all around"
- cont "<TARGET>!"
- prompt
-; 0x816b1
-
-IdentifiedText: ; 0x816b1
- text "<USER>"
- line "identified"
- cont "<TARGET>!"
- prompt
-; 0x816c2
-
-StartPerishText: ; 0x816c2
- text "Both #MON will"
- line "faint in 3 turns!"
- prompt
-; 0x816e4
-
-SandstormBrewedText: ; 0x816e4
- text "A SANDSTORM"
- line "brewed!"
- prompt
-; 0x816f9
-
-BracedItselfText: ; 0x816f9
- text "<USER>"
- line "braced itself!"
- prompt
-; 0x8170b
-
-FellInLoveText: ; 0x8170b
- text "<TARGET>"
- line "fell in love!"
- prompt
-; 0x8171c
-
-CoveredByVeilText: ; 0x8171c
- text "<USER>'s"
- line "covered by a veil!"
- prompt
-; 0x81733
-
-SafeguardProtectText: ; 0x81733
- text "<TARGET>"
- line "is protected by"
- cont "SAFEGUARD!"
- prompt
-; 0x81751
-
-MagnitudeText: ; 0x81751
- text "Magnitude @"
- deciram wd265, 1, 1
- text "!"
- prompt
-; 0x81764
-
-ReleasedByText: ; 0x81764
- text "<USER>"
- line "was released by"
- cont "<TARGET>!"
- prompt
-; 0x8177a
-
-ShedLeechSeedText: ; 0x8177a
- text "<USER>"
- line "shed LEECH SEED!"
- prompt
-; 0x8178e
-
-BlewSpikesText: ; 0x8178e
- text "<USER>"
- line "blew away SPIKES!"
- prompt
-; 0x817a3
-
-DownpourText: ; 0x817a3
- text "A downpour"
- line "started!"
- prompt
-; 0x817b8
-
-SunGotBrightText: ; 0x817b8
- text "The sunlight got"
- line "bright!"
- prompt
-; 0x817d2
-
-BellyDrumText: ; 0x817d2
- text "<USER>"
- line "cut its HP and"
- cont "maximized ATTACK!"
- prompt
-; 0x817f6
-
-CopiedStatsText: ; 0x817f6
- text "<USER>"
- line "copied the stat"
-
- para "changes of"
- line "<TARGET>!"
- prompt
-; 0x81817
-
-ForesawAttackText: ; 0x81817
- text "<USER>"
- line "foresaw an attack!"
- prompt
-; 0x8182d
-
-BeatUpAttackText: ; 0x8182d
- text_from_ram wStringBuffer1
- text "'s"
- line "attack!"
- done
-; 0x8183b
-
-RefusedGiftText: ; 0x8183b
- text "<TARGET>"
- line "refused the gift!"
- prompt
-; 0x81850
-
-IgnoredOrders2Text: ; 0x81850
- text "<USER>"
- line "ignored orders!"
- prompt
-; 0x81863
-
-BattleText_LinkErrorBattleCanceled: ; 0x81863
- text "Link error…"
-
- para "The battle has"
- line "been canceled…"
- prompt
-; 0x8188e
-
-BattleText_0x8188e: ; 0x8188e
- text "There is no time"
- line "left today!"
- done
-; 0x818ac
diff --git a/data/battle/held_consumables.asm b/data/battle/held_consumables.asm
new file mode 100644
index 000000000..c1b28822c
--- /dev/null
+++ b/data/battle/held_consumables.asm
@@ -0,0 +1,26 @@
+; Held item effects that are consumed on use
+
+ConsumableEffects: ; 271de
+ db HELD_BERRY
+ db HELD_2
+ db HELD_5
+ db HELD_HEAL_POISON
+ db HELD_HEAL_FREEZE
+ db HELD_HEAL_BURN
+ db HELD_HEAL_SLEEP
+ db HELD_HEAL_PARALYZE
+ db HELD_HEAL_STATUS
+ db HELD_30
+ db HELD_ATTACK_UP
+ db HELD_DEFENSE_UP
+ db HELD_SPEED_UP
+ db HELD_SP_ATTACK_UP
+ db HELD_SP_DEFENSE_UP
+ db HELD_ACCURACY_UP
+ db HELD_EVASION_UP
+ db HELD_38
+ db HELD_71
+ db HELD_ESCAPE
+ db HELD_CRITICAL_UP
+ db -1
+; 271f4
diff --git a/data/battle/held_heal_status.asm b/data/battle/held_heal_status.asm
new file mode 100644
index 000000000..b56335189
--- /dev/null
+++ b/data/battle/held_heal_status.asm
@@ -0,0 +1,11 @@
+; See also data/items/heal_status.asm
+
+HeldStatusHealingEffects: ; 3de44
+ db HELD_HEAL_POISON, 1 << PSN
+ db HELD_HEAL_FREEZE, 1 << FRZ
+ db HELD_HEAL_BURN, 1 << BRN
+ db HELD_HEAL_SLEEP, SLP
+ db HELD_HEAL_PARALYZE, 1 << PAR
+ db HELD_HEAL_STATUS, ALL_STATUS
+ db -1 ; end
+; 3de51
diff --git a/data/battle/held_stat_up.asm b/data/battle/held_stat_up.asm
new file mode 100644
index 000000000..a08aa1844
--- /dev/null
+++ b/data/battle/held_stat_up.asm
@@ -0,0 +1,10 @@
+HeldStatUpItems:
+ dbw HELD_ATTACK_UP, BattleCommand_AttackUp
+ dbw HELD_DEFENSE_UP, BattleCommand_DefenseUp
+ dbw HELD_SPEED_UP, BattleCommand_SpeedUp
+ dbw HELD_SP_ATTACK_UP, BattleCommand_SpecialAttackUp
+ dbw HELD_SP_DEFENSE_UP, BattleCommand_SpecialDefenseUp
+ dbw HELD_ACCURACY_UP, BattleCommand_AccuracyUp
+ dbw HELD_EVASION_UP, BattleCommand_EvasionUp
+ db -1 ; end
+; 3df12
diff --git a/data/battle/metronome_exception_moves.asm b/data/battle/metronome_exception_moves.asm
new file mode 100644
index 000000000..e9cd7f860
--- /dev/null
+++ b/data/battle/metronome_exception_moves.asm
@@ -0,0 +1,18 @@
+; Metronome cannot turn into these moves.
+
+MetronomeExcepts: ; 37454
+ db NO_MOVE
+ db METRONOME
+ db STRUGGLE
+ db SKETCH
+ db MIMIC
+ db COUNTER
+ db MIRROR_COAT
+ db PROTECT
+ db DETECT
+ db ENDURE
+ db DESTINY_BOND
+ db SLEEP_TALK
+ db THIEF
+ db -1
+; 37462
diff --git a/data/battle/stat_multipliers.asm b/data/battle/stat_multipliers.asm
index e7cf8e472..1b9b08588 100644
--- a/data/battle/stat_multipliers.asm
+++ b/data/battle/stat_multipliers.asm
@@ -1,5 +1,8 @@
; Multiplier ratios for all stats from modifier -6 to +6
-; (except accuracy, see data/battle/accuracy_multipliers.asm)
+; (except accuracy, see data/battle/accuracy_multipliers.asm).
+
+; This table is identical to data/battle/stat_multipliers_2.asm.
+; This one is used by CalcStats.
StatLevelMultipliers:
db 25, 100 ; -6 = 25%
diff --git a/data/battle/stat_multipliers_2.asm b/data/battle/stat_multipliers_2.asm
new file mode 100644
index 000000000..3f3dc2348
--- /dev/null
+++ b/data/battle/stat_multipliers_2.asm
@@ -0,0 +1,20 @@
+; Multiplier ratios for all stats from modifier -6 to +6
+; (except accuracy, see data/battle/accuracy_multipliers.asm).
+
+; This table is identical to data/battle/stat_multipliers.asm.
+; This one is used by ApplyStatLevelMultiplier.
+
+StatLevelMultipliers_Applied:
+ db 25, 100 ; -6 = 25%
+ db 28, 100 ; -5 = 28%
+ db 33, 100 ; -4 = 33%
+ db 40, 100 ; -3 = 40%
+ db 50, 100 ; -2 = 50%
+ db 66, 100 ; -1 = 66%
+ db 1, 1 ; 0 = 100%
+ db 15, 10 ; +1 = 150%
+ db 2, 1 ; +2 = 200%
+ db 25, 10 ; +3 = 250%
+ db 3, 1 ; +4 = 300%
+ db 35, 10 ; +5 = 350%
+ db 4, 1 ; +6 = 400%
diff --git a/data/battle/type_boost_items.asm b/data/battle/type_boost_items.asm
deleted file mode 100644
index 3b7231a59..000000000
--- a/data/battle/type_boost_items.asm
+++ /dev/null
@@ -1,20 +0,0 @@
-TypeBoostItems: ; 35703
- db HELD_NORMAL_BOOST, NORMAL ; PINK_BOW/POLKADOT_BOW
- db HELD_FIGHTING_BOOST, FIGHTING ; BLACKBELT
- db HELD_FLYING_BOOST, FLYING ; SHARP_BEAK
- db HELD_POISON_BOOST, POISON ; POISON BARB
- db HELD_GROUND_BOOST, GROUND ; SOFT_SAND
- db HELD_ROCK_BOOST, ROCK ; HARD_STONE
- db HELD_BUG_BOOST, BUG ; SILVERPOWDER
- db HELD_GHOST_BOOST, GHOST ; SPELL_TAG
- db HELD_FIRE_BOOST, FIRE ; CHARCOAL
- db HELD_WATER_BOOST, WATER ; MYSTIC WATER
- db HELD_GRASS_BOOST, GRASS ; MIRACLE_SEED
- db HELD_ELECTRIC_BOOST, ELECTRIC ; MAGNET
- db HELD_PSYCHIC_BOOST, PSYCHIC ; TWISTEDSPOON
- db HELD_ICE_BOOST, ICE ; NEVERMELTICE
- db HELD_DRAGON_BOOST, DRAGON ; DRAGON_SCALE
- db HELD_DARK_BOOST, DARK ; BLACKGLASSES
- db HELD_STEEL_BOOST, STEEL ; METAL_COAT
- db -1
-; 35726
diff --git a/data/battle/type_matchups.asm b/data/battle/type_matchups.asm
deleted file mode 100644
index 90e38ae2c..000000000
--- a/data/battle/type_matchups.asm
+++ /dev/null
@@ -1,119 +0,0 @@
-TypeMatchups: ; 34bb1
- ; attacker, defender, *=
- db NORMAL, ROCK, NOT_VERY_EFFECTIVE
- db NORMAL, STEEL, NOT_VERY_EFFECTIVE
- db FIRE, FIRE, NOT_VERY_EFFECTIVE
- db FIRE, WATER, NOT_VERY_EFFECTIVE
- db FIRE, GRASS, SUPER_EFFECTIVE
- db FIRE, ICE, SUPER_EFFECTIVE
- db FIRE, BUG, SUPER_EFFECTIVE
- db FIRE, ROCK, NOT_VERY_EFFECTIVE
- db FIRE, DRAGON, NOT_VERY_EFFECTIVE
- db FIRE, STEEL, SUPER_EFFECTIVE
- db WATER, FIRE, SUPER_EFFECTIVE
- db WATER, WATER, NOT_VERY_EFFECTIVE
- db WATER, GRASS, NOT_VERY_EFFECTIVE
- db WATER, GROUND, SUPER_EFFECTIVE
- db WATER, ROCK, SUPER_EFFECTIVE
- db WATER, DRAGON, NOT_VERY_EFFECTIVE
- db ELECTRIC, WATER, SUPER_EFFECTIVE
- db ELECTRIC, ELECTRIC, NOT_VERY_EFFECTIVE
- db ELECTRIC, GRASS, NOT_VERY_EFFECTIVE
- db ELECTRIC, GROUND, NO_EFFECT
- db ELECTRIC, FLYING, SUPER_EFFECTIVE
- db ELECTRIC, DRAGON, NOT_VERY_EFFECTIVE
- db GRASS, FIRE, NOT_VERY_EFFECTIVE
- db GRASS, WATER, SUPER_EFFECTIVE
- db GRASS, GRASS, NOT_VERY_EFFECTIVE
- db GRASS, POISON, NOT_VERY_EFFECTIVE
- db GRASS, GROUND, SUPER_EFFECTIVE
- db GRASS, FLYING, NOT_VERY_EFFECTIVE
- db GRASS, BUG, NOT_VERY_EFFECTIVE
- db GRASS, ROCK, SUPER_EFFECTIVE
- db GRASS, DRAGON, NOT_VERY_EFFECTIVE
- db GRASS, STEEL, NOT_VERY_EFFECTIVE
- db ICE, WATER, NOT_VERY_EFFECTIVE
- db ICE, GRASS, SUPER_EFFECTIVE
- db ICE, ICE, NOT_VERY_EFFECTIVE
- db ICE, GROUND, SUPER_EFFECTIVE
- db ICE, FLYING, SUPER_EFFECTIVE
- db ICE, DRAGON, SUPER_EFFECTIVE
- db ICE, STEEL, NOT_VERY_EFFECTIVE
- db ICE, FIRE, NOT_VERY_EFFECTIVE
- db FIGHTING, NORMAL, SUPER_EFFECTIVE
- db FIGHTING, ICE, SUPER_EFFECTIVE
- db FIGHTING, POISON, NOT_VERY_EFFECTIVE
- db FIGHTING, FLYING, NOT_VERY_EFFECTIVE
- db FIGHTING, PSYCHIC, NOT_VERY_EFFECTIVE
- db FIGHTING, BUG, NOT_VERY_EFFECTIVE
- db FIGHTING, ROCK, SUPER_EFFECTIVE
- db FIGHTING, DARK, SUPER_EFFECTIVE
- db FIGHTING, STEEL, SUPER_EFFECTIVE
- db POISON, GRASS, SUPER_EFFECTIVE
- db POISON, POISON, NOT_VERY_EFFECTIVE
- db POISON, GROUND, NOT_VERY_EFFECTIVE
- db POISON, ROCK, NOT_VERY_EFFECTIVE
- db POISON, GHOST, NOT_VERY_EFFECTIVE
- db POISON, STEEL, NO_EFFECT
- db GROUND, FIRE, SUPER_EFFECTIVE
- db GROUND, ELECTRIC, SUPER_EFFECTIVE
- db GROUND, GRASS, NOT_VERY_EFFECTIVE
- db GROUND, POISON, SUPER_EFFECTIVE
- db GROUND, FLYING, NO_EFFECT
- db GROUND, BUG, NOT_VERY_EFFECTIVE
- db GROUND, ROCK, SUPER_EFFECTIVE
- db GROUND, STEEL, SUPER_EFFECTIVE
- db FLYING, ELECTRIC, NOT_VERY_EFFECTIVE
- db FLYING, GRASS, SUPER_EFFECTIVE
- db FLYING, FIGHTING, SUPER_EFFECTIVE
- db FLYING, BUG, SUPER_EFFECTIVE
- db FLYING, ROCK, NOT_VERY_EFFECTIVE
- db FLYING, STEEL, NOT_VERY_EFFECTIVE
- db PSYCHIC, FIGHTING, SUPER_EFFECTIVE
- db PSYCHIC, POISON, SUPER_EFFECTIVE
- db PSYCHIC, PSYCHIC, NOT_VERY_EFFECTIVE
- db PSYCHIC, DARK, NO_EFFECT
- db PSYCHIC, STEEL, NOT_VERY_EFFECTIVE
- db BUG, FIRE, NOT_VERY_EFFECTIVE
- db BUG, GRASS, SUPER_EFFECTIVE
- db BUG, FIGHTING, NOT_VERY_EFFECTIVE
- db BUG, POISON, NOT_VERY_EFFECTIVE
- db BUG, FLYING, NOT_VERY_EFFECTIVE
- db BUG, PSYCHIC, SUPER_EFFECTIVE
- db BUG, GHOST, NOT_VERY_EFFECTIVE
- db BUG, DARK, SUPER_EFFECTIVE
- db BUG, STEEL, NOT_VERY_EFFECTIVE
- db ROCK, FIRE, SUPER_EFFECTIVE
- db ROCK, ICE, SUPER_EFFECTIVE
- db ROCK, FIGHTING, NOT_VERY_EFFECTIVE
- db ROCK, GROUND, NOT_VERY_EFFECTIVE
- db ROCK, FLYING, SUPER_EFFECTIVE
- db ROCK, BUG, SUPER_EFFECTIVE
- db ROCK, STEEL, NOT_VERY_EFFECTIVE
- db GHOST, NORMAL, NO_EFFECT
- db GHOST, PSYCHIC, SUPER_EFFECTIVE
- db GHOST, DARK, NOT_VERY_EFFECTIVE
- db GHOST, STEEL, NOT_VERY_EFFECTIVE
- db GHOST, GHOST, SUPER_EFFECTIVE
- db DRAGON, DRAGON, SUPER_EFFECTIVE
- db DRAGON, STEEL, NOT_VERY_EFFECTIVE
- db DARK, FIGHTING, NOT_VERY_EFFECTIVE
- db DARK, PSYCHIC, SUPER_EFFECTIVE
- db DARK, GHOST, SUPER_EFFECTIVE
- db DARK, DARK, NOT_VERY_EFFECTIVE
- db DARK, STEEL, NOT_VERY_EFFECTIVE
- db STEEL, FIRE, NOT_VERY_EFFECTIVE
- db STEEL, WATER, NOT_VERY_EFFECTIVE
- db STEEL, ELECTRIC, NOT_VERY_EFFECTIVE
- db STEEL, ICE, SUPER_EFFECTIVE
- db STEEL, ROCK, SUPER_EFFECTIVE
- db STEEL, STEEL, NOT_VERY_EFFECTIVE
-
- db -2 ; end
-
-; Foresight removes Ghost's immunities.
- db NORMAL, GHOST, NO_EFFECT
- db FIGHTING, GHOST, NO_EFFECT
-
- db -1 ; end (with Foresight)
-; 34cfd
diff --git a/data/battle/weather_modifiers.asm b/data/battle/weather_modifiers.asm
new file mode 100644
index 000000000..d0acdc25f
--- /dev/null
+++ b/data/battle/weather_modifiers.asm
@@ -0,0 +1,10 @@
+WeatherTypeModifiers:
+ db WEATHER_RAIN, WATER, MORE_EFFECTIVE
+ db WEATHER_RAIN, FIRE, NOT_VERY_EFFECTIVE
+ db WEATHER_SUN, FIRE, MORE_EFFECTIVE
+ db WEATHER_SUN, WATER, NOT_VERY_EFFECTIVE
+ db -1 ; end
+
+WeatherMoveModifiers:
+ db WEATHER_RAIN, EFFECT_SOLARBEAM, NOT_VERY_EFFECTIVE
+ db -1 ; end
diff --git a/data/battle/wobble_probabilities.asm b/data/battle/wobble_probabilities.asm
new file mode 100644
index 000000000..38e9a12c6
--- /dev/null
+++ b/data/battle/wobble_probabilities.asm
@@ -0,0 +1,27 @@
+WobbleProbabilities:
+; catch rate, chance of wobbling / 255
+; nLeft/255 = (nRight/255) ** 4
+ db 1, 63
+ db 2, 75
+ db 3, 84
+ db 4, 90
+ db 5, 95
+ db 7, 103
+ db 10, 113
+ db 15, 126
+ db 20, 134
+ db 30, 149
+ db 40, 160
+ db 50, 169
+ db 60, 177
+ db 80, 191
+ db 100, 201
+ db 120, 211
+ db 140, 220
+ db 160, 227
+ db 180, 234
+ db 200, 240
+ db 220, 246
+ db 240, 251
+ db 254, 253
+ db 255, 255