mirror of
https://github.com/pret/pokefirered.git
synced 2026-04-20 16:37:20 -05:00
3259 lines
88 KiB
ArmAsm
3259 lines
88 KiB
ArmAsm
#include "constants/battle.h"
|
|
#include "constants/battle_ai.h"
|
|
#include "constants/abilities.h"
|
|
#include "constants/items.h"
|
|
#include "constants/moves.h"
|
|
#include "constants/battle_move_effects.h"
|
|
#include "constants/hold_effects.h"
|
|
#include "constants/pokemon.h"
|
|
.include "asm/macros/battle_ai_script.inc"
|
|
|
|
.section script_data, "aw", %progbits
|
|
|
|
@ The FRLG scripts are improved subtly by Emerald in a few places
|
|
@ To make adding these improvements easier they are commented and tagged with "Improvement in Emerald"
|
|
@ Emerald also adds a few entirely new AI commands (mostly to expand Double Battle AI), which are not included
|
|
|
|
gBattleAI_ScriptsTable:: @ 81D9BF4
|
|
.4byte AI_CheckBadMove
|
|
.4byte AI_CheckViability
|
|
.4byte AI_TryToFaint
|
|
.4byte AI_SetupFirstTurn
|
|
.4byte AI_Risky
|
|
.4byte AI_PreferStrongestMove
|
|
.4byte AI_PreferBatonPass
|
|
.4byte AI_DoubleBattle
|
|
.4byte AI_HPAware
|
|
.4byte AI_Unknown
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Ret
|
|
.4byte AI_Roaming
|
|
.4byte AI_Safari
|
|
.4byte AI_FirstBattle
|
|
|
|
AI_CheckBadMove:: @ 81D9C74
|
|
@ if_move MOVE_FISSURE, AI_CBM_CheckIfNegatesType @ Improvement in Emerald
|
|
@ if_move MOVE_HORN_DRILL, AI_CBM_CheckIfNegatesType
|
|
get_how_powerful_move_is
|
|
if_equal MOVE_POWER_DISCOURAGED, AI_CheckBadMove_CheckSoundproof
|
|
|
|
AI_CBM_CheckIfNegatesType::
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_VOLT_ABSORB, CheckIfVoltAbsorbCancelsElectric
|
|
if_equal ABILITY_WATER_ABSORB, CheckIfWaterAbsorbCancelsWater
|
|
if_equal ABILITY_FLASH_FIRE, CheckIfFlashFireCancelsFire
|
|
if_equal ABILITY_WONDER_GUARD, CheckIfWonderGuardCancelsMove
|
|
if_equal ABILITY_LEVITATE, CheckIfLevitateCancelsGroundMove
|
|
goto AI_CheckBadMove_CheckSoundproof
|
|
|
|
CheckIfVoltAbsorbCancelsElectric:: @ 81D9CA6
|
|
get_curr_move_type
|
|
if_equal_ TYPE_ELECTRIC, Score_Minus12
|
|
goto AI_CheckBadMove_CheckSoundproof
|
|
|
|
CheckIfWaterAbsorbCancelsWater:: @ 81D9CB3
|
|
get_curr_move_type
|
|
if_equal_ TYPE_WATER, Score_Minus12
|
|
goto AI_CheckBadMove_CheckSoundproof
|
|
|
|
CheckIfFlashFireCancelsFire:: @ 81D9CC0
|
|
get_curr_move_type
|
|
if_equal_ TYPE_FIRE, Score_Minus12
|
|
goto AI_CheckBadMove_CheckSoundproof
|
|
|
|
CheckIfWonderGuardCancelsMove:: @ 81D9CCD
|
|
if_type_effectiveness AI_EFFECTIVENESS_x2, AI_CheckBadMove_CheckSoundproof
|
|
goto Score_Minus10
|
|
|
|
CheckIfLevitateCancelsGroundMove:: @ 81D9CD8
|
|
get_curr_move_type
|
|
if_equal_ TYPE_GROUND, Score_Minus10
|
|
|
|
AI_CheckBadMove_CheckSoundproof:: @ 81D9CE0
|
|
get_ability AI_TARGET
|
|
if_not_equal ABILITY_SOUNDPROOF, AI_CheckBadMove_CheckEffect
|
|
if_move MOVE_GROWL, Score_Minus10
|
|
if_move MOVE_ROAR, Score_Minus10
|
|
if_move MOVE_SING, Score_Minus10
|
|
if_move MOVE_SUPERSONIC, Score_Minus10
|
|
if_move MOVE_SCREECH, Score_Minus10
|
|
if_move MOVE_SNORE, Score_Minus10
|
|
if_move MOVE_UPROAR, Score_Minus10
|
|
if_move MOVE_METAL_SOUND, Score_Minus10
|
|
if_move MOVE_GRASS_WHISTLE, Score_Minus10
|
|
|
|
AI_CheckBadMove_CheckEffect:: @ 81D9D27
|
|
if_effect EFFECT_SLEEP, AI_CBM_Sleep
|
|
if_effect EFFECT_EXPLOSION, AI_CBM_Explosion
|
|
if_effect EFFECT_DREAM_EATER, AI_CBM_DreamEater
|
|
if_effect EFFECT_ATTACK_UP, AI_CBM_AttackUp
|
|
if_effect EFFECT_DEFENSE_UP, AI_CBM_DefenseUp
|
|
if_effect EFFECT_SPEED_UP, AI_CBM_SpeedUp
|
|
if_effect EFFECT_SPECIAL_ATTACK_UP, AI_CBM_SpAtkUp
|
|
if_effect EFFECT_SPECIAL_DEFENSE_UP, AI_CBM_SpDefUp
|
|
if_effect EFFECT_ACCURACY_UP, AI_CBM_AccUp
|
|
if_effect EFFECT_EVASION_UP, AI_CBM_EvasionUp
|
|
if_effect EFFECT_ATTACK_DOWN, AI_CBM_AttackDown
|
|
if_effect EFFECT_DEFENSE_DOWN, AI_CBM_DefenseDown
|
|
if_effect EFFECT_SPEED_DOWN, AI_CBM_SpeedDown
|
|
if_effect EFFECT_SPECIAL_ATTACK_DOWN, AI_CBM_SpAtkDown
|
|
if_effect EFFECT_SPECIAL_DEFENSE_DOWN, AI_CBM_SpDefDown
|
|
if_effect EFFECT_ACCURACY_DOWN, AI_CBM_AccDown
|
|
if_effect EFFECT_EVASION_DOWN, AI_CBM_EvasionDown
|
|
if_effect EFFECT_HAZE, AI_CBM_Haze
|
|
if_effect EFFECT_BIDE, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_ROAR, AI_CBM_Roar
|
|
if_effect EFFECT_TOXIC, AI_CBM_Poison
|
|
if_effect EFFECT_LIGHT_SCREEN, AI_CBM_LightScreen
|
|
if_effect EFFECT_OHKO, AI_CBM_OneHitKO
|
|
if_effect EFFECT_RAZOR_WIND, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_SUPER_FANG, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_MIST, AI_CBM_Mist
|
|
if_effect EFFECT_FOCUS_ENERGY, AI_CBM_FocusEnergy
|
|
if_effect EFFECT_CONFUSE, AI_CBM_Confuse
|
|
if_effect EFFECT_ATTACK_UP_2, AI_CBM_AttackUp
|
|
if_effect EFFECT_DEFENSE_UP_2, AI_CBM_DefenseUp
|
|
if_effect EFFECT_SPEED_UP_2, AI_CBM_SpeedUp
|
|
if_effect EFFECT_SPECIAL_ATTACK_UP_2, AI_CBM_SpAtkUp
|
|
if_effect EFFECT_SPECIAL_DEFENSE_UP_2, AI_CBM_SpDefUp
|
|
if_effect EFFECT_ACCURACY_UP_2, AI_CBM_AccUp
|
|
if_effect EFFECT_EVASION_UP_2, AI_CBM_EvasionUp
|
|
if_effect EFFECT_ATTACK_DOWN_2, AI_CBM_AttackDown
|
|
if_effect EFFECT_DEFENSE_DOWN_2, AI_CBM_DefenseDown
|
|
if_effect EFFECT_SPEED_DOWN_2, AI_CBM_SpeedDown
|
|
if_effect EFFECT_SPECIAL_ATTACK_DOWN_2, AI_CBM_SpAtkDown
|
|
if_effect EFFECT_SPECIAL_DEFENSE_DOWN_2, AI_CBM_SpDefDown
|
|
if_effect EFFECT_ACCURACY_DOWN_2, AI_CBM_AccDown
|
|
if_effect EFFECT_EVASION_DOWN_2, AI_CBM_EvasionDown
|
|
if_effect EFFECT_REFLECT, AI_CBM_Reflect
|
|
if_effect EFFECT_POISON, AI_CBM_Poison
|
|
if_effect EFFECT_PARALYZE, AI_CBM_Paralyze
|
|
if_effect EFFECT_SUBSTITUTE, AI_CBM_Substitute
|
|
if_effect EFFECT_RECHARGE, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_LEECH_SEED, AI_CBM_LeechSeed
|
|
if_effect EFFECT_DISABLE, AI_CBM_Disable
|
|
if_effect EFFECT_LEVEL_DAMAGE, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_PSYWAVE, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_COUNTER, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_ENCORE, AI_CBM_Encore
|
|
if_effect EFFECT_SNORE, AI_CBM_DamageDuringSleep
|
|
if_effect EFFECT_SLEEP_TALK, AI_CBM_DamageDuringSleep
|
|
if_effect EFFECT_FLAIL, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_MEAN_LOOK, AI_CBM_CantEscape
|
|
if_effect EFFECT_NIGHTMARE, AI_CBM_Nightmare
|
|
if_effect EFFECT_MINIMIZE, AI_CBM_EvasionUp
|
|
if_effect EFFECT_CURSE, AI_CBM_Curse
|
|
if_effect EFFECT_SPIKES, AI_CBM_Spikes
|
|
if_effect EFFECT_FORESIGHT, AI_CBM_Foresight
|
|
if_effect EFFECT_PERISH_SONG, AI_CBM_PerishSong
|
|
if_effect EFFECT_SANDSTORM, AI_CBM_Sandstorm
|
|
if_effect EFFECT_SWAGGER, AI_CBM_Confuse
|
|
if_effect EFFECT_ATTRACT, AI_CBM_Attract
|
|
if_effect EFFECT_RETURN, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_PRESENT, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_FRUSTRATION, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_SAFEGUARD, AI_CBM_Safeguard
|
|
if_effect EFFECT_MAGNITUDE, AI_CBM_Magnitude
|
|
if_effect EFFECT_BATON_PASS, AI_CBM_BatonPass
|
|
if_effect EFFECT_SONICBOOM, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_RAIN_DANCE, AI_CBM_RainDance
|
|
if_effect EFFECT_SUNNY_DAY, AI_CBM_SunnyDay
|
|
if_effect EFFECT_BELLY_DRUM, AI_CBM_BellyDrum
|
|
if_effect EFFECT_PSYCH_UP, AI_CBM_Haze
|
|
if_effect EFFECT_MIRROR_COAT, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_SKULL_BASH, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_FUTURE_SIGHT, AI_CBM_FutureSight
|
|
if_effect EFFECT_TELEPORT, Score_Minus10
|
|
if_effect EFFECT_DEFENSE_CURL, AI_CBM_DefenseUp
|
|
if_effect EFFECT_FAKE_OUT, AI_CBM_FakeOut
|
|
if_effect EFFECT_STOCKPILE, AI_CBM_Stockpile
|
|
if_effect EFFECT_SPIT_UP, AI_CBM_SpitUpAndSwallow
|
|
if_effect EFFECT_SWALLOW, AI_CBM_SpitUpAndSwallow
|
|
if_effect EFFECT_HAIL, AI_CBM_Hail
|
|
if_effect EFFECT_TORMENT, AI_CBM_Torment
|
|
if_effect EFFECT_FLATTER, AI_CBM_Confuse
|
|
if_effect EFFECT_WILL_O_WISP, AI_CBM_WillOWisp
|
|
if_effect EFFECT_MEMENTO, AI_CBM_Memento
|
|
if_effect EFFECT_FOCUS_PUNCH, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_HELPING_HAND, AI_CBM_HelpingHand
|
|
if_effect EFFECT_TRICK, AI_CBM_TrickAndKnockOff
|
|
if_effect EFFECT_INGRAIN, AI_CBM_Ingrain
|
|
if_effect EFFECT_SUPERPOWER, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_RECYCLE, AI_CBM_Recycle
|
|
if_effect EFFECT_KNOCK_OFF, AI_CBM_TrickAndKnockOff
|
|
if_effect EFFECT_ENDEAVOR, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_IMPRISON, AI_CBM_Imprison
|
|
if_effect EFFECT_REFRESH, AI_CBM_Refresh
|
|
if_effect EFFECT_LOW_KICK, AI_CBM_HighRiskForDamage
|
|
if_effect EFFECT_MUD_SPORT, AI_CBM_MudSport
|
|
if_effect EFFECT_TICKLE, AI_CBM_Tickle
|
|
if_effect EFFECT_COSMIC_POWER, AI_CBM_CosmicPower
|
|
if_effect EFFECT_BULK_UP, AI_CBM_BulkUp
|
|
if_effect EFFECT_WATER_SPORT, AI_CBM_WaterSport
|
|
if_effect EFFECT_CALM_MIND, AI_CBM_CalmMind
|
|
if_effect EFFECT_DRAGON_DANCE, AI_CBM_DragonDance
|
|
end
|
|
|
|
AI_CBM_Sleep:: @ 81D9FB6
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_INSOMNIA, Score_Minus10
|
|
if_equal ABILITY_VITAL_SPIRIT, Score_Minus10
|
|
if_status AI_TARGET, STATUS1_ANY, Score_Minus10
|
|
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
|
|
end
|
|
|
|
AI_CBM_Explosion:: @ 81D9FCF
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_DAMP, Score_Minus10
|
|
count_alive_pokemon AI_USER
|
|
if_not_equal 0, AI_CBM_Explosion_End
|
|
count_alive_pokemon AI_TARGET
|
|
if_not_equal 0, Score_Minus10
|
|
goto Score_Minus1
|
|
|
|
AI_CBM_Explosion_End:: @ 81D9FF2
|
|
end
|
|
|
|
AI_CBM_Nightmare:: @ 81D9FF3
|
|
if_status2 AI_TARGET, STATUS2_NIGHTMARE, Score_Minus10
|
|
if_not_status AI_TARGET, STATUS1_SLEEP, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_DreamEater:: @ 81DA008
|
|
if_not_status AI_TARGET, STATUS1_SLEEP, Score_Minus8
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_BellyDrum:: @ 81DA019
|
|
if_hp_less_than AI_USER, 51, Score_Minus10
|
|
|
|
AI_CBM_AttackUp:: @ 81DA020
|
|
if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_DefenseUp:: @ 81DA029
|
|
if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_SpeedUp:: @ 81DA032
|
|
if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_SpAtkUp:: @ 81DA03B
|
|
if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_SpDefUp:: @ 81DA044
|
|
if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_AccUp:: @ 81DA04D
|
|
if_stat_level_equal AI_USER, STAT_ACC, 12, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_EvasionUp:: @ 81DA056
|
|
if_stat_level_equal AI_USER, STAT_EVASION, 12, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_AttackDown:: @ 81DA05F
|
|
if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_HYPER_CUTTER, Score_Minus10
|
|
goto CheckIfAbilityBlocksStatChange
|
|
|
|
AI_CBM_DefenseDown:: @ 81DA074
|
|
if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus10
|
|
goto CheckIfAbilityBlocksStatChange
|
|
|
|
AI_CBM_SpeedDown:: @ 81DA081
|
|
if_stat_level_equal AI_TARGET, STAT_SPEED, 0, Score_Minus10
|
|
@ get_ability AI_TARGET @ Improvement in Emerald
|
|
@ if_equal ABILITY_SPEED_BOOST, Score_Minus10
|
|
goto CheckIfAbilityBlocksStatChange
|
|
|
|
AI_CBM_SpAtkDown:: @ 81DA08E
|
|
if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus10
|
|
goto CheckIfAbilityBlocksStatChange
|
|
|
|
AI_CBM_SpDefDown:: @ 81DA09B
|
|
if_stat_level_equal AI_TARGET, STAT_SPDEF, 0, Score_Minus10
|
|
goto CheckIfAbilityBlocksStatChange
|
|
|
|
AI_CBM_AccDown:: @ 81DA0A8
|
|
if_stat_level_equal AI_TARGET, STAT_ACC, 0, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_KEEN_EYE, Score_Minus10
|
|
goto CheckIfAbilityBlocksStatChange
|
|
|
|
AI_CBM_EvasionDown:: @ 81DA0BD
|
|
if_stat_level_equal AI_TARGET, STAT_EVASION, 0, Score_Minus10
|
|
|
|
CheckIfAbilityBlocksStatChange:: @ 81DA0C5
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_CLEAR_BODY, Score_Minus10
|
|
if_equal ABILITY_WHITE_SMOKE, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Haze:: @ 81DA0D4
|
|
if_stat_level_less_than AI_USER, STAT_ATK, 6, AI_CBM_Haze_End
|
|
if_stat_level_less_than AI_USER, STAT_DEF, 6, AI_CBM_Haze_End
|
|
if_stat_level_less_than AI_USER, STAT_SPEED, 6, AI_CBM_Haze_End
|
|
if_stat_level_less_than AI_USER, STAT_SPATK, 6, AI_CBM_Haze_End
|
|
if_stat_level_less_than AI_USER, STAT_SPDEF, 6, AI_CBM_Haze_End
|
|
if_stat_level_less_than AI_USER, STAT_ACC, 6, AI_CBM_Haze_End
|
|
if_stat_level_less_than AI_USER, STAT_EVASION, 6, AI_CBM_Haze_End
|
|
if_stat_level_more_than AI_TARGET, STAT_ATK, 6, AI_CBM_Haze_End
|
|
if_stat_level_more_than AI_TARGET, STAT_DEF, 6, AI_CBM_Haze_End
|
|
if_stat_level_more_than AI_TARGET, STAT_SPEED, 6, AI_CBM_Haze_End
|
|
if_stat_level_more_than AI_TARGET, STAT_SPATK, 6, AI_CBM_Haze_End
|
|
if_stat_level_more_than AI_TARGET, STAT_SPDEF, 6, AI_CBM_Haze_End
|
|
if_stat_level_more_than AI_TARGET, STAT_ACC, 6, AI_CBM_Haze_End
|
|
if_stat_level_more_than AI_TARGET, STAT_EVASION, 6, AI_CBM_Haze_End
|
|
goto Score_Minus10
|
|
|
|
AI_CBM_Haze_End:: @ 81DA149
|
|
end
|
|
|
|
AI_CBM_Roar:: @ 81DA14A
|
|
count_alive_pokemon AI_TARGET
|
|
if_equal 0, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_SUCTION_CUPS, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Poison:: @ 81DA15B
|
|
get_target_type1
|
|
if_equal TYPE_STEEL, Score_Minus10
|
|
if_equal TYPE_POISON, Score_Minus10
|
|
get_target_type2
|
|
if_equal TYPE_STEEL, Score_Minus10
|
|
if_equal TYPE_POISON, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_IMMUNITY, Score_Minus10
|
|
if_status AI_TARGET, STATUS1_ANY, Score_Minus10
|
|
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
|
|
end
|
|
|
|
AI_CBM_LightScreen:: @ 81DA18A
|
|
if_side_affecting AI_USER, SIDE_STATUS_LIGHTSCREEN, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_OneHitKO:: @ 81DA195
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_STURDY, Score_Minus10
|
|
if_level_cond 1, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Magnitude:: @ 81DA1AA
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_LEVITATE, Score_Minus10
|
|
|
|
AI_CBM_HighRiskForDamage:: @ 81DA1B2
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_not_equal ABILITY_WONDER_GUARD, AI_CBM_HighRiskForDamage_End
|
|
if_type_effectiveness AI_EFFECTIVENESS_x2, AI_CBM_HighRiskForDamage_End
|
|
goto Score_Minus10
|
|
|
|
AI_CBM_HighRiskForDamage_End:: @ 81DA1CB
|
|
end
|
|
|
|
AI_CBM_Mist:: @ 81DA1CC
|
|
if_side_affecting AI_USER, SIDE_STATUS_MIST, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_FocusEnergy:: @ 81DA1D7
|
|
if_status2 AI_USER, STATUS2_FOCUS_ENERGY, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Confuse:: @ 81DA1E2
|
|
if_status2 AI_TARGET, STATUS2_CONFUSION, Score_Minus5
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_OWN_TEMPO, Score_Minus10
|
|
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
|
|
end
|
|
|
|
AI_CBM_Reflect:: @ 81DA1F5
|
|
if_side_affecting AI_USER, SIDE_STATUS_REFLECT, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_Paralyze:: @ 81DA200
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_LIMBER, Score_Minus10
|
|
if_status AI_TARGET, STATUS1_ANY, Score_Minus10
|
|
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
|
|
end
|
|
|
|
AI_CBM_Substitute:: @ 81DA219
|
|
if_status2 AI_USER, STATUS2_SUBSTITUTE, Score_Minus8
|
|
if_hp_less_than AI_USER, 26, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_LeechSeed:: @ 81DA22B
|
|
if_status3 AI_TARGET, STATUS3_LEECHSEED, Score_Minus10
|
|
get_target_type1
|
|
if_equal TYPE_GRASS, Score_Minus10
|
|
get_target_type2
|
|
if_equal TYPE_GRASS, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Disable:: @ 81DA246
|
|
if_any_move_disabled AI_TARGET, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_Encore:: @ 81DA24E
|
|
if_any_move_encored AI_TARGET, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_DamageDuringSleep:: @ 81DA256
|
|
if_not_status AI_USER, STATUS1_SLEEP, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_CantEscape:: @ 81DA261
|
|
if_status2 AI_TARGET, STATUS2_ESCAPE_PREVENTION, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Curse:: @ 81DA26C
|
|
if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
|
|
if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_Spikes:: @ 81DA27D
|
|
if_side_affecting AI_TARGET, SIDE_STATUS_SPIKES, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Foresight:: @ 81DA288
|
|
if_status2 AI_TARGET, STATUS2_FORESIGHT, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_PerishSong:: @ 81DA293
|
|
if_status3 AI_TARGET, STATUS3_PERISH_SONG, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Sandstorm:: @ 81DA29E
|
|
get_weather
|
|
if_equal AI_WEATHER_SANDSTORM, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_Attract:: @ 81DA2A6
|
|
if_status2 AI_TARGET, STATUS2_INFATUATION, Score_Minus10
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_OBLIVIOUS, Score_Minus10
|
|
get_gender AI_USER
|
|
if_equal MON_MALE, AI_CBM_Attract_CheckIfTargetIsFemale
|
|
if_equal MON_FEMALE, AI_CBM_Attract_CheckIfTargetIsMale
|
|
goto Score_Minus10
|
|
|
|
AI_CBM_Attract_CheckIfTargetIsFemale:: @ 81DA2CB
|
|
get_gender AI_TARGET
|
|
if_equal MON_FEMALE, AI_CBM_Attract_End
|
|
goto Score_Minus10
|
|
|
|
AI_CBM_Attract_CheckIfTargetIsMale:: @ 81DA2D8
|
|
get_gender AI_TARGET
|
|
if_equal MON_MALE, AI_CBM_Attract_End
|
|
goto Score_Minus10
|
|
|
|
AI_CBM_Attract_End:: @ 81DA2E5
|
|
end
|
|
|
|
AI_CBM_Safeguard:: @ 81DA2E6
|
|
if_side_affecting AI_USER, SIDE_STATUS_SAFEGUARD, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_Memento:: @ 81DA2F1
|
|
if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
|
|
if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus8
|
|
|
|
AI_CBM_BatonPass:: @ 81DA301
|
|
count_alive_pokemon AI_USER
|
|
if_equal 0, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_RainDance:: @ 81DA30A
|
|
get_weather
|
|
if_equal AI_WEATHER_RAIN, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_SunnyDay:: @ 81DA312
|
|
get_weather
|
|
if_equal AI_WEATHER_SUN, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_FutureSight:: @ 81DA31A
|
|
if_side_affecting AI_TARGET, SIDE_STATUS_FUTUREATTACK, Score_Minus10
|
|
@ if_side_affecting AI_USER, SIDE_STATUS_FUTUREATTACK, Score_Minus12 @ Improvement in Emerald
|
|
end
|
|
|
|
AI_CBM_FakeOut:: @ 81DA325
|
|
is_first_turn_for AI_USER
|
|
if_equal 0, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Stockpile:: @ 81DA32E
|
|
get_stockpile_count AI_USER
|
|
if_equal 3, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_SpitUpAndSwallow:: @ 81DA337
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
|
|
get_stockpile_count AI_USER
|
|
if_equal 0, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Hail:: @ 81DA346
|
|
get_weather
|
|
if_equal AI_WEATHER_HAIL, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_Torment:: @ 81DA34E
|
|
if_status2 AI_TARGET, STATUS2_TORMENT, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_WillOWisp:: @ 81DA359
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_WATER_VEIL, Score_Minus10
|
|
if_status AI_TARGET, STATUS1_ANY, Score_Minus10
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, Score_Minus10
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, Score_Minus10
|
|
@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
|
|
end
|
|
|
|
AI_CBM_HelpingHand:: @ 81DA37E
|
|
if_not_double_battle Score_Minus10
|
|
end
|
|
|
|
AI_CBM_TrickAndKnockOff:: @ 81DA386
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_STICKY_HOLD, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Ingrain:: @ 81DA38F
|
|
if_status3 AI_USER, STATUS3_ROOTED, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Recycle:: @ 81DA39A
|
|
get_used_held_item AI_USER
|
|
if_equal ITEM_NONE, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Imprison:: @ 81DA3A3
|
|
if_status3 AI_USER, STATUS3_IMPRISONED_OTHERS, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Refresh:: @ 81DA3AE
|
|
if_not_status AI_USER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_MudSport:: @ 81DA3B9
|
|
if_status3 AI_USER, STATUS3_MUDSPORT, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_Tickle:: @ 81DA3C4
|
|
if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
|
|
if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_CosmicPower:: @ 81DA3D5
|
|
if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
|
|
if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_BulkUp:: @ 81DA3E6
|
|
if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
|
|
if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_WaterSport:: @ 81DA3F7
|
|
if_status3 AI_USER, STATUS3_WATERSPORT, Score_Minus10
|
|
end
|
|
|
|
AI_CBM_CalmMind:: @ 81DA402
|
|
if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
|
|
if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
|
|
end
|
|
|
|
AI_CBM_DragonDance:: @ 81DA413
|
|
if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
|
|
if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus8
|
|
end
|
|
|
|
Score_Minus1:: @ 81DA424
|
|
score -1
|
|
end
|
|
|
|
Score_Minus2:: @ 81DA427
|
|
score -2
|
|
end
|
|
|
|
Score_Minus3:: @ 81DA42A
|
|
score -3
|
|
end
|
|
|
|
Score_Minus5:: @ 81DA42D
|
|
score -5
|
|
end
|
|
|
|
Score_Minus8:: @ 81DA430
|
|
score -8
|
|
end
|
|
|
|
Score_Minus10:: @ 81DA433
|
|
score -10
|
|
end
|
|
|
|
Score_Minus12:: @ 81DA436
|
|
score -12
|
|
end
|
|
|
|
Score_Plus1::
|
|
score +1
|
|
end
|
|
|
|
Score_Plus2::
|
|
score +2
|
|
end
|
|
|
|
Score_Plus3::
|
|
score +3
|
|
end
|
|
|
|
Score_Plus5::
|
|
score +5
|
|
end
|
|
|
|
@ Improvement in Emerald
|
|
@Score_Plus10::
|
|
@ score +10
|
|
@ end
|
|
|
|
AI_CheckViability:: @ 81DA445
|
|
if_effect EFFECT_SLEEP, AI_CV_Sleep
|
|
if_effect EFFECT_ABSORB, AI_CV_Absorb
|
|
if_effect EFFECT_EXPLOSION, AI_CV_SelfKO
|
|
if_effect EFFECT_DREAM_EATER, AI_CV_DreamEater
|
|
if_effect EFFECT_MIRROR_MOVE, AI_CV_MirrorMove
|
|
if_effect EFFECT_ATTACK_UP, AI_CV_AttackUp
|
|
if_effect EFFECT_DEFENSE_UP, AI_CV_DefenseUp
|
|
if_effect EFFECT_SPEED_UP, AI_CV_SpeedUp
|
|
if_effect EFFECT_SPECIAL_ATTACK_UP, AI_CV_SpAtkUp
|
|
if_effect EFFECT_SPECIAL_DEFENSE_UP, AI_CV_SpDefUp
|
|
if_effect EFFECT_ACCURACY_UP, AI_CV_AccuracyUp
|
|
if_effect EFFECT_EVASION_UP, AI_CV_EvasionUp
|
|
if_effect EFFECT_ALWAYS_HIT, AI_CV_AlwaysHit
|
|
if_effect EFFECT_ATTACK_DOWN, AI_CV_AttackDown
|
|
if_effect EFFECT_DEFENSE_DOWN, AI_CV_DefenseDown
|
|
if_effect EFFECT_SPEED_DOWN, AI_CV_SpeedDown
|
|
if_effect EFFECT_SPECIAL_ATTACK_DOWN, AI_CV_SpAtkDown
|
|
if_effect EFFECT_SPECIAL_DEFENSE_DOWN, AI_CV_SpDefDown
|
|
if_effect EFFECT_ACCURACY_DOWN, AI_CV_AccuracyDown
|
|
if_effect EFFECT_EVASION_DOWN, AI_CV_EvasionDown
|
|
if_effect EFFECT_HAZE, AI_CV_Haze
|
|
if_effect EFFECT_BIDE, AI_CV_Bide
|
|
if_effect EFFECT_ROAR, AI_CV_Roar
|
|
if_effect EFFECT_CONVERSION, AI_CV_Conversion
|
|
if_effect EFFECT_RESTORE_HP, AI_CV_Heal
|
|
if_effect EFFECT_TOXIC, AI_CV_Toxic
|
|
if_effect EFFECT_LIGHT_SCREEN, AI_CV_LightScreen
|
|
if_effect EFFECT_REST, AI_CV_Rest
|
|
if_effect EFFECT_OHKO, AI_CV_OneHitKO
|
|
if_effect EFFECT_RAZOR_WIND, AI_CV_ChargeUpMove
|
|
if_effect EFFECT_SUPER_FANG, AI_CV_SuperFang
|
|
if_effect EFFECT_TRAP, AI_CV_Trap
|
|
if_effect EFFECT_HIGH_CRITICAL, AI_CV_HighCrit
|
|
if_effect EFFECT_CONFUSE, AI_CV_Confuse
|
|
if_effect EFFECT_ATTACK_UP_2, AI_CV_AttackUp
|
|
if_effect EFFECT_DEFENSE_UP_2, AI_CV_DefenseUp
|
|
if_effect EFFECT_SPEED_UP_2, AI_CV_SpeedUp
|
|
if_effect EFFECT_SPECIAL_ATTACK_UP_2, AI_CV_SpAtkUp
|
|
if_effect EFFECT_SPECIAL_DEFENSE_UP_2, AI_CV_SpDefUp
|
|
if_effect EFFECT_ACCURACY_UP_2, AI_CV_AccuracyUp
|
|
if_effect EFFECT_EVASION_UP_2, AI_CV_EvasionUp
|
|
if_effect EFFECT_ATTACK_DOWN_2, AI_CV_AttackDown
|
|
if_effect EFFECT_DEFENSE_DOWN_2, AI_CV_DefenseDown
|
|
if_effect EFFECT_SPEED_DOWN_2, AI_CV_SpeedDown
|
|
if_effect EFFECT_SPECIAL_ATTACK_DOWN_2, AI_CV_SpAtkDown
|
|
if_effect EFFECT_SPECIAL_DEFENSE_DOWN_2, AI_CV_SpDefDown
|
|
if_effect EFFECT_ACCURACY_DOWN_2, AI_CV_AccuracyDown
|
|
if_effect EFFECT_EVASION_DOWN_2, AI_CV_EvasionDown
|
|
if_effect EFFECT_REFLECT, AI_CV_Reflect
|
|
if_effect EFFECT_POISON, AI_CV_Poison
|
|
if_effect EFFECT_PARALYZE, AI_CV_Paralyze
|
|
@ if_effect EFFECT_SWAGGER, AI_CV_Swagger @ Improvement in Emerald
|
|
if_effect EFFECT_SPEED_DOWN_HIT, AI_CV_SpeedDownFromChance
|
|
if_effect EFFECT_SKY_ATTACK, AI_CV_ChargeUpMove
|
|
if_effect EFFECT_VITAL_THROW, AI_CV_VitalThrow
|
|
if_effect EFFECT_SUBSTITUTE, AI_CV_Substitute
|
|
if_effect EFFECT_RECHARGE, AI_CV_Recharge
|
|
if_effect EFFECT_LEECH_SEED, AI_CV_Toxic
|
|
if_effect EFFECT_DISABLE, AI_CV_Disable
|
|
if_effect EFFECT_COUNTER, AI_CV_Counter
|
|
if_effect EFFECT_ENCORE, AI_CV_Encore
|
|
if_effect EFFECT_PAIN_SPLIT, AI_CV_PainSplit
|
|
if_effect EFFECT_SNORE, AI_CV_Snore
|
|
if_effect EFFECT_LOCK_ON, AI_CV_LockOn
|
|
if_effect EFFECT_SLEEP_TALK, AI_CV_SleepTalk
|
|
if_effect EFFECT_DESTINY_BOND, AI_CV_DestinyBond
|
|
if_effect EFFECT_FLAIL, AI_CV_Flail
|
|
if_effect EFFECT_HEAL_BELL, AI_CV_HealBell
|
|
if_effect EFFECT_THIEF, AI_CV_Thief
|
|
if_effect EFFECT_MEAN_LOOK, AI_CV_Trap
|
|
if_effect EFFECT_MINIMIZE, AI_CV_EvasionUp
|
|
if_effect EFFECT_CURSE, AI_CV_Curse
|
|
if_effect EFFECT_PROTECT, AI_CV_Protect
|
|
if_effect EFFECT_FORESIGHT, AI_CV_Foresight
|
|
if_effect EFFECT_ENDURE, AI_CV_Endure
|
|
if_effect EFFECT_BATON_PASS, AI_CV_BatonPass
|
|
if_effect EFFECT_PURSUIT, AI_CV_Pursuit
|
|
if_effect EFFECT_MORNING_SUN, AI_CV_HealWeather
|
|
if_effect EFFECT_SYNTHESIS, AI_CV_HealWeather
|
|
if_effect EFFECT_MOONLIGHT, AI_CV_HealWeather
|
|
if_effect EFFECT_RAIN_DANCE, AI_CV_RainDance
|
|
if_effect EFFECT_SUNNY_DAY, AI_CV_SunnyDay
|
|
if_effect EFFECT_BELLY_DRUM, AI_CV_BellyDrum
|
|
if_effect EFFECT_PSYCH_UP, AI_CV_PsychUp
|
|
if_effect EFFECT_MIRROR_COAT, AI_CV_MirrorCoat
|
|
if_effect EFFECT_SKULL_BASH, AI_CV_ChargeUpMove
|
|
if_effect EFFECT_SOLARBEAM, AI_CV_ChargeUpMove
|
|
if_effect EFFECT_SEMI_INVULNERABLE, AI_CV_SemiInvulnerable
|
|
if_effect EFFECT_SOFTBOILED, AI_CV_Heal
|
|
if_effect EFFECT_FAKE_OUT, AI_CV_FakeOut
|
|
if_effect EFFECT_SPIT_UP, AI_CV_SpitUp
|
|
if_effect EFFECT_SWALLOW, AI_CV_Heal
|
|
if_effect EFFECT_HAIL, AI_CV_Hail
|
|
if_effect EFFECT_FLATTER, AI_CV_Flatter
|
|
if_effect EFFECT_MEMENTO, AI_CV_SelfKO
|
|
if_effect EFFECT_FACADE, AI_CV_Facade
|
|
if_effect EFFECT_FOCUS_PUNCH, AI_CV_FocusPunch
|
|
if_effect EFFECT_SMELLINGSALT, AI_CV_SmellingSalt
|
|
if_effect EFFECT_TRICK, AI_CV_Trick
|
|
if_effect EFFECT_ROLE_PLAY, AI_CV_ChangeSelfAbility
|
|
if_effect EFFECT_SUPERPOWER, AI_CV_Superpower
|
|
if_effect EFFECT_MAGIC_COAT, AI_CV_MagicCoat
|
|
if_effect EFFECT_RECYCLE, AI_CV_Recycle
|
|
if_effect EFFECT_REVENGE, AI_CV_Revenge
|
|
if_effect EFFECT_BRICK_BREAK, AI_CV_BrickBreak
|
|
if_effect EFFECT_KNOCK_OFF, AI_CV_KnockOff
|
|
if_effect EFFECT_ENDEAVOR, AI_CV_Endeavor
|
|
if_effect EFFECT_ERUPTION, AI_CV_Eruption
|
|
if_effect EFFECT_SKILL_SWAP, AI_CV_ChangeSelfAbility
|
|
if_effect EFFECT_IMPRISON, AI_CV_Imprison
|
|
if_effect EFFECT_REFRESH, AI_CV_Refresh
|
|
if_effect EFFECT_SNATCH, AI_CV_Snatch
|
|
if_effect EFFECT_BLAZE_KICK, AI_CV_HighCrit
|
|
if_effect EFFECT_MUD_SPORT, AI_CV_MudSport
|
|
if_effect EFFECT_OVERHEAT, AI_CV_Overheat
|
|
if_effect EFFECT_TICKLE, AI_CV_DefenseDown
|
|
if_effect EFFECT_COSMIC_POWER, AI_CV_SpDefUp
|
|
if_effect EFFECT_BULK_UP, AI_CV_DefenseUp
|
|
if_effect EFFECT_POISON_TAIL, AI_CV_HighCrit
|
|
if_effect EFFECT_WATER_SPORT, AI_CV_WaterSport
|
|
if_effect EFFECT_CALM_MIND, AI_CV_SpDefUp
|
|
if_effect EFFECT_DRAGON_DANCE, AI_CV_DragonDance
|
|
end
|
|
|
|
AI_CV_Sleep:: @ 81DA71C
|
|
if_has_move_with_effect AI_TARGET, EFFECT_DREAM_EATER, AI_CV_SleepEncourageSlpDamage
|
|
if_has_move_with_effect AI_TARGET, EFFECT_NIGHTMARE, AI_CV_SleepEncourageSlpDamage
|
|
goto AI_CV_Sleep_End
|
|
|
|
AI_CV_SleepEncourageSlpDamage:: @ 81DA72F
|
|
if_random_less_than 128, AI_CV_Sleep_End
|
|
score +1
|
|
|
|
AI_CV_Sleep_End:: @ 81DA737
|
|
end
|
|
|
|
AI_CV_Absorb:: @ 81DA738
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_AbsorbEncourageMaybe
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_AbsorbEncourageMaybe
|
|
goto AI_CV_Absorb_End
|
|
|
|
AI_CV_AbsorbEncourageMaybe:: @ 81DA749
|
|
if_random_less_than 50, AI_CV_Absorb_End
|
|
score -3
|
|
|
|
AI_CV_Absorb_End:: @ 81DA751
|
|
end
|
|
|
|
AI_CV_SelfKO:: @ 81DA752
|
|
if_stat_level_less_than AI_TARGET, STAT_EVASION, 7, AI_CV_SelfKO_Encourage1
|
|
score -1
|
|
if_stat_level_less_than AI_TARGET, STAT_EVASION, 10, AI_CV_SelfKO_Encourage1
|
|
if_random_less_than 128, AI_CV_SelfKO_Encourage1
|
|
score -1
|
|
|
|
AI_CV_SelfKO_Encourage1:: @ 81DA76C
|
|
if_hp_less_than AI_USER, 80, AI_CV_SelfKO_Encourage2
|
|
if_target_faster AI_CV_SelfKO_Encourage2
|
|
if_random_less_than 50, AI_CV_SelfKO_End
|
|
goto Score_Minus3
|
|
|
|
AI_CV_SelfKO_Encourage2:: @ 81DA784
|
|
if_hp_more_than AI_USER, 50, AI_CV_SelfKO_Encourage4
|
|
if_random_less_than 128, AI_CV_SelfKO_Encourage3
|
|
score +1
|
|
|
|
AI_CV_SelfKO_Encourage3:: @ 81DA793
|
|
if_hp_more_than AI_USER, 30, AI_CV_SelfKO_End
|
|
if_random_less_than 50, AI_CV_SelfKO_End
|
|
score +1
|
|
goto AI_CV_SelfKO_End
|
|
|
|
AI_CV_SelfKO_Encourage4:: @ 81DA7A7
|
|
if_random_less_than 50, AI_CV_SelfKO_End
|
|
score -1
|
|
|
|
AI_CV_SelfKO_End:: @ 81DA7AF
|
|
end
|
|
|
|
AI_CV_DreamEater:: @ 81DA7B0
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_DreamEater_ScoreDown1
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_DreamEater_ScoreDown1
|
|
goto AI_CV_DreamEater_End
|
|
|
|
AI_CV_DreamEater_ScoreDown1:: @ 81DA7C1
|
|
score -1
|
|
|
|
AI_CV_DreamEater_End:: @ 81DA7C3
|
|
end
|
|
|
|
AI_CV_MirrorMove:: @ 81DA7C4
|
|
if_target_faster AI_CV_MirrorMove2
|
|
get_last_used_move AI_TARGET
|
|
if_not_in_hwords AI_CV_MirrorMove_EncouragedMovesToMirror, AI_CV_MirrorMove2
|
|
if_random_less_than 128, AI_CV_MirrorMove_End
|
|
score +2
|
|
goto AI_CV_MirrorMove_End
|
|
|
|
AI_CV_MirrorMove2:: @ 81DA7E2
|
|
get_last_used_move AI_TARGET
|
|
if_in_hwords AI_CV_MirrorMove_EncouragedMovesToMirror, AI_CV_MirrorMove_End
|
|
if_random_less_than 80, AI_CV_MirrorMove_End
|
|
score -1
|
|
|
|
AI_CV_MirrorMove_End:: @ 81DA7F5
|
|
end
|
|
|
|
.space 2
|
|
AI_CV_MirrorMove_EncouragedMovesToMirror:: @ 81DA7F8
|
|
.align 1
|
|
.2byte MOVE_SLEEP_POWDER
|
|
.2byte MOVE_LOVELY_KISS
|
|
.2byte MOVE_SPORE
|
|
.2byte MOVE_HYPNOSIS
|
|
.2byte MOVE_SING
|
|
.2byte MOVE_GRASS_WHISTLE
|
|
.2byte MOVE_SHADOW_PUNCH
|
|
.2byte MOVE_SAND_ATTACK
|
|
.2byte MOVE_SMOKESCREEN
|
|
.2byte MOVE_TOXIC
|
|
.2byte MOVE_GUILLOTINE
|
|
.2byte MOVE_HORN_DRILL
|
|
.2byte MOVE_FISSURE
|
|
.2byte MOVE_SHEER_COLD
|
|
.2byte MOVE_CROSS_CHOP
|
|
.2byte MOVE_AEROBLAST
|
|
.2byte MOVE_CONFUSE_RAY
|
|
.2byte MOVE_SWEET_KISS
|
|
.2byte MOVE_SCREECH
|
|
.2byte MOVE_COTTON_SPORE
|
|
.2byte MOVE_SCARY_FACE
|
|
.2byte MOVE_FAKE_TEARS
|
|
.2byte MOVE_METAL_SOUND
|
|
.2byte MOVE_THUNDER_WAVE
|
|
.2byte MOVE_GLARE
|
|
.2byte MOVE_POISON_POWDER
|
|
.2byte MOVE_SHADOW_BALL
|
|
.2byte MOVE_DYNAMIC_PUNCH
|
|
.2byte MOVE_HYPER_BEAM
|
|
.2byte MOVE_EXTREME_SPEED
|
|
.2byte MOVE_THIEF
|
|
.2byte MOVE_COVET
|
|
.2byte MOVE_ATTRACT
|
|
.2byte MOVE_SWAGGER
|
|
.2byte MOVE_TORMENT
|
|
.2byte MOVE_FLATTER
|
|
.2byte MOVE_TRICK
|
|
.2byte MOVE_SUPERPOWER
|
|
.2byte MOVE_SKILL_SWAP
|
|
.2byte -1
|
|
|
|
AI_CV_AttackUp:: @ 81DA848
|
|
if_stat_level_less_than AI_USER, STAT_ATK, 9, AI_CV_AttackUp2
|
|
if_random_less_than 100, AI_CV_AttackUp3
|
|
score -1
|
|
goto AI_CV_AttackUp3
|
|
|
|
AI_CV_AttackUp2:: @ 81DA85D
|
|
if_hp_not_equal AI_USER, 100, AI_CV_AttackUp3
|
|
if_random_less_than 128, AI_CV_AttackUp3
|
|
score +2
|
|
|
|
AI_CV_AttackUp3:: @ 81DA86C
|
|
if_hp_more_than AI_USER, 70, AI_CV_AttackUp_End
|
|
if_hp_less_than AI_USER, 40, AI_CV_AttackUp_ScoreDown2
|
|
if_random_less_than 40, AI_CV_AttackUp_End
|
|
|
|
AI_CV_AttackUp_ScoreDown2:: @ 81DA880
|
|
score -2
|
|
|
|
AI_CV_AttackUp_End:: @ 81DA882
|
|
end
|
|
|
|
AI_CV_DefenseUp:: @ 81DA883
|
|
if_stat_level_less_than AI_USER, STAT_DEF, 9, AI_CV_DefenseUp2
|
|
if_random_less_than 100, AI_CV_DefenseUp3
|
|
score -1
|
|
goto AI_CV_DefenseUp3
|
|
|
|
AI_CV_DefenseUp2:: @ 81DA898
|
|
if_hp_not_equal AI_USER, 100, AI_CV_DefenseUp3
|
|
if_random_less_than 128, AI_CV_DefenseUp3
|
|
score +2
|
|
|
|
AI_CV_DefenseUp3:: @ 81DA8A7
|
|
if_hp_less_than AI_USER, 70, AI_CV_DefenseUp4
|
|
if_random_less_than 200, AI_CV_DefenseUp_End
|
|
|
|
AI_CV_DefenseUp4:: @ 81DA8B4
|
|
if_hp_less_than AI_USER, 40, AI_CV_DefenseUp_ScoreDown2
|
|
get_last_used_move AI_TARGET
|
|
get_move_power_from_result
|
|
if_equal 0, AI_CV_DefenseUp5
|
|
get_last_used_move AI_TARGET
|
|
get_move_type_from_result
|
|
if_not_in_bytes AI_CV_DefenseUp_PhysicalTypes, AI_CV_DefenseUp_ScoreDown2
|
|
if_random_less_than 60, AI_CV_DefenseUp_End
|
|
|
|
AI_CV_DefenseUp5:: @ 81DA8D6
|
|
if_random_less_than 60, AI_CV_DefenseUp_End
|
|
|
|
AI_CV_DefenseUp_ScoreDown2:: @ 81DA8DC
|
|
score -2
|
|
|
|
AI_CV_DefenseUp_End:: @ 81DA8DE
|
|
end
|
|
|
|
AI_CV_DefenseUp_PhysicalTypes:: @ 81DA8DF
|
|
.byte TYPE_NORMAL
|
|
.byte TYPE_FIGHTING
|
|
.byte TYPE_POISON
|
|
.byte TYPE_GROUND
|
|
.byte TYPE_FLYING
|
|
.byte TYPE_ROCK
|
|
.byte TYPE_BUG
|
|
.byte TYPE_GHOST
|
|
.byte TYPE_STEEL
|
|
.byte -1
|
|
|
|
AI_CV_SpeedUp:: @ 81DA8E9
|
|
if_target_faster AI_CV_SpeedUp2
|
|
score -3
|
|
goto AI_CV_SpeedUp_End
|
|
|
|
AI_CV_SpeedUp2:: @ 81DA8F6
|
|
if_random_less_than 70, AI_CV_SpeedUp_End
|
|
score +3
|
|
|
|
AI_CV_SpeedUp_End:: @ 81DA8FE
|
|
end
|
|
|
|
AI_CV_SpAtkUp:: @ 81DA8FF
|
|
if_stat_level_less_than AI_USER, STAT_SPATK, 9, AI_CV_SpAtkUp2
|
|
if_random_less_than 100, AI_CV_SpAtkUp3
|
|
score -1
|
|
goto AI_CV_SpAtkUp3
|
|
|
|
AI_CV_SpAtkUp2:: @ 81DA914
|
|
if_hp_not_equal AI_USER, 100, AI_CV_SpAtkUp3
|
|
if_random_less_than 128, AI_CV_SpAtkUp3
|
|
score +2
|
|
|
|
AI_CV_SpAtkUp3:: @ 81DA923
|
|
if_hp_more_than AI_USER, 70, AI_CV_SpAtkUp_End
|
|
if_hp_less_than AI_USER, 40, AI_CV_SpAtkUp_ScoreDown2
|
|
if_random_less_than 70, AI_CV_SpAtkUp_End
|
|
|
|
AI_CV_SpAtkUp_ScoreDown2:: @ 81DA937
|
|
score -2
|
|
|
|
AI_CV_SpAtkUp_End:: @ 81DA939
|
|
end
|
|
|
|
AI_CV_SpDefUp:: @ 81DA93A
|
|
if_stat_level_less_than AI_USER, STAT_SPDEF, 9, AI_CV_SpDefUp2
|
|
if_random_less_than 100, AI_CV_SpDefUp3
|
|
score -1
|
|
goto AI_CV_SpDefUp3
|
|
|
|
AI_CV_SpDefUp2:: @ 81DA94F
|
|
if_hp_not_equal AI_USER, 100, AI_CV_SpDefUp3
|
|
if_random_less_than 128, AI_CV_SpDefUp3
|
|
score +2
|
|
|
|
AI_CV_SpDefUp3:: @ 81DA95E
|
|
if_hp_less_than AI_USER, 70, AI_CV_SpDefUp4
|
|
if_random_less_than 200, AI_CV_SpDefUp_End
|
|
|
|
AI_CV_SpDefUp4:: @ 81DA96B
|
|
if_hp_less_than AI_USER, 40, AI_CV_SpDefUp_ScoreDown2
|
|
get_last_used_move AI_TARGET
|
|
get_move_power_from_result
|
|
if_equal 0, AI_CV_SpDefUp5
|
|
get_last_used_move AI_TARGET
|
|
get_move_type_from_result
|
|
if_in_bytes AI_CV_SpDefUp_PhysicalTypes, AI_CV_SpDefUp_ScoreDown2
|
|
if_random_less_than 60, AI_CV_SpDefUp_End
|
|
|
|
AI_CV_SpDefUp5:: @ 81DA98D
|
|
if_random_less_than 60, AI_CV_SpDefUp_End
|
|
|
|
AI_CV_SpDefUp_ScoreDown2:: @ 81DA993
|
|
score -2
|
|
|
|
AI_CV_SpDefUp_End:: @ 81DA995
|
|
end
|
|
|
|
AI_CV_SpDefUp_PhysicalTypes:: @ 81DA996
|
|
.byte TYPE_NORMAL
|
|
.byte TYPE_FIGHTING
|
|
.byte TYPE_POISON
|
|
.byte TYPE_GROUND
|
|
.byte TYPE_FLYING
|
|
.byte TYPE_ROCK
|
|
.byte TYPE_BUG
|
|
.byte TYPE_GHOST
|
|
.byte TYPE_STEEL
|
|
.byte -1
|
|
|
|
AI_CV_AccuracyUp:: @ 81DA9A0
|
|
if_stat_level_less_than AI_USER, STAT_ACC, 9, AI_CV_AccuracyUp2
|
|
if_random_less_than 50, AI_CV_AccuracyUp2
|
|
score -2
|
|
|
|
AI_CV_AccuracyUp2:: @ 81DA9B0
|
|
if_hp_more_than AI_USER, 70, AI_CV_AccuracyUp_End
|
|
score -2
|
|
|
|
AI_CV_AccuracyUp_End:: @ 81DA9B9
|
|
end
|
|
|
|
AI_CV_EvasionUp:: @ 81DA9BA
|
|
if_hp_less_than AI_USER, 90, AI_CV_EvasionUp2
|
|
if_random_less_than 100, AI_CV_EvasionUp2
|
|
score +3
|
|
|
|
AI_CV_EvasionUp2:: @ 81DA9C9
|
|
if_stat_level_less_than AI_USER, STAT_EVASION, 9, AI_CV_EvasionUp3
|
|
if_random_less_than 128, AI_CV_EvasionUp3
|
|
score -1
|
|
|
|
AI_CV_EvasionUp3:: @ 81DA9D9
|
|
if_not_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_EvasionUp5
|
|
if_hp_more_than AI_USER, 50, AI_CV_EvasionUp4
|
|
if_random_less_than 80, AI_CV_EvasionUp5
|
|
|
|
AI_CV_EvasionUp4:: @ 81DA9F0
|
|
if_random_less_than 50, AI_CV_EvasionUp5
|
|
score +3
|
|
|
|
AI_CV_EvasionUp5:: @ 81DA9F8
|
|
if_not_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_EvasionUp6
|
|
if_random_less_than 70, AI_CV_EvasionUp6
|
|
score +3
|
|
|
|
AI_CV_EvasionUp6:: @ 81DAA0A
|
|
if_not_status3 AI_USER, STATUS3_ROOTED, AI_CV_EvasionUp7
|
|
if_random_less_than 128, AI_CV_EvasionUp7
|
|
score +2
|
|
|
|
AI_CV_EvasionUp7:: @ 81DAA1C
|
|
if_not_status2 AI_TARGET, STATUS2_CURSED, AI_CV_EvasionUp8
|
|
if_random_less_than 70, AI_CV_EvasionUp8
|
|
score +3
|
|
|
|
AI_CV_EvasionUp8:: @ 81DAA2E
|
|
if_hp_more_than AI_USER, 70, AI_CV_EvasionUp_End
|
|
if_stat_level_equal AI_USER, STAT_EVASION, 6, AI_CV_EvasionUp_End
|
|
if_hp_less_than AI_USER, 40, AI_CV_EvasionUp_ScoreDown2
|
|
if_hp_less_than AI_TARGET, 40, AI_CV_EvasionUp_ScoreDown2
|
|
if_random_less_than 70, AI_CV_EvasionUp_End
|
|
|
|
AI_CV_EvasionUp_ScoreDown2:: @ 81DAA51
|
|
score -2
|
|
|
|
AI_CV_EvasionUp_End:: @ 81DAA53
|
|
end
|
|
|
|
AI_CV_AlwaysHit:: @ 81DAA54
|
|
if_stat_level_more_than AI_TARGET, STAT_EVASION, 10, AI_CV_AlwaysHit_ScoreUp1
|
|
if_stat_level_less_than AI_USER, STAT_ACC, 2, AI_CV_AlwaysHit_ScoreUp1
|
|
if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_AlwaysHit2
|
|
if_stat_level_less_than AI_USER, STAT_ACC, 4, AI_CV_AlwaysHit2
|
|
goto AI_CV_AlwaysHit_End
|
|
|
|
AI_CV_AlwaysHit_ScoreUp1:: @ 81DAA79
|
|
score +1
|
|
|
|
AI_CV_AlwaysHit2:: @ 81DAA7B
|
|
if_random_less_than 100, AI_CV_AlwaysHit_End
|
|
score +1
|
|
|
|
AI_CV_AlwaysHit_End:: @ 81DAA83
|
|
end
|
|
|
|
AI_CV_AttackDown:: @ 81DAA84
|
|
if_stat_level_equal AI_TARGET, STAT_ATK, 6, AI_CV_AttackDown3
|
|
score -1
|
|
if_hp_more_than AI_USER, 90, AI_CV_AttackDown2
|
|
score -1
|
|
|
|
AI_CV_AttackDown2:: @ 81DAA97
|
|
if_stat_level_more_than AI_TARGET, STAT_ATK, 3, AI_CV_AttackDown3
|
|
if_random_less_than 50, AI_CV_AttackDown3
|
|
score -2
|
|
|
|
AI_CV_AttackDown3:: @ 81DAAA7
|
|
if_hp_more_than AI_TARGET, 70, AI_CV_AttackDown4
|
|
score -2
|
|
|
|
AI_CV_AttackDown4:: @ 81DAAB0
|
|
get_target_type1
|
|
if_in_bytes AI_CV_AttackDown_PhysicalTypeList, AI_CV_AttackDown_End
|
|
get_target_type2
|
|
if_in_bytes AI_CV_AttackDown_PhysicalTypeList, AI_CV_AttackDown_End
|
|
if_random_less_than 50, AI_CV_AttackDown_End
|
|
score -2
|
|
|
|
AI_CV_AttackDown_End:: @ 81DAACE
|
|
end
|
|
|
|
@ Missing Poison, Flying, and Ghost for unknown reason
|
|
AI_CV_AttackDown_PhysicalTypeList:: @ 81DAACF
|
|
.byte TYPE_NORMAL
|
|
.byte TYPE_FIGHTING
|
|
.byte TYPE_GROUND
|
|
.byte TYPE_ROCK
|
|
.byte TYPE_BUG
|
|
.byte TYPE_STEEL
|
|
.byte -1
|
|
|
|
AI_CV_DefenseDown:: @ 81DAAD6
|
|
if_hp_less_than AI_USER, 70, AI_CV_DefenseDown2
|
|
if_stat_level_more_than AI_TARGET, STAT_DEF, 3, AI_CV_DefenseDown3
|
|
|
|
AI_CV_DefenseDown2:: @ 81DAAE5
|
|
if_random_less_than 50, AI_CV_DefenseDown3
|
|
score -2
|
|
|
|
AI_CV_DefenseDown3:: @ 81DAAED
|
|
if_hp_more_than AI_TARGET, 70, AI_CV_DefenseDown_End
|
|
score -2
|
|
|
|
AI_CV_DefenseDown_End:: @ 81DAAF6
|
|
end
|
|
|
|
AI_CV_SpeedDownFromChance:: @ 81DAAF7
|
|
if_move MOVE_ICY_WIND, AI_CV_SpeedDown
|
|
if_move MOVE_ROCK_TOMB, AI_CV_SpeedDown
|
|
if_move MOVE_MUD_SHOT, AI_CV_SpeedDown
|
|
end
|
|
|
|
AI_CV_SpeedDown:: @ 81DAB0D
|
|
if_target_faster AI_CV_SpeedDown2
|
|
score -3
|
|
goto AI_CV_SpeedDown_End
|
|
|
|
AI_CV_SpeedDown2:: @ 81DAB1A
|
|
if_random_less_than 70, AI_CV_SpeedDown_End
|
|
score +2
|
|
|
|
AI_CV_SpeedDown_End:: @ 81DAB22
|
|
end
|
|
|
|
AI_CV_SpAtkDown:: @ 81DAB23
|
|
if_stat_level_equal AI_TARGET, STAT_ATK, 6, AI_CV_SpAtkDown3
|
|
score -1
|
|
if_hp_more_than AI_USER, 90, AI_CV_SpAtkDown2
|
|
score -1
|
|
|
|
AI_CV_SpAtkDown2:: @ 81DAB36
|
|
if_stat_level_more_than AI_TARGET, STAT_SPATK, 3, AI_CV_SpAtkDown3
|
|
if_random_less_than 50, AI_CV_SpAtkDown3
|
|
score -2
|
|
|
|
AI_CV_SpAtkDown3:: @ 81DAB46
|
|
if_hp_more_than AI_TARGET, 70, AI_CV_SpAtkDown4
|
|
score -2
|
|
|
|
AI_CV_SpAtkDown4:: @ 81DAB4F
|
|
get_target_type1
|
|
if_in_bytes AI_CV_SpAtkDown_SpecialTypeList, AI_CV_SpAtkDown_End
|
|
get_target_type2
|
|
if_in_bytes AI_CV_SpAtkDown_SpecialTypeList, AI_CV_SpAtkDown_End
|
|
if_random_less_than 50, AI_CV_SpAtkDown_End
|
|
score -2
|
|
|
|
AI_CV_SpAtkDown_End:: @ 81DAB6D
|
|
end
|
|
|
|
AI_CV_SpAtkDown_SpecialTypeList:: @ 81DAB6E
|
|
.byte TYPE_FIRE
|
|
.byte TYPE_WATER
|
|
.byte TYPE_GRASS
|
|
.byte TYPE_ELECTRIC
|
|
.byte TYPE_PSYCHIC
|
|
.byte TYPE_ICE
|
|
.byte TYPE_DRAGON
|
|
.byte TYPE_DARK
|
|
.byte -1
|
|
|
|
AI_CV_SpDefDown:: @ 81DAB77
|
|
if_hp_less_than AI_USER, 70, AI_CV_SpDefDown2
|
|
if_stat_level_more_than AI_TARGET, STAT_SPDEF, 3, AI_CV_SpDefDown3
|
|
|
|
AI_CV_SpDefDown2:: @ 81DAB86
|
|
if_random_less_than 50, AI_CV_SpDefDown3
|
|
score -2
|
|
|
|
AI_CV_SpDefDown3:: @ 81DAB8E
|
|
if_hp_more_than AI_TARGET, 70, AI_CV_SpDefDown_End
|
|
score -2
|
|
|
|
AI_CV_SpDefDown_End:: @ 81DAB97
|
|
end
|
|
|
|
AI_CV_AccuracyDown:: @ 81DAB98
|
|
if_hp_less_than AI_USER, 70, AI_CV_AccuracyDown2
|
|
if_hp_more_than AI_TARGET, 70, AI_CV_AccuracyDown3
|
|
|
|
AI_CV_AccuracyDown2:: @ 81DABA6
|
|
if_random_less_than 100, AI_CV_AccuracyDown3
|
|
score -1
|
|
|
|
AI_CV_AccuracyDown3:: @ 81DABAE
|
|
if_stat_level_more_than AI_USER, STAT_ACC, 4, AI_CV_AccuracyDown4
|
|
if_random_less_than 80, AI_CV_AccuracyDown4
|
|
score -2
|
|
|
|
AI_CV_AccuracyDown4:: @ 81DABBE
|
|
if_not_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_AccuracyDown5
|
|
if_random_less_than 70, AI_CV_AccuracyDown5
|
|
score +2
|
|
|
|
AI_CV_AccuracyDown5:: @ 81DABD0
|
|
if_not_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_AccuracyDown6
|
|
if_random_less_than 70, AI_CV_AccuracyDown6
|
|
score +2
|
|
|
|
AI_CV_AccuracyDown6:: @ 81DABE2
|
|
if_not_status3 AI_USER, STATUS3_ROOTED, AI_CV_AccuracyDown7
|
|
if_random_less_than 128, AI_CV_AccuracyDown7
|
|
score +1
|
|
|
|
AI_CV_AccuracyDown7:: @ 81DABF4
|
|
if_not_status2 AI_TARGET, STATUS2_CURSED, AI_CV_AccuracyDown8
|
|
if_random_less_than 70, AI_CV_AccuracyDown8
|
|
score +2
|
|
|
|
AI_CV_AccuracyDown8:: @ 81DAC06
|
|
if_hp_more_than AI_USER, 70, AI_CV_AccuracyDown_End
|
|
if_stat_level_equal AI_TARGET, STAT_ACC, 6, AI_CV_AccuracyDown_End
|
|
if_hp_less_than AI_USER, 40, AI_CV_AccuracyDown_ScoreDown2
|
|
if_hp_less_than AI_TARGET, 40, AI_CV_AccuracyDown_ScoreDown2
|
|
if_random_less_than 70, AI_CV_AccuracyDown_End
|
|
|
|
AI_CV_AccuracyDown_ScoreDown2:: @ 81DAC29
|
|
score -2
|
|
|
|
AI_CV_AccuracyDown_End:: @ 81DAC2B
|
|
end
|
|
|
|
AI_CV_EvasionDown:: @ 81DAC2C
|
|
if_hp_less_than AI_USER, 70, AI_CV_EvasionDown2
|
|
if_stat_level_more_than AI_TARGET, STAT_EVASION, 3, AI_CV_EvasionDown3
|
|
|
|
AI_CV_EvasionDown2:: @ 81DAC3B
|
|
if_random_less_than 50, AI_CV_EvasionDown3
|
|
score -2
|
|
|
|
AI_CV_EvasionDown3:: @ 81DAC43
|
|
if_hp_more_than AI_TARGET, 70, AI_CV_EvasionDown_End
|
|
score -2
|
|
|
|
AI_CV_EvasionDown_End:: @ 81DAC4C
|
|
end
|
|
|
|
AI_CV_Haze:: @ 81DAC4D
|
|
if_stat_level_more_than AI_USER, STAT_ATK, 8, AI_CV_Haze2
|
|
if_stat_level_more_than AI_USER, STAT_DEF, 8, AI_CV_Haze2
|
|
if_stat_level_more_than AI_USER, STAT_SPATK, 8, AI_CV_Haze2
|
|
if_stat_level_more_than AI_USER, STAT_SPDEF, 8, AI_CV_Haze2
|
|
if_stat_level_more_than AI_USER, STAT_EVASION, 8, AI_CV_Haze2
|
|
if_stat_level_less_than AI_TARGET, STAT_ATK, 4, AI_CV_Haze2
|
|
if_stat_level_less_than AI_TARGET, STAT_DEF, 4, AI_CV_Haze2
|
|
if_stat_level_less_than AI_TARGET, STAT_SPATK, 4, AI_CV_Haze2
|
|
if_stat_level_less_than AI_TARGET, STAT_SPDEF, 4, AI_CV_Haze2
|
|
if_stat_level_less_than AI_TARGET, STAT_ACC, 4, AI_CV_Haze2
|
|
goto AI_CV_Haze3
|
|
|
|
AI_CV_Haze2:: @ 81DACA2
|
|
if_random_less_than 50, AI_CV_Haze3
|
|
score -3
|
|
|
|
AI_CV_Haze3:: @ 81DACAA
|
|
if_stat_level_more_than AI_TARGET, STAT_ATK, 8, AI_CV_Haze4
|
|
if_stat_level_more_than AI_TARGET, STAT_DEF, 8, AI_CV_Haze4
|
|
if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, AI_CV_Haze4
|
|
if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, AI_CV_Haze4
|
|
if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_Haze4
|
|
if_stat_level_less_than AI_USER, STAT_ATK, 4, AI_CV_Haze4
|
|
if_stat_level_less_than AI_USER, STAT_DEF, 4, AI_CV_Haze4
|
|
if_stat_level_less_than AI_USER, STAT_SPATK, 4, AI_CV_Haze4
|
|
if_stat_level_less_than AI_USER, STAT_SPDEF, 4, AI_CV_Haze4
|
|
if_stat_level_less_than AI_USER, STAT_ACC, 4, AI_CV_Haze4
|
|
if_random_less_than 50, AI_CV_Haze_End
|
|
score -1
|
|
goto AI_CV_Haze_End
|
|
|
|
AI_CV_Haze4:: @ 81DAD07
|
|
if_random_less_than 50, AI_CV_Haze_End
|
|
score +3
|
|
|
|
AI_CV_Haze_End:: @ 81DAD0F
|
|
end
|
|
|
|
AI_CV_Bide:: @ 81DAD10
|
|
if_hp_more_than AI_USER, 90, AI_CV_Bide_End
|
|
score -2
|
|
|
|
AI_CV_Bide_End:: @ 81DAD19
|
|
end
|
|
|
|
AI_CV_Roar:: @ 81DAD1A
|
|
if_stat_level_more_than AI_TARGET, STAT_ATK, 8, AI_CV_Roar2
|
|
if_stat_level_more_than AI_TARGET, STAT_DEF, 8, AI_CV_Roar2
|
|
if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, AI_CV_Roar2
|
|
if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, AI_CV_Roar2
|
|
if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_Roar2
|
|
score -3
|
|
goto AI_CV_Roar_End
|
|
|
|
AI_CV_Roar2:: @ 81DAD49
|
|
if_random_less_than 128, AI_CV_Roar_End
|
|
score +2
|
|
|
|
AI_CV_Roar_End:: @ 81DAD51
|
|
end
|
|
|
|
AI_CV_Conversion:: @ 81DAD52
|
|
if_hp_more_than AI_USER, 90, AI_CV_Conversion2
|
|
score -2
|
|
|
|
AI_CV_Conversion2:: @ 81DAD5B
|
|
get_turn_count
|
|
if_equal 0, AI_CV_Conversion_End
|
|
if_random_less_than 200, Score_Minus2
|
|
|
|
AI_CV_Conversion_End:: @ 81DAD68
|
|
end
|
|
|
|
AI_CV_HealWeather:: @ 81DAD69
|
|
get_weather
|
|
if_equal AI_WEATHER_HAIL, AI_CV_HealWeather_ScoreDown2
|
|
if_equal AI_WEATHER_RAIN, AI_CV_HealWeather_ScoreDown2
|
|
if_equal AI_WEATHER_SANDSTORM, AI_CV_HealWeather_ScoreDown2
|
|
goto AI_CV_Heal
|
|
|
|
AI_CV_HealWeather_ScoreDown2:: @ 81DAD81
|
|
score -2
|
|
|
|
AI_CV_Heal:: @ 81DAD83
|
|
if_hp_equal AI_USER, 100, AI_CV_Heal3
|
|
if_target_faster AI_CV_Heal4
|
|
score -8
|
|
goto AI_CV_Heal_End
|
|
|
|
@ Never reached
|
|
AI_CV_Heal2:
|
|
if_hp_less_than AI_USER, 50, AI_CV_Heal5
|
|
if_hp_more_than AI_USER, 80, AI_CV_Heal3
|
|
if_random_less_than 70, AI_CV_Heal5
|
|
|
|
AI_CV_Heal3:: @ 81DADAB
|
|
score -3
|
|
goto AI_CV_Heal_End
|
|
|
|
AI_CV_Heal4:: @ 81DADB2
|
|
if_hp_less_than AI_USER, 70, AI_CV_Heal5
|
|
if_random_less_than 30, AI_CV_Heal5
|
|
score -3
|
|
goto AI_CV_Heal_End
|
|
|
|
AI_CV_Heal5:: @ 81DADC6
|
|
if_doesnt_have_move_with_effect AI_TARGET, EFFECT_SNATCH, AI_CV_Heal6
|
|
if_random_less_than 100, AI_CV_Heal_End
|
|
|
|
AI_CV_Heal6:: @ 81DADD3
|
|
if_random_less_than 20, AI_CV_Heal_End
|
|
score +2
|
|
|
|
AI_CV_Heal_End:: @ 81DADDB
|
|
end
|
|
|
|
AI_CV_Toxic:: @ 81DADDC
|
|
if_user_has_no_attacking_moves AI_CV_Toxic3
|
|
if_hp_more_than AI_USER, 50, AI_CV_Toxic2
|
|
if_random_less_than 50, AI_CV_Toxic2
|
|
score -3
|
|
|
|
AI_CV_Toxic2:: @ 81DADF0
|
|
if_hp_more_than AI_TARGET, 50, AI_CV_Toxic3
|
|
if_random_less_than 50, AI_CV_Toxic3
|
|
score -3
|
|
|
|
AI_CV_Toxic3:: @ 81DADFF
|
|
if_has_move_with_effect AI_USER, EFFECT_SPECIAL_DEFENSE_UP, AI_CV_Toxic4
|
|
if_has_move_with_effect AI_USER, EFFECT_PROTECT, AI_CV_Toxic4
|
|
goto AI_CV_Toxic_End
|
|
|
|
AI_CV_Toxic4:: @ 81DAE12
|
|
if_random_less_than 60, AI_CV_Toxic_End
|
|
score +2
|
|
|
|
AI_CV_Toxic_End:: @ 81DAE1A
|
|
end
|
|
|
|
AI_CV_LightScreen:: @ 81DAE1B
|
|
if_hp_less_than AI_USER, 50, AI_CV_LightScreen_ScoreDown2
|
|
get_target_type1
|
|
if_in_bytes AI_CV_LightScreen_SpecialTypeList, AI_CV_LightScreen_End
|
|
get_target_type2
|
|
if_in_bytes AI_CV_LightScreen_SpecialTypeList, AI_CV_LightScreen_End
|
|
if_random_less_than 50, AI_CV_LightScreen_End
|
|
|
|
AI_CV_LightScreen_ScoreDown2:: @ 81DAE3E
|
|
score -2
|
|
|
|
AI_CV_LightScreen_End:: @ 81DAE40
|
|
end
|
|
|
|
AI_CV_LightScreen_SpecialTypeList:: @ 81DAE41
|
|
.byte TYPE_FIRE
|
|
.byte TYPE_WATER
|
|
.byte TYPE_GRASS
|
|
.byte TYPE_ELECTRIC
|
|
.byte TYPE_PSYCHIC
|
|
.byte TYPE_ICE
|
|
.byte TYPE_DRAGON
|
|
.byte TYPE_DARK
|
|
.byte -1
|
|
|
|
AI_CV_Rest:: @ 81DAE4A
|
|
if_target_faster AI_CV_Rest4
|
|
if_hp_not_equal AI_USER, 100, AI_CV_Rest2
|
|
score -8
|
|
goto AI_CV_Rest_End
|
|
|
|
AI_CV_Rest2:: @ 81DAE5E
|
|
if_hp_less_than AI_USER, 40, AI_CV_Rest6
|
|
if_hp_more_than AI_USER, 50, AI_CV_Rest3
|
|
if_random_less_than 70, AI_CV_Rest6
|
|
|
|
AI_CV_Rest3:: @ 81DAE72
|
|
score -3
|
|
goto AI_CV_Rest_End
|
|
|
|
AI_CV_Rest4:: @ 81DAE79
|
|
if_hp_less_than AI_USER, 60, AI_CV_Rest6
|
|
if_hp_more_than AI_USER, 70, AI_CV_Rest5
|
|
if_random_less_than 50, AI_CV_Rest6
|
|
|
|
AI_CV_Rest5:: @ 81DAE8D
|
|
score -3
|
|
goto AI_CV_Rest_End
|
|
|
|
AI_CV_Rest6:: @ 81DAE94
|
|
if_doesnt_have_move_with_effect AI_TARGET, EFFECT_SNATCH, AI_CV_Rest7
|
|
if_random_less_than 50, AI_CV_Rest_End
|
|
|
|
AI_CV_Rest7:: @ 81DAEA1
|
|
if_random_less_than 10, AI_CV_Rest_End
|
|
score +3
|
|
|
|
AI_CV_Rest_End:: @ 81DAEA9
|
|
end
|
|
|
|
AI_CV_OneHitKO:: @ 81DAEAA
|
|
end
|
|
|
|
AI_CV_SuperFang:: @ 81DAEAB
|
|
if_hp_more_than AI_TARGET, 50, AI_CV_SuperFang_End
|
|
score -1
|
|
|
|
AI_CV_SuperFang_End:: @ 81DAEB4
|
|
end
|
|
|
|
AI_CV_Trap:: @ 81DAEB5
|
|
if_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_Trap2
|
|
if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_Trap2
|
|
if_status3 AI_TARGET, STATUS3_PERISH_SONG, AI_CV_Trap2
|
|
if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_Trap2
|
|
goto AI_CV_Trap_End
|
|
|
|
AI_CV_Trap2:: @ 81DAEE2
|
|
if_random_less_than 128, AI_CV_Trap_End
|
|
score +1
|
|
|
|
AI_CV_Trap_End:: @ 81DAEEA
|
|
end
|
|
|
|
AI_CV_HighCrit:: @ 81DAEEB
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_HighCrit_End
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_HighCrit_End
|
|
if_type_effectiveness AI_EFFECTIVENESS_x2, AI_CV_HighCrit2
|
|
if_type_effectiveness AI_EFFECTIVENESS_x4, AI_CV_HighCrit2
|
|
if_random_less_than 128, AI_CV_HighCrit_End
|
|
|
|
AI_CV_HighCrit2:: @ 81DAF09
|
|
if_random_less_than 128, AI_CV_HighCrit_End
|
|
score +1
|
|
|
|
AI_CV_HighCrit_End:: @ 81DAF11
|
|
end
|
|
|
|
@ Improvement in Emerald
|
|
@AI_CV_Swagger:
|
|
@ if_has_move AI_USER, MOVE_PSYCH_UP, AI_CV_SwaggerHasPsychUp
|
|
|
|
AI_CV_Flatter:: @ 81DAF12
|
|
if_random_less_than 128, AI_CV_Confuse
|
|
score +1
|
|
|
|
AI_CV_Confuse:: @ 81DAF1A
|
|
if_hp_more_than AI_TARGET, 70, AI_CV_Confuse_End
|
|
if_random_less_than 128, AI_CV_Confuse2
|
|
score -1
|
|
|
|
AI_CV_Confuse2:: @ 81DAF29
|
|
if_hp_more_than AI_TARGET, 50, AI_CV_Confuse_End
|
|
score -1
|
|
if_hp_more_than AI_TARGET, 30, AI_CV_Confuse_End
|
|
score -1
|
|
|
|
AI_CV_Confuse_End:: @ 81DAF3B
|
|
end
|
|
|
|
@ Improvement in Emerald
|
|
@AI_CV_SwaggerHasPsychUp:
|
|
@ if_stat_level_more_than AI_TARGET, STAT_ATK, 3, AI_CV_SwaggerHasPsychUp_Minus5
|
|
@ score +3
|
|
@ get_turn_count
|
|
@ if_not_equal 0, AI_CV_SwaggerHasPsychUp_End
|
|
@ score +2
|
|
@ goto AI_CV_SwaggerHasPsychUp_End
|
|
@
|
|
@AI_CV_SwaggerHasPsychUp_Minus5:
|
|
@ score -5
|
|
@
|
|
@AI_CV_SwaggerHasPsychUp_End:
|
|
@ end
|
|
|
|
AI_CV_Reflect:: @ 81DAF3C
|
|
if_hp_less_than AI_USER, 50, AI_CV_Reflect_ScoreDown2
|
|
get_target_type1
|
|
if_in_bytes AI_CV_Reflect_PhysicalTypeList, AI_CV_Reflect_End
|
|
get_target_type2
|
|
if_in_bytes AI_CV_Reflect_PhysicalTypeList, AI_CV_Reflect_End
|
|
if_random_less_than 50, AI_CV_Reflect_End
|
|
|
|
AI_CV_Reflect_ScoreDown2:: @ 81DAF5F
|
|
score -2
|
|
|
|
AI_CV_Reflect_End:: @ 81DAF61
|
|
end
|
|
|
|
AI_CV_Reflect_PhysicalTypeList:: @ 81DAF62
|
|
.byte TYPE_NORMAL
|
|
.byte TYPE_FIGHTING
|
|
.byte TYPE_FLYING
|
|
.byte TYPE_POISON
|
|
.byte TYPE_GROUND
|
|
.byte TYPE_ROCK
|
|
.byte TYPE_BUG
|
|
.byte TYPE_GHOST
|
|
.byte TYPE_STEEL
|
|
.byte -1
|
|
|
|
AI_CV_Poison:: @ 81DAF6C
|
|
if_hp_less_than AI_USER, 50, AI_CV_Poison_ScoreDown1
|
|
if_hp_more_than AI_TARGET, 50, AI_CV_Poison_End
|
|
|
|
AI_CV_Poison_ScoreDown1:: @ 81DAF7A
|
|
score -1
|
|
|
|
AI_CV_Poison_End:: @ 81DAF7C
|
|
end
|
|
|
|
AI_CV_Paralyze:: @ 81DAF7D
|
|
if_target_faster AI_CV_Paralyze2
|
|
if_hp_more_than AI_USER, 70, AI_CV_Paralyze_End
|
|
score -1
|
|
goto AI_CV_Paralyze_End
|
|
|
|
AI_CV_Paralyze2:: @ 81DAF91
|
|
if_random_less_than 20, AI_CV_Paralyze_End
|
|
score +3
|
|
|
|
AI_CV_Paralyze_End:: @ 81DAF99
|
|
end
|
|
|
|
AI_CV_VitalThrow:: @ 81DAF9A
|
|
if_target_faster AI_CV_VitalThrow_End
|
|
if_hp_more_than AI_USER, 60, AI_CV_VitalThrow_End
|
|
if_hp_less_than AI_USER, 40, AI_CV_VitalThrow2
|
|
if_random_less_than 180, AI_CV_VitalThrow_End
|
|
|
|
AI_CV_VitalThrow2:: @ 81DAFB4
|
|
if_random_less_than 50, AI_CV_VitalThrow_End
|
|
score -1
|
|
|
|
AI_CV_VitalThrow_End:: @ 81DAFBC
|
|
end
|
|
|
|
AI_CV_Substitute:: @ 81DAFBD
|
|
if_hp_more_than AI_USER, 90, AI_CV_Substitute4
|
|
if_hp_more_than AI_USER, 70, AI_CV_Substitute3
|
|
if_hp_more_than AI_USER, 50, AI_CV_Substitute2
|
|
if_random_less_than 100, AI_CV_Substitute2
|
|
score -1
|
|
|
|
AI_CV_Substitute2:: @ 81DAFDA
|
|
if_random_less_than 100, AI_CV_Substitute3
|
|
score -1
|
|
|
|
AI_CV_Substitute3:: @ 81DAFE2
|
|
if_random_less_than 100, AI_CV_Substitute4
|
|
score -1
|
|
|
|
AI_CV_Substitute4:: @ 81DAFEA
|
|
if_target_faster AI_CV_Substitute_End
|
|
get_last_used_move AI_TARGET
|
|
get_move_effect_from_result
|
|
if_equal EFFECT_SLEEP, AI_CV_Substitute5
|
|
if_equal EFFECT_TOXIC, AI_CV_Substitute5
|
|
if_equal EFFECT_POISON, AI_CV_Substitute5
|
|
if_equal EFFECT_PARALYZE, AI_CV_Substitute5
|
|
if_equal EFFECT_WILL_O_WISP, AI_CV_Substitute5
|
|
if_equal EFFECT_CONFUSE, AI_CV_Substitute6
|
|
if_equal EFFECT_LEECH_SEED, AI_CV_Substitute7
|
|
goto AI_CV_Substitute_End
|
|
|
|
AI_CV_Substitute5:: @ 81DB022
|
|
if_not_status AI_TARGET, STATUS1_ANY, AI_CV_Substitute8
|
|
goto AI_CV_Substitute_End
|
|
|
|
AI_CV_Substitute6:: @ 81DB031
|
|
if_not_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_Substitute8
|
|
goto AI_CV_Substitute_End
|
|
|
|
AI_CV_Substitute7:: @ 81DB040
|
|
if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_Substitute_End
|
|
|
|
AI_CV_Substitute8:: @ 81DB04A
|
|
if_random_less_than 100, AI_CV_Substitute_End
|
|
score +1
|
|
|
|
AI_CV_Substitute_End:: @ 81DB052
|
|
end
|
|
|
|
AI_CV_Recharge:: @ 81DB053
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Recharge_ScoreDown1
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_Recharge_ScoreDown1
|
|
if_target_faster AI_CV_Recharge2
|
|
if_hp_more_than AI_USER, 40, AI_CV_Recharge_ScoreDown1
|
|
goto AI_CV_Recharge_End
|
|
|
|
AI_CV_Recharge2:: @ 81DB071
|
|
if_hp_less_than AI_USER, 60, AI_CV_Recharge_End
|
|
|
|
AI_CV_Recharge_ScoreDown1:: @ 81DB078
|
|
score -1
|
|
|
|
AI_CV_Recharge_End:: @ 81DB07A
|
|
end
|
|
|
|
AI_CV_Disable:: @ 81DB07B
|
|
if_target_faster AI_CV_Disable_End
|
|
get_last_used_move AI_TARGET
|
|
get_move_power_from_result
|
|
if_equal 0, AI_CV_Disable2
|
|
score +1
|
|
goto AI_CV_Disable_End
|
|
|
|
AI_CV_Disable2:: @ 81DB091
|
|
if_random_less_than 100, AI_CV_Disable_End
|
|
score -1
|
|
|
|
AI_CV_Disable_End:: @ 81DB099
|
|
end
|
|
|
|
AI_CV_Counter:: @ 81DB09A
|
|
if_status AI_TARGET, STATUS1_SLEEP, AI_CV_Counter_ScoreDown1
|
|
if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_Counter_ScoreDown1
|
|
if_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_Counter_ScoreDown1
|
|
if_hp_more_than AI_USER, 30, AI_CV_Counter2
|
|
if_random_less_than 10, AI_CV_Counter2
|
|
score -1
|
|
|
|
AI_CV_Counter2:: @ 81DB0C7
|
|
if_hp_more_than AI_USER, 50, AI_CV_Counter3
|
|
if_random_less_than 100, AI_CV_Counter3
|
|
score -1
|
|
|
|
AI_CV_Counter3:: @ 81DB0D6
|
|
@ if_has_move AI_USER, MOVE_MIRROR_COAT, AI_CV_Counter7 @ Improvement in Emerald
|
|
get_last_used_move AI_TARGET
|
|
get_move_power_from_result
|
|
if_equal 0, AI_CV_Counter5
|
|
if_target_not_taunted AI_CV_Counter4
|
|
if_random_less_than 100, AI_CV_Counter4
|
|
score +1
|
|
|
|
AI_CV_Counter4:: @ 81DB0EC
|
|
get_last_used_move AI_TARGET
|
|
get_move_type_from_result
|
|
if_not_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_ScoreDown1
|
|
if_random_less_than 100, AI_CV_Counter_End
|
|
score +1
|
|
goto AI_CV_Counter_End
|
|
|
|
AI_CV_Counter5:: @ 81DB105
|
|
if_target_not_taunted AI_CV_Counter6
|
|
if_random_less_than 100, AI_CV_Counter6
|
|
score +1
|
|
|
|
AI_CV_Counter6:: @ 81DB112
|
|
get_target_type1
|
|
if_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_End
|
|
get_target_type2
|
|
if_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_End
|
|
if_random_less_than 50, AI_CV_Counter_End
|
|
|
|
@ Improvement in Emerald
|
|
@AI_CV_Counter7:
|
|
@ if_random_less_than 100, AI_CV_Counter8
|
|
@ score +4
|
|
@
|
|
@AI_CV_Counter8:
|
|
@ end
|
|
|
|
AI_CV_Counter_ScoreDown1:: @ 81DB12E
|
|
score -1
|
|
|
|
AI_CV_Counter_End:: @ 81DB130
|
|
end
|
|
|
|
AI_CV_Counter_PhysicalTypeList:: @ 81DB131
|
|
.byte TYPE_NORMAL
|
|
.byte TYPE_FIGHTING
|
|
.byte TYPE_FLYING
|
|
.byte TYPE_POISON
|
|
.byte TYPE_GROUND
|
|
.byte TYPE_ROCK
|
|
.byte TYPE_BUG
|
|
.byte TYPE_GHOST
|
|
.byte TYPE_STEEL
|
|
.byte -1
|
|
|
|
AI_CV_Encore:: @ 81DB13B
|
|
if_any_move_disabled AI_TARGET, AI_CV_Encore2
|
|
if_target_faster AI_CV_Encore_ScoreDown2
|
|
get_last_used_move AI_TARGET
|
|
get_move_effect_from_result
|
|
if_not_in_bytes AI_CV_Encore_EncouragedMovesToEncore, AI_CV_Encore_ScoreDown2
|
|
|
|
AI_CV_Encore2:: @ 81DB154
|
|
if_random_less_than 30, AI_CV_Encore_End
|
|
score +3
|
|
goto AI_CV_Encore_End
|
|
|
|
AI_CV_Encore_ScoreDown2:: @ 81DB161
|
|
score -2
|
|
|
|
AI_CV_Encore_End:: @ 81DB163
|
|
end
|
|
|
|
AI_CV_Encore_EncouragedMovesToEncore:: @ 81DB164
|
|
.byte EFFECT_DREAM_EATER
|
|
.byte EFFECT_ATTACK_UP
|
|
.byte EFFECT_DEFENSE_UP
|
|
.byte EFFECT_SPEED_UP
|
|
.byte EFFECT_SPECIAL_ATTACK_UP
|
|
.byte EFFECT_HAZE
|
|
.byte EFFECT_ROAR
|
|
.byte EFFECT_CONVERSION
|
|
.byte EFFECT_TOXIC
|
|
.byte EFFECT_LIGHT_SCREEN
|
|
.byte EFFECT_REST
|
|
.byte EFFECT_SUPER_FANG
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP_2
|
|
.byte EFFECT_CONFUSE
|
|
.byte EFFECT_POISON
|
|
.byte EFFECT_PARALYZE
|
|
.byte EFFECT_LEECH_SEED
|
|
.byte EFFECT_SPLASH
|
|
.byte EFFECT_ATTACK_UP_2
|
|
.byte EFFECT_ENCORE
|
|
.byte EFFECT_CONVERSION_2
|
|
.byte EFFECT_LOCK_ON
|
|
.byte EFFECT_HEAL_BELL
|
|
.byte EFFECT_MEAN_LOOK
|
|
.byte EFFECT_NIGHTMARE
|
|
.byte EFFECT_PROTECT
|
|
.byte EFFECT_SKILL_SWAP
|
|
.byte EFFECT_FORESIGHT
|
|
.byte EFFECT_PERISH_SONG
|
|
.byte EFFECT_SANDSTORM
|
|
.byte EFFECT_ENDURE
|
|
.byte EFFECT_SWAGGER
|
|
.byte EFFECT_ATTRACT
|
|
.byte EFFECT_SAFEGUARD
|
|
.byte EFFECT_RAIN_DANCE
|
|
.byte EFFECT_SUNNY_DAY
|
|
.byte EFFECT_BELLY_DRUM
|
|
.byte EFFECT_PSYCH_UP
|
|
.byte EFFECT_FUTURE_SIGHT
|
|
.byte EFFECT_FAKE_OUT
|
|
.byte EFFECT_STOCKPILE
|
|
.byte EFFECT_SPIT_UP
|
|
.byte EFFECT_SWALLOW
|
|
.byte EFFECT_HAIL
|
|
.byte EFFECT_TORMENT
|
|
.byte EFFECT_WILL_O_WISP
|
|
.byte EFFECT_FOLLOW_ME
|
|
.byte EFFECT_CHARGE
|
|
.byte EFFECT_TRICK
|
|
.byte EFFECT_ROLE_PLAY
|
|
.byte EFFECT_INGRAIN
|
|
.byte EFFECT_RECYCLE
|
|
.byte EFFECT_KNOCK_OFF
|
|
.byte EFFECT_SKILL_SWAP
|
|
.byte EFFECT_IMPRISON
|
|
.byte EFFECT_REFRESH
|
|
.byte EFFECT_GRUDGE
|
|
.byte EFFECT_TEETER_DANCE
|
|
.byte EFFECT_MUD_SPORT
|
|
.byte EFFECT_WATER_SPORT
|
|
.byte EFFECT_DRAGON_DANCE
|
|
.byte EFFECT_CAMOUFLAGE
|
|
.byte -1
|
|
|
|
AI_CV_PainSplit:: @ 81DB1A3
|
|
if_hp_less_than AI_TARGET, 80, AI_CV_PainSplit_ScoreDown1
|
|
if_target_faster AI_CV_PainSplit2
|
|
if_hp_more_than AI_USER, 40, AI_CV_PainSplit_ScoreDown1
|
|
score +1
|
|
goto AI_CV_PainSplit_End
|
|
|
|
AI_CV_PainSplit2:: @ 81DB1BE
|
|
if_hp_more_than AI_USER, 60, AI_CV_PainSplit_ScoreDown1
|
|
score +1
|
|
goto AI_CV_PainSplit_End
|
|
|
|
AI_CV_PainSplit_ScoreDown1:: @ 81DB1CC
|
|
score -1
|
|
|
|
AI_CV_PainSplit_End:: @ 81DB1CE
|
|
end
|
|
|
|
AI_CV_Snore:: @ 81DB1CF
|
|
score +2
|
|
end
|
|
|
|
AI_CV_LockOn:: @ 81DB1D2
|
|
if_random_less_than 128, AI_CV_LockOn_End
|
|
score +2
|
|
|
|
AI_CV_LockOn_End:: @ 81DB1DA
|
|
end
|
|
|
|
AI_CV_SleepTalk:: @ 81DB1DB
|
|
@ if_status AI_USER, STATUS1_SLEEP, Score_Plus10 @ Improvement in Emerald
|
|
score +2 @ Change to -5
|
|
end
|
|
|
|
AI_CV_DestinyBond:: @ 81DB1DE
|
|
score -1
|
|
if_target_faster AI_CV_DestinyBond_End
|
|
if_hp_more_than AI_USER, 70, AI_CV_DestinyBond_End
|
|
if_random_less_than 128, AI_CV_DestinyBond2
|
|
score +1
|
|
|
|
AI_CV_DestinyBond2:: @ 81DB1F5
|
|
if_hp_more_than AI_USER, 50, AI_CV_DestinyBond_End
|
|
if_random_less_than 128, AI_CV_DestinyBond3
|
|
score +1
|
|
|
|
AI_CV_DestinyBond3:: @ 81DB204
|
|
if_hp_more_than AI_USER, 30, AI_CV_DestinyBond_End
|
|
if_random_less_than 100, AI_CV_DestinyBond_End
|
|
score +2
|
|
|
|
AI_CV_DestinyBond_End:: @ 81DB213
|
|
end
|
|
|
|
AI_CV_Flail:: @ 81DB214
|
|
if_target_faster AI_CV_Flail2
|
|
if_hp_more_than AI_USER, 33, AI_CV_Flail_ScoreDown1
|
|
if_hp_more_than AI_USER, 20, AI_CV_Flail_End
|
|
if_hp_less_than AI_USER, 8, AI_CV_Flail_ScoreUp1
|
|
goto AI_CV_Flail3
|
|
|
|
AI_CV_Flail2:: @ 81DB234
|
|
if_hp_more_than AI_USER, 60, AI_CV_Flail_ScoreDown1
|
|
if_hp_more_than AI_USER, 40, AI_CV_Flail_End
|
|
goto AI_CV_Flail3
|
|
|
|
AI_CV_Flail_ScoreUp1:: @ 81DB247
|
|
score +1
|
|
|
|
AI_CV_Flail3:: @ 81DB249
|
|
if_random_less_than 100, AI_CV_Flail_End
|
|
score +1
|
|
goto AI_CV_Flail_End
|
|
|
|
AI_CV_Flail_ScoreDown1:: @ 81DB256
|
|
score -1
|
|
|
|
AI_CV_Flail_End:: @ 81DB258
|
|
end
|
|
|
|
AI_CV_HealBell:: @ 81DB259
|
|
if_status AI_TARGET, STATUS1_ANY, AI_CV_HealBell_End
|
|
if_status_in_party AI_TARGET, STATUS1_ANY, AI_CV_HealBell_End
|
|
score -5
|
|
|
|
AI_CV_HealBell_End:: @ 81DB26F
|
|
end
|
|
|
|
AI_CV_Thief:: @ 81DB270
|
|
get_hold_effect AI_TARGET
|
|
if_not_in_bytes AI_CV_Thief_EncourageItemsToSteal, AI_CV_Thief_ScoreDown2
|
|
if_random_less_than 50, AI_CV_Thief_End
|
|
score +1
|
|
goto AI_CV_Thief_End
|
|
|
|
AI_CV_Thief_ScoreDown2:: @ 81DB288
|
|
score -2
|
|
|
|
AI_CV_Thief_End:: @ 81DB28A
|
|
end
|
|
|
|
AI_CV_Thief_EncourageItemsToSteal:: @ 81DB28B
|
|
.byte HOLD_EFFECT_CURE_SLP
|
|
.byte HOLD_EFFECT_CURE_STATUS
|
|
.byte HOLD_EFFECT_RESTORE_HP
|
|
.byte HOLD_EFFECT_EVASION_UP
|
|
.byte HOLD_EFFECT_LEFTOVERS
|
|
.byte HOLD_EFFECT_LIGHT_BALL
|
|
.byte HOLD_EFFECT_THICK_CLUB
|
|
.byte -1
|
|
|
|
AI_CV_Curse:: @ 81DB293
|
|
get_user_type1
|
|
if_equal TYPE_GHOST, AI_CV_Curse4
|
|
get_user_type2
|
|
if_equal TYPE_GHOST, AI_CV_Curse4
|
|
if_stat_level_more_than AI_USER, STAT_DEF, 9, AI_CV_Curse_End
|
|
if_random_less_than 128, AI_CV_Curse2
|
|
score +1
|
|
|
|
AI_CV_Curse2:: @ 81DB2B3
|
|
if_stat_level_more_than AI_USER, STAT_DEF, 7, AI_CV_Curse_End
|
|
if_random_less_than 128, AI_CV_Curse3
|
|
score +1
|
|
|
|
AI_CV_Curse3:: @ 81DB2C3
|
|
if_stat_level_more_than AI_USER, STAT_DEF, 6, AI_CV_Curse_End
|
|
if_random_less_than 128, AI_CV_Curse_End
|
|
score +1
|
|
goto AI_CV_Curse_End
|
|
|
|
AI_CV_Curse4:: @ 81DB2D8
|
|
if_hp_more_than AI_USER, 80, AI_CV_Curse_End
|
|
score -1
|
|
|
|
AI_CV_Curse_End:: @ 81DB2E1
|
|
end
|
|
|
|
AI_CV_Protect:: @ 81DB2E2
|
|
get_protect_count AI_USER
|
|
if_more_than 1, AI_CV_Protect_ScoreDown2
|
|
if_status AI_USER, STATUS1_TOXIC_POISON, AI_CV_Protect3
|
|
if_status2 AI_USER, STATUS2_CURSED, AI_CV_Protect3
|
|
if_status3 AI_USER, STATUS3_PERISH_SONG, AI_CV_Protect3
|
|
if_status2 AI_USER, STATUS2_INFATUATION, AI_CV_Protect3
|
|
if_status3 AI_USER, STATUS3_LEECHSEED, AI_CV_Protect3
|
|
if_status3 AI_USER, STATUS3_YAWN, AI_CV_Protect3
|
|
if_has_move_with_effect AI_TARGET, EFFECT_RESTORE_HP, AI_CV_Protect3
|
|
if_has_move_with_effect AI_TARGET, EFFECT_DEFENSE_CURL, AI_CV_Protect3
|
|
if_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_Protect_ScoreUp2
|
|
if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_Protect_ScoreUp2
|
|
if_status3 AI_TARGET, STATUS3_PERISH_SONG, AI_CV_Protect_ScoreUp2
|
|
if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_Protect_ScoreUp2
|
|
if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_Protect_ScoreUp2
|
|
if_status3 AI_TARGET, STATUS3_YAWN, AI_CV_Protect_ScoreUp2
|
|
get_last_used_move AI_TARGET
|
|
get_move_effect_from_result
|
|
if_not_equal EFFECT_LOCK_ON, AI_CV_Protect_ScoreUp2
|
|
goto AI_CV_Protect2
|
|
|
|
AI_CV_Protect_ScoreUp2:: @ 81DB37E
|
|
score +2
|
|
|
|
AI_CV_Protect2:: @ 81DB380
|
|
@ if_random_less_than 128, AI_CV_Protect4 @ Improvement in Emerald
|
|
@ score -1
|
|
|
|
AI_CV_Protect4::
|
|
get_protect_count AI_USER
|
|
if_equal 0, AI_CV_Protect_End
|
|
score -1
|
|
if_random_less_than 128, AI_CV_Protect_End
|
|
score -1
|
|
goto AI_CV_Protect_End
|
|
|
|
AI_CV_Protect3:: @ 81DB397
|
|
get_last_used_move AI_TARGET
|
|
get_move_effect_from_result
|
|
if_not_equal EFFECT_LOCK_ON, AI_CV_Protect_End
|
|
|
|
AI_CV_Protect_ScoreDown2:: @ 81DB3A0
|
|
score -2
|
|
|
|
AI_CV_Protect_End:: @ 81DB3A2
|
|
end
|
|
|
|
AI_CV_Foresight:: @ 81DB3A3
|
|
get_user_type1
|
|
if_equal TYPE_GHOST, AI_CV_Foresight2
|
|
get_user_type2
|
|
if_equal TYPE_GHOST, AI_CV_Foresight2
|
|
if_stat_level_more_than AI_USER, STAT_EVASION, 8, AI_CV_Foresight3
|
|
score -2
|
|
goto AI_CV_Foresight_End
|
|
|
|
AI_CV_Foresight2:: @ 81DB3C2
|
|
if_random_less_than 80, AI_CV_Foresight_End
|
|
|
|
AI_CV_Foresight3:: @ 81DB3C8
|
|
if_random_less_than 80, AI_CV_Foresight_End
|
|
score +2
|
|
|
|
AI_CV_Foresight_End:: @ 81DB3D0
|
|
end
|
|
|
|
AI_CV_Endure:: @ 81DB3D1
|
|
if_hp_less_than AI_USER, 4, AI_CV_Endure2
|
|
if_hp_less_than AI_USER, 35, AI_CV_Endure3
|
|
|
|
AI_CV_Endure2:: @ 81DB3DF
|
|
score -1
|
|
goto AI_CV_Endure_End
|
|
|
|
AI_CV_Endure3:: @ 81DB3E6
|
|
if_random_less_than 70, AI_CV_Endure_End
|
|
score +1
|
|
|
|
AI_CV_Endure_End:: @ 81DB3EE
|
|
end
|
|
|
|
AI_CV_BatonPass:: @ 81DB3EF
|
|
if_stat_level_more_than AI_USER, STAT_ATK, 8, AI_CV_BatonPass2
|
|
if_stat_level_more_than AI_USER, STAT_DEF, 8, AI_CV_BatonPass2
|
|
if_stat_level_more_than AI_USER, STAT_SPATK, 8, AI_CV_BatonPass2
|
|
if_stat_level_more_than AI_USER, STAT_SPDEF, 8, AI_CV_BatonPass2
|
|
if_stat_level_more_than AI_USER, STAT_EVASION, 8, AI_CV_BatonPass2
|
|
goto AI_CV_BatonPass5
|
|
|
|
AI_CV_BatonPass2:: @ 81DB41C
|
|
if_target_faster AI_CV_BatonPass3
|
|
if_hp_more_than AI_USER, 60, AI_CV_BatonPass_End
|
|
goto AI_CV_BatonPass4
|
|
|
|
AI_CV_BatonPass3:: @ 81DB42E
|
|
if_hp_more_than AI_USER, 70, AI_CV_BatonPass_End
|
|
|
|
AI_CV_BatonPass4:: @ 81DB435
|
|
if_random_less_than 80, AI_CV_BatonPass_End
|
|
score +2
|
|
goto AI_CV_BatonPass_End
|
|
|
|
AI_CV_BatonPass5:: @ 81DB442
|
|
if_stat_level_more_than AI_USER, STAT_ATK, 7, AI_CV_BatonPass7
|
|
if_stat_level_more_than AI_USER, STAT_DEF, 7, AI_CV_BatonPass7
|
|
if_stat_level_more_than AI_USER, STAT_SPATK, 7, AI_CV_BatonPass7
|
|
if_stat_level_more_than AI_USER, STAT_SPDEF, 7, AI_CV_BatonPass7
|
|
if_stat_level_more_than AI_USER, STAT_EVASION, 7, AI_CV_BatonPass7
|
|
goto AI_CV_BatonPass_ScoreDown2
|
|
|
|
AI_CV_BatonPass7:: @ 81DB46F
|
|
if_target_faster AI_CV_BatonPass8
|
|
if_hp_more_than AI_USER, 60, AI_CV_BatonPass_ScoreDown2
|
|
goto AI_CV_BatonPass_End
|
|
|
|
AI_CV_BatonPass8:: @ 81DB481
|
|
if_hp_less_than AI_USER, 70, AI_CV_BatonPass_End
|
|
|
|
AI_CV_BatonPass_ScoreDown2:: @ 81DB488
|
|
score -2
|
|
|
|
AI_CV_BatonPass_End:: @ 81DB48A
|
|
end
|
|
|
|
AI_CV_Pursuit:: @ 81DB48B
|
|
is_first_turn_for AI_USER
|
|
if_not_equal 0, AI_CV_Pursuit_End
|
|
get_target_type1
|
|
if_equal TYPE_GHOST, AI_CV_Pursuit2
|
|
get_target_type1
|
|
if_equal TYPE_PSYCHIC, AI_CV_Pursuit2
|
|
get_target_type2
|
|
if_equal TYPE_GHOST, AI_CV_Pursuit2
|
|
get_target_type2
|
|
if_equal TYPE_PSYCHIC, AI_CV_Pursuit2
|
|
goto AI_CV_Pursuit_End
|
|
|
|
AI_CV_Pursuit2:: @ 81DB4B8
|
|
if_random_less_than 128, AI_CV_Pursuit_End
|
|
score +1
|
|
|
|
AI_CV_Pursuit_End:: @ 81DB4C0
|
|
end
|
|
|
|
AI_CV_RainDance:: @ 81DB4C1
|
|
if_user_faster AI_CV_RainDance2
|
|
get_ability AI_USER
|
|
if_equal ABILITY_SWIFT_SWIM, AI_CV_RainDance3
|
|
|
|
AI_CV_RainDance2:: @ 81DB4CF
|
|
if_hp_less_than AI_USER, 40, AI_CV_RainDance_ScoreDown1
|
|
get_weather
|
|
if_equal AI_WEATHER_HAIL, AI_CV_RainDance3
|
|
if_equal AI_WEATHER_SUN, AI_CV_RainDance3
|
|
if_equal AI_WEATHER_SANDSTORM, AI_CV_RainDance3
|
|
get_ability AI_USER
|
|
if_equal ABILITY_RAIN_DISH, AI_CV_RainDance3
|
|
goto AI_CV_RainDance_End
|
|
|
|
AI_CV_RainDance3:: @ 81DB4F6
|
|
score +1
|
|
goto AI_CV_RainDance_End
|
|
|
|
AI_CV_RainDance_ScoreDown1:: @ 81DB4FD
|
|
score -1
|
|
|
|
AI_CV_RainDance_End:: @ 81DB4FF
|
|
end
|
|
|
|
AI_CV_SunnyDay:: @ 81DB500
|
|
if_hp_less_than AI_USER, 40, AI_CV_SunnyDay_ScoreDown1
|
|
get_weather
|
|
if_equal AI_WEATHER_HAIL, AI_CV_SunnyDay2
|
|
if_equal AI_WEATHER_RAIN, AI_CV_SunnyDay2
|
|
if_equal AI_WEATHER_SANDSTORM, AI_CV_SunnyDay2
|
|
goto AI_CV_SunnyDay_End
|
|
|
|
AI_CV_SunnyDay2:: @ 81DB51F
|
|
score +1
|
|
goto AI_CV_SunnyDay_End
|
|
|
|
AI_CV_SunnyDay_ScoreDown1:: @ 81DB526
|
|
score -1
|
|
|
|
AI_CV_SunnyDay_End:: @ 81DB528
|
|
end
|
|
|
|
AI_CV_BellyDrum:: @ 81DB529
|
|
if_hp_less_than AI_USER, 90, AI_CV_BellyDrum_ScoreDown2
|
|
goto AI_CV_BellyDrum_End
|
|
|
|
AI_CV_BellyDrum_ScoreDown2:: @ 81DB535
|
|
score -2
|
|
|
|
AI_CV_BellyDrum_End:: @ 81DB537
|
|
end
|
|
|
|
AI_CV_PsychUp:: @ 81DB538
|
|
if_stat_level_more_than AI_TARGET, STAT_ATK, 8, AI_CV_PsychUp2
|
|
if_stat_level_more_than AI_TARGET, STAT_DEF, 8, AI_CV_PsychUp2
|
|
if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, AI_CV_PsychUp2
|
|
if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, AI_CV_PsychUp2
|
|
if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_PsychUp2
|
|
goto AI_CV_PsychUp_ScoreDown2
|
|
|
|
AI_CV_PsychUp2:: @ 81DB565
|
|
if_stat_level_less_than AI_USER, STAT_ATK, 7, AI_CV_PsychUp3
|
|
if_stat_level_less_than AI_USER, STAT_DEF, 7, AI_CV_PsychUp3
|
|
if_stat_level_less_than AI_USER, STAT_SPATK, 7, AI_CV_PsychUp3
|
|
if_stat_level_less_than AI_USER, STAT_SPDEF, 7, AI_CV_PsychUp3
|
|
if_stat_level_less_than AI_USER, STAT_EVASION, 7, AI_CV_PsychUp_ScoreUp1
|
|
if_random_less_than 50, AI_CV_PsychUp_End
|
|
goto AI_CV_PsychUp_ScoreDown2
|
|
|
|
AI_CV_PsychUp_ScoreUp1:: @ 81DB598
|
|
score +1
|
|
|
|
AI_CV_PsychUp3:: @ 81DB59A
|
|
if_random_less_than 128, AI_CV_PsychUp_End @ Remove this line
|
|
score +1
|
|
@ end @ Improvement in Emerald
|
|
|
|
AI_CV_PsychUp_ScoreDown2:: @ 81DB5A2
|
|
score -2
|
|
|
|
AI_CV_PsychUp_End:: @ 81DB5A4
|
|
end
|
|
|
|
AI_CV_MirrorCoat:: @ 81DB5A5
|
|
if_status AI_TARGET, STATUS1_SLEEP, AI_CV_MirrorCoat_ScoreDown1
|
|
if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_MirrorCoat_ScoreDown1
|
|
if_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_MirrorCoat_ScoreDown1
|
|
if_hp_more_than AI_USER, 30, AI_CV_MirrorCoat2
|
|
if_random_less_than 10, AI_CV_MirrorCoat2
|
|
score -1
|
|
|
|
AI_CV_MirrorCoat2:: @ 81DB5D2
|
|
if_hp_more_than AI_USER, 50, AI_CV_MirrorCoat3
|
|
if_random_less_than 100, AI_CV_MirrorCoat3
|
|
score -1
|
|
|
|
AI_CV_MirrorCoat3:: @ 81DB5E1
|
|
@ if_has_move AI_USER, MOVE_COUNTER, AI_CV_MirrorCoat_ScoreUp4 @ Improvement in Emerald
|
|
get_last_used_move AI_TARGET
|
|
get_move_power_from_result
|
|
if_equal 0, AI_CV_MirrorCoat5
|
|
if_target_not_taunted AI_CV_MirrorCoat4
|
|
if_random_less_than 100, AI_CV_MirrorCoat4
|
|
score +1
|
|
|
|
AI_CV_MirrorCoat4:: @ 81DB5F7
|
|
get_last_used_move AI_TARGET
|
|
get_move_type_from_result
|
|
if_not_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_ScoreDown1
|
|
if_random_less_than 100, AI_CV_MirrorCoat_End
|
|
score +1
|
|
goto AI_CV_MirrorCoat_End
|
|
|
|
AI_CV_MirrorCoat5:: @ 81DB610
|
|
if_target_not_taunted AI_CV_MirrorCoat6
|
|
if_random_less_than 100, AI_CV_MirrorCoat6
|
|
score +1
|
|
|
|
AI_CV_MirrorCoat6:: @ 81DB61D
|
|
get_target_type1
|
|
if_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_End
|
|
get_target_type2
|
|
if_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_End
|
|
if_random_less_than 50, AI_CV_MirrorCoat_End
|
|
|
|
@ Improvement in Emerald
|
|
@AI_CV_MirrorCoat_ScoreUp4:
|
|
@ if_random_less_than 100, AI_CV_MirrorCoat_ScoreUp4_End
|
|
@ score +4
|
|
@
|
|
@AI_CV_MirrorCoat_ScoreUp4_End:
|
|
@ end
|
|
|
|
AI_CV_MirrorCoat_ScoreDown1:: @ 81DB639
|
|
score -1
|
|
|
|
AI_CV_MirrorCoat_End:: @ 81DB63B
|
|
end
|
|
|
|
AI_CV_MirrorCoat_SpecialTypeList:: @ 81DB63C
|
|
.byte TYPE_FIRE
|
|
.byte TYPE_WATER
|
|
.byte TYPE_GRASS
|
|
.byte TYPE_ELECTRIC
|
|
.byte TYPE_PSYCHIC
|
|
.byte TYPE_ICE
|
|
.byte TYPE_DRAGON
|
|
.byte TYPE_DARK
|
|
.byte -1
|
|
|
|
AI_CV_ChargeUpMove:: @ 81DB645
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_ChargeUpMove_ScoreDown2
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_ChargeUpMove_ScoreDown2
|
|
if_has_move_with_effect AI_TARGET, EFFECT_PROTECT, AI_CV_ChargeUpMove_ScoreDown2
|
|
if_hp_more_than AI_USER, 38, AI_CV_ChargeUpMove_End
|
|
score -1
|
|
goto AI_CV_ChargeUpMove_End
|
|
|
|
AI_CV_ChargeUpMove_ScoreDown2:: @ 81DB666
|
|
score -2
|
|
|
|
AI_CV_ChargeUpMove_End:: @ 81DB668
|
|
end
|
|
|
|
AI_CV_SemiInvulnerable:: @ 81DB669
|
|
if_doesnt_have_move_with_effect AI_TARGET, EFFECT_PROTECT, AI_CV_SemiInvulnerable2
|
|
score -1
|
|
goto AI_CV_SemiInvulnerable_End
|
|
|
|
@ BUG: The scripts for checking type-resistance to weather for semi-invulnerable moves are swapped
|
|
@ The result is that the AI is encouraged to stall while taking damage from weather
|
|
@ To fix, swap _CheckSandstormTypes/_CheckIceType in the below script
|
|
AI_CV_SemiInvulnerable2:: @ 81DB677
|
|
if_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_SemiInvulnerable_TryEncourage
|
|
if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_SemiInvulnerable_TryEncourage
|
|
if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_SemiInvulnerable_TryEncourage
|
|
get_weather
|
|
if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckSandstormTypes
|
|
if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckIceType
|
|
goto AI_CV_SemiInvulnerable5
|
|
|
|
AI_CV_SemiInvulnerable_CheckSandstormTypes:: @ 81DB6A7
|
|
get_user_type1
|
|
if_in_bytes AI_CV_SandstormResistantTypes, AI_CV_SemiInvulnerable_TryEncourage
|
|
get_user_type2
|
|
if_in_bytes AI_CV_SandstormResistantTypes, AI_CV_SemiInvulnerable_TryEncourage
|
|
goto AI_CV_SemiInvulnerable5
|
|
|
|
AI_CV_SemiInvulnerable_CheckIceType:: @ 81DB6C2
|
|
get_user_type1
|
|
if_equal TYPE_ICE, AI_CV_SemiInvulnerable_TryEncourage
|
|
get_user_type2
|
|
if_equal TYPE_ICE, AI_CV_SemiInvulnerable_TryEncourage
|
|
|
|
AI_CV_SemiInvulnerable5:: @ 81DB6D2
|
|
if_target_faster AI_CV_SemiInvulnerable_End
|
|
get_last_used_move AI_TARGET
|
|
get_move_effect_from_result
|
|
if_not_equal EFFECT_LOCK_ON, AI_CV_SemiInvulnerable_TryEncourage
|
|
goto AI_CV_SemiInvulnerable_End
|
|
|
|
AI_CV_SemiInvulnerable_TryEncourage:: @ 81DB6E6
|
|
if_random_less_than 80, AI_CV_SemiInvulnerable_End
|
|
score +1
|
|
|
|
AI_CV_SemiInvulnerable_End:: @ 81DB6EE
|
|
end
|
|
|
|
AI_CV_SandstormResistantTypes:: @ 81DB6EF
|
|
.byte TYPE_GROUND
|
|
.byte TYPE_ROCK
|
|
.byte TYPE_STEEL
|
|
.byte -1
|
|
|
|
AI_CV_FakeOut:: @ 81DB6F3
|
|
score +2
|
|
end
|
|
|
|
AI_CV_SpitUp:: @ 81DB6F6
|
|
get_stockpile_count AI_USER
|
|
if_less_than 2, AI_CV_SpitUp_End
|
|
if_random_less_than 80, AI_CV_SpitUp_End
|
|
score +2
|
|
|
|
AI_CV_SpitUp_End:: @ 81DB706
|
|
end
|
|
|
|
AI_CV_Hail:: @ 81DB707
|
|
if_hp_less_than AI_USER, 40, AI_CV_Hail_ScoreDown1
|
|
get_weather
|
|
if_equal AI_WEATHER_SUN, AI_CV_Hail2
|
|
if_equal AI_WEATHER_RAIN, AI_CV_Hail2
|
|
if_equal AI_WEATHER_SANDSTORM, AI_CV_Hail2
|
|
goto AI_CV_Hail_End
|
|
|
|
AI_CV_Hail2:: @ 81DB726
|
|
score +1
|
|
goto AI_CV_Hail_End
|
|
|
|
AI_CV_Hail_ScoreDown1:: @ 81DB72D
|
|
score -1
|
|
|
|
AI_CV_Hail_End:: @ 81DB72F
|
|
end
|
|
|
|
@ BUG: Facade score is increased if the target is statused, but should be if the user is. Replace AI_TARGET with AI_USER
|
|
AI_CV_Facade:: @ 81DB730
|
|
if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End
|
|
score +1
|
|
|
|
AI_CV_Facade_End:: @ 81DB73C
|
|
end
|
|
|
|
AI_CV_FocusPunch:: @ 81DB73D
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_FocusPunch2
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_FocusPunch2
|
|
if_status AI_TARGET, STATUS1_SLEEP, AI_CV_FocusPunch_ScoreUp1
|
|
if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_FocusPunch3
|
|
if_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_FocusPunch3
|
|
is_first_turn_for AI_USER
|
|
if_not_equal 0, AI_CV_FocusPunch_End
|
|
if_random_less_than 100, AI_CV_FocusPunch_End
|
|
score +1
|
|
goto AI_CV_FocusPunch_End
|
|
|
|
AI_CV_FocusPunch2:: @ 81DB77C
|
|
score -1
|
|
goto AI_CV_FocusPunch_End
|
|
|
|
AI_CV_FocusPunch3:: @ 81DB783
|
|
if_random_less_than 100, AI_CV_FocusPunch_End
|
|
|
|
AI_CV_FocusPunch_ScoreUp1:: @ 81DB789
|
|
score +1
|
|
|
|
AI_CV_FocusPunch_End:: @ 81DB78B
|
|
end
|
|
|
|
AI_CV_SmellingSalt:: @ 81DB78C
|
|
if_status AI_TARGET, STATUS1_PARALYSIS, AI_CV_SmellingSalt_ScoreUp1
|
|
goto AI_CV_SmellingSalt_End
|
|
|
|
AI_CV_SmellingSalt_ScoreUp1:: @ 81DB79B
|
|
score +1
|
|
|
|
AI_CV_SmellingSalt_End:: @ 81DB79D
|
|
end
|
|
|
|
AI_CV_Trick:: @ 81DB79E
|
|
get_hold_effect AI_USER
|
|
if_in_bytes AI_CV_Trick_ChoiceEffects, AI_CV_Trick3
|
|
if_in_bytes AI_CV_Trick_EffectsToEncourage, AI_CV_Trick4
|
|
|
|
AI_CV_Trick2:: @ 81DB7B2
|
|
score -3
|
|
goto AI_CV_Trick_End
|
|
|
|
AI_CV_Trick3:: @ 81DB7B9
|
|
get_hold_effect AI_TARGET
|
|
if_in_bytes AI_CV_Trick_ChoiceEffects, AI_CV_Trick2
|
|
score +5
|
|
goto AI_CV_Trick_End
|
|
|
|
AI_CV_Trick4:: @ 81DB7CB
|
|
get_hold_effect AI_TARGET
|
|
if_in_bytes AI_CV_Trick_EffectsToEncourage, AI_CV_Trick2
|
|
if_random_less_than 50, AI_CV_Trick_End
|
|
score +2
|
|
|
|
AI_CV_Trick_End:: @ 81DB7DE
|
|
end
|
|
|
|
AI_CV_Trick_EffectsToEncourage:: @ 81DB7DF
|
|
.byte HOLD_EFFECT_CONFUSE_SPICY
|
|
.byte HOLD_EFFECT_CONFUSE_DRY
|
|
.byte HOLD_EFFECT_CONFUSE_SWEET
|
|
.byte HOLD_EFFECT_CONFUSE_BITTER
|
|
.byte HOLD_EFFECT_CONFUSE_SOUR
|
|
.byte HOLD_EFFECT_MACHO_BRACE
|
|
.byte HOLD_EFFECT_CHOICE_BAND
|
|
.byte -1
|
|
|
|
AI_CV_Trick_ChoiceEffects:: @ 81DB7E7
|
|
.byte HOLD_EFFECT_CHOICE_BAND
|
|
.byte -1
|
|
|
|
AI_CV_ChangeSelfAbility:: @ 81DB7E9
|
|
get_ability AI_USER
|
|
if_in_bytes AI_CV_ChangeSelfAbility_AbilitiesToEncourage, AI_CV_ChangeSelfAbility2
|
|
get_ability AI_TARGET
|
|
if_in_bytes AI_CV_ChangeSelfAbility_AbilitiesToEncourage, AI_CV_ChangeSelfAbility3
|
|
|
|
AI_CV_ChangeSelfAbility2:: @ 81DB7FF
|
|
score -1
|
|
goto AI_CV_ChangeSelfAbility_End
|
|
|
|
AI_CV_ChangeSelfAbility3:: @ 81DB806
|
|
if_random_less_than 50, AI_CV_ChangeSelfAbility_End
|
|
score +2
|
|
|
|
AI_CV_ChangeSelfAbility_End:: @ 81DB80E
|
|
end
|
|
|
|
AI_CV_ChangeSelfAbility_AbilitiesToEncourage:: @ 81DB80F
|
|
.byte ABILITY_SPEED_BOOST
|
|
.byte ABILITY_BATTLE_ARMOR
|
|
.byte ABILITY_SAND_VEIL
|
|
.byte ABILITY_STATIC
|
|
.byte ABILITY_FLASH_FIRE
|
|
.byte ABILITY_WONDER_GUARD
|
|
.byte ABILITY_EFFECT_SPORE
|
|
.byte ABILITY_SWIFT_SWIM
|
|
.byte ABILITY_HUGE_POWER
|
|
.byte ABILITY_RAIN_DISH
|
|
.byte ABILITY_CUTE_CHARM
|
|
.byte ABILITY_SHED_SKIN
|
|
.byte ABILITY_MARVEL_SCALE
|
|
.byte ABILITY_PURE_POWER
|
|
.byte ABILITY_CHLOROPHYLL
|
|
.byte ABILITY_SHIELD_DUST
|
|
.byte -1
|
|
|
|
AI_CV_Superpower:: @ 81DB820
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Superpower_ScoreDown1
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_Superpower_ScoreDown1
|
|
if_stat_level_less_than AI_USER, STAT_ATK, 6, AI_CV_Superpower_ScoreDown1
|
|
if_target_faster AI_CV_Superpower2
|
|
if_hp_more_than AI_USER, 40, AI_CV_Superpower_ScoreDown1
|
|
goto AI_CV_Superpower_End
|
|
|
|
AI_CV_Superpower2:: @ 81DB846
|
|
if_hp_less_than AI_USER, 60, AI_CV_Superpower_End
|
|
|
|
AI_CV_Superpower_ScoreDown1:: @ 81DB84D
|
|
score -1
|
|
|
|
AI_CV_Superpower_End:: @ 81DB84F
|
|
end
|
|
|
|
AI_CV_MagicCoat:: @ 81DB850
|
|
if_hp_more_than AI_TARGET, 30, AI_CV_MagicCoat2
|
|
if_random_less_than 100, AI_CV_MagicCoat2
|
|
score -1
|
|
|
|
AI_CV_MagicCoat2::
|
|
is_first_turn_for AI_USER
|
|
if_equal 0, AI_CV_MagicCoat4
|
|
if_random_less_than 150, AI_CV_MagicCoat_End
|
|
score +1
|
|
goto AI_CV_MagicCoat_End
|
|
if_random_less_than 50, AI_CV_MagicCoat_End
|
|
|
|
AI_CV_MagicCoat3::
|
|
@ if_random_less_than 50, AI_CV_MagicCoat_End @ Improvement in Emerald
|
|
|
|
AI_CV_MagicCoat4:: @ 81DB87A
|
|
if_random_less_than 30, AI_CV_MagicCoat_End
|
|
score -1
|
|
|
|
AI_CV_MagicCoat_End:: @ 81DB882
|
|
end
|
|
|
|
AI_CV_Recycle:: @ 81DB883
|
|
get_used_held_item AI_USER
|
|
if_not_in_bytes AI_CV_Recycle_ItemsToEncourage, AI_CV_Recycle_ScoreDown2
|
|
if_random_less_than 50, AI_CV_Recycle_End
|
|
score +1
|
|
goto AI_CV_Recycle_End
|
|
|
|
AI_CV_Recycle_ScoreDown2:: @ 81DB89B
|
|
score -2
|
|
|
|
AI_CV_Recycle_End:: @ 81DB89D
|
|
end
|
|
|
|
AI_CV_Recycle_ItemsToEncourage:: @ 81DB89E
|
|
.byte ITEM_CHESTO_BERRY
|
|
.byte ITEM_LUM_BERRY
|
|
.byte ITEM_STARF_BERRY
|
|
.byte -1
|
|
|
|
AI_CV_Revenge:: @ 81DB8A2
|
|
if_status AI_TARGET, STATUS1_SLEEP, AI_CV_Revenge_ScoreDown2
|
|
if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_Revenge_ScoreDown2
|
|
if_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_Revenge_ScoreDown2
|
|
if_random_less_than 180, AI_CV_Revenge_ScoreDown2
|
|
score +2
|
|
goto AI_CV_Revenge_End
|
|
|
|
AI_CV_Revenge_ScoreDown2:: @ 81DB8CD
|
|
score -2
|
|
|
|
AI_CV_Revenge_End:: @ 81DB8CF
|
|
end
|
|
|
|
AI_CV_BrickBreak:: @ 81DB8D0
|
|
if_side_affecting AI_TARGET, SIDE_STATUS_REFLECT, AI_CV_BrickBreak_ScoreUp1
|
|
goto AI_CV_BrickBreak_End
|
|
|
|
AI_CV_BrickBreak_ScoreUp1:: @ 81DB8DF
|
|
score +1
|
|
|
|
AI_CV_BrickBreak_End:: @ 81DB8E1
|
|
end
|
|
|
|
AI_CV_KnockOff:: @ 81DB8E2
|
|
if_hp_less_than AI_TARGET, 30, AI_CV_KnockOff_End
|
|
is_first_turn_for AI_USER
|
|
if_more_than 0, AI_CV_KnockOff_End
|
|
if_random_less_than 180, AI_CV_KnockOff_End
|
|
score +1
|
|
|
|
AI_CV_KnockOff_End:: @ 81DB8F9
|
|
end
|
|
|
|
AI_CV_Endeavor:: @ 81DB8FA
|
|
if_hp_less_than AI_TARGET, 70, AI_CV_Endeavor_ScoreDown1
|
|
if_target_faster AI_CV_Endeavor2
|
|
if_hp_more_than AI_USER, 40, AI_CV_Endeavor_ScoreDown1
|
|
score +1
|
|
goto AI_CV_Endeavor_End
|
|
|
|
AI_CV_Endeavor2:: @ 81DB915
|
|
if_hp_more_than AI_USER, 50, AI_CV_Endeavor_ScoreDown1
|
|
score +1
|
|
goto AI_CV_Endeavor_End
|
|
|
|
AI_CV_Endeavor_ScoreDown1:: @ 81DB923
|
|
score -1
|
|
|
|
AI_CV_Endeavor_End:: @ 81DB925
|
|
end
|
|
|
|
AI_CV_Eruption:: @ 81DB926
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Eruption_ScoreDown1
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_Eruption_ScoreDown1
|
|
if_target_faster AI_CV_Eruption2
|
|
if_hp_more_than AI_TARGET, 50, AI_CV_Eruption_End
|
|
goto AI_CV_Eruption_ScoreDown1
|
|
|
|
AI_CV_Eruption2:: @ 81DB944
|
|
if_hp_more_than AI_TARGET, 70, AI_CV_Eruption_End
|
|
|
|
AI_CV_Eruption_ScoreDown1:: @ 81DB94B
|
|
score -1
|
|
|
|
AI_CV_Eruption_End:: @ 81DB94D
|
|
end
|
|
|
|
AI_CV_Imprison:: @ 81DB94E
|
|
is_first_turn_for AI_USER
|
|
if_more_than 0, AI_CV_Imprison_End
|
|
if_random_less_than 100, AI_CV_Imprison_End
|
|
score +2
|
|
|
|
AI_CV_Imprison_End:: @ 81DB95E
|
|
end
|
|
|
|
AI_CV_Refresh:: @ 81DB95F
|
|
if_hp_less_than AI_TARGET, 50, AI_CV_Refresh_ScoreDown1
|
|
goto AI_CV_Refresh_End
|
|
|
|
AI_CV_Refresh_ScoreDown1:: @ 81DB96B
|
|
score -1
|
|
|
|
AI_CV_Refresh_End:: @ 81DB96D
|
|
end
|
|
|
|
AI_CV_Snatch:: @ 81DB96E
|
|
is_first_turn_for AI_USER
|
|
if_equal 1, AI_CV_Snatch3
|
|
if_random_less_than 30, AI_CV_Snatch_End
|
|
if_target_faster AI_CV_Snatch2
|
|
if_hp_not_equal AI_USER, 100, AI_CV_Snatch5
|
|
if_hp_less_than AI_TARGET, 70, AI_CV_Snatch5
|
|
if_random_less_than 60, AI_CV_Snatch_End
|
|
goto AI_CV_Snatch5
|
|
|
|
AI_CV_Snatch2:: @ 81DB99B
|
|
if_hp_more_than AI_TARGET, 25, AI_CV_Snatch5
|
|
if_has_move_with_effect AI_TARGET, EFFECT_RESTORE_HP, AI_CV_Snatch3
|
|
if_has_move_with_effect AI_TARGET, EFFECT_DEFENSE_CURL, AI_CV_Snatch3
|
|
goto AI_CV_Snatch4
|
|
|
|
AI_CV_Snatch3:: @ 81DB9B5
|
|
if_random_less_than 150, AI_CV_Snatch_End
|
|
score +2
|
|
goto AI_CV_Snatch_End
|
|
|
|
AI_CV_Snatch4:: @ 81DB9C2
|
|
if_random_less_than 230, AI_CV_Snatch5
|
|
score +1
|
|
goto AI_CV_Snatch_End
|
|
|
|
AI_CV_Snatch5:: @ 81DB9CF
|
|
if_random_less_than 30, AI_CV_Snatch_End
|
|
score -2
|
|
|
|
AI_CV_Snatch_End:: @ 81DB9D7
|
|
end
|
|
|
|
AI_CV_MudSport:: @ 81DB9D8
|
|
if_hp_less_than AI_USER, 50, AI_CV_MudSport_ScoreDown1
|
|
get_target_type1
|
|
if_equal TYPE_ELECTRIC, AI_CV_MudSport2
|
|
get_target_type2
|
|
if_equal TYPE_ELECTRIC, AI_CV_MudSport2
|
|
goto AI_CV_MudSport_ScoreDown1
|
|
|
|
AI_CV_MudSport2:: @ 81DB9F4
|
|
score +1
|
|
goto AI_CV_MudSport_End
|
|
|
|
AI_CV_MudSport_ScoreDown1:: @ 81DB9FB
|
|
score -1
|
|
|
|
AI_CV_MudSport_End:: @ 81DB9FD
|
|
end
|
|
|
|
AI_CV_Overheat:: @ 81DB9FE
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Overheat_ScoreDown1
|
|
if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_Overheat_ScoreDown1
|
|
if_target_faster AI_CV_Overheat2
|
|
if_hp_more_than AI_USER, 60, AI_CV_Overheat_End
|
|
goto AI_CV_Overheat_ScoreDown1
|
|
|
|
AI_CV_Overheat2:: @ 81DBA1C
|
|
if_hp_more_than AI_USER, 80, AI_CV_Overheat_End
|
|
|
|
AI_CV_Overheat_ScoreDown1:: @ 81DBA23
|
|
score -1
|
|
|
|
AI_CV_Overheat_End:: @ 81DBA25
|
|
end
|
|
|
|
AI_CV_WaterSport:: @ 81DBA26
|
|
if_hp_less_than AI_USER, 50, AI_CV_WaterSport_ScoreDown1
|
|
get_target_type1
|
|
if_equal TYPE_FIRE, AI_CV_WaterSport2
|
|
get_target_type2
|
|
if_equal TYPE_FIRE, AI_CV_WaterSport2
|
|
goto AI_CV_WaterSport_ScoreDown1
|
|
|
|
AI_CV_WaterSport2:: @ 81DBA42
|
|
score +1
|
|
goto AI_CV_WaterSport_End
|
|
|
|
AI_CV_WaterSport_ScoreDown1:: @ 81DBA49
|
|
score -1
|
|
|
|
AI_CV_WaterSport_End:: @ 81DBA4B
|
|
end
|
|
|
|
AI_CV_DragonDance:: @ 81DBA4C
|
|
if_target_faster AI_CV_DragonDance2
|
|
if_hp_more_than AI_USER, 50, AI_CV_DragonDance_End
|
|
if_random_less_than 70, AI_CV_DragonDance_End
|
|
score -1
|
|
goto AI_CV_DragonDance_End
|
|
|
|
AI_CV_DragonDance2:: @ 81DBA66
|
|
if_random_less_than 128, AI_CV_DragonDance_End
|
|
score +1
|
|
|
|
AI_CV_DragonDance_End:: @ 81DBA6E
|
|
end
|
|
|
|
AI_TryToFaint:: @ 81DBA6F
|
|
if_can_faint AI_TryToFaint_TryToEncourageQuickAttack
|
|
get_how_powerful_move_is
|
|
if_equal MOVE_NOT_MOST_POWERFUL, Score_Minus1
|
|
@ if_type_effectiveness AI_EFFECTIVENESS_x4, AI_TryToFaint_DoubleSuperEffective @ Improvement in Emerald
|
|
end
|
|
|
|
@ Improvement in Emerald
|
|
@AI_TryToFaint_DoubleSuperEffective:
|
|
@ if_random_less_than 80, AI_TryToFaint_End
|
|
@ score +2
|
|
@ end
|
|
|
|
AI_TryToFaint_TryToEncourageQuickAttack:: @ 81DBA7C
|
|
if_effect EFFECT_EXPLOSION, AI_TryToFaint_End
|
|
if_not_effect EFFECT_QUICK_ATTACK, AI_TryToFaint_ScoreUp4
|
|
score +2
|
|
|
|
AI_TryToFaint_ScoreUp4:: @ 81DBA8A
|
|
score +4
|
|
|
|
AI_TryToFaint_End:: @ 81DBA8C
|
|
end
|
|
|
|
AI_SetupFirstTurn:: @ 81DBA8D
|
|
get_turn_count
|
|
if_not_equal 0, AI_SetupFirstTurn_End
|
|
get_considered_move_effect
|
|
if_not_in_bytes AI_SetupFirstTurn_SetupEffectsToEncourage, AI_SetupFirstTurn_End
|
|
if_random_less_than 80, AI_SetupFirstTurn_End
|
|
score +2
|
|
|
|
AI_SetupFirstTurn_End:: @ 81DBAA6
|
|
end
|
|
|
|
AI_SetupFirstTurn_SetupEffectsToEncourage:: @ 81DBAA7
|
|
.byte EFFECT_ATTACK_UP
|
|
.byte EFFECT_DEFENSE_UP
|
|
.byte EFFECT_SPEED_UP
|
|
.byte EFFECT_SPECIAL_ATTACK_UP
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP
|
|
.byte EFFECT_ACCURACY_UP
|
|
.byte EFFECT_EVASION_UP
|
|
.byte EFFECT_ATTACK_DOWN
|
|
.byte EFFECT_DEFENSE_DOWN
|
|
.byte EFFECT_SPEED_DOWN
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN
|
|
.byte EFFECT_ACCURACY_DOWN
|
|
.byte EFFECT_EVASION_DOWN
|
|
.byte EFFECT_CONVERSION
|
|
.byte EFFECT_LIGHT_SCREEN
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP_2
|
|
.byte EFFECT_FOCUS_ENERGY
|
|
.byte EFFECT_CONFUSE
|
|
.byte EFFECT_ATTACK_UP_2
|
|
.byte EFFECT_DEFENSE_UP_2
|
|
.byte EFFECT_SPEED_UP_2
|
|
.byte EFFECT_SPECIAL_ATTACK_UP_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP_2
|
|
.byte EFFECT_ACCURACY_UP_2
|
|
.byte EFFECT_EVASION_UP_2
|
|
.byte EFFECT_ATTACK_DOWN_2
|
|
.byte EFFECT_DEFENSE_DOWN_2
|
|
.byte EFFECT_SPEED_DOWN_2
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
|
|
.byte EFFECT_ACCURACY_DOWN_2
|
|
.byte EFFECT_EVASION_DOWN_2
|
|
.byte EFFECT_REFLECT
|
|
.byte EFFECT_POISON
|
|
.byte EFFECT_PARALYZE
|
|
.byte EFFECT_SUBSTITUTE
|
|
.byte EFFECT_LEECH_SEED
|
|
.byte EFFECT_MINIMIZE
|
|
.byte EFFECT_CURSE
|
|
.byte EFFECT_SWAGGER
|
|
.byte EFFECT_CAMOUFLAGE
|
|
.byte EFFECT_YAWN
|
|
.byte EFFECT_DEFENSE_CURL
|
|
.byte EFFECT_TORMENT
|
|
.byte EFFECT_FLATTER
|
|
.byte EFFECT_WILL_O_WISP
|
|
.byte EFFECT_INGRAIN
|
|
.byte EFFECT_IMPRISON
|
|
.byte EFFECT_TEETER_DANCE
|
|
.byte EFFECT_TICKLE
|
|
.byte EFFECT_COSMIC_POWER
|
|
.byte EFFECT_BULK_UP
|
|
.byte EFFECT_CALM_MIND
|
|
.byte EFFECT_CAMOUFLAGE
|
|
.byte -1
|
|
|
|
AI_PreferStrongestMove:: @ 81DBADF
|
|
get_how_powerful_move_is
|
|
if_not_equal MOVE_POWER_DISCOURAGED, AI_PreferStrongestMove_End
|
|
if_random_less_than 100, AI_PreferStrongestMove_End
|
|
score +2
|
|
|
|
AI_PreferStrongestMove_End:: @ 81DBAEE
|
|
end
|
|
|
|
AI_Risky:: @ 81DBAEF
|
|
get_considered_move_effect
|
|
if_not_in_bytes AI_Risky_EffectsToEncourage, AI_Risky_End
|
|
if_random_less_than 128, AI_Risky_End
|
|
score +2
|
|
|
|
AI_Risky_End:: @ 81DBB01
|
|
end
|
|
|
|
AI_Risky_EffectsToEncourage:: @ 81DBB02
|
|
.byte EFFECT_SLEEP
|
|
.byte EFFECT_EXPLOSION
|
|
.byte EFFECT_MIRROR_MOVE
|
|
.byte EFFECT_OHKO
|
|
.byte EFFECT_HIGH_CRITICAL
|
|
.byte EFFECT_CONFUSE
|
|
.byte EFFECT_METRONOME
|
|
.byte EFFECT_PSYWAVE
|
|
.byte EFFECT_COUNTER
|
|
.byte EFFECT_DESTINY_BOND
|
|
.byte EFFECT_SWAGGER
|
|
.byte EFFECT_ATTRACT
|
|
.byte EFFECT_PRESENT
|
|
.byte EFFECT_ALL_STATS_UP_HIT
|
|
.byte EFFECT_BELLY_DRUM
|
|
.byte EFFECT_MIRROR_COAT
|
|
.byte EFFECT_FOCUS_PUNCH
|
|
.byte EFFECT_REVENGE
|
|
.byte EFFECT_TEETER_DANCE
|
|
.byte -1
|
|
|
|
AI_PreferBatonPass:: @ 81DBB16
|
|
count_alive_pokemon AI_USER
|
|
if_equal 0, AI_PreferBatonPass_End
|
|
get_how_powerful_move_is
|
|
if_not_equal MOVE_POWER_DISCOURAGED, AI_PreferBatonPass_End
|
|
if_has_move_with_effect AI_USER, EFFECT_BATON_PASS, AI_PreferBatonPass_GoForBatonPass
|
|
if_random_less_than 80, AI_Risky_End
|
|
|
|
@ Improvement in Emerald (several below)
|
|
AI_PreferBatonPass_GoForBatonPass:: @ 81DBB32
|
|
@ if_move MOVE_SWORDS_DANCE, AI_PreferBatonPass2
|
|
@ if_move MOVE_DRAGON_DANCE, AI_PreferBatonPass2
|
|
@ if_move MOVE_CALM_MIND, AI_PreferBatonPass2
|
|
@ if_effect EFFECT_PROTECT, AI_PreferBatonPass3
|
|
@ if_move MOVE_BATON_PASS, AI_PreferBatonPass_EncourageIfHighStats
|
|
if_random_less_than 20, AI_Risky_End
|
|
score +3
|
|
|
|
@AI_PreferBatonPass2:
|
|
@ get_turn_count
|
|
@ if_equal 0, Score_Plus5
|
|
@ if_hp_less_than AI_USER, 60, Score_Minus10
|
|
@ goto Score_Plus1
|
|
@
|
|
@AI_PreferBatonPass3::
|
|
@ get_last_used_move AI_USER
|
|
@ if_in_hwords AI_PreferBatonPass_ProtectMoves, Score_Minus2
|
|
@ score +2
|
|
@ end
|
|
@
|
|
@AI_PreferBatonPass_ProtectMoves:
|
|
@ .2byte MOVE_PROTECT
|
|
@ .2byte MOVE_DETECT
|
|
@ .2byte -1
|
|
@
|
|
@AI_PreferBatonPass_EncourageIfHighStats:
|
|
@ get_turn_count
|
|
@ if_equal 0, Score_Minus2
|
|
@ if_stat_level_more_than AI_USER, STAT_ATK, 8, Score_Plus3
|
|
@ if_stat_level_more_than AI_USER, STAT_ATK, 7, Score_Plus2
|
|
@ if_stat_level_more_than AI_USER, STAT_ATK, 6, Score_Plus1
|
|
@ if_stat_level_more_than AI_USER, STAT_SPATK, 8, Score_Plus3
|
|
@ if_stat_level_more_than AI_USER, STAT_SPATK, 7, Score_Plus2
|
|
@ if_stat_level_more_than AI_USER, STAT_SPATK, 6, Score_Plus1
|
|
@ end
|
|
|
|
AI_PreferBatonPass_End:: @ 81DBB3A
|
|
end
|
|
|
|
@ Empty. Expanded in Emerald
|
|
AI_DoubleBattle:: @ 81DBB3B
|
|
end
|
|
|
|
AI_HPAware:: @ 81DBB3C
|
|
if_hp_more_than AI_USER, 70, AI_HPAware_UserHasHighHP
|
|
if_hp_more_than AI_USER, 30, AI_HPAware_UserHasMediumHP
|
|
get_considered_move_effect
|
|
if_in_bytes AI_HPAware_DiscouragedEffectsWhenLowHP, AI_HPAware_TryToDiscourage
|
|
goto AI_HPAware_ConsiderTarget
|
|
|
|
AI_HPAware_UserHasHighHP:: @ 81DBB59
|
|
get_considered_move_effect
|
|
if_in_bytes AI_HPAware_DiscouragedEffectsWhenHighHP, AI_HPAware_TryToDiscourage
|
|
goto AI_HPAware_ConsiderTarget
|
|
|
|
AI_HPAware_UserHasMediumHP:: @ 81DBB68
|
|
get_considered_move_effect
|
|
if_in_bytes AI_HPAware_DiscouragedEffectsWhenMediumHP, AI_HPAware_TryToDiscourage
|
|
goto AI_HPAware_ConsiderTarget
|
|
|
|
AI_HPAware_TryToDiscourage:: @ 81DBB77
|
|
if_random_less_than 50, AI_HPAware_ConsiderTarget
|
|
score -2
|
|
|
|
AI_HPAware_ConsiderTarget:: @ 81DBB7F
|
|
if_hp_more_than AI_TARGET, 70, AI_HPAware_TargetHasHighHP
|
|
if_hp_more_than AI_TARGET, 30, AI_HPAware_TargetHasMediumHP
|
|
get_considered_move_effect
|
|
if_in_bytes AI_HPAware_DiscouragedEffectsWhenTargetLowHP, AI_HPAware_TargetTryToDiscourage
|
|
goto AI_HPAware_End
|
|
|
|
AI_HPAware_TargetHasHighHP:: @ 81DBB9C
|
|
get_considered_move_effect
|
|
if_in_bytes AI_HPAware_DiscouragedEffectsWhenTargetHighHP, AI_HPAware_TargetTryToDiscourage
|
|
goto AI_HPAware_End
|
|
|
|
AI_HPAware_TargetHasMediumHP:: @ 81DBBAB
|
|
get_considered_move_effect
|
|
if_in_bytes AI_HPAware_DiscouragedEffectsWhenTargetMediumHP, AI_HPAware_TargetTryToDiscourage
|
|
goto AI_HPAware_End
|
|
|
|
AI_HPAware_TargetTryToDiscourage:: @ 81DBBBA
|
|
if_random_less_than 50, AI_HPAware_End
|
|
score -2
|
|
|
|
AI_HPAware_End:: @ 81DBBC2
|
|
end
|
|
|
|
AI_HPAware_DiscouragedEffectsWhenHighHP:: @ 81DBBC3
|
|
.byte EFFECT_EXPLOSION
|
|
.byte EFFECT_RESTORE_HP
|
|
.byte EFFECT_REST
|
|
.byte EFFECT_DESTINY_BOND
|
|
.byte EFFECT_FLAIL
|
|
.byte EFFECT_ENDURE
|
|
.byte EFFECT_MORNING_SUN
|
|
.byte EFFECT_SYNTHESIS
|
|
.byte EFFECT_MOONLIGHT
|
|
.byte EFFECT_SOFTBOILED
|
|
.byte EFFECT_MEMENTO
|
|
.byte EFFECT_GRUDGE
|
|
.byte EFFECT_OVERHEAT
|
|
.byte -1
|
|
|
|
AI_HPAware_DiscouragedEffectsWhenMediumHP:: @ 81DBBD1
|
|
.byte EFFECT_EXPLOSION
|
|
.byte EFFECT_ATTACK_UP
|
|
.byte EFFECT_DEFENSE_UP
|
|
.byte EFFECT_SPEED_UP
|
|
.byte EFFECT_SPECIAL_ATTACK_UP
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP
|
|
.byte EFFECT_ACCURACY_UP
|
|
.byte EFFECT_EVASION_UP
|
|
.byte EFFECT_ATTACK_DOWN
|
|
.byte EFFECT_DEFENSE_DOWN
|
|
.byte EFFECT_SPEED_DOWN
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN
|
|
.byte EFFECT_ACCURACY_DOWN
|
|
.byte EFFECT_EVASION_DOWN
|
|
.byte EFFECT_BIDE
|
|
.byte EFFECT_CONVERSION
|
|
.byte EFFECT_LIGHT_SCREEN
|
|
.byte EFFECT_MIST
|
|
.byte EFFECT_FOCUS_ENERGY
|
|
.byte EFFECT_ATTACK_UP_2
|
|
.byte EFFECT_DEFENSE_UP_2
|
|
.byte EFFECT_SPEED_UP_2
|
|
.byte EFFECT_SPECIAL_ATTACK_UP_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP_2
|
|
.byte EFFECT_ACCURACY_UP_2
|
|
.byte EFFECT_EVASION_UP_2
|
|
.byte EFFECT_ATTACK_DOWN_2
|
|
.byte EFFECT_DEFENSE_DOWN_2
|
|
.byte EFFECT_SPEED_DOWN_2
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
|
|
.byte EFFECT_ACCURACY_DOWN_2
|
|
.byte EFFECT_EVASION_DOWN_2
|
|
.byte EFFECT_CONVERSION_2
|
|
.byte EFFECT_SAFEGUARD
|
|
.byte EFFECT_BELLY_DRUM
|
|
.byte EFFECT_TICKLE
|
|
.byte EFFECT_COSMIC_POWER
|
|
.byte EFFECT_BULK_UP
|
|
.byte EFFECT_CALM_MIND
|
|
.byte EFFECT_DRAGON_DANCE
|
|
.byte -1
|
|
|
|
AI_HPAware_DiscouragedEffectsWhenLowHP:: @ 81DBBFC
|
|
.byte EFFECT_ATTACK_UP
|
|
.byte EFFECT_DEFENSE_UP
|
|
.byte EFFECT_SPEED_UP
|
|
.byte EFFECT_SPECIAL_ATTACK_UP
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP
|
|
.byte EFFECT_ACCURACY_UP
|
|
.byte EFFECT_EVASION_UP
|
|
.byte EFFECT_ATTACK_DOWN
|
|
.byte EFFECT_DEFENSE_DOWN
|
|
.byte EFFECT_SPEED_DOWN
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN
|
|
.byte EFFECT_ACCURACY_DOWN
|
|
.byte EFFECT_EVASION_DOWN
|
|
.byte EFFECT_BIDE
|
|
.byte EFFECT_CONVERSION
|
|
.byte EFFECT_LIGHT_SCREEN
|
|
.byte EFFECT_MIST
|
|
.byte EFFECT_FOCUS_ENERGY
|
|
.byte EFFECT_ATTACK_UP_2
|
|
.byte EFFECT_DEFENSE_UP_2
|
|
.byte EFFECT_SPEED_UP_2
|
|
.byte EFFECT_SPECIAL_ATTACK_UP_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP_2
|
|
.byte EFFECT_ACCURACY_UP_2
|
|
.byte EFFECT_EVASION_UP_2
|
|
.byte EFFECT_ATTACK_DOWN_2
|
|
.byte EFFECT_DEFENSE_DOWN_2
|
|
.byte EFFECT_SPEED_DOWN_2
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
|
|
.byte EFFECT_ACCURACY_DOWN_2
|
|
.byte EFFECT_EVASION_DOWN_2
|
|
.byte EFFECT_RAGE
|
|
.byte EFFECT_CONVERSION_2
|
|
.byte EFFECT_LOCK_ON
|
|
.byte EFFECT_SAFEGUARD
|
|
.byte EFFECT_BELLY_DRUM
|
|
.byte EFFECT_PSYCH_UP
|
|
.byte EFFECT_MIRROR_COAT
|
|
.byte EFFECT_SOLARBEAM
|
|
.byte EFFECT_ERUPTION
|
|
.byte EFFECT_TICKLE
|
|
.byte EFFECT_COSMIC_POWER
|
|
.byte EFFECT_BULK_UP
|
|
.byte EFFECT_CALM_MIND
|
|
.byte EFFECT_DRAGON_DANCE
|
|
.byte -1
|
|
|
|
AI_HPAware_DiscouragedEffectsWhenTargetHighHP:: @ 81DBC2C
|
|
.byte -1
|
|
|
|
AI_HPAware_DiscouragedEffectsWhenTargetMediumHP:: @ 81DBC2D
|
|
.byte EFFECT_ATTACK_UP
|
|
.byte EFFECT_DEFENSE_UP
|
|
.byte EFFECT_SPEED_UP
|
|
.byte EFFECT_SPECIAL_ATTACK_UP
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP
|
|
.byte EFFECT_ACCURACY_UP
|
|
.byte EFFECT_EVASION_UP
|
|
.byte EFFECT_ATTACK_DOWN
|
|
.byte EFFECT_DEFENSE_DOWN
|
|
.byte EFFECT_SPEED_DOWN
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN
|
|
.byte EFFECT_ACCURACY_DOWN
|
|
.byte EFFECT_EVASION_DOWN
|
|
.byte EFFECT_MIST
|
|
.byte EFFECT_FOCUS_ENERGY
|
|
.byte EFFECT_ATTACK_UP_2
|
|
.byte EFFECT_DEFENSE_UP_2
|
|
.byte EFFECT_SPEED_UP_2
|
|
.byte EFFECT_SPECIAL_ATTACK_UP_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP_2
|
|
.byte EFFECT_ACCURACY_UP_2
|
|
.byte EFFECT_EVASION_UP_2
|
|
.byte EFFECT_ATTACK_DOWN_2
|
|
.byte EFFECT_DEFENSE_DOWN_2
|
|
.byte EFFECT_SPEED_DOWN_2
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
|
|
.byte EFFECT_ACCURACY_DOWN_2
|
|
.byte EFFECT_EVASION_DOWN_2
|
|
.byte EFFECT_POISON
|
|
.byte EFFECT_PAIN_SPLIT
|
|
.byte EFFECT_PERISH_SONG
|
|
.byte EFFECT_SAFEGUARD
|
|
.byte EFFECT_TICKLE
|
|
.byte EFFECT_COSMIC_POWER
|
|
.byte EFFECT_BULK_UP
|
|
.byte EFFECT_CALM_MIND
|
|
.byte EFFECT_DRAGON_DANCE
|
|
.byte -1
|
|
|
|
AI_HPAware_DiscouragedEffectsWhenTargetLowHP:: @ 81DBC55
|
|
.byte EFFECT_SLEEP
|
|
.byte EFFECT_EXPLOSION
|
|
.byte EFFECT_ATTACK_UP
|
|
.byte EFFECT_DEFENSE_UP
|
|
.byte EFFECT_SPEED_UP
|
|
.byte EFFECT_SPECIAL_ATTACK_UP
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP
|
|
.byte EFFECT_ACCURACY_UP
|
|
.byte EFFECT_EVASION_UP
|
|
.byte EFFECT_ATTACK_DOWN
|
|
.byte EFFECT_DEFENSE_DOWN
|
|
.byte EFFECT_SPEED_DOWN
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN
|
|
.byte EFFECT_ACCURACY_DOWN
|
|
.byte EFFECT_EVASION_DOWN
|
|
.byte EFFECT_BIDE
|
|
.byte EFFECT_CONVERSION
|
|
.byte EFFECT_TOXIC
|
|
.byte EFFECT_LIGHT_SCREEN
|
|
.byte EFFECT_OHKO
|
|
.byte EFFECT_SUPER_FANG @ Maybe supposed to be EFFECT_RAZOR_WIND
|
|
.byte EFFECT_SUPER_FANG
|
|
.byte EFFECT_MIST
|
|
.byte EFFECT_FOCUS_ENERGY
|
|
.byte EFFECT_CONFUSE
|
|
.byte EFFECT_ATTACK_UP_2
|
|
.byte EFFECT_DEFENSE_UP_2
|
|
.byte EFFECT_SPEED_UP_2
|
|
.byte EFFECT_SPECIAL_ATTACK_UP_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_UP_2
|
|
.byte EFFECT_ACCURACY_UP_2
|
|
.byte EFFECT_EVASION_UP_2
|
|
.byte EFFECT_ATTACK_DOWN_2
|
|
.byte EFFECT_DEFENSE_DOWN_2
|
|
.byte EFFECT_SPEED_DOWN_2
|
|
.byte EFFECT_SPECIAL_ATTACK_DOWN_2
|
|
.byte EFFECT_SPECIAL_DEFENSE_DOWN_2
|
|
.byte EFFECT_ACCURACY_DOWN_2
|
|
.byte EFFECT_EVASION_DOWN_2
|
|
.byte EFFECT_POISON
|
|
.byte EFFECT_PARALYZE
|
|
.byte EFFECT_PAIN_SPLIT
|
|
.byte EFFECT_CONVERSION_2
|
|
.byte EFFECT_LOCK_ON
|
|
.byte EFFECT_SPITE
|
|
.byte EFFECT_PERISH_SONG
|
|
.byte EFFECT_SWAGGER
|
|
.byte EFFECT_FURY_CUTTER
|
|
.byte EFFECT_ATTRACT
|
|
.byte EFFECT_SAFEGUARD
|
|
.byte EFFECT_PSYCH_UP
|
|
.byte EFFECT_MIRROR_COAT
|
|
.byte EFFECT_WILL_O_WISP
|
|
.byte EFFECT_TICKLE
|
|
.byte EFFECT_COSMIC_POWER
|
|
.byte EFFECT_BULK_UP
|
|
.byte EFFECT_CALM_MIND
|
|
.byte EFFECT_DRAGON_DANCE
|
|
.byte -1
|
|
|
|
AI_Unknown:: @ 81DBC91
|
|
if_not_effect EFFECT_SUNNY_DAY, AI_Unknown_End
|
|
if_equal 0, AI_Unknown_End
|
|
is_first_turn_for AI_USER
|
|
if_equal 0, AI_Unknown_End
|
|
score +5
|
|
|
|
AI_Unknown_End:: @ 81DBCA7
|
|
end
|
|
|
|
AI_Roaming:: @ 81DBCA8
|
|
if_status2 AI_USER, STATUS2_WRAPPED, AI_Roaming_End
|
|
if_status2 AI_USER, STATUS2_ESCAPE_PREVENTION, AI_Roaming_End
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_SHADOW_TAG, AI_Roaming_End
|
|
get_ability AI_USER
|
|
if_equal ABILITY_LEVITATE, AI_Roaming_Flee
|
|
get_ability AI_TARGET
|
|
if_equal ABILITY_ARENA_TRAP, AI_Roaming_End
|
|
|
|
AI_Roaming_Flee:: @ 81DBCD4
|
|
flee
|
|
|
|
AI_Roaming_End:: @ 81DBCD5
|
|
end
|
|
|
|
AI_Safari:: @ 81DBCD6
|
|
if_random_safari_flee AI_Safari_Flee
|
|
watch
|
|
|
|
AI_Safari_Flee:: @ 81DBCDC
|
|
flee
|
|
|
|
@ From Hoenns Poochyena fight (Zigzagoon in Emerald)
|
|
AI_FirstBattle:: @ 81DBCDD
|
|
if_hp_equal AI_TARGET, 20, AI_FirstBattle_Flee
|
|
if_hp_less_than AI_TARGET, 20, AI_FirstBattle_Flee
|
|
end
|
|
|
|
AI_FirstBattle_Flee:: @ 81DBCEC
|
|
flee
|
|
|
|
AI_Ret:: @ 81DBCED
|
|
end
|