More AI commentary/labels

This commit is contained in:
xCrystal 2014-10-22 17:36:42 +02:00
parent bf60a6b690
commit bb9818e3c3

View File

@ -70,8 +70,8 @@ AIScoring_RedStatus: ; 38591
AIScoring_RedStatMods: ; 385e0 AIScoring_RedStatMods: ; 385e0
; 50% chance to greatly encourage stat-up moves during enemy's first turn. ; 50% chance to greatly encourage stat-up moves during the first turn of enemy's Pokemon.
; 50% chance to greatly encourage stat-down moves during player's first turn. ; 50% chance to greatly encourage stat-down moves during the first turn of player's Pokemon.
; Almost 90% chance to greatly discourage stat-modifying moves otherwise. ; Almost 90% chance to greatly discourage stat-modifying moves otherwise.
ld hl, Buffer1 - 1 ld hl, Buffer1 - 1
@ -561,6 +561,7 @@ AIScoring_LockOn: ; 3881d
AIScoring_Explosion: ; 388a6 AIScoring_Explosion: ; 388a6
; Selfdestruct, Explosion
; Unless this is the enemy's last Pokemon... ; Unless this is the enemy's last Pokemon...
push hl push hl
@ -954,14 +955,16 @@ AIScoring_Bide: ; 38a1e
AIScoring_Whirlwind: ; 38a2a AIScoring_Whirlwind: ; 38a2a
; Whirlwind, Roar.
; Discourage this move if the player has not shown ; Discourage this move if the player has not shown
; a super-effective move against the enemy. ; a super-effective move against the enemy.
; Consider player's type if its moves are unknown. ; Consider player's type(s) if its moves are unknown.
push hl push hl
callab Function3484e callab Function3484e
ld a, [$c716] ld a, [$c716]
cp $a cp 10 ; neutral
pop hl pop hl
ret c ret c
inc [hl] inc [hl]
@ -1020,7 +1023,7 @@ AIScoring_Reflect: ; 38a54
AIScoring_Ohko: ; 38a60 AIScoring_Ohko: ; 38a60
; Dismiss this move if player's level is higher than enemy's level ; Dismiss this move if player's level is higher than enemy's level.
; Otherwise, discourage this move is player's HP is below 50%. ; Otherwise, discourage this move is player's HP is below 50%.
ld a, [BattleMonLevel] ld a, [BattleMonLevel]
@ -1036,6 +1039,8 @@ AIScoring_Ohko: ; 38a60
AIScoring_Bind: ; 38a71 AIScoring_Bind: ; 38a71
; Bind, Wrap, Fire Spin, Clamp
ld a, [$c730] ld a, [$c730]
and a and a
jr nz, .asm_38a8b jr nz, .asm_38a8b
@ -1144,15 +1149,20 @@ AIScoring_Confuse: ; 38adb
AIScoring_SpDefenseUp2: ; 38aed AIScoring_SpDefenseUp2: ; 38aed
; Discourage this move if enemy's HP is lower than 50%.
call AICheckEnemyHalfHP call AICheckEnemyHalfHP
jr nc, .asm_38b10 jr nc, .asm_38b10
; Discourage this move if enemy's special defense level is higher than +3.
ld a, [EnemySDefLevel] ld a, [EnemySDefLevel]
cp $b cp $b
jr nc, .asm_38b10 jr nc, .asm_38b10
; 80% chance to greatly encourage this move if
; enemy's Special Defense level is lower than +2, and the player is of a special type.
cp $9 cp $9
ret nc ret nc
ld a, [BattleMonType1] ld a, [BattleMonType1]
cp SPECIAL cp SPECIAL
jr nc, .asm_38b09 jr nc, .asm_38b09
@ -1226,6 +1236,13 @@ AIScoring_Paralyze: ; 38b26
AIScoring_SpeedDownHit: ; 38b40 AIScoring_SpeedDownHit: ; 38b40
; Icy Wind
; Almost 90% chance to greatly encourage this move if the following conditions all meet:
; Enemy's HP is higher than 25%.
; It's the first turn of player's Pokemon.
; Player is faster than enemy.
ld a, [wEnemyMoveStruct + MOVE_ANIM] ld a, [wEnemyMoveStruct + MOVE_ANIM]
cp ICY_WIND cp ICY_WIND
ret nz ret nz
@ -1284,11 +1301,12 @@ AIScoring_Rage: ; 38b7f
bit SUBSTATUS_RAGE, a bit SUBSTATUS_RAGE, a
jr z, .asm_38b9b jr z, .asm_38b9b
; If enemy's Rage is building, 50% chance to encourage this move.
call Function39527 call Function39527
jr c, .asm_38b8c jr c, .asm_38b8c
dec [hl] dec [hl]
; Encourage this move based on Rage's counter.
.asm_38b8c .asm_38b8c
ld a, [$c72c] ld a, [$c72c]
cp $2 cp $2
@ -1301,9 +1319,11 @@ AIScoring_Rage: ; 38b7f
ret ret
.asm_38b9b .asm_38b9b
; If enemy's Rage is not building, discourage this move if enemy's HP is below 50%.
call AICheckEnemyHalfHP call AICheckEnemyHalfHP
jr nc, .asm_38ba6 jr nc, .asm_38ba6
; 50% chance to encourage this move otherwise.
call Function39521 call Function39521
ret nc ret nc
dec [hl] dec [hl]
@ -1463,7 +1483,7 @@ AIScoring_Encore: ; 38c3b
.asm_38c68 .asm_38c68
push hl push hl
ld a, [LastEnemyCounterMove] ld a, [LastEnemyCounterMove]
ld hl, .table_38c85 ld hl, .encoremoves
ld de, 1 ld de, 1
call IsInArray call IsInArray
pop hl pop hl
@ -1483,7 +1503,7 @@ AIScoring_Encore: ; 38c3b
inc [hl] inc [hl]
ret ret
.table_38c85 .encoremoves
db SWORDS_DANCE db SWORDS_DANCE
db WHIRLWIND db WHIRLWIND
db LEER db LEER
@ -1519,6 +1539,8 @@ AIScoring_Encore: ; 38c3b
AIScoring_PainSplit: ; 38ca4 AIScoring_PainSplit: ; 38ca4
; Discourage this move if [enemy's current HP * 2 > player's current HP].
push hl push hl
ld hl, EnemyMonHP ld hl, EnemyMonHP
ld b, [hl] ld b, [hl]
@ -1540,6 +1562,9 @@ AIScoring_PainSplit: ; 38ca4
AIScoring_Snore: AIScoring_Snore:
AIScoring_SleepTalk: ; 38cba AIScoring_SleepTalk: ; 38cba
; Greatly encourage this move if enemy is fast asleep.
; Greatly discourage this move otherwise.
ld a, [EnemyMonStatus] ld a, [EnemyMonStatus]
and $7 and $7
cp $1 cp $1
@ -1559,6 +1584,9 @@ AIScoring_SleepTalk: ; 38cba
AIScoring_DefrostOpponent: ; 38ccb AIScoring_DefrostOpponent: ; 38ccb
; Greatly encourage this move if enemy is frozen.
; No move has EFFECT_DEFROST_OPPONENT, so this layer is unused.
ld a, [EnemyMonStatus] ld a, [EnemyMonStatus]
and $20 and $20
ret z ret z
@ -1635,6 +1663,8 @@ Function_0x38d16; 38d16
AIScoring_DestinyBond: AIScoring_DestinyBond:
AIScoring_Reversal: AIScoring_Reversal:
AIScoring_SkullBash: ; 38d19 AIScoring_SkullBash: ; 38d19
; Discourage this move if enemy's HP is above 25%.
call AICheckEnemyQuarterHP call AICheckEnemyQuarterHP
ret nc ret nc
inc [hl] inc [hl]
@ -1643,6 +1673,10 @@ AIScoring_SkullBash: ; 38d19
AIScoring_HealBell: ; 38d1f AIScoring_HealBell: ; 38d1f
; Dismiss this move if none of the opponent's Pokemon is statused.
; Encourage this move if the enemy is statused.
; 50% chance to greatly encourage this move if the enemy is fast asleep or frozen.
push hl push hl
ld a, [OTPartyCount] ld a, [OTPartyCount]
ld b, a ld b, a
@ -1658,7 +1692,7 @@ AIScoring_HealBell: ; 38d1f
dec hl dec hl
dec hl dec hl
dec hl dec hl ; status
ld a, [hl] ld a, [hl]
or c or c
ld c, a ld c, a
@ -1698,12 +1732,14 @@ AIScoring_HealBell: ; 38d1f
AIScoring_PriorityHit: ; 38d5a AIScoring_PriorityHit: ; 38d5a
call AICompareSpeed call AICompareSpeed
ret c ret c
; Dismiss this move if the player is flying or underground.
ld a, [PlayerSubStatus3] ld a, [PlayerSubStatus3]
and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
jp nz, AIDiscourageMove jp nz, AIDiscourageMove
; Greatly encourage this move if it will KO the player.
ld a, $1 ld a, $1
ld [hBattleTurn], a ld [hBattleTurn], a
push hl push hl
@ -1821,18 +1857,22 @@ AIScoring_MeanLook: ; 38dfb
pop hl pop hl
jp z, AIDiscourageMove jp z, AIDiscourageMove
; 80% chance to greatly encourage this move if the enemy is badly poisoned (weird).
ld a, [EnemySubStatus5] ld a, [EnemySubStatus5]
bit SUBSTATUS_TOXIC, a bit SUBSTATUS_TOXIC, a
jr nz, .asm_38e26 jr nz, .asm_38e26
; 80% chance to greatly encourage this move if the player is either
; in love, identified, stuck in Rollout, or has a Nightmare.
ld a, [PlayerSubStatus1] ld a, [PlayerSubStatus1]
and 1<<SUBSTATUS_IN_LOVE | 1<<SUBSTATUS_ROLLOUT | 1<<SUBSTATUS_IDENTIFIED | 1<<SUBSTATUS_NIGHTMARE and 1<<SUBSTATUS_IN_LOVE | 1<<SUBSTATUS_ROLLOUT | 1<<SUBSTATUS_IDENTIFIED | 1<<SUBSTATUS_NIGHTMARE
jr nz, .asm_38e26 jr nz, .asm_38e26
; Otherwise, discourage this move unless the player only has not very effective moves against the enemy.
push hl push hl
callab Function3484e callab Function3484e
ld a, [$c716] ld a, [$c716]
cp $b cp $b ; not very effective
pop hl pop hl
ret nc ret nc
@ -1878,6 +1918,10 @@ AICheckLastPlayerMon: ; 38e2e
AIScoring_Nightmare: ; 38e4a AIScoring_Nightmare: ; 38e4a
; 50% chance to encourage this move.
; The AIScoring_RedStatus layer will make sure that
; Dream Eater is only used against sleeping targets.
call Function39527 call Function39527
ret c ret c
dec [hl] dec [hl]
@ -2194,6 +2238,8 @@ AIScoring_Endure: ; 38fac
AIScoring_FuryCutter: ; 38fdb AIScoring_FuryCutter: ; 38fdb
; Encourage this move based on Fury Cutter's count.
ld a, [EnemyFuryCutterCount] ld a, [EnemyFuryCutterCount]
and a and a
jr z, .end jr z, .end
@ -2211,12 +2257,14 @@ AIScoring_FuryCutter: ; 38fdb
dec [hl] dec [hl]
.end .end
; fallthrough ; fallthrough
; 38fef ; 38fef
AIScoring_Rollout: ; 38fef AIScoring_Rollout: ; 38fef
; Rollout, Fury Cutter
; 80% chance to discourage this move if the enemy is in love, confused, or paralyzed.
ld a, [EnemySubStatus1] ld a, [EnemySubStatus1]
bit SUBSTATUS_IN_LOVE, a bit SUBSTATUS_IN_LOVE, a
jr nz, .asm_39020 jr nz, .asm_39020
@ -2229,6 +2277,8 @@ AIScoring_Rollout: ; 38fef
bit PAR, a bit PAR, a
jr nz, .asm_39020 jr nz, .asm_39020
; 80% chance to discourage this move if the enemy's HP is below 25%,
; or if accuracy or evasion modifiers favor the player.
call AICheckEnemyQuarterHP call AICheckEnemyQuarterHP
jr nc, .asm_39020 jr nc, .asm_39020
@ -2239,6 +2289,7 @@ AIScoring_Rollout: ; 38fef
cp 8 cp 8
jr nc, .asm_39020 jr nc, .asm_39020
; Otherwise, 80% chance to greatly encourage this move.
call Random call Random
cp 200 cp 200
ret nc ret nc
@ -2256,6 +2307,9 @@ AIScoring_Rollout: ; 38fef
AIScoring_Swagger: AIScoring_Swagger:
AIScoring_Attract: ; 39026 AIScoring_Attract: ; 39026
; 80% chance to encourage this move during the first turn of player's Pokemon.
; 80% chance to discourage this move otherwise.
ld a, [PlayerTurnsTaken] ld a, [PlayerTurnsTaken]
and a and a
jr z, .first_turn jr z, .first_turn
@ -2275,6 +2329,8 @@ AIScoring_Attract: ; 39026
AIScoring_Safeguard: ; 3903a AIScoring_Safeguard: ; 3903a
; 80% chance to discourage this move if player's HP is below 50%.
call AICheckPlayerHalfHP call AICheckPlayerHalfHP
ret c ret c
call Function39521 call Function39521
@ -2286,6 +2342,8 @@ AIScoring_Safeguard: ; 3903a
AIScoring_Magnitude: AIScoring_Magnitude:
AIScoring_Earthquake: ; 39044 AIScoring_Earthquake: ; 39044
; Greatly encourage this move if the player is underground and the enemy is faster.
ld a, [LastEnemyCounterMove] ld a, [LastEnemyCounterMove]
cp DIG cp DIG
ret nz ret nz
@ -2300,9 +2358,11 @@ AIScoring_Earthquake: ; 39044
dec [hl] dec [hl]
ret ret
; Try to predict if the player will use Dig this turn
; even if the player doesn't know or can't learn it.
.could_dig .could_dig
; Try to predict if the player
; will use Dig this turn. ; 50% chance to encourage this move if the enemy is slower than the player.
call AICompareSpeed call AICompareSpeed
ret c ret c
call Function39527 call Function39527
@ -2313,10 +2373,13 @@ AIScoring_Earthquake: ; 39044
AIScoring_BatonPass: ; 39062 AIScoring_BatonPass: ; 39062
; Discourage this move if the player hasn't shown super-effective moves against the enemy.
; Consider player's type(s) if its moves are unknown.
push hl push hl
callab Function3484e callab Function3484e
ld a, [$c716] ld a, [$c716]
cp 10 ; 1.0 cp 10 ; neutral
pop hl pop hl
ret c ret c
inc [hl] inc [hl]