ref: 87514598bedf66be222d85ebbc7565c14d79e0f4
parent: d504fb88529526f988985f7faaf70609263cb4a0
author: Rangi <[email protected]>
date: Thu Jan 25 16:34:42 EST 2018
More battle data in data/battle/
--- 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%
--- /dev/null
+++ b/data/battle/badge_type_boosts.asm
@@ -1,0 +1,21 @@
+BadgeTypeBoosts:
+; entries correspond to wJohtoBadges constants
+ db FLYING ; ZEPHYRBADGE
+ db BUG ; HIVEBADGE
+ db NORMAL ; PLAINBADGE
+ db GHOST ; FOGBADGE
+ db STEEL ; MINERALBADGE
+ db FIGHTING ; STORMBADGE
+ db ICE ; GLACIERBADGE
+ db DRAGON ; RISINGBADGE
+ ; fallthrough
+; entries correspond to wKantoBadges constants
+ db ROCK ; BOULDERBADGE
+ db WATER ; CASCADEBADGE
+ db ELECTRIC ; THUNDERBADGE
+ db GRASS ; RAINBOWBADGE
+ db POISON ; SOULBADGE
+ db PSYCHIC ; MARSHBADGE
+ db FIRE ; VOLCANOBADGE
+ db GROUND ; EARTHBADGE
+ db -1 ; end
--- /dev/null
+++ b/data/battle/flail_reversal_power.asm
@@ -1,0 +1,8 @@
+FlailReversalPower:
+ ; hp bar pixels, power
+ db HP_BAR_LENGTH_PX / 48, 200
+ db HP_BAR_LENGTH_PX / 12, 150
+ db HP_BAR_LENGTH_PX / 5, 100
+ db HP_BAR_LENGTH_PX / 3, 80
+ db HP_BAR_LENGTH_PX * 2 / 3, 40
+ db HP_BAR_LENGTH_PX, 20
--- /dev/null
+++ b/data/battle/held_consumables.asm
@@ -1,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
--- /dev/null
+++ b/data/battle/held_heal_status.asm
@@ -1,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
--- /dev/null
+++ b/data/battle/held_stat_up.asm
@@ -1,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
--- /dev/null
+++ b/data/battle/magnitude_power.asm
@@ -1,0 +1,9 @@
+MagnitudePower:
+ ; chance, power, magnitude #
+ db 13, 10, 4
+ db 38, 30, 5
+ db 89, 50, 6
+ db 166, 70, 7
+ db 217, 90, 8
+ db 242, 110, 9
+ db 255, 150, 10
--- /dev/null
+++ b/data/battle/metronome_exception_moves.asm
@@ -1,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
--- /dev/null
+++ b/data/battle/present_power.asm
@@ -1,0 +1,6 @@
+PresentPower:
+ ; chance, power
+ db 40 percent, 40 ; 40%
+ db 70 percent + 1, 80 ; 30%
+ db 80 percent, 120 ; 10%
+ db -1 ; 20% chance to heal instead
--- 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%
--- /dev/null
+++ b/data/battle/stat_multipliers_2.asm
@@ -1,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%
--- /dev/null
+++ b/data/battle/weather_modifiers.asm
@@ -1,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
--- /dev/null
+++ b/data/battle/wobble_probabilities.asm
@@ -1,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
--- a/data/items/heal_status.asm
+++ b/data/items/heal_status.asm
@@ -1,3 +1,5 @@
+; See also data/battle/held_heal_status.asm
+
StatusHealingActions: ; f071
; item, party menu action text, status
db ANTIDOTE, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
--- a/engine/battle/consumehelditem.asm
+++ b/engine/battle/consumehelditem.asm
@@ -18,7 +18,7 @@
ld a, [de]
ld b, a
farcall GetItemHeldEffect
- ld hl, .ConsumableEffects
+ ld hl, ConsumableEffects
.loop
ld a, [hli]
cp b
@@ -46,7 +46,7 @@
jr z, .done
.ourturn
- ld [hl], $0
+ ld [hl], NO_ITEM
.done
pop bc
@@ -54,27 +54,4 @@
pop hl
ret
-.ConsumableEffects: ; 271de
-; Consumable items?
- 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
+INCLUDE "data/battle/held_consumables.asm"
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -1807,10 +1807,13 @@
; 3cc2d
.WeatherMessages:
+; entries correspond to WEATHER_* constants
dw BattleText_RainContinuesToFall
dw BattleText_TheSunlightIsStrong
dw BattleText_TheSandstormRages
+
.WeatherEndedMessages:
+; entries correspond to WEATHER_* constants
dw BattleText_TheRainStopped
dw BattleText_TheSunlightFaded
dw BattleText_TheSandstormSubsided
@@ -2557,9 +2560,10 @@
; 3d0ab
.SentToMomTexts: ; 3d0ab
- dw SentSomeToMomText ; MOM_SAVING_SOME_MONEY_F
- dw SentHalfToMomText ; MOM_SAVING_HALF_MONEY_F
- dw SentAllToMomText ; MOM_SAVING_ALL_MONEY_F
+; entries correspond to MOM_SAVING_* constants
+ dw SentSomeToMomText
+ dw SentHalfToMomText
+ dw SentAllToMomText
; 3d0b1
.CheckMaxedOutMomMoney: ; 3d0b1
@@ -4488,7 +4492,7 @@
UseHeldStatusHealingItem: ; 3dde9
callfar GetOpponentItem
- ld hl, .Statuses
+ ld hl, HeldStatusHealingEffects
.loop
ld a, [hli]
cp $ff
@@ -4541,15 +4545,7 @@
ret
; 3de44
-.Statuses: ; 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
+INCLUDE "data/battle/held_heal_status.asm"
UseConfusionHealingItem: ; 3de51
ld a, BATTLE_VARS_SUBSTATUS3_OPP
@@ -4624,10 +4620,10 @@
ld a, [bc]
ld b, a
callfar GetItemHeldEffect
- ld hl, .StatUpItems
+ ld hl, HeldStatUpItems
.loop
ld a, [hli]
- cp $ff
+ cp -1
jr z, .finish
inc hl
inc hl
@@ -4664,16 +4660,7 @@
ret
; 3defc
-.StatUpItems:
- 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
+INCLUDE "data/battle/held_stat_up.asm"
GetPartymonItem: ; 3df12
ld hl, PartyMon1Item
@@ -6902,7 +6889,7 @@
.okay2
pop bc
push hl
- ld hl, .StatLevelMultipliers
+ ld hl, StatLevelMultipliers_Applied
dec b
sla b
ld c, b
@@ -6951,24 +6938,7 @@
ret
; 3ed2b
-.StatLevelMultipliers:
-; /
- db 25, 100 ; 25%
- db 28, 100 ; 28%
- db 33, 100 ; 33%
- db 40, 100 ; 40%
- db 50, 100 ; 50%
- db 66, 100 ; 66%
-
- db 1, 1 ; 100%
-
- db 15, 10 ; 150%
- db 2, 1 ; 200%
- db 25, 10 ; 250%
- db 3, 1 ; 300%
- db 35, 10 ; 350%
- db 4, 1 ; 400%
-; 3ed45
+INCLUDE "data/battle/stat_multipliers_2.asm"
BadgeStatBoosts: ; 3ed45
; Raise BattleMon stats depending on which badges have been obtained.
--- a/engine/battle/effect_commands.asm
+++ b/engine/battle/effect_commands.asm
@@ -2713,7 +2713,7 @@
dec a
add hl, bc
jr nc, .rage_loop
- ld hl, -1
+ ld hl, $ffff
.done
ld a, h
ld [CurDamage], a
@@ -3766,11 +3766,11 @@
ld [hDividend + 2], a
.skip_to_divide
- ld b, $4
+ ld b, 4
call Divide
ld a, [hQuotient + 2]
ld b, a
- ld hl, .FlailPower
+ ld hl, FlailReversalPower
.reversal_loop
ld a, [hli]
@@ -3803,15 +3803,7 @@
ld [hl], 1
ret
-.FlailPower:
- ; px, bp
- db 1, 200
- db 4, 150
- db 9, 100
- db 16, 80
- db 32, 40
- db 48, 20
-; 35813
+INCLUDE "data/battle/flail_reversal_power.asm"
BattleCommand_Counter: ; 35813
@@ -8920,7 +8912,7 @@
push bc
call BattleRandom
ld b, a
- ld hl, .Magnitudes
+ ld hl, MagnitudePower
.loop
ld a, [hli]
cp b
@@ -8942,16 +8934,7 @@
pop bc
ret
-.Magnitudes:
- ; /255, BP, magnitude
- db 13, 10, 4
- db 38, 30, 5
- db 89, 50, 6
- db 166, 70, 7
- db 217, 90, 8
- db 242, 110, 9
- db 255, 150, 10
-; 379c9
+INCLUDE "data/battle/magnitude_power.asm"
BattleCommand_BatonPass: ; 379c9
--- a/engine/battle/effect_commands/metronome.asm
+++ b/engine/battle/effect_commands/metronome.asm
@@ -43,19 +43,4 @@
; 37454
-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
+INCLUDE "data/battle/metronome_exception_moves.asm"
--- a/engine/battle/effect_commands/present.asm
+++ b/engine/battle/effect_commands/present.asm
@@ -27,7 +27,7 @@
push bc
call BattleRandom
ld b, a
- ld hl, .PresentPower
+ ld hl, PresentPower
ld c, 0
.next
ld a, [hli]
@@ -49,7 +49,7 @@
.heal_effect
pop bc
- ld a, $3
+ ld a, 3
ld [wPresentPower], a
call AnimateCurrentMove
call BattleCommand_SwitchTurn
@@ -85,9 +85,4 @@
.do_animation
jp EndMoveEffect
-.PresentPower:
- db 40 percent, 40
- db 70 percent + 1, 80
- db 80 percent, 120
- db -1 ; end
-; 3790e
+INCLUDE "data/battle/present_power.asm"
--- a/engine/battle/misc.asm
+++ b/engine/battle/misc.asm
@@ -52,7 +52,7 @@
DoWeatherModifiers: ; fbda4
- ld de, .WeatherTypeModifiers
+ ld de, WeatherTypeModifiers
ld a, [Weather]
ld b, a
ld a, [wd265] ; move type
@@ -78,7 +78,7 @@
.done_weather_types
- ld de, .WeatherMoveModifiers
+ ld de, WeatherMoveModifiers
ld a, BATTLE_VARS_MOVE_EFFECT
call GetBattleVar
@@ -145,19 +145,9 @@
.done
ret
-.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
+INCLUDE "data/battle/weather_modifiers.asm"
-.WeatherMoveModifiers:
- db WEATHER_RAIN, EFFECT_SOLARBEAM, NOT_VERY_EFFECTIVE
- db -1 ; end
-; fbe24
-
DoBadgeTypeBoosts: ; fbe24
ld a, [wLinkMode]
and a
@@ -174,7 +164,7 @@
push de
push bc
- ld hl, .BadgeTypes
+ ld hl, BadgeTypeBoosts
ld a, [wKantoBadges]
ld b, a
@@ -235,25 +225,4 @@
pop de
ret
-.BadgeTypes:
-; entries correspond to wJohtoBadges constants
- db FLYING ; ZEPHYRBADGE
- db BUG ; HIVEBADGE
- db NORMAL ; PLAINBADGE
- db GHOST ; FOGBADGE
- db STEEL ; MINERALBADGE
- db FIGHTING ; STORMBADGE
- db ICE ; GLACIERBADGE
- db DRAGON ; RISINGBADGE
- ; fallthrough
-; entries correspond to wKantoBadges constants
- db ROCK ; BOULDERBADGE
- db WATER ; CASCADEBADGE
- db ELECTRIC ; THUNDERBADGE
- db GRASS ; RAINBOWBADGE
- db POISON ; SOULBADGE
- db PSYCHIC ; MARSHBADGE
- db FIRE ; VOLCANOBADGE
- db GROUND ; EARTHBADGE
- db -1 ; end
-; fbe91
+INCLUDE "data/battle/badge_type_boosts.asm"
--- a/engine/battle/read_trainer_party.asm
+++ b/engine/battle/read_trainer_party.asm
@@ -44,7 +44,7 @@
jr z, .got_trainer
.loop
ld a, [hli]
- cp $ff
+ cp -1
jr nz, .loop
jr .skip_trainer
.got_trainer
@@ -82,6 +82,7 @@
; 397e3
TrainerTypes: ; 397e3
+; entries correspond to TRAINERTYPE_* constants
dw TrainerType1 ; level, species
dw TrainerType2 ; level, species, moves
dw TrainerType3 ; level, species, item
--- a/engine/battle/used_move_text.asm
+++ b/engine/battle/used_move_text.asm
@@ -114,6 +114,7 @@
; 105e39
.endusedmovetexts ; 105e39
+; entries correspond to MoveGrammar sets
dw EndUsedMove1Text
dw EndUsedMove2Text
dw EndUsedMove3Text
--- a/engine/battle_anims/functions.asm
+++ b/engine/battle_anims/functions.asm
@@ -1749,6 +1749,7 @@
Unknown_cda01: ; cda01
db 8, 6, 5, 4, 5, 6, 8, 12, 16
; cda0a
+
BattleAnimFunction_1C: ; cda0a (33:5a0a)
ld hl, BATTLEANIMSTRUCT_XCOORD
add hl, bc
@@ -2476,6 +2477,7 @@
Unknown_cde25: ; cde25
db $ec, $f8, $00
; cde28
+
BattleAnimFunction_25: ; cde28 (33:5e28)
ld hl, BATTLEANIMSTRUCT_0F
add hl, bc
@@ -3279,6 +3281,7 @@
Unknown_ce2c8: ; ce2c8
db $ff, $ff, $00, $00
; ce2cc
+
BattleAnimFunction_33: ; ce2cc (33:62cc)
ld hl, BATTLEANIMSTRUCT_0B
add hl, bc
--- a/engine/battle_anims/getpokeballwobble.asm
+++ b/engine/battle_anims/getpokeballwobble.asm
@@ -24,7 +24,7 @@
ld c, 0 ; next
jr nz, .done
- ld hl, .WobbleProbabilities
+ ld hl, WobbleProbabilities
ld a, [Buffer1]
ld b, a
.loop
@@ -59,30 +59,4 @@
pop de
ret
-.WobbleProbabilities: ; f9ba
-; 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
+INCLUDE "data/battle/wobble_probabilities.asm"