mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
More AI commentary/labels
This commit is contained in:
parent
bf60a6b690
commit
bb9818e3c3
@ -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]
|
||||||
|
Loading…
Reference in New Issue
Block a user