shithub: pokecrystal

Download patch

ref: 3beab7dd925fc9a25670acde6076cd146a3f9a2c
parent: c82216441a68d5598a213a27ed63ee12866057b4
author: yenatch <yenatch@gmail.com>
date: Sun May 5 15:56:17 EDT 2013

move ai scoring out of main.asm

--- /dev/null
+++ b/battle/ai/scoring.asm
@@ -1,0 +1,3136 @@
+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
+
--- a/main.asm
+++ b/main.asm
@@ -7135,3143 +7135,10 @@
 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
+AIScoring: ; 38591
+INCLUDE "battle/ai/scoring.asm"
 
-	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
-
-
 TrainerGroups: ; 0x39999
 INCLUDE "trainers/trainer_pointers.asm"
 
@@ -11569,7 +8436,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	ld a, $e ; bank
+	ld a, BANK(AIScoring)
 	call FarJpHl
 
 	jr .CheckLayer
--