diff options
author | yenatch <yenatch@gmail.com> | 2013-05-05 19:56:17 -0400 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2013-05-05 19:56:17 -0400 |
commit | 3beab7dd925fc9a25670acde6076cd146a3f9a2c (patch) | |
tree | 81b1e3b9a86b354e7afc60bf59b237f746501607 /main.asm | |
parent | c82216441a68d5598a213a27ed63ee12866057b4 (diff) |
move ai scoring out of main.asm
Diffstat (limited to 'main.asm')
-rw-r--r-- | main.asm | 3139 |
1 files changed, 3 insertions, 3136 deletions
@@ -7135,3141 +7135,8 @@ SECTION "bankE",DATA,BANK[$E] INCBIN "baserom.gbc", $38000, $38591 - $38000 -Function_0x38591: ; 38591 - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld b, EnemyMonMovesEnd - EnemyMonMoves + 1 -.asm_38599 - dec b - ret z - - inc hl - ld a, [de] - and a - ret z - - inc de - call $5508 - - ld a, [EnemyMoveEffect] - ld c, a - - push hl - push de - push bc - ld a, $b - ld hl, $441a - rst FarCall - pop bc - pop de - pop hl - jr nz, .asm_385d6 - - ld a, [EnemyMoveEffect] - push hl - push de - push bc - ld hl, .table_385db - ld de, 1 - call IsInArray - - pop bc - pop de - pop hl - jr nc, .asm_38599 - - ld a, [BattleMonStatus] - and a - jr nz, .asm_385d6 - - ld a, [PlayerScreens] - bit 2, a - jr z, .asm_38599 - -.asm_385d6 - call $5503 - - jr .asm_38599 -; 385db - -.table_385db - db EFFECT_SLEEP - db EFFECT_TOXIC - db EFFECT_POISON - db EFFECT_PARALYZE - db $ff -; 385e0 - - - -Function_0x385e0: ; 385e0 - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld b, EnemyMonMovesEnd - EnemyMonMoves + 1 -.next - dec b - ret z - - inc hl - ld a, [de] - and a - ret z - - inc de - call $5508 - - ld a, [EnemyMoveEffect] - - cp EFFECT_ATTACK_UP - jr c, .next - cp EFFECT_EVASION_UP + 1 - jr c, .statup - -; cp EFFECT_ATTACK_DOWN - 1 - jr z, .next - cp EFFECT_EVASION_DOWN + 1 - jr c, .statdown - - cp EFFECT_ATTACK_UP_2 - jr c, .next - cp EFFECT_EVASION_UP_2 + 1 - jr c, .statup - -; cp EFFECT_ATTACK_DOWN_2 - 1 - jr z, .next - cp EFFECT_EVASION_DOWN_2 + 1 - jr c, .statdown - - jr .next - -.statup - ld a, [EnemyTurnsTaken] - and a - jr nz, .asm_3862a - - jr .asm_38621 - -.statdown - ld a, [PlayerTurnsTaken] - and a - jr nz, .asm_3862a - -.asm_38621 - call $5527 - - jr c, .next - - dec [hl] - dec [hl] - jr .next - -.asm_3862a - call RNG - - cp $1e - jr c, .next - - inc [hl] - inc [hl] - jr .next -; 38635 - - - -Function_0x38635: ; 38635 - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld b, EnemyMonMovesEnd - EnemyMonMoves + 1 -.asm_3863d - dec b - ret z - - inc hl - ld a, [de] - and a - ret z - - inc de - call $5508 - - push hl - push bc - push de - ld a, 1 - ld [hBattleTurn], a - ld hl, $47c8 - ld a, $d - rst FarCall - - pop de - pop bc - pop hl - ld a, [$d265] - and a - jr z, .asm_3869d - - cp $a - jr z, .asm_3863d - - jr c, .asm_3866c - - ld a, [EnemyMovePower] - and a - jr z, .asm_3863d - - dec [hl] - jr .asm_3863d - -.asm_3866c - push hl - push de - push bc - ld a, [EnemyMoveType] - ld d, a - ld hl, EnemyMonMoves - ld b, EnemyMonMovesEnd - EnemyMonMoves + 1 - ld c, 0 -.asm_3867a - dec b - jr z, .asm_38693 - - ld a, [hli] - and a - jr z, .asm_38693 - - call $5508 - - ld a, [EnemyMoveType] - cp d - jr z, .asm_3867a - - ld a, [EnemyMovePower] - and a - jr nz, .asm_38692 - - jr .asm_3867a - -.asm_38692 - ld c, a -.asm_38693 - ld a, c - pop bc - pop de - pop hl - and a - jr z, .asm_3863d - - inc [hl] - jr .asm_3863d - -.asm_3869d - call $5503 - - jr .asm_3863d -; 386a2 - - - -Function_0x386a2: ; 386a2 - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld b, EnemyMonMovesEnd - EnemyMonMoves + 1 -.asm_386aa - dec b - ret z - - inc hl - ld a, [de] - and a - ret z - - inc de - call $5508 - - ld a, [EnemyMovePower] - and a - jr nz, .asm_386aa - - inc [hl] - inc [hl] - jr .asm_386aa -; 386be - - - -Function_0x386be: ; 386be - ld hl, Buffer1 - ld de, EnemyMonMoves - ld b, EnemyMonMovesEnd - EnemyMonMoves + 1 -.asm_386c6 - dec b - ret z - - ld a, [de] - inc de - and a - ret z - - push de - push bc - push hl - call $5508 - - ld a, [EnemyMoveEffect] - ld hl, .table_386f2 - ld de, 3 - call IsInArray - - inc hl - jr nc, .asm_386ec - - ld a, [hli] - ld e, a - ld d, [hl] - pop hl - push hl - ld bc, .asm_386ec - push bc - push de - ret - -.asm_386ec - pop hl - pop bc - pop de - inc hl - jr .asm_386c6 -; 386f2 - -.table_386f2 ; 386f2 - dbw EFFECT_SLEEP, AIScoring_Sleep - dbw EFFECT_LEECH_HIT, AIScoring_LeechHit - dbw EFFECT_EXPLOSION, AIScoring_Explosion - dbw EFFECT_DREAM_EATER, AIScoring_DreamEater - dbw EFFECT_MIRROR_MOVE, AIScoring_MirrorMove - dbw EFFECT_EVASION_UP, AIScoring_EvasionUp - dbw EFFECT_ALWAYS_HIT, AIScoring_AlwaysHit - dbw EFFECT_ACCURACY_DOWN, AIScoring_AccuracyDown - dbw EFFECT_HAZE, AIScoring_Haze - dbw EFFECT_BIDE, AIScoring_Bide - dbw EFFECT_WHIRLWIND, AIScoring_Whirlwind - dbw EFFECT_HEAL, AIScoring_Heal - dbw EFFECT_TOXIC, AIScoring_Toxic - dbw EFFECT_LIGHT_SCREEN, AIScoring_LightScreen - dbw EFFECT_OHKO, AIScoring_Ohko - dbw EFFECT_RAZOR_WIND, AIScoring_RazorWind - dbw EFFECT_SUPER_FANG, AIScoring_SuperFang - dbw EFFECT_BIND, AIScoring_Bind - dbw EFFECT_UNUSED_2B, AIScoring_Unused2B - dbw EFFECT_CONFUSE, AIScoring_Confuse - dbw EFFECT_SP_DEFENSE_UP_2, AIScoring_SpDefenseUp2 - dbw EFFECT_REFLECT, AIScoring_Reflect - dbw EFFECT_PARALYZE, AIScoring_Paralyze - dbw EFFECT_SPEED_DOWN_HIT, AIScoring_SpeedDownHit - dbw EFFECT_SUBSTITUTE, AIScoring_Substitute - dbw EFFECT_HYPER_BEAM, AIScoring_HyperBeam - dbw EFFECT_RAGE, AIScoring_Rage - dbw EFFECT_MIMIC, AIScoring_Mimic - dbw EFFECT_LEECH_SEED, AIScoring_LeechSeed - dbw EFFECT_DISABLE, AIScoring_Disable - dbw EFFECT_COUNTER, AIScoring_Counter - dbw EFFECT_ENCORE, AIScoring_Encore - dbw EFFECT_PAIN_SPLIT, AIScoring_PainSplit - dbw EFFECT_SNORE, AIScoring_Snore - dbw EFFECT_CONVERSION2, AIScoring_Conversion2 - dbw EFFECT_LOCK_ON, AIScoring_LockOn - dbw EFFECT_DEFROST_OPPONENT, AIScoring_DefrostOpponent - dbw EFFECT_SLEEP_TALK, AIScoring_SleepTalk - dbw EFFECT_DESTINY_BOND, AIScoring_DestinyBond - dbw EFFECT_REVERSAL, AIScoring_Reversal - dbw EFFECT_SPITE, AIScoring_Spite - dbw EFFECT_HEAL_BELL, AIScoring_HealBell - dbw EFFECT_PRIORITY_HIT, AIScoring_PriorityHit - dbw EFFECT_THIEF, AIScoring_Thief - dbw EFFECT_MEAN_LOOK, AIScoring_MeanLook - dbw EFFECT_NIGHTMARE, AIScoring_Nightmare - dbw EFFECT_FLAME_WHEEL, AIScoring_FlameWheel - dbw EFFECT_CURSE, AIScoring_Curse - dbw EFFECT_PROTECT, AIScoring_Protect - dbw EFFECT_FORESIGHT, AIScoring_Foresight - dbw EFFECT_PERISH_SONG, AIScoring_PerishSong - dbw EFFECT_SANDSTORM, AIScoring_Sandstorm - dbw EFFECT_ENDURE, AIScoring_Endure - dbw EFFECT_ROLLOUT, AIScoring_Rollout - dbw EFFECT_SWAGGER, AIScoring_Swagger - dbw EFFECT_FURY_CUTTER, AIScoring_FuryCutter - dbw EFFECT_ATTRACT, AIScoring_Attract - dbw EFFECT_SAFEGUARD, AIScoring_Safeguard - dbw EFFECT_MAGNITUDE, AIScoring_Magnitude - dbw EFFECT_BATON_PASS, AIScoring_BatonPass - dbw EFFECT_PURSUIT, AIScoring_Pursuit - dbw EFFECT_RAPID_SPIN, AIScoring_RapidSpin - dbw EFFECT_MORNING_SUN, AIScoring_MorningSun - dbw EFFECT_SYNTHESIS, AIScoring_Synthesis - dbw EFFECT_MOONLIGHT, AIScoring_Moonlight - dbw EFFECT_HIDDEN_POWER, AIScoring_HiddenPower - dbw EFFECT_RAIN_DANCE, AIScoring_RainDance - dbw EFFECT_SUNNY_DAY, AIScoring_SunnyDay - dbw EFFECT_BELLY_DRUM, AIScoring_BellyDrum - dbw EFFECT_PSYCH_UP, AIScoring_PsychUp - dbw EFFECT_MIRROR_COAT, AIScoring_MirrorCoat - dbw EFFECT_SKULL_BASH, AIScoring_SkullBash - dbw EFFECT_TWISTER, AIScoring_Twister - dbw EFFECT_EARTHQUAKE, AIScoring_Earthquake - dbw EFFECT_FUTURE_SIGHT, AIScoring_FutureSight - dbw EFFECT_GUST, AIScoring_Gust - dbw EFFECT_STOMP, AIScoring_Stomp - dbw EFFECT_SOLARBEAM, AIScoring_Solarbeam - dbw EFFECT_THUNDER, AIScoring_Thunder - dbw EFFECT_FLY, AIScoring_Fly - db $ff -; 387e3 - - -AIScoring_Sleep: ; 387e3 - ld b, $8 - call $52ca - - jr c, .asm_387f0 - - ld b, $6b - call $52ca - - ret nc - -.asm_387f0 - call $5527 - - ret c - dec [hl] - dec [hl] - ret -; 387f7 - - -AIScoring_LeechHit: ; 387f7 - push hl - ld a, $1 - ld [hBattleTurn], a - ld hl, $47c8 - ld a, $d - rst FarCall - - pop hl - ld a, [$d265] - cp $a - jr c, .asm_38815 - - ret z - call $5251 - - ret c - call $5521 - - ret c - dec [hl] - ret - -.asm_38815 - call RNG - - cp $64 - ret c - inc [hl] - ret -; 3881d - - -AIScoring_LockOn: ; 3881d - ld a, [PlayerSubStatus5] - bit 5, a - jr nz, .asm_38882 - - push hl - call $5298 - - jr nc, .asm_38877 - - call $5281 - - jr c, .asm_38834 - - call $5233 - - jr nc, .asm_38877 - - -.asm_38834 - ld a, [PlayerEvaLevel] - cp $a - jr nc, .asm_3887a - - cp $8 - jr nc, .asm_38875 - - ld a, [EnemyAccLevel] - cp $5 - jr c, .asm_3887a - - cp $7 - jr c, .asm_38875 - - ld hl, EnemyMonMove1 - ld c, $5 - -.asm_3884f - dec c - jr z, .asm_38877 - - ld a, [hli] - and a - jr z, .asm_38877 - - call $5508 - - ld a, [EnemyMoveAccuracy] - cp $b4 - jr nc, .asm_3884f - - ld a, $1 - ld [hBattleTurn], a - push hl - push bc - ld a, $d - ld hl, $47c8 - rst FarCall - - ld a, [$d265] - cp $a - pop bc - pop hl - jr c, .asm_3884f - - -.asm_38875 - pop hl - ret - -.asm_38877 - pop hl - inc [hl] - ret - -.asm_3887a - pop hl - call $5527 - - ret c - dec [hl] - dec [hl] - ret - -.asm_38882 - push hl - ld hl, $d1e9 - ld de, EnemyMonMove1 - ld c, $5 - -.asm_3888b - inc hl - dec c - jr z, .asm_388a2 - - ld a, [de] - and a - jr z, .asm_388a2 - - inc de - call $5508 - - ld a, [EnemyMoveAccuracy] - cp $b4 - jr nc, .asm_3888b - - dec [hl] - dec [hl] - jr .asm_3888b - - -.asm_388a2 - pop hl - jp $5503 - -; 388a6 - - -AIScoring_Explosion: ; 388a6 - push hl - ld a, $d - ld hl, $49f4 - rst FarCall - - pop hl - jr nc, .asm_388b7 - - push hl - call $4e2e - - pop hl - jr nz, .asm_388c6 - - -.asm_388b7 - call $5281 - - jr c, .asm_388c6 - - call $5298 - - ret nc - call RNG - - cp $14 - ret c - -.asm_388c6 - inc [hl] - inc [hl] - inc [hl] - ret -; 388ca - - -AIScoring_DreamEater: ; 388ca - call RNG - - cp $19 - ret c - dec [hl] - dec [hl] - dec [hl] - ret -; 388d4 - - -AIScoring_EvasionUp: ; 388d4 - ld a, [EnemyEvaLevel] - cp $d - jp nc, $5503 - - call $5251 - - jr nc, .asm_388f2 - - ld a, [PlayerSubStatus5] - bit 0, a - jr nz, .asm_388ef - - call RNG - - cp $b2 - jr nc, .asm_38911 - - -.asm_388ef - dec [hl] - dec [hl] - ret - -.asm_388f2 - call $5298 - - jr nc, .asm_3890f - - call RNG - - cp $a - jr c, .asm_388ef - - call $5281 - - jr nc, .asm_3890a - - call $5521 - - jr c, .asm_388ef - - jr .asm_38911 - - -.asm_3890a - call $5527 - - jr c, .asm_38911 - - -.asm_3890f - inc [hl] - inc [hl] - -.asm_38911 - ld a, [PlayerSubStatus5] - bit 0, a - jr nz, .asm_38938 - - ld a, [PlayerSubStatus4] - bit 7, a - jr nz, .asm_38941 - - ld a, [EnemyEvaLevel] - ld b, a - ld a, [PlayerAccLevel] - cp b - jr c, .asm_38936 - - ld a, [PlayerFuryCutterCount] - and a - jr nz, .asm_388ef - - ld a, [PlayerSubStatus1] - bit 6, a - jr nz, .asm_388ef - - -.asm_38936 - inc [hl] - ret - -.asm_38938 - call RNG - - cp $50 - ret c - dec [hl] - dec [hl] - ret - -.asm_38941 - call $5527 - - ret c - dec [hl] - ret -; 38947 - - -AIScoring_AlwaysHit: ; 38947 - ld a, [EnemyAccLevel] - cp $5 - jr c, .asm_38954 - - ld a, [PlayerEvaLevel] - cp $a - ret c - -.asm_38954 - call $5521 - - ret c - dec [hl] - dec [hl] - ret -; 3895b - - -AIScoring_MirrorMove: ; 3895b - ld a, [LastEnemyCounterMove] - and a - jr nz, .asm_38968 - - call $5233 - - ret nc - jp $5503 - - -.asm_38968 - push hl - ld hl, $5301 - ld de, $0001 - call IsInArray - - pop hl - ret nc - call $5527 - - ret c - dec [hl] - call $5233 - - ret nc - call RNG - - cp $19 - ret c - dec [hl] - ret -; 38985 - - -AIScoring_AccuracyDown: ; 38985 - call $5246 - - jr nc, .asm_389a0 - - call $5281 - - jr nc, .asm_389a0 - - ld a, [PlayerSubStatus5] - bit 0, a - jr nz, .asm_3899d - - call RNG - - cp $b2 - jr nc, .asm_389bf - - -.asm_3899d - dec [hl] - dec [hl] - ret - -.asm_389a0 - call $52b3 - - jr nc, .asm_389bd - - call RNG - - cp $a - jr c, .asm_3899d - - call $526e - - jr nc, .asm_389b8 - - call $5521 - - jr c, .asm_3899d - - jr .asm_389bf - - -.asm_389b8 - call $5527 - - jr c, .asm_389bf - - -.asm_389bd - inc [hl] - inc [hl] - -.asm_389bf - ld a, [PlayerSubStatus5] - bit 0, a - jr nz, .asm_389e6 - - ld a, [PlayerSubStatus4] - bit 7, a - jr nz, .asm_389ef - - ld a, [EnemyEvaLevel] - ld b, a - ld a, [PlayerAccLevel] - cp b - jr c, .asm_389e4 - - ld a, [PlayerFuryCutterCount] - and a - jr nz, .asm_3899d - - ld a, [PlayerSubStatus1] - bit 6, a - jr nz, .asm_3899d - - -.asm_389e4 - inc [hl] - ret - -.asm_389e6 - call RNG - - cp $50 - ret c - dec [hl] - dec [hl] - ret - -.asm_389ef - call $5527 - - ret c - dec [hl] - ret -; 389f5 - - -AIScoring_Haze: ; 389f5 - push hl - ld hl, EnemyAtkLevel - ld c, $8 - -.asm_389fb - dec c - jr z, .asm_38a05 - - ld a, [hli] - cp $5 - jr c, .asm_38a12 - - jr .asm_389fb - - -.asm_38a05 - ld hl, PlayerAtkLevel - ld c, $8 - -.asm_38a0a - dec c - jr z, .asm_38a1b - - ld a, [hli] - cp $a - jr c, .asm_38a0a - - -.asm_38a12 - pop hl - call RNG - - cp $28 - ret c - dec [hl] - ret - -.asm_38a1b - pop hl - inc [hl] - ret -; 38a1e - - -AIScoring_Bide: ; 38a1e - call $5251 - - ret c - call RNG - - cp $19 - ret c - inc [hl] - ret -; 38a2a - - -AIScoring_Whirlwind: ; 38a2a - push hl - ld hl, $484e - ld a, $d - rst FarCall - - ld a, [$c716] - cp $a - pop hl - ret c - inc [hl] - ret -; 38a3a - - -AIScoring_Heal: -AIScoring_MorningSun: -AIScoring_Synthesis: -AIScoring_Moonlight: ; 38a3a - call $5298 - - jr nc, .asm_38a45 - - call $5281 - - ret nc - inc [hl] - ret - -.asm_38a45 - call RNG - - cp $19 - ret c - dec [hl] - dec [hl] - ret -; 38a4e - - -AIScoring_Toxic: -AIScoring_LeechSeed: ; 38a4e - call $526e - - ret c - inc [hl] - ret -; 38a54 - - -AIScoring_LightScreen: -AIScoring_Reflect: ; 38a54 - call $5251 - - ret c - call RNG - - cp $14 - ret c - inc [hl] - ret -; 38a60 - - -AIScoring_Ohko: ; 38a60 - ld a, [BattleMonLevel] - ld b, a - ld a, [EnemyMonLevel] - cp b - jp c, $5503 - - call $526e - - ret c - inc [hl] - ret -; 38a71 - - -AIScoring_Bind: ; 38a71 - ld a, [$c730] - and a - jr nz, .asm_38a8b - - ld a, [PlayerSubStatus5] - bit 0, a - jr nz, .asm_38a91 - - ld a, [PlayerSubStatus1] - and $c9 - jr nz, .asm_38a91 - - ld a, [PlayerTurnsTaken] - and a - jr z, .asm_38a91 - - -.asm_38a8b - call $5527 - - ret c - inc [hl] - ret - -.asm_38a91 - call $5298 - - ret nc - call $5527 - - ret c - dec [hl] - dec [hl] - ret -; 38a9c - - -AIScoring_RazorWind: -AIScoring_Unused2B: ; 38a9c - ld a, [EnemySubStatus1] - bit 4, a - jr z, .asm_38aaa - - ld a, [EnemyPerishCount] - cp $3 - jr c, .asm_38ad3 - - -.asm_38aaa - push hl - ld hl, PlayerUsedMoves - ld c, $4 - -.asm_38ab0 - ld a, [hli] - and a - jr z, .asm_38ac1 - - call $5508 - - ld a, [EnemyMoveEffect] - cp $6f - jr z, .asm_38ad5 - - dec c - jr nz, .asm_38ab0 - - -.asm_38ac1 - pop hl - ld a, [EnemySubStatus3] - bit 7, a - jr nz, .asm_38acd - - call $5281 - - ret c - -.asm_38acd - call RNG - - cp $c8 - ret c - -.asm_38ad3 - inc [hl] - ret - -.asm_38ad5 - pop hl - ld a, [hl] - add $6 - ld [hl], a - ret -; 38adb - - -AIScoring_Confuse: ; 38adb - call $526e - - ret c - call RNG - - cp $19 - jr c, .asm_38ae7 - - inc [hl] - -.asm_38ae7 - call $52b3 - - ret c - inc [hl] - ret -; 38aed - - -AIScoring_SpDefenseUp2: ; 38aed - call $5281 - - jr nc, .asm_38b10 - - ld a, [EnemySDefLevel] - cp $b - jr nc, .asm_38b10 - - cp $9 - ret nc - ld a, [BattleMonType1] - cp $14 - jr nc, .asm_38b09 - - ld a, [BattleMonType2] - cp $14 - ret c - -.asm_38b09 - call $5521 - - ret c - dec [hl] - dec [hl] - ret - -.asm_38b10 - inc [hl] - ret -; 38b12 - - -AIScoring_Fly: ; 38b12 - ld a, [PlayerSubStatus3] - and $60 - ret z - call $5233 - - ret nc - dec [hl] - dec [hl] - dec [hl] - ret -; 38b20 - - -AIScoring_SuperFang: ; 38b20 - call $52b3 - - ret c - inc [hl] - ret -; 38b26 - - -AIScoring_Paralyze: ; 38b26 - call $52b3 - - jr nc, .asm_38b3a - - call $5233 - - ret c - call $5298 - - ret nc - call $5521 - - ret c - dec [hl] - dec [hl] - ret - -.asm_38b3a - call $5527 - - ret c - inc [hl] - ret -; 38b40 - - -AIScoring_SpeedDownHit: ; 38b40 - ld a, [EnemyMoveAnimation] - cp $c4 - ret nz - call $5298 - - ret nc - ld a, [PlayerTurnsTaken] - and a - ret nz - call $5233 - - ret c - call RNG - - cp $1e - ret c - dec [hl] - dec [hl] - ret -; 38b5c - - -AIScoring_Substitute: ; 38b5c - call $5281 - - ret c - jp $5503 - -; 38b63 - - -AIScoring_HyperBeam: ; 38b63 - call $5281 - - jr c, .asm_38b72 - - call $5298 - - ret c - call $5527 - - ret c - dec [hl] - ret - -.asm_38b72 - call RNG - - cp $28 - ret c - inc [hl] - call $5527 - - ret c - inc [hl] - ret -; 38b7f - - -AIScoring_Rage: ; 38b7f - ld a, [EnemySubStatus4] - bit 6, a - jr z, .asm_38b9b - - call $5527 - - jr c, .asm_38b8c - - dec [hl] - -.asm_38b8c - ld a, [$c72c] - cp $2 - ret c - dec [hl] - ld a, [$c72c] - cp $3 - ret c - dec [hl] - ret - -.asm_38b9b - call $5281 - - jr nc, .asm_38ba6 - - call $5521 - - ret nc - dec [hl] - ret - -.asm_38ba6 - inc [hl] - ret -; 38ba8 - - -AIScoring_Mimic: ; 38ba8 - ld a, [LastEnemyCounterMove] - and a - jr z, .asm_38be9 - - call $5281 - - jr nc, .asm_38bef - - push hl - ld a, [LastEnemyCounterMove] - call $5508 - - ld a, $1 - ld [hBattleTurn], a - ld hl, $47c8 - ld a, $d - rst FarCall - - ld a, [$d265] - cp $a - pop hl - jr c, .asm_38bef - - jr z, .asm_38bd4 - - call $5527 - - jr c, .asm_38bd4 - - dec [hl] - -.asm_38bd4 - ld a, [LastEnemyCounterMove] - push hl - ld hl, $5301 - ld de, $0001 - call IsInArray - - pop hl - ret nc - call $5527 - - ret c - dec [hl] - ret - -.asm_38be9 - call $5233 - - jp c, $5503 - - -.asm_38bef - inc [hl] - ret -; 38bf1 - - -AIScoring_Counter: ; 38bf1 - push hl - ld hl, PlayerUsedMoves - ld c, $4 - ld b, $0 - -.asm_38bf9 - ld a, [hli] - and a - jr z, .asm_38c0e - - call $5508 - - ld a, [EnemyMovePower] - and a - jr z, .asm_38c0e - - ld a, [EnemyMoveType] - cp $14 - jr nc, .asm_38c0e - - inc b - -.asm_38c0e - dec c - jr nz, .asm_38bf9 - - pop hl - ld a, b - and a - jr z, .asm_38c39 - - cp $3 - jr nc, .asm_38c30 - - ld a, [LastEnemyCounterMove] - and a - jr z, .asm_38c38 - - call $5508 - - ld a, [EnemyMovePower] - and a - jr z, .asm_38c38 - - ld a, [EnemyMoveType] - cp $14 - jr nc, .asm_38c38 - - -.asm_38c30 - call RNG - - cp $64 - jr c, .asm_38c38 - - dec [hl] - -.asm_38c38 - ret - -.asm_38c39 - inc [hl] - ret -; 38c3b - - -AIScoring_Encore: ; 38c3b - call $5233 - - jr nc, .asm_38c81 - - ld a, [LastPlayerMove] - and a - jp z, $5503 - - call $5508 - - ld a, [EnemyMovePower] - and a - jr z, .asm_38c68 - - push hl - ld a, [EnemyMoveType] - ld hl, EnemyMonType1 - ld a, $41 - call Predef - - pop hl - ld a, [$d265] - cp $a - jr nc, .asm_38c68 - - and a - ret nz - jr .asm_38c78 - - -.asm_38c68 - push hl - ld a, [LastEnemyCounterMove] - ld hl, $4c85 - ld de, $0001 - call IsInArray - - pop hl - jr nc, .asm_38c81 - - -.asm_38c78 - call RNG - - cp $46 - ret c - dec [hl] - dec [hl] - ret - -.asm_38c81 - inc [hl] - inc [hl] - inc [hl] - ret -; 38c85 - - - -INCBIN "baserom.gbc", $38c85, $38ca4 - $38c85 - - - -AIScoring_PainSplit: ; 38ca4 - push hl - ld hl, EnemyMonHPHi - ld b, [hl] - inc hl - ld c, [hl] - sla c - rl b - ld hl, $c63d - ld a, [hld] - cp c - ld a, [hl] - sbc b - pop hl - ret nc - inc [hl] - ret -; 38cba - - -AIScoring_Snore: -AIScoring_SleepTalk: ; 38cba - ld a, [EnemyMonStatus] - and $7 - cp $1 - jr z, .asm_38cc7 - - dec [hl] - dec [hl] - dec [hl] - ret - -.asm_38cc7 - inc [hl] - inc [hl] - inc [hl] - ret -; 38ccb - - -AIScoring_DefrostOpponent: ; 38ccb - ld a, [EnemyMonStatus] - and $20 - ret z - dec [hl] - dec [hl] - dec [hl] - ret -; 38cd5 - - -AIScoring_Spite: ; 38cd5 - ld a, [LastEnemyCounterMove] - and a - jr nz, .asm_38ce7 - - call $5233 - - jp c, $5503 - - call $5527 - - ret c - inc [hl] - ret - -.asm_38ce7 - push hl - ld b, a - ld c, $4 - ld hl, BattleMonMove1 - ld de, BattleMonPPMove1 - -.asm_38cf1 - ld a, [hli] - cp b - jr z, .asm_38cfb - - inc de - dec c - jr nz, .asm_38cf1 - - pop hl - ret - -.asm_38cfb - pop hl - ld a, [de] - cp $6 - jr c, .asm_38d0d - - cp $f - jr nc, .asm_38d0b - - call RNG - - cp $64 - ret nc - -.asm_38d0b - inc [hl] - ret - -.asm_38d0d - call RNG - - cp $64 - ret c - dec [hl] - dec [hl] - ret -; 38d16 - - - -INCBIN "baserom.gbc", $38d16, $38d19 - $38d16 - - - -AIScoring_DestinyBond: -AIScoring_Reversal: -AIScoring_SkullBash: ; 38d19 - call $5298 - - ret nc - inc [hl] - ret -; 38d1f - - -AIScoring_HealBell: ; 38d1f - push hl - ld a, [OTPartyCount] - ld b, a - ld c, $0 - ld hl, OTPartyMon1CurHP - ld de, $0030 - -.asm_38d2c - push hl - ld a, [hli] - or [hl] - jr z, .asm_38d37 - - dec hl - dec hl - dec hl - ld a, [hl] - or c - ld c, a - -.asm_38d37 - pop hl - add hl, de - dec b - jr nz, .asm_38d2c - - pop hl - ld a, c - and a - jr z, .asm_38d52 - - ld a, [EnemyMonStatus] - and a - jr z, .asm_38d48 - - dec [hl] - -.asm_38d48 - and $27 - ret z - call $5527 - - ret c - dec [hl] - dec [hl] - ret - -.asm_38d52 - ld a, [EnemyMonStatus] - and a - ret nz - jp $5503 - -; 38d5a - - -AIScoring_PriorityHit: ; 38d5a - call $5233 - - ret c - ld a, [PlayerSubStatus3] - and $60 - jp nz, $5503 - - ld a, $1 - ld [hBattleTurn], a - push hl - ld hl, $53f6 - ld a, $d - rst FarCall - - ld hl, $5612 - ld a, $d - rst FarCall - - ld hl, $46d2 - ld a, $d - rst FarCall - - pop hl - ld a, [$d257] - ld c, a - ld a, [CurDamage] - ld b, a - ld a, [$c63d] - cp c - ld a, [BattleMonHP] - sbc b - ret nc - dec [hl] - dec [hl] - dec [hl] - ret -; 38d93 - - -AIScoring_Thief: ; 38d93 - ld a, [hl] - add $1e - ld [hl], a - ret -; 38d98 - - -AIScoring_Conversion2: ; 38d98 - ld a, [LastPlayerMove] - and a - jr nz, .asm_38dc9 - - push hl - dec a - ld hl, $5afe - ld bc, $0007 - call AddNTimes - - ld a, $10 - call GetFarByte - - ld [PlayerMoveType], a - xor a - ld [hBattleTurn], a - ld hl, $47c8 - ld a, $d - rst FarCall - - ld a, [$d265] - cp $a - pop hl - jr c, .asm_38dc9 - - ret z - call $5527 - - ret c - dec [hl] - ret - -.asm_38dc9 - call RNG - - cp $19 - ret c - inc [hl] - ret -; 38dd1 - - -AIScoring_Disable: ; 38dd1 - call $5233 - - jr nc, .asm_38df3 - - push hl - ld a, [LastEnemyCounterMove] - ld hl, $5301 - ld de, $0001 - call IsInArray - - pop hl - jr nc, .asm_38dee - - call RNG - - cp $64 - ret c - dec [hl] - ret - -.asm_38dee - ld a, [EnemyMovePower] - and a - ret nz - -.asm_38df3 - call RNG - - cp $14 - ret c - inc [hl] - ret -; 38dfb - - -AIScoring_MeanLook: ; 38dfb - call $5281 - - jr nc, .asm_38e24 - - push hl - call $4e2e - - pop hl - jp z, $5503 - - ld a, [EnemySubStatus5] - bit 0, a - jr nz, .asm_38e26 - - ld a, [PlayerSubStatus1] - and $c9 - jr nz, .asm_38e26 - - push hl - ld hl, $484e - ld a, $d - rst FarCall - - ld a, [$c716] - cp $b - pop hl - ret nc - -.asm_38e24 - inc [hl] - ret - -.asm_38e26 - call $5521 - - ret c - dec [hl] - dec [hl] - dec [hl] - ret -; 38e2e - - - -INCBIN "baserom.gbc", $38e2e, $38e4a - $38e2e - - - -AIScoring_Nightmare: ; 38e4a - call $5527 - - ret c - dec [hl] - ret -; 38e50 - - -AIScoring_FlameWheel: ; 38e50 - ld a, [EnemyMonStatus] - bit 5, a - ret z - dec [hl] - dec [hl] - dec [hl] - dec [hl] - dec [hl] - ret -; 38e5c - - -AIScoring_Curse: ; 38e5c - ld a, [EnemyMonType1] - cp $8 - jr z, .asm_38e95 - - ld a, [EnemyMonType2] - cp $8 - jr z, .asm_38e95 - - call $5281 - - jr nc, .asm_38e93 - - ld a, [EnemyAtkLevel] - cp $b - jr nc, .asm_38e93 - - cp $9 - ret nc - ld a, [BattleMonType1] - cp $8 - jr z, .asm_38e92 - - cp $14 - ret nc - ld a, [BattleMonType2] - cp $14 - ret nc - call $5521 - - ret c - dec [hl] - dec [hl] - ret - -.asm_38e90 - inc [hl] - inc [hl] - -.asm_38e92 - inc [hl] - -.asm_38e93 - inc [hl] - ret - -.asm_38e95 - ld a, [PlayerSubStatus1] - bit 1, a - jp nz, $5503 - - push hl - ld a, $d - ld hl, $49f4 - rst FarCall - - pop hl - jr nc, .asm_38eb0 - - push hl - call $4e2e - - pop hl - jr nz, .asm_38e90 - - jr .asm_38eb7 - - -.asm_38eb0 - push hl - call $4e2e - - pop hl - jr z, .asm_38ecb - - -.asm_38eb7 - call $5298 - - jp nc, $4e90 - - call $5281 - - jr nc, .asm_38e92 - - call $5251 - - ret nc - ld a, [PlayerTurnsTaken] - and a - ret nz - -.asm_38ecb - call $5527 - - ret c - dec [hl] - dec [hl] - ret -; 38ed2 - - -AIScoring_Protect: ; 38ed2 - ld a, [$c681] - and a - jr nz, .asm_38f13 - - ld a, [PlayerSubStatus5] - bit 5, a - jr nz, .asm_38f14 - - ld a, [PlayerFuryCutterCount] - cp $3 - jr nc, .asm_38f0d - - ld a, [PlayerSubStatus3] - bit 4, a - jr nz, .asm_38f0d - - ld a, [PlayerSubStatus5] - bit 0, a - jr nz, .asm_38f0d - - ld a, [PlayerSubStatus4] - bit 7, a - jr nz, .asm_38f0d - - ld a, [PlayerSubStatus1] - bit 1, a - jr nz, .asm_38f0d - - bit 6, a - jr z, .asm_38f14 - - ld a, [PlayerRolloutCount] - cp $3 - jr c, .asm_38f14 - - -.asm_38f0d - call $5521 - - ret c - dec [hl] - ret - -.asm_38f13 - inc [hl] - -.asm_38f14 - call RNG - - cp $14 - ret c - inc [hl] - inc [hl] - ret -; 38f1d - - -AIScoring_Foresight: ; 38f1d - ld a, [EnemyAccLevel] - cp $5 - jr c, .asm_38f41 - - ld a, [PlayerEvaLevel] - cp $a - jr nc, .asm_38f41 - - ld a, [BattleMonType1] - cp $8 - jr z, .asm_38f41 - - ld a, [BattleMonType2] - cp $8 - jr z, .asm_38f41 - - call RNG - - cp $14 - ret c - inc [hl] - ret - -.asm_38f41 - call RNG - - cp $64 - ret c - dec [hl] - dec [hl] - ret -; 38f4a - - -AIScoring_PerishSong: ; 38f4a - push hl - ld hl, $49f4 - ld a, $d - rst FarCall - - pop hl - jr c, .asm_38f75 - - ld a, [PlayerSubStatus5] - bit 7, a - jr nz, .asm_38f6f - - push hl - ld hl, $484e - ld a, $d - rst FarCall - - ld a, [$c716] - cp $a - pop hl - ret c - call $5527 - - ret c - inc [hl] - ret - -.asm_38f6f - call $5527 - - ret c - dec [hl] - ret - -.asm_38f75 - ld a, [hl] - add $5 - ld [hl], a - ret -; 38f7a - - -AIScoring_Sandstorm: ; 38f7a - ld a, [BattleMonType1] - push hl - ld hl, $4fa8 - ld de, $0001 - call IsInArray - - pop hl - jr c, .asm_38fa5 - - ld a, [BattleMonType2] - push hl - ld hl, $4fa8 - ld de, $0001 - call IsInArray - - pop hl - jr c, .asm_38fa5 - - call $526e - - jr nc, .asm_38fa6 - - call $5527 - - ret c - dec [hl] - ret - -.asm_38fa5 - inc [hl] - -.asm_38fa6 - inc [hl] - ret -; 38fa8 - - - -INCBIN "baserom.gbc", $38fa8, $38fac - $38fa8 - - - -AIScoring_Endure: ; 38fac - ld a, [$c681] - and a - jr nz, .asm_38fd8 - - call $5251 - - jr c, .asm_38fd8 - - call $5298 - - jr c, .asm_38fd9 - - ld b, $63 - call $52ca - - jr nc, .asm_38fcb - - call $5521 - - ret c - dec [hl] - dec [hl] - dec [hl] - ret - -.asm_38fcb - ld a, [EnemySubStatus5] - bit 5, a - ret z - call $5527 - - ret c - dec [hl] - dec [hl] - ret - -.asm_38fd8 - inc [hl] - -.asm_38fd9 - inc [hl] - ret -; 38fdb - - -AIScoring_FuryCutter: ; 38fdb - ld a, [EnemyFuryCutterCount] - and a - jr z, AIScoring_Rollout - - dec [hl] - cp $2 - jr c, AIScoring_Rollout - - dec [hl] - dec [hl] - cp $3 - jr c, AIScoring_Rollout - - dec [hl] - dec [hl] - dec [hl] - - ; fallthrough -; 38fef - - -AIScoring_Rollout: ; 38fef - ld a, [EnemySubStatus1] - bit 7, a - jr nz, .asm_39020 - - ld a, [EnemySubStatus3] - bit 7, a - jr nz, .asm_39020 - - ld a, [EnemyMonStatus] - bit 6, a - jr nz, .asm_39020 - - call $5298 - - jr nc, .asm_39020 - - ld a, [EnemyAccLevel] - cp $7 - jr c, .asm_39020 - - ld a, [PlayerEvaLevel] - cp $8 - jr nc, .asm_39020 - - call RNG - - cp $c8 - ret nc - dec [hl] - dec [hl] - ret - -.asm_39020 - call $5521 - - ret c - inc [hl] - ret -; 39026 - - -AIScoring_Swagger: -AIScoring_Attract: ; 39026 - ld a, [PlayerTurnsTaken] - and a - jr z, .asm_39032 - - call $5521 - - ret c - inc [hl] - ret - -.asm_39032 - call RNG - - cp $c8 - ret nc - dec [hl] - ret -; 3903a - - -AIScoring_Safeguard: ; 3903a - call $526e - - ret c - call $5521 - - ret c - inc [hl] - ret -; 39044 - - -AIScoring_Magnitude: -AIScoring_Earthquake: ; 39044 - ld a, [LastEnemyCounterMove] - cp $5b - ret nz - ld a, [PlayerSubStatus3] - bit 5, a - jr z, .asm_39058 - - call $5233 - - ret nc - dec [hl] - dec [hl] - ret - -.asm_39058 - call $5233 - - ret c - call $5527 - - ret c - dec [hl] - ret -; 39062 - - -AIScoring_BatonPass: ; 39062 - push hl - ld hl, $484e - ld a, $d - rst FarCall - - ld a, [$c716] - cp $a - pop hl - ret c - inc [hl] - ret -; 39072 - - -AIScoring_Pursuit: ; 39072 - call $52b3 - - jr nc, .asm_3907d - - call $5521 - - ret c - inc [hl] - ret - -.asm_3907d - call $5527 - - ret c - dec [hl] - dec [hl] - ret -; 39084 - - -AIScoring_RapidSpin: ; 39084 - ld a, [$c731] - and a - jr nz, .asm_39097 - - ld a, [EnemySubStatus4] - bit 7, a - jr nz, .asm_39097 - - ld a, [EnemyScreens] - bit 0, a - ret z - -.asm_39097 - call $5521 - - ret c - dec [hl] - dec [hl] - ret -; 3909e - - -AIScoring_HiddenPower: ; 3909e - push hl - ld a, $1 - ld [hBattleTurn], a - ld hl, $7ced - ld a, $3e - rst FarCall - - ld hl, $47c8 - ld a, $d - rst FarCall - - pop hl - ld a, [$d265] - cp $a - jr c, .asm_390c9 - - ld a, d - cp $32 - jr c, .asm_390c9 - - ld a, [$d265] - cp $b - jr nc, .asm_390c7 - - ld a, d - cp $46 - ret c - -.asm_390c7 - dec [hl] - ret - -.asm_390c9 - inc [hl] - ret -; 390cb - - -AIScoring_RainDance: ; 390cb - ld a, [BattleMonType1] - cp $15 - jr z, Function_0x3911e - - cp $14 - jr z, Function_0x39122 - - ld a, [BattleMonType2] - cp $15 - jr z, Function_0x3911e - - cp $14 - jr z, Function_0x39122 - - push hl - ld hl, $50e7 - jr Function_0x3910d -; 390e7 - - - -INCBIN "baserom.gbc", $390e7, $390f3 - $390e7 - - - -AIScoring_SunnyDay: ; 390f3 - ld a, [BattleMonType1] - cp $14 - jr z, Function_0x3911e - - cp $15 - jr z, Function_0x39122 - - ld a, [BattleMonType2] - cp $14 - jr z, Function_0x3911e - - cp $15 - jr z, Function_0x39122 - - push hl - ld hl, $5134 - - ; fallthrough -; 3910d - - -Function_0x3910d: ; 3910d - call $52e6 - - pop hl - jr nc, Function_0x3911e - - call $526e - - jr nc, Function_0x3911e - - call $5527 - - ret c - dec [hl] - ret - -Function_0x3911e: ; 3911e - inc [hl] - inc [hl] - inc [hl] - ret - -Function_0x39122: ; 39122 - call $526e - - ret nc - ld a, [PlayerTurnsTaken] - and a - jr z, .asm_39131 - - ld a, [EnemyTurnsTaken] - and a - ret nz - -.asm_39131 - dec [hl] - dec [hl] - ret -; 39134 - - - -INCBIN "baserom.gbc", $39134, $3913d - $39134 - - - -AIScoring_BellyDrum: ; 3913d - ld a, [EnemyAtkLevel] - cp $a - jr nc, .asm_3914d - - call $5251 - - ret c - inc [hl] - call $5281 - - ret c - -.asm_3914d - ld a, [hl] - add $5 - ld [hl], a - ret -; 39152 - - -AIScoring_PsychUp: ; 39152 - push hl - ld hl, EnemyAtkLevel - ld b, $8 - ld c, $64 - -.asm_3915a - ld a, [hli] - sub $7 - add c - ld c, a - dec b - jr nz, .asm_3915a - - ld hl, PlayerAtkLevel - ld b, $8 - ld d, $64 - -.asm_39169 - ld a, [hli] - sub $7 - add d - ld d, a - dec b - jr nz, .asm_39169 - - ld a, c - sub d - pop hl - jr nc, .asm_39188 - - ld a, [PlayerAccLevel] - cp $6 - ret c - ld a, [EnemyEvaLevel] - cp $8 - ret nc - call $5521 - - ret c - dec [hl] - ret - -.asm_39188 - inc [hl] - inc [hl] - ret -; 3918b - - -AIScoring_MirrorCoat: ; 3918b - push hl - ld hl, PlayerUsedMoves - ld c, $4 - ld b, $0 - -.asm_39193 - ld a, [hli] - and a - jr z, .asm_391a8 - - call $5508 - - ld a, [EnemyMovePower] - and a - jr z, .asm_391a8 - - ld a, [EnemyMoveType] - cp $14 - jr c, .asm_391a8 - - inc b - -.asm_391a8 - dec c - jr nz, .asm_39193 - - pop hl - ld a, b - and a - jr z, .asm_391d3 - - cp $3 - jr nc, .asm_391ca - - ld a, [LastEnemyCounterMove] - and a - jr z, .asm_391d2 - - call $5508 - - ld a, [EnemyMovePower] - and a - jr z, .asm_391d2 - - ld a, [EnemyMoveType] - cp $14 - jr c, .asm_391d2 - - -.asm_391ca - call RNG - - cp $64 - jr c, .asm_391d2 - - dec [hl] - -.asm_391d2 - ret - -.asm_391d3 - inc [hl] - ret -; 391d5 - - -AIScoring_Twister: -AIScoring_Gust: ; 391d5 - ld a, [LastEnemyCounterMove] - cp $13 - ret nz - ld a, [PlayerSubStatus3] - bit 6, a - jr z, .asm_391e9 - - call $5233 - - ret nc - dec [hl] - dec [hl] - ret - -.asm_391e9 - call $5233 - - ret c - call $5527 - - ret c - dec [hl] - ret -; 391f3 - - -AIScoring_FutureSight: ; 391f3 - call $5233 - - ret nc - ld a, [PlayerSubStatus3] - and $60 - ret z - dec [hl] - dec [hl] - ret -; 39200 - - -AIScoring_Stomp: ; 39200 - ld a, [$c6fe] - and a - ret z - call $5521 - - ret c - dec [hl] - ret -; 3920b - - -AIScoring_Solarbeam: ; 3920b - ld a, [Weather] - cp $2 - jr z, .asm_3921e - - cp $1 - ret nz - call RNG - - cp $19 - ret c - inc [hl] - inc [hl] - ret - -.asm_3921e - call $5521 - - ret c - dec [hl] - dec [hl] - ret -; 39225 - - -AIScoring_Thunder: ; 39225 - ld a, [Weather] - cp $2 - ret nz - call RNG - - cp $19 - ret c - inc [hl] - ret -; 39233 - - - -INCBIN "baserom.gbc", $39233, $39315 - $39233 - - - -Function_0x39315: ; 39315 - call $5281 - ret c - - call $5298 - jr nc, .asm_39322 - - call $5527 - ret c - -.asm_39322 - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld c, EnemyMonMovesEnd - EnemyMonMoves + 1 -.asm_3932a - inc hl - dec c - jr z, .asm_39347 - - ld a, [de] - inc de - and a - jr z, .asm_39347 - - push hl - push de - push bc - ld hl, .table_39348 - ld de, 1 - call IsInArray - - pop bc - pop de - pop hl - jr nc, .asm_3932a - - inc [hl] - jr .asm_3932a - -.asm_39347 - ret - -.table_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 $ff -; 39369 - - - -Function_0x39369: ; 39369 - ld hl, EnemyMonMoves - ld bc, 0 - ld de, 0 -.asm_39372 - inc b - ld a, b - cp EnemyMonMovesEnd - EnemyMonMoves + 1 - jr z, .asm_393a8 - - ld a, [hli] - and a - jr z, .asm_393a8 - - push hl - push de - push bc - call $5508 - - ld a, [EnemyMovePower] - and a - jr z, .asm_393a3 - - call $53e7 - - pop bc - pop de - pop hl - ld a, [CurDamage + 1] - cp e - ld a, [CurDamage] - sbc d - jr c, .asm_39372 - - ld a, [CurDamage + 1] - ld e, a - ld a, [CurDamage] - ld d, a - ld c, b - jr .asm_39372 - -.asm_393a3 - pop bc - pop de - pop hl - jr .asm_39372 - -.asm_393a8 - ld a, c - and a - jr z, .asm_393e1 - - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld b, $0 -.asm_393b4 - inc b - ld a, b - cp EnemyMonMovesEnd - EnemyMonMoves + 1 - jr z, .asm_393e1 - - cp c - ld a, [de] - inc de - inc hl - jr z, .asm_393b4 - - call $5508 - - ld a, [EnemyMovePower] - cp $2 - jr c, .asm_393b4 - - push hl - push de - push bc - ld a, [EnemyMoveEffect] - ld hl, $53e2 - ld de, 1 - call IsInArray - - pop bc - pop de - pop hl - jr c, .asm_393b4 - - inc [hl] - jr .asm_393b4 - -.asm_393e1 - ret - -; 393e2 - - -INCBIN "baserom.gbc", $393e2, $39418 - $393e2 - - -Function_0x39418: ; 39418 - ld a, [EnemyTurnsTaken] - and a - ret z - - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld c, EnemyMonMovesEnd - EnemyMonMoves + 1 -.asm_39425 - inc hl - dec c - ret z - - ld a, [de] - inc de - and a - ret z - - push hl - push de - push bc - ld hl, .table_39446 - ld de, 1 - call IsInArray - - pop bc - pop de - pop hl - jr nc, .asm_39425 - - call RNG - cp $e6 - ret nc - - inc [hl] - jr .asm_39425 - -.table_39446 - 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 $ff -; 39453 - - - -Function_0x39453: ; 39453 - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld b, EnemyMonMovesEnd - EnemyMonMoves + 1 -.asm_3945b - dec b - ret z - - inc hl - ld a, [de] - and a - ret z - - inc de - call $5508 - - ld a, [EnemyMoveEffect] - cp EFFECT_TOXIC - jr z, .asm_39480 - cp EFFECT_POISON - jr z, .asm_39480 - cp EFFECT_SLEEP - jr z, .asm_3948e - cp EFFECT_PARALYZE - jr z, .asm_3948e - - ld a, [EnemyMovePower] - and a - jr z, .asm_3945b - - jr .asm_3948e - -.asm_39480 - ld a, [BattleMonType1] - cp POISON - jr z, .asm_394a4 - ld a, [BattleMonType2] - cp POISON - jr z, .asm_394a4 - -.asm_3948e - push hl - push bc - push de - - ld a, 1 - ld [hBattleTurn], a - - ld hl, $47c8 - ld a, $d - rst FarCall - - pop de - pop bc - pop hl - - ld a, [$d265] - and a - jr nz, .asm_3945b - -.asm_394a4 - call $5503 - jr .asm_3945b -; 394a9 - - - -Function_0x394a9: ; 394a9 - ld hl, Buffer1 - 1 - ld de, EnemyMonMoves - ld c, EnemyMonMovesEnd - EnemyMonMoves + 1 -.asm_394b1 - inc hl - dec c - ret z - - ld a, [de] - inc de - and a - ret z - - push de - push bc - push hl - call $5508 - - ld a, [EnemyMovePower] - and a - jr z, .asm_394fa - - ld a, [EnemyMoveEffect] - ld de, 1 - ld hl, .table_394ff - call IsInArray - jr nc, .asm_394de - - call $5251 - jr c, .asm_394fa - - call RNG - cp $c8 - jr c, .asm_394fa - -.asm_394de - call $53e7 - - ld a, [CurDamage + 1] - ld e, a - ld a, [CurDamage] - ld d, a - ld a, [BattleMonHP + 1] - cp e - ld a, [BattleMonHP] - sbc d - jr nc, .asm_394fa - - pop hl - dec [hl] - dec [hl] - dec [hl] - dec [hl] - dec [hl] - push hl -.asm_394fa - pop hl - pop bc - pop de - jr .asm_394b1 - -.table_394ff - db EFFECT_EXPLOSION - db EFFECT_OHKO - db $ff -; 39502 - - - -Function_0x39502: ; 39502 - ret -; 39503 - - -INCBIN "baserom.gbc", $39503, $39999 - $39503 +AIScoring: ; 38591 +INCLUDE "battle/ai/scoring.asm" TrainerGroups: ; 0x39999 @@ -11569,7 +8436,7 @@ AIChooseMove: ; 440ce ld a, [hli] ld h, [hl] ld l, a - ld a, $e ; bank + ld a, BANK(AIScoring) call FarJpHl jr .CheckLayer |