diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2015-12-26 18:11:55 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-12-26 19:22:27 -0500 |
commit | 2bd45ca574aab251b91c24837b102c9c2a5e76a0 (patch) | |
tree | bd8c568b9e43f7467ff4822080c6228c29bca2b9 /battle/effect_commands.asm | |
parent | f485a45cda5f84e6909997147b1e6c9a9a538d9b (diff) |
Move effects; no more reloadmapmusic, returnafterbattle
Diffstat (limited to 'battle/effect_commands.asm')
-rw-r--r-- | battle/effect_commands.asm | 1028 |
1 files changed, 647 insertions, 381 deletions
diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm index a52fb46db..2a482a8ce 100644 --- a/battle/effect_commands.asm +++ b/battle/effect_commands.asm @@ -6,6 +6,7 @@ DoPlayerTurn: ; 34000 ret nz jr DoTurn + ; 3400a @@ -115,6 +116,7 @@ endr .DoMoveEffectCommand jp [hl] + ; 34084 @@ -352,6 +354,7 @@ CheckPlayerTurn: call StdBattleTextBox call CantMove jp EndTurn + ; 341f0 @@ -380,6 +383,7 @@ CantMove: ; 341f0 res SUBSTATUS_UNDERGROUND, [hl] res SUBSTATUS_FLYING, [hl] jp AppearUserRaiseSub + ; 34216 @@ -388,6 +392,7 @@ OpponentCantMove: ; 34216 call BattleCommand_SwitchTurn call CantMove jp BattleCommand_SwitchTurn + ; 3421f @@ -623,6 +628,7 @@ EndTurn: ; 34385 ld a, $1 ld [wTurnEnded], a jp ResetDamage + ; 3438d @@ -640,6 +646,7 @@ MoveDisabled: ; 3438d ld hl, DisabledMoveText jp StdBattleTextBox + ; 343a5 @@ -672,6 +679,7 @@ HitConfusion: ; 343a5 ld c, $1 call PlayerHurtItself jp BattleCommand_RaiseSub + ; 343db @@ -821,7 +829,7 @@ BattleCommand_CheckObedience: ; 343db ld hl, WontObeyText call StdBattleTextBox call HitConfusion - jp .asm_3450c + jp .EndDisobedience .Nap @@ -857,7 +865,7 @@ BattleCommand_CheckObedience: ; 343db .Print call StdBattleTextBox - jp .asm_3450c + jp .EndDisobedience .UseInstead @@ -962,7 +970,7 @@ BattleCommand_CheckObedience: ; 343db ld [CurMoveNum], a -.asm_3450c +.EndDisobedience xor a ld [LastPlayerMove], a ld [LastEnemyCounterMove], a @@ -974,6 +982,7 @@ BattleCommand_CheckObedience: ; 343db ld [PlayerEncoreCount], a jp EndMoveEffect + ; 3451f @@ -1003,6 +1012,7 @@ IgnoreSleepOnly: ; 3451f scf ret + ; 34541 @@ -1010,6 +1020,7 @@ BattleCommand_UsedMoveText: ; 34541 ; usedmovetext callba DisplayUsedMoveText ret + ; 34548 @@ -1023,6 +1034,7 @@ CheckUserIsCharging: ; 34548 .end and a ret + ; 34555 @@ -1151,6 +1163,7 @@ endr call StdBattleTextBox ld b, 1 ret + ; 34602 .continuousmoves ; 34602 @@ -1194,6 +1207,7 @@ CheckMimicUsed: ; 3460b .mimic and a ret + ; 34631 @@ -1324,6 +1338,7 @@ BattleCommand_TripleKick: ; 346b2 ld [hld], a ld [hl], a ret + ; 346cd @@ -1333,6 +1348,7 @@ BattleCommand_KickCounter: ; 346cd ld hl, wKickCounter inc [hl] ret + ; 346d2 @@ -1520,6 +1536,7 @@ endr or b ld [TypeModifier], a ret + ; 347c8 @@ -1558,6 +1575,7 @@ CheckTypeMatchup: ; 347d3 bit SUBSTATUS_IDENTIFIED, a jr nz, .End jr .TypesLoop + .Next cp d jr nz, .Nope @@ -1567,11 +1585,13 @@ CheckTypeMatchup: ; 347d3 cp c jr z, .Yup jr .Nope2 + .Nope inc hl .Nope2 inc hl jr .TypesLoop + .Yup xor a ld [hDividend + 0], a @@ -1597,6 +1617,7 @@ CheckTypeMatchup: ; 347d3 pop de pop hl ret + ; 34833 @@ -1618,6 +1639,7 @@ BattleCommand_ResetTypeMatchup: ; 34833 .reset ld [wTypeMatchup], a ret + ; 3484e INCLUDE "battle/ai/switch.asm" @@ -1679,6 +1701,7 @@ BattleCommand_DamageVariation: ; 34cfd ld a, [hQuotient + 2] ld [hl], a ret + ; 34d32 @@ -1729,16 +1752,16 @@ BattleCommand_CheckHit: ; 34d32 cp HELD_BRIGHTPOWDER ld a, c ; % miss pop bc - jr nz, .asm_34d81 + jr nz, .skip_brightpowder ld c, a ld a, b sub c ld b, a - jr nc, .asm_34d81 + jr nc, .skip_brightpowder ld b, 0 -.asm_34d81 +.skip_brightpowder ld a, b cp $ff jr z, .Hit @@ -1834,7 +1857,7 @@ BattleCommand_CheckHit: ; 34d32 .DrainSub ; Return z if using an HP drain move on a substitute. call CheckSubstituteOpp - jr z, .asm_34e00 + jr z, .not_draining_sub ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar @@ -1844,7 +1867,7 @@ BattleCommand_CheckHit: ; 34d32 cp EFFECT_DREAM_EATER ret z -.asm_34e00 +.not_draining_sub ld a, 1 and a ret @@ -1916,7 +1939,7 @@ BattleCommand_CheckHit: ; 34d32 ld a, [EnemyEvaLevel] ld c, a - jr z, .asm_34e60 + jr z, .got_acc_eva ld hl, wEnemyMoveStruct + MOVE_ACC ld a, [EnemyAccLevel] @@ -1924,17 +1947,17 @@ BattleCommand_CheckHit: ; 34d32 ld a, [PlayerEvaLevel] ld c, a -.asm_34e60 +.got_acc_eva cp b - jr c, .asm_34e6b + jr c, .eva_less_than_acc ld a, BATTLE_VARS_SUBSTATUS1_OPP call GetBattleVar bit SUBSTATUS_IDENTIFIED, a ret nz -.asm_34e6b - ld a, $e +.eva_less_than_acc + ld a, 14 sub c ld c, a xor a @@ -1943,9 +1966,9 @@ BattleCommand_CheckHit: ; 34d32 ld a, [hl] ld [hMultiplicand + 2], a push hl - ld d, $2 + ld d, 2 -.asm_34e7a +.accuracy_loop push bc ld hl, .AccProb dec b @@ -1959,29 +1982,29 @@ BattleCommand_CheckHit: ; 34d32 call Multiply ld a, [hl] ld [hDivisor], a - ld b, $4 + ld b, 4 call Divide ld a, [hQuotient + 2] ld b, a ld a, [hQuotient + 1] or b - jr nz, .asm_34ea2 + jr nz, .min_accuracy ld [hQuotient + 1], a ld a, $1 ld [hQuotient + 2], a -.asm_34ea2 +.min_accuracy ld b, c dec d - jr nz, .asm_34e7a + jr nz, .accuracy_loop ld a, [hQuotient + 1] and a ld a, [hQuotient + 2] - jr z, .asm_34eaf + jr z, .finish_accuracy ld a, $ff -.asm_34eaf +.finish_accuracy pop hl ld [hl], a ret @@ -2016,9 +2039,9 @@ BattleCommand_EffectChance: ; 34ecc ld hl, wPlayerMoveStruct + MOVE_CHANCE ld a, [hBattleTurn] and a - jr z, .asm_34ee1 + jr z, .got_move_chance ld hl, wEnemyMoveStruct + MOVE_CHANCE -.asm_34ee1 +.got_move_chance call BattleRandom cp [hl] @@ -2030,6 +2053,7 @@ BattleCommand_EffectChance: ; 34ecc ld [EffectFailed], a and a ret + ; 34eee @@ -2100,6 +2124,7 @@ BattleCommand_LowerSub: ; 34eee ld a, 0 ld [wc73e], a ret + ; 34f57 @@ -2108,6 +2133,7 @@ BattleCommand_HitTarget: ; 34f57 call BattleCommand_LowerSub call BattleCommand_HitTargetNoSub jp BattleCommand_RaiseSub + ; 34f60 @@ -2159,6 +2185,7 @@ BattleCommand_HitTargetNoSub: ; 34f60 .fly_dig ; clear sprite jp AppearUserLowerSub + .multihit .conversion .doublehit @@ -2179,6 +2206,7 @@ BattleCommand_HitTargetNoSub: ; 34f60 xor a ld [wNumHits], a jp PlayFXAnimID + ; 34fd1 @@ -2189,6 +2217,7 @@ BattleCommand_StatUpAnim: ; 34fd1 xor a jr BattleCommand_StatUpDownAnim + ; 34fdb @@ -2216,6 +2245,7 @@ BattleCommand_StatUpDownAnim: ; 34feb ld e, a ld d, 0 jp PlayFXAnimID + ; 34ffd @@ -2226,6 +2256,7 @@ BattleCommand_SwitchTurn: ; 34ffd xor 1 ld [hBattleTurn], a ret + ; 35004 @@ -2247,6 +2278,7 @@ BattleCommand_RaiseSub: ; 35004 ld [wKickCounter], a ld a, SUBSTITUTE jp LoadAnim + ; 35023 @@ -2291,6 +2323,7 @@ BattleCommand_FailureText: ; 35023 res SUBSTATUS_FLYING, [hl] call AppearUserRaiseSub jp EndMoveEffect + ; 3505e @@ -2382,6 +2415,7 @@ BattleCommand_CheckFaint: ; 3505e inc de ld [de], a ret + ; 350e4 @@ -2452,6 +2486,7 @@ FailText_CheckOpponentProtect: ; 35157 ld l, e .not_protected jp StdBattleTextBox + ; 35165 @@ -2464,6 +2499,7 @@ BattleCommanda5: ; 35165 and $7f jp z, PrintDoesntAffect jp PrintButItFailed + ; 35175 @@ -2512,6 +2548,7 @@ BattleCommand_StartLoop: ; 35197 xor a ld [hl], a ret + ; 351a5 @@ -2539,6 +2576,7 @@ BattleCommand_SuperEffectiveText: ; 351ad ld hl, NotVeryEffectiveText .print jp StdBattleTextBox + ; 351c0 @@ -2550,10 +2588,10 @@ BattleCommand_CheckDestinyBond: ; 351c0 ld hl, EnemyMonHP ld a, [hBattleTurn] and a - jr z, .asm_351cb + jr z, .got_hp ld hl, BattleMonHP -.asm_351cb +.got_hp ld a, [hli] or [hl] ret nz @@ -2561,7 +2599,7 @@ BattleCommand_CheckDestinyBond: ; 351c0 ld a, BATTLE_VARS_SUBSTATUS5_OPP call GetBattleVar bit SUBSTATUS_DESTINY_BOND, a - jr z, .asm_35231 + jr z, .no_dbond ld hl, TookDownWithItText call StdBattleTextBox @@ -2571,13 +2609,13 @@ BattleCommand_CheckDestinyBond: ; 351c0 ld hl, EnemyMonMaxHP + 1 bccoord 2, 2 ; hp bar ld a, 0 - jr nz, .asm_351f2 + jr nz, .got_max_hp ld hl, BattleMonMaxHP + 1 bccoord 10, 9 ; hp bar ld a, 1 -.asm_351f2 - ld [wd10a], a +.got_max_hp + ld [wWhichHPBar], a ld a, [hld] ld [Buffer1], a ld a, [hld] @@ -2607,27 +2645,28 @@ BattleCommand_CheckDestinyBond: ; 351c0 call LoadAnim call BattleCommand_SwitchTurn - jr .asm_3524d ; 3522f $1c + jr .finish -.asm_35231 +.no_dbond ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_MULTI_HIT - jr z, .asm_3524a + jr z, .multiple_hit_raise_sub cp EFFECT_DOUBLE_HIT - jr z, .asm_3524a + jr z, .multiple_hit_raise_sub cp EFFECT_TWINEEDLE - jr z, .asm_3524a + jr z, .multiple_hit_raise_sub cp EFFECT_TRIPLE_KICK - jr z, .asm_3524a + jr z, .multiple_hit_raise_sub cp EFFECT_BEAT_UP - jr nz, .asm_3524d + jr nz, .finish -.asm_3524a +.multiple_hit_raise_sub call BattleCommand_RaiseSub -.asm_3524d +.finish jp EndMoveEffect + ; 35250 @@ -2635,6 +2674,7 @@ BattleCommand_BuildOpponentRage: ; 35250 ; buildopponentrage jp .start + .start ld a, [AttackMissed] and a @@ -2660,6 +2700,7 @@ BattleCommand_BuildOpponentRage: ; 35250 ld hl, RageBuildingText call StdBattleTextBox jp BattleCommand_SwitchTurn + ; 3527b @@ -2675,21 +2716,22 @@ BattleCommand_RageDamage: ; 3527b ld a, [hBattleTurn] and a ld a, [wPlayerRageCounter] - jr z, .asm_35290 + jr z, .rage_loop ld a, [wEnemyRageCounter] -.asm_35290 +.rage_loop and a - jr z, .asm_3529a + jr z, .done dec a add hl, bc - jr nc, .asm_35290 + jr nc, .rage_loop ld hl, -1 -.asm_3529a +.done ld a, h ld [CurDamage], a ld a, l ld [CurDamage + 1], a ret + ; 352a3 @@ -2704,6 +2746,7 @@ rept 2 endr ld [hl], a ret + ; 352b1 @@ -2736,12 +2779,13 @@ DittoMetalPowder: ; 352b1 srl b ld a, b and a - jr nz, .asm_352d8 + jr nz, .done inc b -.asm_352d8 +.done scf rr c ret + ; 352dc @@ -2837,6 +2881,7 @@ PlayerAttackDamage: ; 352e2 ld a, 1 and a ret + ; 3534d @@ -2882,6 +2927,7 @@ TruncateHL_BC: ; 3534d .done ld b, l ret + ; 35378 @@ -2936,6 +2982,7 @@ GetDamageStats: ; 3537e pop bc pop hl ret + ; 353b5 @@ -2953,6 +3000,7 @@ ThickClubBoost: ; 353b5 pop de pop bc ret + ; 353c3 @@ -2970,6 +3018,7 @@ LightBallBoost: ; 353c3 pop de pop bc ret + ; 353d1 @@ -3012,6 +3061,7 @@ SpeciesItemBoost: ; 353d1 sla l rl h ret + ; 353f6 @@ -3092,6 +3142,7 @@ EnemyAttackDamage: ; 353f6 ld a, 1 and a ret + ; 35461 @@ -3275,12 +3326,14 @@ BattleCommand_BeatUp: ; 35461 ld a, [wEnemyMoveStruct + MOVE_POWER] ld d, a ret + ; 355b0 .beatup_fail: ; 355b0 ld b, buildopponentrage_command jp SkipToBattleCommand + ; 355b5 @@ -3290,6 +3343,7 @@ BattleCommanda8: ; 355b5 ret nz jp PrintButItFailed + ; 355bd @@ -3300,10 +3354,10 @@ GetBeatupMonLocation: ; 355bd ld a, [hBattleTurn] and a ld hl, PartyMon1Species - jr z, .asm_355cc + jr z, .got_species ld hl, OTPartyMon1Species -.asm_355cc +.got_species ld a, [wd002] add hl, bc call GetPartyLocation @@ -3318,6 +3372,7 @@ BattleCommand_ClearMissDamage: ; 355d5 ret z jp ResetDamage + ; 355dd @@ -3356,6 +3411,7 @@ endr pop af ld e, a ret + ; 35612 @@ -3592,6 +3648,7 @@ endr ld [hProduct + 3], a ret + ; 35703 @@ -3659,18 +3716,18 @@ BattleCommand_ConstantDamage: ; 35726 .psywave_loop call BattleRandom and a - jr z, .psywave_loop ; 35761 $fa + jr z, .psywave_loop cp b - jr nc, .psywave_loop ; 35764 $f7 + jr nc, .psywave_loop ld b, a ld a, $0 - jr .got_power ; 35769 $21 + jr .got_power .super_fang ld hl, EnemyMonHP ld a, [hBattleTurn] and a - jr z, .got_hp ; 35771 $3 + jr z, .got_hp ld hl, BattleMonHP .got_hp ld a, [hli] @@ -3682,12 +3739,12 @@ BattleCommand_ConstantDamage: ; 35726 ld a, b pop bc and a - jr nz, .got_power ; 35781 $9 + jr nz, .got_power or b ld a, $0 - jr nz, .got_power ; 35786 $4 + jr nz, .got_power ld b, $1 - jr .got_power ; 3578a $0 + jr .got_power .got_power ld hl, CurDamage @@ -3699,7 +3756,7 @@ BattleCommand_ConstantDamage: ; 35726 ld hl, BattleMonHP ld a, [hBattleTurn] and a - jr z, .reversal_got_hp ; 35798 $3 + jr z, .reversal_got_hp ld hl, EnemyMonHP .reversal_got_hp xor a @@ -3844,6 +3901,7 @@ BattleCommand_Counter: ; 35813 xor a ld [AttackMissed], a ret + ; 35864 @@ -3870,12 +3928,12 @@ BattleCommand_Encore: ; 35864 jp z, .failed ld b, a -.asm_3588e +.got_move ld a, [hli] cp b - jr nz, .asm_3588e + jr nz, .got_move - ld bc, $0005 + ld bc, BattleMonPP - BattleMonMoves - 1 add hl, bc ld a, [hl] and $3f @@ -3895,33 +3953,32 @@ rept 3 endr ld [de], a call CheckOpponentWentFirst - jr nz, .asm_3591a + jr nz, .finish_move ld a, [hBattleTurn] and a - jr z, .asm_358ef + jr z, .force_last_enemy_move push hl ld a, [LastPlayerMove] ld b, a ld c, 0 ld hl, BattleMonMoves -.asm_358cc +.find_player_move ld a, [hli] cp b - jr z, .asm_358dd + jr z, .got_player_move inc c ld a, c cp NUM_MOVES - jr c, .asm_358cc + jr c, .find_player_move pop hl res SUBSTATUS_ENCORED, [hl] xor a ld [de], a jr .failed -.asm_358dd +.got_player_move pop hl - ld a, c ld [CurMoveNum], a ld a, b @@ -3929,30 +3986,30 @@ endr dec a ld de, wPlayerMoveStruct call GetMoveData - jr .asm_3591a + jr .finish_move -.asm_358ef +.force_last_enemy_move push hl ld a, [LastEnemyMove] ld b, a ld c, 0 ld hl, EnemyMonMoves -.asm_358f9 +.find_enemy_move ld a, [hli] cp b - jr z, .asm_3590a + jr z, .got_enemy_move inc c ld a, c cp NUM_MOVES - jr c, .asm_358f9 + jr c, .find_enemy_move pop hl res SUBSTATUS_ENCORED, [hl] xor a ld [de], a jr .failed -.asm_3590a - pop hl +.got_enemy_move + pop hl ld a, c ld [CurEnemyMoveNum], a ld a, b @@ -3961,13 +4018,14 @@ endr ld de, wEnemyMoveStruct call GetMoveData -.asm_3591a +.finish_move call AnimateCurrentMove ld hl, GotAnEncoreText jp StdBattleTextBox .failed jp PrintDidntAffect2 + ; 35926 @@ -3976,15 +4034,15 @@ BattleCommand_PainSplit: ; 35926 ld a, [AttackMissed] and a - jp nz, PainSplit_PrintButItFailed + jp nz, .ButItFailed call CheckSubstituteOpp - jp nz, PainSplit_PrintButItFailed + jp nz, .ButItFailed call AnimateCurrentMove ld hl, BattleMonMaxHP + 1 ld de, EnemyMonMaxHP + 1 call .PlayerShareHP ld a, $1 - ld [wd10a], a + ld [wWhichHPBar], a hlcoord 10, 9 predef AnimateHPBar ld hl, EnemyMonHP @@ -3998,7 +4056,7 @@ BattleCommand_PainSplit: ; 35926 ld [Buffer1], a call .EnemyShareHP xor a - ld [wd10a], a + ld [wWhichHPBar], a call ResetDamage hlcoord 2, 2 predef AnimateHPBar @@ -4062,10 +4120,12 @@ endr ld [hli], a ld [Buffer6], a ret + ; 359cd -PainSplit_PrintButItFailed: ; 359cd +.ButItFailed jp PrintDidntAffect2 + ; 359d0 @@ -4080,6 +4140,7 @@ BattleCommand_Snore: ; 359d0 ld [AttackMissed], a call FailSnore jp EndMoveEffect + ; 359e6 @@ -4088,17 +4149,17 @@ BattleCommand_Conversion2: ; 359e6 ld a, [AttackMissed] and a - jr nz, .asm_35a50 + jr nz, .failed ld hl, BattleMonType1 ld a, [hBattleTurn] and a - jr z, .asm_359f7 + jr z, .got_type ld hl, EnemyMonType1 -.asm_359f7 +.got_type ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar and a - jr z, .asm_35a50 + jr z, .failed push hl dec a ld hl, Moves + MOVE_TYPE @@ -4106,20 +4167,20 @@ BattleCommand_Conversion2: ; 359e6 ld d, a pop hl cp CURSE_T - jr z, .asm_35a50 + jr z, .failed call AnimateCurrentMove call BattleCommand_SwitchTurn -.asm_35a13 +.loop call BattleRandom and $1f cp UNUSED_TYPES - jr c, .asm_35a24 + jr c, .okay cp UNUSED_TYPES_END - jr c, .asm_35a13 + jr c, .loop cp TYPES_END - jr nc, .asm_35a13 -.asm_35a24 + jr nc, .loop +.okay ld [hli], a ld [hld], a push hl @@ -4136,7 +4197,7 @@ BattleCommand_Conversion2: ; 359e6 pop hl ld a, [wTypeMatchup] cp 10 - jr nc, .asm_35a13 + jr nc, .loop call BattleCommand_SwitchTurn ld a, [hl] @@ -4145,8 +4206,9 @@ BattleCommand_Conversion2: ; 359e6 ld hl, TransformedTypeText jp StdBattleTextBox -.asm_35a50 +.failed jp FailConversion2 + ; 35a53 @@ -4171,6 +4233,7 @@ BattleCommand_LockOn: ; 35a53 .fail call AnimateFailedMove jp PrintDidntAffect + ; 35a74 @@ -4291,6 +4354,7 @@ BattleCommand_Sketch: ; 35a74 .fail call AnimateFailedMove jp PrintDidntAffect + ; 35b16 @@ -4319,6 +4383,7 @@ BattleCommand_DefrostOpponent: ; 35b16 pop hl ld [hl], a ret + ; 35b33 @@ -4334,11 +4399,11 @@ BattleCommand_SleepTalk: ; 35b33 ld hl, BattleMonMoves + 1 ld a, [DisabledMove] ld d, a - jr z, .asm_35b4f + jr z, .got_moves ld hl, EnemyMonMoves + 1 ld a, [EnemyDisabledMove] ld d, a -.asm_35b4f +.got_moves ld a, BATTLE_VARS_STATUS call GetBattleVar and SLP @@ -4346,10 +4411,10 @@ BattleCommand_SleepTalk: ; 35b33 ld a, [hl] and a jr z, .fail - call .asm_35ba9 + call .safely_check_has_usable_move jr c, .fail dec hl -.asm_35b62 +.sample_move push hl call BattleRandom and 3 ; TODO factor in NUM_MOVES @@ -4359,17 +4424,17 @@ BattleCommand_SleepTalk: ; 35b33 ld a, [hl] pop hl and a - jr z, .asm_35b62 + jr z, .sample_move ld e, a ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar cp e - jr z, .asm_35b62 + jr z, .sample_move ld a, e cp d - jr z, .asm_35b62 - call .asm_35bdf - jr z, .asm_35b62 + jr z, .sample_move + call .check_two_turn_move + jr z, .sample_move ld a, BATTLE_VARS_MOVE call GetBattleVarAddr ld a, e @@ -4390,57 +4455,57 @@ BattleCommand_SleepTalk: ; 35b33 call AnimateFailedMove jp TryPrintButItFailed -.asm_35ba9 +.safely_check_has_usable_move push hl push de push bc - call .asm_35bb3 + call .check_has_usable_move pop bc pop de pop hl ret -.asm_35bb3 +.check_has_usable_move ld a, [hBattleTurn] and a ld a, [DisabledMove] - jr z, .asm_35bbe + jr z, .got_move_2 ld a, [EnemyDisabledMove] -.asm_35bbe +.got_move_2 ld b, a ld a, BATTLE_VARS_MOVE call GetBattleVar ld c, a dec hl ld d, NUM_MOVES -.asm_35bc8 +.loop2 ld a, [hl] and a - jr z, .asm_35bdb + jr z, .carry cp c - jr z, .asm_35bd7 + jr z, .nope cp b - jr z, .asm_35bd7 + jr z, .nope - call .asm_35bdf - jr nz, .asm_35bdd + call .check_two_turn_move + jr nz, .no_carry -.asm_35bd7 +.nope inc hl dec d - jr nz, .asm_35bc8 + jr nz, .loop2 -.asm_35bdb +.carry scf ret -.asm_35bdd +.no_carry and a ret -.asm_35bdf +.check_two_turn_move push hl push de push bc @@ -4465,6 +4530,7 @@ BattleCommand_SleepTalk: ; 35b33 ret z cp EFFECT_BIDE ret + ; 35bff @@ -4477,6 +4543,7 @@ BattleCommand_DestinyBond: ; 35bff call AnimateCurrentMove ld hl, DestinyBondEffectText jp StdBattleTextBox + ; 35c0f @@ -4485,27 +4552,27 @@ BattleCommand_Spite: ; 35c0f ld a, [AttackMissed] and a - jp nz, .asm_35c91 + jp nz, .failed ld bc, PARTYMON_STRUCT_LENGTH ; ???? ld hl, EnemyMonMoves ld a, [hBattleTurn] and a - jr z, .asm_35c24 + jr z, .got_moves ld hl, BattleMonMoves -.asm_35c24 +.got_moves ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar and a - jr z, .asm_35c91 + jr z, .failed cp STRUGGLE - jr z, .asm_35c91 + jr z, .failed ld b, a ld c, -1 -.asm_35c33 +.loop inc c ld a, [hli] cp b - jr nz, .asm_35c33 + jr nz, .loop ld [wTypeMatchup], a dec hl ld b, 0 @@ -4515,7 +4582,7 @@ BattleCommand_Spite: ; 35c0f pop bc ld a, [hl] and $3f - jr z, .asm_35c91 + jr z, .failed push bc call GetMoveName call BattleRandom @@ -4527,9 +4594,9 @@ endr ld a, [hl] and $3f cp b - jr nc, .asm_35c5b + jr nc, .deplete_pp ld b, a -.asm_35c5b +.deplete_pp ld a, [hl] sub b ld [hl], a @@ -4544,18 +4611,18 @@ endr ld a, BATTLE_VARS_SUBSTATUS5_OPP call GetBattleVar bit SUBSTATUS_TRANSFORMED, a - jr nz, .asm_35c82 + jr nz, .transformed ld a, [hBattleTurn] and a - jr nz, .asm_35c81 + jr nz, .not_wildmon ld a, [wBattleMode] dec a - jr nz, .asm_35c81 - ld hl, wc739 + jr nz, .not_wildmon + ld hl, wWildMonPP add hl, bc -.asm_35c81 +.not_wildmon ld [hl], e -.asm_35c82 +.transformed push de call AnimateCurrentMove pop de @@ -4563,8 +4630,10 @@ endr ld [wTypeMatchup], a ld hl, SpiteEffectText jp StdBattleTextBox -.asm_35c91 + +.failed jp PrintDidntAffect2 + ; 35c94 @@ -4574,17 +4643,17 @@ BattleCommand_FalseSwipe: ; 35c94 ld hl, EnemyMonHP ld a, [hBattleTurn] and a - jr z, .asm_35c9f + jr z, .got_hp ld hl, BattleMonHP -.asm_35c9f +.got_hp ld de, CurDamage - ld c, $2 + ld c, 2 push hl push de call StringCmp pop de pop hl - jr c, .asm_35cc7 + jr c, .done ld a, [hli] ld [de], a inc de @@ -4592,23 +4661,25 @@ BattleCommand_FalseSwipe: ; 35c94 dec a ld [de], a inc a - jr nz, .asm_35cba + jr nz, .okay dec de ld a, [de] dec a ld [de], a -.asm_35cba +.okay ld a, [CriticalHit] cp $2 - jr nz, .asm_35cc5 + jr nz, .carry xor a ld [CriticalHit], a -.asm_35cc5 +.carry scf ret -.asm_35cc7 + +.done and a ret + ; 35cc9 @@ -4621,9 +4692,9 @@ BattleCommand_HealBell: ; 35cc9 ld de, PartyMon1Status ld a, [hBattleTurn] and a - jr z, .asm_35cdb + jr z, .got_status ld de, OTPartyMon1Status -.asm_35cdb +.got_status ld a, BATTLE_VARS_STATUS call GetBattleVarAddr xor a @@ -4631,12 +4702,12 @@ BattleCommand_HealBell: ; 35cc9 ld h, d ld l, e ld bc, PARTYMON_STRUCT_LENGTH - ld d, PartyEnd - PartySpecies -.asm_35ce9 + ld d, PARTY_LENGTH +.loop ld [hl], a add hl, bc dec d - jr nz, .asm_35ce9 + jr nz, .loop call AnimateCurrentMove ld hl, BellChimedText @@ -4646,6 +4717,7 @@ BattleCommand_HealBell: ; 35cc9 and a jp z, CalcPlayerStats jp CalcEnemyStats + ; 35d00 @@ -4672,6 +4744,7 @@ PlayFXAnimID: ; 35d08 callab PlayBattleAnim ret + ; 35d1c @@ -4729,10 +4802,11 @@ EnemyHurtItself: ; 35d1c ld [Buffer5], a hlcoord 2, 2 xor a - ld [wd10a], a + ld [wWhichHPBar], a predef AnimateHPBar .did_no_damage jp RefreshBattleHuds + ; 35d7e @@ -4788,10 +4862,11 @@ PlayerHurtItself: ; 35d7e ld [Buffer1], a hlcoord 10, 9 ld a, $1 - ld [wd10a], a + ld [wWhichHPBar], a predef AnimateHPBar .did_no_damage jp RefreshBattleHuds + ; 35de0 @@ -4852,6 +4927,7 @@ SelfInflictDamageToSubstitute: ; 35de0 call RefreshBattleHuds .done jp ResetDamage + ; 35e40 @@ -4871,6 +4947,7 @@ UpdateMoveData: ; 35e40 call GetMoveData call GetMoveName jp CopyName1 + ; 35e5c @@ -4944,6 +5021,7 @@ BattleCommand_SleepTarget: ; 35e5c call AnimateFailedMove pop hl jp StdBattleTextBox + ; 35ece @@ -4974,6 +5052,7 @@ BattleCommand_SleepTarget: ; 35e5c .dont_fail xor a ret + ; 35eee @@ -5011,6 +5090,7 @@ BattleCommand_PoisonTarget: ; 35eee callba UseHeldStatusHealingItem ret + ; 35f2c @@ -5101,6 +5181,7 @@ BattleCommand_Poison: ; 35f2c call AnimateFailedMove pop hl jp StdBattleTextBox + ; 35fc0 @@ -5108,6 +5189,7 @@ BattleCommand_Poison: ; 35f2c call AnimateCurrentMove call PoisonOpponent jp RefreshBattleHuds + ; 35fc9 @@ -5124,6 +5206,7 @@ BattleCommand_Poison: ; 35f2c call GetBattleVar cp EFFECT_TOXIC ret + ; 35fe1 @@ -5141,6 +5224,7 @@ CheckIfTargetIsPoisonType: ; 35fe1 ld a, [de] cp POISON ret + ; 35ff5 @@ -5149,6 +5233,7 @@ PoisonOpponent: ; 35ff5 call GetBattleVarAddr set PSN, [hl] jp UpdateOpponentInParty + ; 35fff @@ -5157,6 +5242,7 @@ BattleCommand_DrainTarget: ; 35fff call SapHealth ld hl, SuckedHealthText jp StdBattleTextBox + ; 36008 @@ -5165,6 +5251,7 @@ BattleCommand_EatDream: ; 36008 call SapHealth ld hl, DreamEatenText jp StdBattleTextBox + ; 36011 @@ -5178,7 +5265,7 @@ SapHealth: ; 36011 rr a ld [hDividend + 1], a or b - jr nz, .ok1 ; 0x36020 $4 + jr nz, .ok1 ld a, $1 ld [hDividend + 1], a .ok1 @@ -5186,7 +5273,7 @@ SapHealth: ; 36011 ld de, BattleMonMaxHP ld a, [hBattleTurn] and a - jr z, .battlemonhp ; 0x3602f $6 + jr z, .battlemonhp ld hl, EnemyMonHP ld de, EnemyMonMaxHP .battlemonhp @@ -5213,7 +5300,7 @@ SapHealth: ; 36011 adc b ld [hli], a ld [Buffer6], a - jr c, .okay2 ; 0x36056 $c + jr c, .okay2 ld a, [hld] ld b, a ld a, [de] @@ -5224,7 +5311,7 @@ SapHealth: ; 36011 ld a, [de] inc de sbc b - jr nc, .okay3 ; 0x36062 $c + jr nc, .okay3 .okay2 ld a, [de] ld [hld], a @@ -5239,14 +5326,15 @@ SapHealth: ; 36011 and a hlcoord 10, 9 ld a, $1 - jr z, .hp_bar ; 0x36078 $4 + jr z, .hp_bar hlcoord 2, 2 xor a .hp_bar - ld [wd10a], a + ld [wWhichHPBar], a predef AnimateHPBar call RefreshBattleHuds jp UpdateBattleMonInParty + ; 3608c @@ -5290,6 +5378,7 @@ BattleCommand_BurnTarget: ; 3608c callba UseHeldStatusHealingItem ret + ; 360dd @@ -5317,6 +5406,7 @@ Defrost: ; 360dd ld hl, DefrostedOpponentText jp StdBattleTextBox + ; 36102 @@ -5372,6 +5462,7 @@ BattleCommand_FreezeTarget: ; 36102 .finish ld [hl], $1 ret + ; 36165 @@ -5410,6 +5501,7 @@ BattleCommand_ParalyzeTarget: ; 36165 call PrintParalyze ld hl, UseHeldStatusHealingItem jp CallBattleCore + ; 361ac @@ -5417,58 +5509,72 @@ BattleCommand_AttackUp: ; 361ac ; attackup ld b, ATTACK jr BattleCommand_StatUp + BattleCommand_DefenseUp: ; 361b0 ; defenseup ld b, DEFENSE jr BattleCommand_StatUp + BattleCommand_SpeedUp: ; 361b4 ; speedup ld b, SPEED jr BattleCommand_StatUp + BattleCommand_SpecialAttackUp: ; 361b8 ; specialattackup ld b, SP_ATTACK jr BattleCommand_StatUp + BattleCommand_SpecialDefenseUp: ; 361bc ; specialdefenseup ld b, SP_DEFENSE jr BattleCommand_StatUp + BattleCommand_AccuracyUp: ; 361c0 ; accuracyup ld b, ACCURACY jr BattleCommand_StatUp + BattleCommand_EvasionUp: ; 361c4 ; evasionup ld b, EVASION jr BattleCommand_StatUp + BattleCommand_AttackUp2: ; 361c8 ; attackup2 ld b, $10 | ATTACK jr BattleCommand_StatUp + BattleCommand_DefenseUp2: ; 361cc ; defenseup2 ld b, $10 | DEFENSE jr BattleCommand_StatUp + BattleCommand_SpeedUp2: ; 361d0 ; speedup2 ld b, $10 | SPEED jr BattleCommand_StatUp + BattleCommand_SpecialAttackUp2: ; 361d4 ; specialattackup2 ld b, $10 | SP_ATTACK jr BattleCommand_StatUp + BattleCommand_SpecialDefenseUp2: ; 361d8 ; specialdefenseup2 ld b, $10 | SP_DEFENSE jr BattleCommand_StatUp + BattleCommand_AccuracyUp2: ; 361dc ; accuracyup2 ld b, $10 | ACCURACY jr BattleCommand_StatUp + BattleCommand_EvasionUp2: ; 361e0 ; evasionup2 ld b, $10 | EVASION jr BattleCommand_StatUp + BattleCommand_StatUp: ; 361e4 ; statup call CheckIfStatCanBeRaised @@ -5476,6 +5582,7 @@ BattleCommand_StatUp: ; 361e4 and a ret nz jp StatUpAnimation + ; 361ef @@ -5485,7 +5592,7 @@ CheckIfStatCanBeRaised: ; 361ef ld hl, PlayerStatLevels ld a, [hBattleTurn] and a - jr z, .got_stat_levels ; 0x361f9 $3 + jr z, .got_stat_levels ld hl, EnemyStatLevels .got_stat_levels ld a, [AttackMissed] @@ -5506,23 +5613,23 @@ CheckIfStatCanBeRaised: ; 361ef jp c, .cant_raise_stat ld a, [LoweredStat] and $f0 - jr z, .got_num_stages ; 0x36222 $7 + jr z, .got_num_stages inc b ld a, $d cp b - jr nc, .got_num_stages ; 0x36228 $1 + jr nc, .got_num_stages ld b, a .got_num_stages ld [hl], b push hl ld a, c cp $5 - jr nc, .done_calcing_stats ; 0x36230 $36 + jr nc, .done_calcing_stats ld hl, BattleMonStats + 1 ld de, PlayerStats ld a, [hBattleTurn] and a - jr z, .got_stats_pointer ; 0x3623b $6 + jr z, .got_stats_pointer ld hl, EnemyMonStats + 1 ld de, EnemyStats .got_stats_pointer @@ -5533,22 +5640,23 @@ CheckIfStatCanBeRaised: ; 361ef ld a, c add e ld e, a - jr nc, .no_carry ; 0x3624c $1 + jr nc, .no_carry inc d .no_carry pop bc ld a, [hld] sub 999 % $100 - jr nz, .not_already_max ; 0x36253 $6 + jr nz, .not_already_max ld a, [hl] sbc 999 / $100 jp z, .stats_already_max .not_already_max ld a, [hBattleTurn] and a - jr z, .calc_player_stats ; 0x3625e $5 + jr z, .calc_player_stats call CalcEnemyStats - jr .done_calcing_stats ; 0x36263 $3 + jr .done_calcing_stats + .calc_player_stats call CalcPlayerStats .done_calcing_stats @@ -5556,6 +5664,7 @@ CheckIfStatCanBeRaised: ; 361ef xor a ld [FailedMessage], a ret + ; 3626e @@ -5572,6 +5681,7 @@ CheckIfStatCanBeRaised: ; 361ef ld a, $1 ld [AttackMissed], a ret + ; 3627b @@ -5579,6 +5689,7 @@ CheckIfStatCanBeRaised: ; 361ef ld a, $1 ld [FailedMessage], a ret + ; 36281 @@ -5587,7 +5698,7 @@ StatUpAnimation: ; 36281 ld hl, DropPlayerSub ld a, [hBattleTurn] and a - jr z, .do_player ; 0x3628a $6 + jr z, .do_player ld bc, wEnemyMinimized ld hl, DropEnemySub .do_player @@ -5606,6 +5717,7 @@ StatUpAnimation: ; 36281 call CallBattleCore call WaitBGMap jp BattleCommand_MoveDelay + ; 362ad @@ -5613,54 +5725,67 @@ BattleCommand_AttackDown: ; 362ad ; attackdown ld a, ATTACK jr BattleCommand_StatDown + BattleCommand_DefenseDown: ; 362b1 ; defensedown ld a, DEFENSE jr BattleCommand_StatDown + BattleCommand_SpeedDown: ; 362b5 ; speeddown ld a, SPEED jr BattleCommand_StatDown + BattleCommand_SpecialAttackDown: ; 362b9 ; specialattackdown ld a, SP_ATTACK jr BattleCommand_StatDown + BattleCommand_SpecialDefenseDown: ; 362bd ; specialdefensedown ld a, SP_DEFENSE jr BattleCommand_StatDown + BattleCommand_AccuracyDown: ; 362c1 ; accuracydown ld a, ACCURACY jr BattleCommand_StatDown + BattleCommand_EvasionDown: ; 362c5 ; evasiondown ld a, EVASION jr BattleCommand_StatDown + BattleCommand_AttackDown2: ; 362c9 ; attackdown2 ld a, $10 | ATTACK jr BattleCommand_StatDown + BattleCommand_DefenseDown2: ; 362cd ; defensedown2 ld a, $10 | DEFENSE jr BattleCommand_StatDown + BattleCommand_SpeedDown2: ; 362d1 ; speeddown2 ld a, $10 | SPEED jr BattleCommand_StatDown + BattleCommand_SpecialAttackDown2: ; 362d5 ; specialattackdown2 ld a, $10 | SP_ATTACK jr BattleCommand_StatDown + BattleCommand_SpecialDefenseDown2: ; 362d9 ; specialdefensedown2 ld a, $10 | SP_DEFENSE jr BattleCommand_StatDown + BattleCommand_AccuracyDown2: ; 362dd ; accuracydown2 ld a, $10 | ACCURACY jr BattleCommand_StatDown + BattleCommand_EvasionDown2: ; 362e1 ; evasiondown2 ld a, $10 | EVASION @@ -5787,6 +5912,7 @@ BattleCommand_StatDown: ; 362e3 ld a, 1 ld [AttackMissed], a ret + ; 36391 @@ -5814,6 +5940,7 @@ CheckMist: ; 36391 call GetBattleVar bit SUBSTATUS_MIST, a ret + ; 363b8 @@ -5926,6 +6053,7 @@ TryLowerStat: ; 3641a ld a, 1 and a ret + ; 3644c @@ -5946,6 +6074,7 @@ BattleCommand_StatUpFailText: ; 3644c call GetStatName ld hl, WontRiseAnymoreText jp StdBattleTextBox + ; 3646a @@ -5969,6 +6098,7 @@ BattleCommand_StatDownFailText: ; 3646a call GetStatName ld hl, WontDropAnymoreText jp StdBattleTextBox + ; 3648f @@ -5983,6 +6113,7 @@ GetStatName: ; 3648f cp c jr z, .CheckName jr .GetName + .Copy ld de, StringBuffer2 ld bc, StringBuffer3 - StringBuffer2 @@ -6051,6 +6182,7 @@ ResetMiss: ; 3652d xor a ld [AttackMissed], a ret + ; 36532 @@ -6124,6 +6256,7 @@ LowerStat: ; 36532 ld a, 2 ld [FailedMessage], a ret + ; 3658f @@ -6143,6 +6276,7 @@ BattleCommand_TriStatusChance: ; 3658f ld hl, .ptrs rst JumpTable ret + .ptrs dw BattleCommand_ParalyzeTarget ; paralyze dw BattleCommand_FreezeTarget ; freeze @@ -6156,6 +6290,7 @@ BattleCommand_Curl: ; 365a7 call GetBattleVarAddr set SUBSTATUS_CURLED, [hl] ret + ; 365af @@ -6163,13 +6298,14 @@ BattleCommand_RaiseSubNoAnim: ; 365af ld hl, GetMonBackpic ld a, [hBattleTurn] and a - jr z, .PlayerTurn ; 365b5 $3 + jr z, .PlayerTurn ld hl, GetMonFrontpic .PlayerTurn xor a ld [hBGMapMode], a call CallBattleCore jp WaitBGMap + ; 365c3 @@ -6177,13 +6313,14 @@ BattleCommand_LowerSubNoAnim: ; 365c3 ld hl, DropPlayerSub ld a, [hBattleTurn] and a - jr z, .PlayerTurn ; 365c9 $3 + jr z, .PlayerTurn ld hl, DropEnemySub .PlayerTurn xor a ld [hBGMapMode], a call CallBattleCore jp WaitBGMap + ; 365d7 @@ -6207,6 +6344,7 @@ CalcPlayerStats: ; 365d7 call CallBattleCore jp BattleCommand_SwitchTurn + ; 365fd @@ -6227,6 +6365,7 @@ CalcEnemyStats: ; 365fd call CallBattleCore jp BattleCommand_SwitchTurn + ; 3661d @@ -6299,6 +6438,7 @@ endr jr nz, .loop ret + ; 36671 @@ -6372,6 +6512,7 @@ BattleCommand_StoreEnergy: ; 36671 ld hl, StoringEnergyText call StdBattleTextBox jp EndMoveEffect + ; 366e5 @@ -6382,10 +6523,10 @@ BattleCommand_UnleashEnergy: ; 366e5 ld bc, PlayerRolloutCount ld a, [hBattleTurn] and a - jr z, .asm_366f6 + jr z, .got_damage ld de, EnemyDamageTaken ld bc, EnemyRolloutCount -.asm_366f6 +.got_damage ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVarAddr set SUBSTATUS_BIDE, [hl] @@ -6405,6 +6546,7 @@ endr ld [wKickCounter], a call AnimateCurrentMove jp EndMoveEffect + ; 3671a @@ -6414,7 +6556,7 @@ BattleCommand_CheckRampage: ; 3671a ld de, PlayerRolloutCount ld a, [hBattleTurn] and a - jr z, .player ; 36720 $3 + jr z, .player ld de, EnemyRolloutCount .player ld a, BATTLE_VARS_SUBSTATUS3 @@ -6424,7 +6566,7 @@ BattleCommand_CheckRampage: ; 3671a ld a, [de] dec a ld [de], a - jr nz, .continue_rampage ; 36730 $1a + jr nz, .continue_rampage res SUBSTATUS_RAMPAGE, [hl] call BattleCommand_SwitchTurn @@ -6432,7 +6574,7 @@ BattleCommand_CheckRampage: ; 3671a push af call BattleCommand_SwitchTurn pop af - jr nz, .continue_rampage ; 3673f $b + jr nz, .continue_rampage set SUBSTATUS_CONFUSED, [hl] call BattleRandom @@ -6445,6 +6587,7 @@ endr .continue_rampage ld b, rampage_command jp SkipToBattleCommand + ; 36751 @@ -6474,6 +6617,7 @@ BattleCommand_Rampage: ; 36751 ld a, 1 ld [wc73e], a ret + ; 36778 @@ -6515,12 +6659,12 @@ BattleCommand_Teleport: ; 36778 .loop_player call BattleRandom cp c - jr nc, .loop_player ; 367b0 $fa + jr nc, .loop_player ; If that number is greater than 4 times your level, run away. srl b srl b cp b - jr nc, .run_away ; 367b7 $26 + jr nc, .run_away .failed call AnimateFailedMove @@ -6534,18 +6678,18 @@ BattleCommand_Teleport: ; 36778 ld b, a ld a, [CurPartyLevel] cp b - jr nc, .run_away ; 367cd $10 + jr nc, .run_away add b ld c, a inc c .loop_enemy call BattleRandom cp c - jr nc, .loop_enemy ; 367d6 $fa + jr nc, .loop_enemy srl b srl b cp b - jr nc, .run_away ; 367dd $0 + jr nc, .run_away .run_away call UpdateBattleMonInParty xor a @@ -6562,6 +6706,7 @@ BattleCommand_Teleport: ; 36778 ld hl, FledFromBattleText jp StdBattleTextBox + ; 36804 @@ -6571,6 +6716,7 @@ SetBattleDraw: ; 36804 or $2 ld [wBattleResult], a ret + ; 3680f @@ -6591,26 +6737,26 @@ BattleCommand_ForceSwitch: ; 3680f jp nz, .force_player_switch ld a, [AttackMissed] and a - jr nz, .missed ; 36830 $20 + jr nz, .missed ld a, [wBattleMode] dec a - jr nz, .trainer ; 36836 $31 + jr nz, .trainer ld a, [CurPartyLevel] ld b, a ld a, [BattleMonLevel] cp b - jr nc, .wild_force_flee ; 36840 $13 + jr nc, .wild_force_flee add b ld c, a inc c .random_loop_wild call BattleRandom cp c - jr nc, .random_loop_wild ; 36849 $fa + jr nc, .random_loop_wild srl b srl b cp b - jr nc, .wild_force_flee ; 36850 $3 + jr nc, .wild_force_flee .missed jp .fail @@ -6626,10 +6772,10 @@ BattleCommand_ForceSwitch: ; 3680f .trainer call FindAliveEnemyMons - jr c, .switch_fail ; 3686c $5c + jr c, .switch_fail ld a, [wEnemyGoesFirst] and a - jr z, .switch_fail ; 36872 $56 + jr z, .switch_fail call UpdateEnemyMonInParty ld a, $1 ld [wKickCounter], a @@ -6650,9 +6796,9 @@ BattleCommand_ForceSwitch: ; 3680f call BattleRandom and $7 cp b - jr nc, .random_loop_trainer ; 368a0 $f8 + jr nc, .random_loop_trainer cp c - jr z, .random_loop_trainer ; 368a3 $f5 + jr z, .random_loop_trainer push af push bc ld hl, OTPartyMon1HP @@ -6661,7 +6807,7 @@ BattleCommand_ForceSwitch: ; 3680f or [hl] pop bc pop de - jr z, .random_loop_trainer ; 368b1 $e7 + jr z, .random_loop_trainer ld a, d inc a ld [wEnemySwitchMonIndex], a @@ -6792,6 +6938,7 @@ BattleCommand_ForceSwitch: ; 3680f ld hl, BlownAwayText .do_text jp StdBattleTextBox + ; 36994 @@ -6823,6 +6970,7 @@ CheckPlayerHasMonToSwitchTo: ; 36994 .not_fainted and a ret + ; 369b6 @@ -6835,87 +6983,91 @@ BattleCommand_EndLoop: ; 369b6 ld bc, PlayerDamageTaken ld a, [hBattleTurn] and a - jr z, .asm_369c7 + jr z, .got_addrs ld de, EnemyRolloutCount ld bc, EnemyDamageTaken -.asm_369c7 +.got_addrs ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVarAddr bit SUBSTATUS_IN_LOOP, [hl] - jp nz, .asm_36a43 + jp nz, .in_loop set SUBSTATUS_IN_LOOP, [hl] ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVarAddr ld a, [hl] cp EFFECT_TWINEEDLE - jr z, .asm_36a3f + jr z, .twineedle cp EFFECT_DOUBLE_HIT - ld a, $1 - jr z, .asm_36a3a + ld a, 1 + jr z, .double_hit ld a, [hl] cp EFFECT_BEAT_UP - jr z, .asm_369fb + jr z, .beat_up cp EFFECT_TRIPLE_KICK - jr nz, .asm_36a2b -.asm_369ec + jr nz, .not_triple_kick +.reject_triple_kick_sample call BattleRandom and $3 - jr z, .asm_369ec + jr z, .reject_triple_kick_sample dec a - jr nz, .asm_36a3a - ld a, $1 + jr nz, .double_hit + ld a, 1 ld [bc], a - jr .asm_36a48 -.asm_369fb + jr .done_loop + +.beat_up ld a, [hBattleTurn] and a - jr nz, .asm_36a0b + jr nz, .check_ot_beat_up ld a, [PartyCount] - cp $1 - jp z, .asm_36a1e + cp 1 + jp z, .only_one_beatup dec a - jr .asm_36a3a -.asm_36a0b + jr .double_hit + +.check_ot_beat_up ld a, [wBattleMode] - cp $1 - jp z, .asm_36a1e + cp WILD_BATTLE + jp z, .only_one_beatup ld a, [OTPartyCount] - cp $1 - jp z, .asm_36a1e + cp 1 + jp z, .only_one_beatup dec a - jr .asm_36a3a + jr .double_hit -.asm_36a1e +.only_one_beatup ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVarAddr res SUBSTATUS_IN_LOOP, [hl] call BattleCommanda8 jp EndMoveEffect -.asm_36a2b + +.not_triple_kick call BattleRandom and $3 - cp $2 - jr c, .asm_36a39 + cp 2 + jr c, .got_number_hits call BattleRandom and $3 -.asm_36a39 +.got_number_hits inc a -.asm_36a3a +.double_hit ld [de], a inc a ld [bc], a - jr .asm_36a6b -.asm_36a3f - ld a, $1 - jr .asm_36a3a + jr .loop_back_to_critical + +.twineedle + ld a, 1 + jr .double_hit -.asm_36a43 +.in_loop ld a, [de] dec a ld [de], a - jr nz, .asm_36a6b -.asm_36a48 + jr nz, .loop_back_to_critical +.done_loop ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVarAddr res SUBSTATUS_IN_LOOP, [hl] @@ -6923,17 +7075,17 @@ BattleCommand_EndLoop: ; 369b6 ld hl, PlayerHitTimesText ld a, [hBattleTurn] and a - jr z, .asm_36a5a + jr z, .got_hit_n_times_text ld hl, EnemyHitTimesText -.asm_36a5a +.got_hit_n_times_text push bc ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_BEAT_UP - jr z, .asm_36a67 + jr z, .beat_up_2 call StdBattleTextBox -.asm_36a67 +.beat_up_2 pop bc xor a @@ -6941,21 +7093,22 @@ BattleCommand_EndLoop: ; 369b6 ret ; Loop back to the command before 'critical'. -.asm_36a6b +.loop_back_to_critical ld a, [BattleScriptBufferLoc + 1] ld h, a ld a, [BattleScriptBufferLoc] ld l, a -.asm_36a73 +.not_critical ld a, [hld] - cp $5 ; critical - jr nz, .asm_36a73 + cp critical_command + jr nz, .not_critical inc hl ld a, h ld [BattleScriptBufferLoc + 1], a ld a, l ld [BattleScriptBufferLoc], a ret + ; 36a82 @@ -6979,6 +7132,7 @@ BattleCommand_FakeOut: ; 36a82 ld a, 1 ld [AttackMissed], a ret + ; 36aa0 @@ -7007,6 +7161,7 @@ FlinchTarget: ; 36ab5 call GetBattleVarAddr set SUBSTATUS_FLINCHED, [hl] jp EndRechargeOpp + ; 36abf @@ -7020,6 +7175,7 @@ CheckOpponentWentFirst: ; 36abf xor b ; 1 if opponent went first pop bc ret + ; 36ac9 @@ -7050,6 +7206,7 @@ BattleCommand_KingsRock: ; 36ac9 call GetBattleVarAddr set SUBSTATUS_FLINCHED, [hl] ret + ; 36af3 @@ -7059,29 +7216,29 @@ BattleCommand_OHKO: ; 36af3 call ResetDamage ld a, [TypeModifier] and $7f - jr z, .asm_36b2f + jr z, .no_effect ld hl, EnemyMonLevel ld de, BattleMonLevel ld bc, wPlayerMoveStruct + MOVE_ACC ld a, [hBattleTurn] and a - jr z, .asm_36b12 + jr z, .got_move_accuracy push hl ld h, d ld l, e pop de ld bc, wEnemyMoveStruct + MOVE_ACC -.asm_36b12 +.got_move_accuracy ld a, [de] sub [hl] - jr c, .asm_36b2f + jr c, .no_effect add a ld e, a ld a, [bc] add e - jr nc, .asm_36b1e + jr nc, .finish_ohko ld a, $ff -.asm_36b1e +.finish_ohko ld [bc], a call BattleCommand_CheckHit ld hl, CurDamage @@ -7091,12 +7248,14 @@ BattleCommand_OHKO: ; 36af3 ld a, $2 ld [CriticalHit], a ret -.asm_36b2f + +.no_effect ld a, $ff ld [CriticalHit], a ld a, $1 ld [AttackMissed], a ret + ; 36b3a @@ -7112,6 +7271,7 @@ BattleCommand_CheckCharge: ; 36b3a res SUBSTATUS_FLYING, [hl] ld b, charge_command jp SkipToBattleCommand + ; 36b4d @@ -7153,6 +7313,7 @@ BattleCommand_Charge: ; 36b4d jr z, .flying call BattleCommand_RaiseSub jr .not_flying + .flying call DisappearUser .not_flying @@ -7261,6 +7422,7 @@ BattleCommand_Charge: ; 36b4d BattleCommand3c: ; 36c2c ; unused ret + ; 36c2d @@ -7274,11 +7436,11 @@ BattleCommand_TrapTarget: ; 36c2d ld de, wEnemyTrappingMove ld a, [hBattleTurn] and a - jr z, .asm_36c43 + jr z, .got_trap ld hl, wPlayerWrapCount ld de, wPlayerTrappingMove -.asm_36c43 +.got_trap ld a, [hl] and a ret nz @@ -7298,16 +7460,16 @@ endr ld b, a ld hl, .Traps -.asm_36c61 +.find_trap_text ld a, [hli] cp b - jr z, .asm_36c69 + jr z, .found_trap_text rept 2 inc hl endr - jr .asm_36c61 + jr .find_trap_text -.asm_36c69 +.found_trap_text ld a, [hli] ld h, [hl] ld l, a @@ -7328,14 +7490,16 @@ BattleCommand_Mist: ; 36c7e ld a, BATTLE_VARS_SUBSTATUS4 call GetBattleVarAddr bit SUBSTATUS_MIST, [hl] - jr nz, .asm_36c92 + jr nz, .already_mist set SUBSTATUS_MIST, [hl] call AnimateCurrentMove ld hl, MistText jp StdBattleTextBox -.asm_36c92 + +.already_mist call AnimateFailedMove jp PrintButItFailed + ; 36c98 @@ -7345,14 +7509,16 @@ BattleCommand_FocusEnergy: ; 36c98 ld a, BATTLE_VARS_SUBSTATUS4 call GetBattleVarAddr bit SUBSTATUS_FOCUS_ENERGY, [hl] - jr nz, .asm_36cac + jr nz, .already_pumped set SUBSTATUS_FOCUS_ENERGY, [hl] call AnimateCurrentMove ld hl, GettingPumpedText jp StdBattleTextBox -.asm_36cac + +.already_pumped call AnimateFailedMove jp PrintButItFailed + ; 36cb2 @@ -7362,12 +7528,13 @@ BattleCommand_Recoil: ; 36cb2 ld hl, BattleMonMaxHP ld a, [hBattleTurn] and a - jr z, .asm_36cbd + jr z, .got_hp ld hl, EnemyMonMaxHP -.asm_36cbd +.got_hp ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar ld d, a +; get 1/4 damage or 1 HP, whichever is higher ld a, [CurDamage] ld b, a ld a, [CurDamage + 1] @@ -7378,9 +7545,9 @@ BattleCommand_Recoil: ; 36cb2 rr c ld a, b or c - jr nz, .asm_36cd8 + jr nz, .min_damage inc c -.asm_36cd8 +.min_damage ld a, [hli] ld [Buffer2], a ld a, [hl] @@ -7398,27 +7565,28 @@ endr sbc b ld [hl], a ld [Buffer6], a - jr nc, .asm_36cfe + jr nc, .dont_ko xor a ld [hli], a ld [hl], a ld hl, Buffer5 ld [hli], a ld [hl], a -.asm_36cfe +.dont_ko hlcoord 10, 9 ld a, [hBattleTurn] and a - ld a, $1 - jr z, .asm_36d0c + ld a, 1 + jr z, .animate_hp_bar hlcoord 2, 2 xor a -.asm_36d0c - ld [wd10a], a +.animate_hp_bar + ld [wWhichHPBar], a predef AnimateHPBar call RefreshBattleHuds ld hl, RecoilText jp StdBattleTextBox + ; 36d1d @@ -7440,7 +7608,7 @@ BattleCommand_ConfuseTarget: ; 36d1d call GetBattleVarAddr bit SUBSTATUS_CONFUSED, [hl] ret nz - jr Function36d70 + jr BattleCommand_FinishConfusingTarget BattleCommand_Confuse: ; 36d3b @@ -7449,7 +7617,7 @@ BattleCommand_Confuse: ; 36d3b call GetOpponentItem ld a, b cp HELD_PREVENT_CONFUSE - jr nz, .asm_36d53 + jr nz, .no_item_protection ld a, [hl] ld [wNamedObjectIndexBuffer], a call GetItemName @@ -7457,34 +7625,29 @@ BattleCommand_Confuse: ; 36d3b ld hl, ProtectedByText jp StdBattleTextBox -.asm_36d53 +.no_item_protection ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVarAddr bit SUBSTATUS_CONFUSED, [hl] - jr z, .asm_36d65 + jr z, .not_already_confused call AnimateFailedMove ld hl, AlreadyConfusedText jp StdBattleTextBox -.asm_36d65 +.not_already_confused call CheckSubstituteOpp - jr nz, Function36db6 + jr nz, BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit ld a, [AttackMissed] and a - jr nz, Function36db6 - - ; fallthrough -; 36d70 - - -Function36d70: ; 36d70 + jr nz, BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit +BattleCommand_FinishConfusingTarget: ; 36d70 ld bc, EnemyConfuseCount ld a, [hBattleTurn] and a - jr z, .asm_36d7b + jr z, .got_confuse_count ld bc, PlayerConfuseCount -.asm_36d7b +.got_confuse_count set SUBSTATUS_CONFUSED, [hl] call BattleRandom and 3 @@ -7519,9 +7682,10 @@ endr .heal_confusion ld hl, UseConfusionHealingItem jp CallBattleCore + ; 36db6 -Function36db6: ; 36db6 +BattleCommand_Confuse_CheckSnore_Swagger_ConfuseHit: ; 36db6 ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_CONFUSE_HIT @@ -7531,6 +7695,7 @@ Function36db6: ; 36db6 cp EFFECT_SWAGGER ret z jp PrintDidntAffect2 + ; 36dc7 @@ -7540,14 +7705,14 @@ BattleCommand_Paralyze: ; 36dc7 ld a, BATTLE_VARS_STATUS_OPP call GetBattleVar bit PAR, a - jr nz, .asm_36e49 + jr nz, .paralyzed ld a, [TypeModifier] and $7f - jr z, .asm_36e55 + jr z, .didnt_affect call GetOpponentItem ld a, b cp HELD_PREVENT_PARALYZE - jr nz, .asm_36def + jr nz, .no_item_protection ld a, [hl] ld [wNamedObjectIndexBuffer], a call GetItemName @@ -7555,37 +7720,37 @@ BattleCommand_Paralyze: ; 36dc7 ld hl, ProtectedByText jp StdBattleTextBox -.asm_36def +.no_item_protection ld a, [hBattleTurn] and a - jr z, .asm_36e0e + jr z, .dont_sample_failure ld a, [wLinkMode] and a - jr nz, .asm_36e0e + jr nz, .dont_sample_failure ld a, [InBattleTowerBattle] and a - jr nz, .asm_36e0e + jr nz, .dont_sample_failure ld a, [PlayerSubStatus5] bit SUBSTATUS_LOCK_ON, a - jr nz, .asm_36e0e + jr nz, .dont_sample_failure call BattleRandom - cp $40 - jr c, .asm_36e52 + cp 1 + 25 percent + jr c, .failed -.asm_36e0e +.dont_sample_failure ld a, BATTLE_VARS_STATUS_OPP call GetBattleVarAddr and a - jr nz, .asm_36e52 + jr nz, .failed ld a, [AttackMissed] and a - jr nz, .asm_36e52 + jr nz, .failed call CheckSubstituteOpp - jr nz, .asm_36e52 + jr nz, .failed ld c, 30 call DelayFrames call AnimateCurrentMove @@ -7601,15 +7766,19 @@ BattleCommand_Paralyze: ; 36dc7 call PrintParalyze ld hl, UseHeldStatusHealingItem jp CallBattleCore -.asm_36e49 + +.paralyzed call AnimateFailedMove ld hl, AlreadyParalyzedText jp StdBattleTextBox -.asm_36e52 + +.failed jp PrintDidntAffect2 -.asm_36e55 + +.didnt_affect call AnimateFailedMove jp PrintDoesntAffect + ; 36e5b @@ -7647,6 +7816,7 @@ CheckMoveTypeMatchesTarget: ; 36e5b and a pop hl ret + ; 36e7c @@ -7739,6 +7909,7 @@ endr ld hl, TooWeakSubText .jp_stdbattletextbox jp StdBattleTextBox + ; 36f0b BattleCommand_RechargeNextTurn: ; 36f0b @@ -7747,6 +7918,7 @@ BattleCommand_RechargeNextTurn: ; 36f0b call GetBattleVarAddr set SUBSTATUS_RECHARGE, [hl] ret + ; 36f13 @@ -7757,6 +7929,7 @@ EndRechargeOpp: ; 36f13 res SUBSTATUS_RECHARGE, [hl] pop hl ret + ; 36f1d @@ -7766,6 +7939,7 @@ BattleCommand_Rage: ; 36f1d call GetBattleVarAddr set SUBSTATUS_RAGE, [hl] ret + ; 36f25 @@ -7776,6 +7950,7 @@ BattleCommand_DoubleFlyingDamage: ; 36f25 bit SUBSTATUS_FLYING, a ret z jr DoubleDamage + ; 36f2f @@ -7802,6 +7977,7 @@ DoubleDamage: ; 36f37 ld [hl], a .quit ret + ; 36f46 @@ -7855,6 +8031,7 @@ BattleCommand_Mimic: ; 36f46 .fail jp FailMimic + ; 36f9d @@ -7898,6 +8075,7 @@ BattleCommand_LeechSeed: ; 36f9d call AnimateFailedMove ld hl, EvadedText jp StdBattleTextBox + ; 36fe1 @@ -7905,6 +8083,7 @@ BattleCommand_Splash: ; 36fe1 call AnimateCurrentMove callba MobileFn_1060e5 jp PrintNothingHappened + ; 36fed @@ -7913,51 +8092,51 @@ BattleCommand_Disable: ; 36fed ld a, [AttackMissed] and a - jr nz, .asm_37059 + jr nz, .failed ld de, EnemyDisableCount ld hl, EnemyMonMoves ld a, [hBattleTurn] and a - jr z, .asm_37004 + jr z, .got_moves ld de, PlayerDisableCount ld hl, BattleMonMoves -.asm_37004 +.got_moves ld a, [de] and a - jr nz, .asm_37059 + jr nz, .failed ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar and a - jr z, .asm_37059 + jr z, .failed cp STRUGGLE - jr z, .asm_37059 + jr z, .failed ld b, a ld c, $ff -.asm_37017 +.loop inc c ld a, [hli] cp b - jr nz, .asm_37017 + jr nz, .loop ld a, [hBattleTurn] and a ld hl, EnemyMonPP - jr z, .asm_37027 + jr z, .got_pp ld hl, BattleMonPP -.asm_37027 +.got_pp ld b, 0 add hl, bc ld a, [hl] and a - jr z, .asm_37059 -.asm_3702e + jr z, .failed +.loop2 call BattleRandom and 7 - jr z, .asm_3702e + jr z, .loop2 inc a inc c swap c @@ -7967,9 +8146,9 @@ BattleCommand_Disable: ; 36fed ld hl, DisabledMove ld a, [hBattleTurn] and a - jr nz, .asm_37047 + jr nz, .got_disabled_move_pointer inc hl -.asm_37047 +.got_disabled_move_pointer ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar ld [hl], a @@ -7977,8 +8156,10 @@ BattleCommand_Disable: ; 36fed call GetMoveName ld hl, WasDisabledText jp StdBattleTextBox -.asm_37059 + +.failed jp FailDisable + ; 3705c @@ -8008,6 +8189,7 @@ BattleCommand_PayDay: ; 3705c .done ld hl, CoinsScatteredText jp StdBattleTextBox + ; 3707f @@ -8018,21 +8200,21 @@ BattleCommand_Conversion: ; 3707f ld de, BattleMonType1 ld a, [hBattleTurn] and a - jr z, .asm_37090 + jr z, .got_moves ld hl, EnemyMonMoves ld de, EnemyMonType1 -.asm_37090 +.got_moves push de ld c, 0 ld de, StringBuffer1 -.asm_37096 +.loop push hl ld b, 0 add hl, bc ld a, [hl] pop hl and a - jr z, .asm_370b2 + jr z, .okay push hl push bc dec a @@ -8045,8 +8227,8 @@ BattleCommand_Conversion: ; 3707f inc c ld a, c cp NUM_MOVES - jr c, .asm_37096 -.asm_370b2 + jr c, .loop +.okay ld a, $ff ld [de], a inc de @@ -8055,28 +8237,30 @@ BattleCommand_Conversion: ; 3707f ld [de], a pop de ld hl, StringBuffer1 -.asm_370bd +.loop2 ld a, [hl] - cp $ff - jr z, .asm_370d3 + cp -1 + jr z, .fail cp CURSE_T - jr z, .asm_370d0 + jr z, .next ld a, [de] cp [hl] - jr z, .asm_370d0 + jr z, .next inc de ld a, [de] dec de cp [hl] - jr nz, .asm_370d9_a -.asm_370d0 + jr nz, .done +.next inc hl - jr .asm_370bd -.asm_370d3 + jr .loop2 + +.fail call AnimateFailedMove jp PrintButItFailed -.asm_370d9_a -.asm_370d9_b + +.done +.loop3 call BattleRandom and 3 ; TODO factor in NUM_MOVES ld c, a @@ -8084,18 +8268,18 @@ BattleCommand_Conversion: ; 3707f ld hl, StringBuffer1 add hl, bc ld a, [hl] - cp $ff - jr z, .asm_370d9_b + cp -1 + jr z, .loop3 cp CURSE_T - jr z, .asm_370d9_b + jr z, .loop3 ld a, [de] cp [hl] - jr z, .asm_370d9_b + jr z, .loop3 inc de ld a, [de] dec de cp [hl] - jr z, .asm_370d9_b + jr z, .loop3 ld a, [hl] ld [de], a inc de @@ -8105,6 +8289,7 @@ BattleCommand_Conversion: ; 3707f call AnimateCurrentMove ld hl, TransformedTypeText jp StdBattleTextBox + ; 3710e @@ -8140,6 +8325,7 @@ BattleCommand_ResetStats: ; 3710e dec b jr nz, .next ret + ; 3713e @@ -8150,10 +8336,10 @@ BattleCommand_Heal: ; 3713e ld hl, BattleMonMaxHP ld a, [hBattleTurn] and a - jr z, .asm_3714f + jr z, .got_hp ld de, EnemyMonHP ld hl, EnemyMonMaxHP -.asm_3714f +.got_hp ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar ld b, a @@ -8165,10 +8351,11 @@ BattleCommand_Heal: ; 3713e pop bc pop de pop hl - jp z, .asm_371c4 + jp z, .hp_full ld a, b cp REST - jr nz, .asm_37199 + jr nz, .not_rest + push hl push de push af @@ -8182,30 +8369,33 @@ BattleCommand_Heal: ; 3713e and a ld [hl], REST_TURNS + 1 ld hl, WentToSleepText - jr z, .asm_37186 + jr z, .no_status_to_heal ld hl, RestedText -.asm_37186 +.no_status_to_heal call StdBattleTextBox ld a, [hBattleTurn] and a - jr nz, .asm_37193 + jr nz, .calc_enemy_stats call CalcPlayerStats - jr .asm_37196 -.asm_37193 + jr .got_stats + +.calc_enemy_stats call CalcEnemyStats -.asm_37196 +.got_stats pop af pop de pop hl -.asm_37199 - jr z, .asm_371a3 + +.not_rest + jr z, .restore_full_hp ld hl, GetHalfMaxHP call CallBattleCore - jr .asm_371a9 -.asm_371a3 + jr .finish + +.restore_full_hp ld hl, GetMaxHP call CallBattleCore -.asm_371a9 +.finish call AnimateCurrentMove call BattleCommand_SwitchTurn ld hl, RestoreHP @@ -8216,10 +8406,11 @@ BattleCommand_Heal: ; 3713e ld hl, RegainedHealthText jp StdBattleTextBox -.asm_371c4 +.hp_full call AnimateFailedMove ld hl, HPIsFullText jp StdBattleTextBox + ; 371cd @@ -8230,9 +8421,9 @@ BattleCommand_Transform: ; 371cd ld a, BATTLE_VARS_SUBSTATUS5_OPP call GetBattleVarAddr bit SUBSTATUS_TRANSFORMED, [hl] - jp nz, Function372d2 + jp nz, BattleEffect_ButItFailed call CheckHiddenOpponent - jp nz, Function372d2 + jp nz, BattleEffect_ButItFailed xor a ld [wNumHits], a ld [FXAnimIDHi], a @@ -8347,6 +8538,7 @@ endr jr nz, .mimic_anims call LoadMoveAnim jr .after_anim + .mimic_anims call BattleCommand_MoveDelay call BattleCommand_RaiseSubNoAnim @@ -8361,6 +8553,7 @@ endr call nz, LoadAnim ld hl, TransformedText jp StdBattleTextBox + ; 372c6 @@ -8378,12 +8571,14 @@ BattleSideCopy: ; 372c6 pop de .copy jp CopyBytes + ; 372d2 -Function372d2: ; 372d2 +BattleEffect_ButItFailed: ; 372d2 call AnimateFailedMove jp PrintButItFailed + ; 372d8 @@ -8398,6 +8593,7 @@ ClearLastMove: ; 372d8 xor a ld [hl], a ret + ; 372e7 @@ -8416,6 +8612,7 @@ ResetActorDisable: ; 372e7 ld [PlayerDisableCount], a ld [DisabledMove], a ret + ; 372fc @@ -8426,11 +8623,11 @@ BattleCommand_Screen: ; 372fc ld bc, PlayerLightScreenCount ld a, [hBattleTurn] and a - jr z, .asm_3730d + jr z, .got_screens_pointer ld hl, EnemyScreens ld bc, EnemyLightScreenCount -.asm_3730d +.got_screens_pointer ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_LIGHT_SCREEN @@ -8442,7 +8639,7 @@ BattleCommand_Screen: ; 372fc ld a, 5 ld [bc], a ld hl, LightScreenEffectText - jr .asm_37331 + jr .good .Reflect bit SCREENS_REFLECT, [hl] @@ -8456,13 +8653,14 @@ BattleCommand_Screen: ; 372fc ld [bc], a ld hl, ReflectEffectText -.asm_37331 +.good call AnimateCurrentMove jp StdBattleTextBox .failed call AnimateFailedMove jp PrintButItFailed + ; 3733d @@ -8470,6 +8668,7 @@ PrintDoesntAffect: ; 3733d ; 'it doesn't affect' ld hl, DoesntAffectText jp StdBattleTextBox + ; 37343 @@ -8477,6 +8676,7 @@ PrintNothingHappened: ; 37343 ; 'but nothing happened!' ld hl, NothingHappenedText jp StdBattleTextBox + ; 37349 @@ -8493,6 +8693,7 @@ PrintButItFailed: ; 3734e ; 'but it failed!' ld hl, ButItFailedText jp StdBattleTextBox + ; 37354 @@ -8510,6 +8711,7 @@ FailMimic: ; 37357 ld hl, ButItFailedText ; 'but it failed!' ld de, ItFailedText ; 'it failed!' jp FailText_CheckOpponentProtect + ; 37360 @@ -8517,6 +8719,7 @@ PrintDidntAffect: ; 37360 ; 'it didn't affect' ld hl, DidntAffect1Text jp StdBattleTextBox + ; 37366 @@ -8525,6 +8728,7 @@ PrintDidntAffect2: ; 37366 ld hl, DidntAffect1Text ; 'it didn't affect' ld de, DidntAffect2Text ; 'it didn't affect' jp FailText_CheckOpponentProtect + ; 37372 @@ -8532,6 +8736,7 @@ PrintParalyze: ; 37372 ; 'paralyzed! maybe it can't attack!' ld hl, ParalyzedText jp StdBattleTextBox + ; 37378 @@ -8540,6 +8745,7 @@ CheckSubstituteOpp: ; 37378 call GetBattleVar bit SUBSTATUS_SUBSTITUTE, a ret + ; 37380 @@ -8572,6 +8778,7 @@ BattleCommand_SelfDestruct: ; 37380 callba DrawEnemyHUD call WaitBGMap jp RefreshBattleHuds + ; 373c9 @@ -8603,6 +8810,7 @@ CheckUserMove: ; 37462 ld a, 1 and a ret + ; 3747b @@ -8619,6 +8827,7 @@ ResetTurn: ; 3747b ld [AlreadyDisobeyed], a call DoMove jp EndMoveEffect + ; 37492 @@ -8650,6 +8859,7 @@ BattleCommand_ArenaTrap: ; 37517 .failed call AnimateFailedMove jp PrintButItFailed + ; 37536 @@ -8686,6 +8896,7 @@ BattleCommand_Defrost: ; 37563 call RefreshBattleHuds ld hl, WasDefrostedText jp StdBattleTextBox + ; 37588 @@ -8709,6 +8920,7 @@ INCLUDE "battle/effects/rollout.asm" BattleCommand5d: ; 37791 ; unused ret + ; 37792 @@ -8751,6 +8963,7 @@ BattleCommand_FuryCutter: ; 37792 ld [hli], a ld [hl], a ret + ; 377be @@ -8770,6 +8983,7 @@ ResetFuryCutterCount: ; 377be pop hl ret + ; 377ce @@ -8800,6 +9014,7 @@ BattleCommand_HappinessPower: ; 3784b ld d, a pop bc ret + ; 37874 @@ -8812,9 +9027,9 @@ BattleCommand_FrustrationPower: ; 3790e ld hl, BattleMonHappiness ld a, [hBattleTurn] and a - jr z, .asm_3791a ; 37915 $3 + jr z, .got_happiness ld hl, EnemyMonHappiness -.asm_3791a +.got_happiness ld a, $ff sub [hl] ld [hMultiplicand + 2], a @@ -8832,6 +9047,7 @@ BattleCommand_FrustrationPower: ; 3790e ld d, a pop bc ret + ; 37939 @@ -8854,9 +9070,11 @@ BattleCommand_Safeguard: ; 37939 call AnimateCurrentMove ld hl, CoveredByVeilText jp StdBattleTextBox + .failed call AnimateFailedMove jp PrintButItFailed + ; 37962 @@ -8872,6 +9090,7 @@ SafeCheckSafeguard: ; 37962 bit SCREENS_SAFEGUARD, [hl] pop hl ret + ; 37972 @@ -8880,7 +9099,7 @@ BattleCommand_CheckSafeguard: ; 37972 ld hl, EnemyScreens ld a, [hBattleTurn] and a - jr z, .got_turn ; 37978 $3 + jr z, .got_turn ld hl, PlayerScreens .got_turn bit SCREENS_SAFEGUARD, [hl] @@ -8891,6 +9110,7 @@ BattleCommand_CheckSafeguard: ; 37972 ld hl, SafeguardProtectText call StdBattleTextBox jp EndMoveEffect + ; 37991 @@ -8909,6 +9129,7 @@ rept 2 inc hl endr jr .loop + .ok ld d, [hl] push de @@ -8954,7 +9175,7 @@ BattleCommand_BatonPass: ; 379c9 ; Transition into switchmon menu call LoadStandardMenuDataHeader - callba Function3d2f7 + callba SetUpBattlePartyMenu_NoLoop callba ForcePickSwitchMonInBattle @@ -9016,6 +9237,7 @@ BattleCommand_BatonPass: ; 379c9 call CallBattleCore jr ResetBatonPassStatus + ; 37a67 @@ -9035,6 +9257,7 @@ BatonPass_LinkPlayerSwitch: ; 37a67 xor a ld [wPlayerAction], a ret + ; 37a82 @@ -9062,12 +9285,14 @@ BatonPass_LinkEnemySwitch: ; 37a82 ld [wBattleAction], a .switch jp CloseWindow + ; 37aab FailedBatonPass: ; 37aab call AnimateFailedMove jp PrintButItFailed + ; 37ab1 @@ -9109,6 +9334,7 @@ ResetBatonPassStatus: ; 37ab1 ld [wPlayerWrapCount], a ld [wEnemyWrapCount], a ret + ; 37ae9 @@ -9119,6 +9345,7 @@ CheckAnyOtherAlivePartyMons: ; 37ae9 ld a, [CurBattleMon] ld e, a jr CheckAnyOtherAliveMons + ; 37af6 @@ -9167,6 +9394,7 @@ CheckAnyOtherAliveMons: ; 37b01 ld a, b and a ret + ; 37b1d @@ -9194,6 +9422,7 @@ BattleCommand_Pursuit: ; 37b1d ld [hli], a ld [hl], a ret + ; 37b39 @@ -9203,28 +9432,28 @@ BattleCommand_ClearHazards: ; 37b39 ld a, BATTLE_VARS_SUBSTATUS4 call GetBattleVarAddr bit SUBSTATUS_LEECH_SEED, [hl] - jr z, .asm_37b4a ; 37b40 $8 + jr z, .not_leeched res SUBSTATUS_LEECH_SEED, [hl] ld hl, ShedLeechSeedText call StdBattleTextBox -.asm_37b4a +.not_leeched ld hl, PlayerScreens ld de, wPlayerWrapCount ld a, [hBattleTurn] and a - jr z, .asm_37b5b ; 37b53 $6 + jr z, .got_screens_wrap ld hl, EnemyScreens ld de, wEnemyWrapCount -.asm_37b5b +.got_screens_wrap bit SCREENS_SPIKES, [hl] - jr z, .asm_37b69 ; 37b5d $a + jr z, .no_spikes res SCREENS_SPIKES, [hl] ld hl, BlewSpikesText push de call StdBattleTextBox pop de -.asm_37b69 +.no_spikes ld a, [de] and a @@ -9233,6 +9462,7 @@ BattleCommand_ClearHazards: ; 37b39 ld [de], a ld hl, ReleasedByText jp StdBattleTextBox + ; 37b74 @@ -9240,12 +9470,14 @@ BattleCommand_HealMorn: ; 37b74 ; healmorn ld b, MORN jr BattleCommand_TimeBasedHealContinue + ; 37b78 BattleCommand_HealDay: ; 37b78 ; healday ld b, DAY jr BattleCommand_TimeBasedHealContinue + ; 37b7c BattleCommand_HealNite: ; 37b7c @@ -9348,6 +9580,7 @@ BattleCommand_HiddenPower: ; 37be8 ret nz callba HiddenPowerDamage ret + ; 37bf4 @@ -9360,6 +9593,7 @@ BattleCommand_StartRain: ; 37bf4 call AnimateCurrentMove ld hl, DownpourText jp StdBattleTextBox + ; 37c07 @@ -9372,6 +9606,7 @@ BattleCommand_StartSun: ; 37c07 call AnimateCurrentMove ld hl, SunGotBrightText jp StdBattleTextBox + ; 37c1a @@ -9409,6 +9644,7 @@ BattleCommand_BellyDrum: ; 37c1a .failed call AnimateFailedMove jp PrintButItFailed + ; 37c55 @@ -9419,7 +9655,7 @@ BattleCommand_PsychUp: ; 37c55 ld de, PlayerStatLevels ld a, [hBattleTurn] and a - jr z, .pointers_correct ; 37c5e $4 + jr z, .pointers_correct ; It's the enemy's turn, so swap the pointers. push hl ld h, d @@ -9433,9 +9669,9 @@ BattleCommand_PsychUp: ; 37c55 .loop ld a, [hli] cp BASE_STAT_LEVEL - jr nz, .break ; 37c6a $a + jr nz, .break dec b - jr nz, .loop ; 37c6d $f8 + jr nz, .loop pop hl call AnimateFailedMove jp PrintButItFailed @@ -9448,12 +9684,12 @@ BattleCommand_PsychUp: ; 37c55 ld [de], a inc de dec b - jr nz, .loop2 ; 37c7d $fa + jr nz, .loop2 ld a, [hBattleTurn] and a - jr nz, .calc_enemy_stats ; 37c82 $5 + jr nz, .calc_enemy_stats call CalcPlayerStats - jr .merge ; 37c87 $3 + jr .merge .calc_enemy_stats call CalcEnemyStats @@ -9461,6 +9697,7 @@ BattleCommand_PsychUp: ; 37c55 call AnimateCurrentMove ld hl, CopiedStatsText jp StdBattleTextBox + ; 37c95 @@ -9523,6 +9760,7 @@ BattleCommand_MirrorCoat: ; 37c95 xor a ld [AttackMissed], a ret + ; 37ce6 @@ -9547,6 +9785,7 @@ BattleCommand_DoubleMinimizeDamage: ; 37ce6 ld [hli], a ld [hl], a ret + ; 37d02 @@ -9557,6 +9796,7 @@ BattleCommand_SkipSunCharge: ; 37d02 ret nz ld b, charge_command jp SkipToBattleCommand + ; 37d0d @@ -9564,12 +9804,12 @@ BattleCommand_CheckFutureSight: ; 37d0d ; checkfuturesight ld hl, wPlayerFutureSightCount - ld de, wc727 + ld de, wPlayerFutureSightDamage ld a, [hBattleTurn] and a jr z, .ok ld hl, wEnemyFutureSightCount - ld de, wc729 + ld de, wEnemyFutureSightDamage .ok ld a, [hl] @@ -9586,13 +9826,14 @@ BattleCommand_CheckFutureSight: ; 37d0d ld [CurDamage + 1], a ld b, futuresight_command jp SkipToBattleCommand + ; 37d34 BattleCommand_FutureSight: ; 37d34 ; futuresight call CheckUserIsCharging - jr nz, .asm_37d4b ; 37d37 $12 + jr nz, .AlreadyChargingFutureSight ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar ld b, a @@ -9602,29 +9843,29 @@ BattleCommand_FutureSight: ; 37d34 ld a, BATTLE_VARS_LAST_MOVE call GetBattleVarAddr ld [hl], b -.asm_37d4b +.AlreadyChargingFutureSight ld hl, wPlayerFutureSightCount ld a, [hBattleTurn] and a - jr z, .asm_37d56 ; 37d51 $3 + jr z, .GotFutureSightCount ld hl, wEnemyFutureSightCount -.asm_37d56 +.GotFutureSightCount ld a, [hl] and a - jr nz, .asm_37d87 ; 37d58 $2d - ld a, $4 + jr nz, .failed + ld a, 4 ld [hl], a call BattleCommand_LowerSub call BattleCommand_MoveDelay ld hl, ForesawAttackText call StdBattleTextBox call BattleCommand_RaiseSub - ld de, wc727 + ld de, wPlayerFutureSightDamage ld a, [hBattleTurn] and a - jr z, .asm_37d77 ; 37d72 $3 - ld de, wc729 -.asm_37d77 + jr z, .StoreDamage + ld de, wEnemyFutureSightDamage +.StoreDamage ld hl, CurDamage ld a, [hl] ld [de], a @@ -9635,12 +9876,14 @@ BattleCommand_FutureSight: ; 37d34 ld [de], a ld [hl], 0 jp EndMoveEffect -.asm_37d87 + +.failed pop bc call ResetDamage call AnimateFailedMove call PrintButItFailed jp EndMoveEffect + ; 37d94 @@ -9657,9 +9900,11 @@ BattleCommand_ThunderAccuracy: ; 37d94 ret nz ld [hl], 50 percent + 1 ret + .rain ld [hl], 100 percent ret + ; 37daa @@ -9668,6 +9913,7 @@ CheckHiddenOpponent: ; 37daa call GetBattleVar and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND ret + ; 37db2 @@ -9681,6 +9927,7 @@ GetUserItem: ; 37db2 .go ld b, [hl] jp GetItemHeldEffect + ; 37dc1 @@ -9694,6 +9941,7 @@ GetOpponentItem: ; 37dc1 .go ld b, [hl] jp GetItemHeldEffect + ; 37dd0 @@ -9716,6 +9964,7 @@ GetItemHeldEffect: ; 37dd0 ld c, h pop hl ret + ; 37de9 @@ -9734,6 +9983,7 @@ AnimateCurrentMoveEitherSide: ; 37de9 pop de pop hl ret + ; 37e01 @@ -9752,6 +10002,7 @@ AnimateCurrentMove: ; 37e01 pop de pop hl ret + ; 37e19 @@ -9776,6 +10027,7 @@ PlayDamageAnim: ; 37e19 ld [wNumHits], a jp PlayUserBattleAnim + ; 37e36 @@ -9810,6 +10062,7 @@ PlayUserBattleAnim: ; 37e47 pop de pop hl ret + ; 37e54 @@ -9833,6 +10086,7 @@ PlayOpponentBattleAnim: ; 37e54 pop de pop hl ret + ; 37e73 @@ -9840,6 +10094,7 @@ CallBattleCore: ; 37e73 ld a, BANK(BattleCore) rst FarCall ret + ; 37e77 @@ -9847,6 +10102,7 @@ AnimateFailedMove: ; 37e77 call BattleCommand_LowerSub call BattleCommand_MoveDelay jp BattleCommand_RaiseSub + ; 37e80 @@ -9855,6 +10111,7 @@ BattleCommand_MoveDelay: ; 37e80 ; Wait 40 frames. ld c, 40 jp DelayFrames + ; 37e85 @@ -9864,6 +10121,7 @@ BattleCommand_ClearText: ; 37e85 ; Used in multi-hit moves. ld hl, .text jp BattleTextBox + .text db "@" ; 37e8c @@ -9885,6 +10143,7 @@ SkipToBattleCommand: ; 37e8c ld a, l ld [BattleScriptBufferLoc], a ret + ; 37ea1 @@ -9896,6 +10155,7 @@ GetMoveAttr: ; 37ea1 call GetMoveByte pop bc ret + ; 37ead @@ -9906,30 +10166,35 @@ GetMoveData: ; 37ead call AddNTimes ld a, Bank(Moves) jp FarCopyBytes + ; 37ebb GetMoveByte: ; 37ebb ld a, BANK(Moves) jp GetFarByte + ; 37ec0 DisappearUser: ; 37ec0 callba _DisappearUser ret + ; 37ec7 AppearUserLowerSub: ; 37ec7 callba _AppearUserLowerSub ret + ; 37ece AppearUserRaiseSub: ; 37ece callba _AppearUserRaiseSub ret + ; 37ed5 @@ -9943,4 +10208,5 @@ _CheckBattleScene: ; 37ed5 pop de pop hl ret + ; 37ee2 |