mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
ef9b9bb437
Co-authored-by: Rangi <remy.oukaour+rangi42@gmail.com>
200 lines
3.5 KiB
NASM
200 lines
3.5 KiB
NASM
AI_Redundant:
|
|
; Check if move effect c will fail because it's already been used.
|
|
; Return z if the move is a good choice.
|
|
; Return nz if the move is a bad choice.
|
|
ld a, c
|
|
ld de, 3
|
|
ld hl, .Moves
|
|
call IsInArray
|
|
jp nc, .NotRedundant
|
|
inc hl
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
|
|
.Moves:
|
|
dbw EFFECT_DREAM_EATER, .DreamEater
|
|
dbw EFFECT_HEAL, .Heal
|
|
dbw EFFECT_LIGHT_SCREEN, .LightScreen
|
|
dbw EFFECT_MIST, .Mist
|
|
dbw EFFECT_FOCUS_ENERGY, .FocusEnergy
|
|
dbw EFFECT_CONFUSE, .Confuse
|
|
dbw EFFECT_TRANSFORM, .Transform
|
|
dbw EFFECT_REFLECT, .Reflect
|
|
dbw EFFECT_SUBSTITUTE, .Substitute
|
|
dbw EFFECT_LEECH_SEED, .LeechSeed
|
|
dbw EFFECT_DISABLE, .Disable
|
|
dbw EFFECT_ENCORE, .Encore
|
|
dbw EFFECT_SNORE, .Snore
|
|
dbw EFFECT_SLEEP_TALK, .SleepTalk
|
|
dbw EFFECT_MEAN_LOOK, .MeanLook
|
|
dbw EFFECT_NIGHTMARE, .Nightmare
|
|
dbw EFFECT_SPIKES, .Spikes
|
|
dbw EFFECT_FORESIGHT, .Foresight
|
|
dbw EFFECT_PERISH_SONG, .PerishSong
|
|
dbw EFFECT_SANDSTORM, .Sandstorm
|
|
dbw EFFECT_ATTRACT, .Attract
|
|
dbw EFFECT_SAFEGUARD, .Safeguard
|
|
dbw EFFECT_RAIN_DANCE, .RainDance
|
|
dbw EFFECT_SUNNY_DAY, .SunnyDay
|
|
dbw EFFECT_TELEPORT, .Teleport
|
|
dbw EFFECT_MORNING_SUN, .MorningSun
|
|
dbw EFFECT_SYNTHESIS, .Synthesis
|
|
dbw EFFECT_MOONLIGHT, .Moonlight
|
|
dbw EFFECT_SWAGGER, .Swagger
|
|
dbw EFFECT_FUTURE_SIGHT, .FutureSight
|
|
db -1
|
|
|
|
.LightScreen:
|
|
ld a, [wEnemyScreens]
|
|
bit SCREENS_LIGHT_SCREEN, a
|
|
ret
|
|
|
|
.Mist:
|
|
ld a, [wEnemySubStatus4]
|
|
bit SUBSTATUS_MIST, a
|
|
ret
|
|
|
|
.FocusEnergy:
|
|
ld a, [wEnemySubStatus4]
|
|
bit SUBSTATUS_FOCUS_ENERGY, a
|
|
ret
|
|
|
|
.Confuse:
|
|
ld a, [wPlayerSubStatus3]
|
|
bit SUBSTATUS_CONFUSED, a
|
|
ret nz
|
|
ld a, [wPlayerScreens]
|
|
bit SCREENS_SAFEGUARD, a
|
|
ret
|
|
|
|
.Transform:
|
|
ld a, [wEnemySubStatus5]
|
|
bit SUBSTATUS_TRANSFORMED, a
|
|
ret
|
|
|
|
.Reflect:
|
|
ld a, [wEnemyScreens]
|
|
bit SCREENS_REFLECT, a
|
|
ret
|
|
|
|
.Substitute:
|
|
ld a, [wEnemySubStatus4]
|
|
bit SUBSTATUS_SUBSTITUTE, a
|
|
ret
|
|
|
|
.LeechSeed:
|
|
ld a, [wPlayerSubStatus4]
|
|
bit SUBSTATUS_LEECH_SEED, a
|
|
ret
|
|
|
|
.Disable:
|
|
ld a, [wPlayerDisableCount]
|
|
and a
|
|
ret
|
|
|
|
.Encore:
|
|
ld a, [wPlayerSubStatus5]
|
|
bit SUBSTATUS_ENCORED, a
|
|
ret
|
|
|
|
.Snore:
|
|
.SleepTalk:
|
|
ld a, [wEnemyMonStatus]
|
|
and SLP_MASK
|
|
jr z, .Redundant
|
|
jr .NotRedundant
|
|
|
|
.MeanLook:
|
|
ld a, [wEnemySubStatus5]
|
|
bit SUBSTATUS_CANT_RUN, a
|
|
ret
|
|
|
|
.Nightmare:
|
|
ld a, [wBattleMonStatus]
|
|
and a
|
|
jr z, .Redundant
|
|
ld a, [wPlayerSubStatus1]
|
|
bit SUBSTATUS_NIGHTMARE, a
|
|
ret
|
|
|
|
.Spikes:
|
|
ld a, [wPlayerScreens]
|
|
bit SCREENS_SPIKES, a
|
|
ret
|
|
|
|
.Foresight:
|
|
ld a, [wPlayerSubStatus1]
|
|
bit SUBSTATUS_IDENTIFIED, a
|
|
ret
|
|
|
|
.PerishSong:
|
|
ld a, [wPlayerSubStatus1]
|
|
bit SUBSTATUS_PERISH, a
|
|
ret
|
|
|
|
.Sandstorm:
|
|
ld a, [wBattleWeather]
|
|
cp WEATHER_SANDSTORM
|
|
jr z, .Redundant
|
|
jr .NotRedundant
|
|
|
|
.Attract:
|
|
farcall CheckOppositeGender
|
|
jr c, .Redundant
|
|
ld a, [wPlayerSubStatus1]
|
|
bit SUBSTATUS_IN_LOVE, a
|
|
ret
|
|
|
|
.Safeguard:
|
|
ld a, [wEnemyScreens]
|
|
bit SCREENS_SAFEGUARD, a
|
|
ret
|
|
|
|
.RainDance:
|
|
ld a, [wBattleWeather]
|
|
cp WEATHER_RAIN
|
|
jr z, .Redundant
|
|
jr .NotRedundant
|
|
|
|
.SunnyDay:
|
|
ld a, [wBattleWeather]
|
|
cp WEATHER_SUN
|
|
jr z, .Redundant
|
|
jr .NotRedundant
|
|
|
|
.DreamEater:
|
|
ld a, [wBattleMonStatus]
|
|
and SLP_MASK
|
|
jr z, .Redundant
|
|
jr .NotRedundant
|
|
|
|
.Swagger:
|
|
ld a, [wPlayerSubStatus3]
|
|
bit SUBSTATUS_CONFUSED, a
|
|
ret
|
|
|
|
.FutureSight:
|
|
; BUG: AI does not discourage Future Sight when it's already been used (see docs/bugs_and_glitches.md)
|
|
ld a, [wEnemyScreens]
|
|
bit 5, a
|
|
ret
|
|
|
|
.Heal:
|
|
.MorningSun:
|
|
.Synthesis:
|
|
.Moonlight:
|
|
farcall AICheckEnemyMaxHP
|
|
jr nc, .NotRedundant
|
|
|
|
.Teleport:
|
|
.Redundant:
|
|
ld a, 1
|
|
and a
|
|
ret
|
|
|
|
.NotRedundant:
|
|
xor a
|
|
ret
|