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