From 55be86cee480a437ec052da4cbe9521d1de1bd61 Mon Sep 17 00:00:00 2001 From: Rachel Date: Wed, 21 Feb 2024 11:20:17 -0800 Subject: [PATCH 1/3] Move BattleStat and CompareSpeedResult to constgen manifest --- consts/battle.json | 26 ++++++++++++++++++++++- include/battle/battle_lib.h | 4 ++-- include/battle/common.h | 13 ------------ src/overlay016/battle_lib.c | 42 ++++++++++++++++--------------------- 4 files changed, 45 insertions(+), 40 deletions(-) diff --git a/consts/battle.json b/consts/battle.json index 4e2971ad9a..38f760fab0 100644 --- a/consts/battle.json +++ b/consts/battle.json @@ -8,7 +8,9 @@ "@Terrain", "@BattleAnimation", "@MoveRange", - "@MoveFlags" + "@MoveFlags", + "@BattleStat", + "@CompareSpeedResult" ], "btlcmd": [ "@BattleScriptVar", @@ -1000,6 +1002,28 @@ "MOVE_FLAG_HIDES_HP_GAUGES", "MOVE_FLAG_HIDES_SHADOWS" ] + }, + "@BattleStat": { + "type": "enum", + "values": [ + "BATTLE_STAT_HP", + "BATTLE_STAT_ATTACK", + "BATTLE_STAT_DEFENSE", + "BATTLE_STAT_SPEED", + "BATTLE_STAT_SP_ATTACK", + "BATTLE_STAT_SP_DEFENSE", + "BATTLE_STAT_ACCURACY", + "BATTLE_STAT_EVASION", + "BATTLE_STAT_MAX" + ] + }, + "@CompareSpeedResult": { + "type": "enum", + "values": [ + "COMPARE_SPEED_FASTER", + "COMPARE_SPEED_SLOWER", + "COMPARE_SPEED_TIE" + ] } } } diff --git a/include/battle/battle_lib.h b/include/battle/battle_lib.h index 8f36d897b9..4dfe084670 100644 --- a/include/battle/battle_lib.h +++ b/include/battle/battle_lib.h @@ -191,8 +191,8 @@ void BattleMon_AddVal(BattleMon *mon, enum BattleMonParam paramID, int val); * @param ignoreQuickClaw If set to TRUE, the Quick Claw and Custap Berry * flags will NOT be set after determining if they * should activate. - * @return 0 if battler 1 should move first, 1 if battler 2 should move first, - * 2 if battler 2 should move first and won a speed tie. + * @return A value representing the speed-ordering of the two battlers, + * relative to the first of the two. See enum CompareSpeedResult. */ u8 BattleSystem_CompareBattlerSpeed(BattleSystem *battleSys, BattleContext *battleCtx, int battler1, int battler2, BOOL ignoreQuickClaw); diff --git a/include/battle/common.h b/include/battle/common.h index e4dbe26339..40ee780264 100644 --- a/include/battle/common.h +++ b/include/battle/common.h @@ -75,17 +75,4 @@ #define FLAG_NEGATE(flag) ((flag) ^ 0xFFFFFFFF) -enum { - BATTLE_STAT_HP, - BATTLE_STAT_ATTACK, - BATTLE_STAT_DEFENSE, - BATTLE_STAT_SPEED, - BATTLE_STAT_SP_ATTACK, - BATTLE_STAT_SP_DEFENSE, - BATTLE_STAT_ACCURACY, - BATTLE_STAT_EVASION, - - BATTLE_STAT_MAX -}; - #endif // POKEPLATINUM_BATTLE_COMMON_H \ No newline at end of file diff --git a/src/overlay016/battle_lib.c b/src/overlay016/battle_lib.c index ed7ca45e84..939b6e6422 100644 --- a/src/overlay016/battle_lib.c +++ b/src/overlay016/battle_lib.c @@ -1184,15 +1184,9 @@ static inline int CompareSpeed_ApplySimple(BattleContext *battleCtx, int battler return stage; } -enum { - BATTLER_1_GOES_FIRST = 0, - BATTLER_2_GOES_FIRST, - BATTLER_2_WINS_SPEED_TIE, -}; - u8 BattleSystem_CompareBattlerSpeed(BattleSystem *battleSys, BattleContext *battleCtx, int battler1, int battler2, BOOL ignoreQuickClaw) { - u8 result = BATTLER_1_GOES_FIRST; + u8 result = COMPARE_SPEED_FASTER; u32 battler1Speed, battler2Speed; u16 battler1Move = 0, battler2Move = 0; u8 battler1ItemEffect, battler1ItemParam; @@ -1406,53 +1400,53 @@ u8 BattleSystem_CompareBattlerSpeed(BattleSystem *battleSys, BattleContext *batt if (battler1Priority == battler2Priority) { if (battler1QuickClaw && battler2QuickClaw) { if (battler1Speed < battler2Speed) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } else if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) { - result = BATTLER_2_WINS_SPEED_TIE; + result = COMPARE_SPEED_TIE; } } else if (battler1QuickClaw == FALSE && battler2QuickClaw) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } else if (battler1QuickClaw && battler2QuickClaw == FALSE) { - result = BATTLER_1_GOES_FIRST; + result = COMPARE_SPEED_FASTER; } else if (battler1LaggingTail && battler2LaggingTail) { if (battler1Speed > battler2Speed) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } else if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) { - result = BATTLER_2_WINS_SPEED_TIE; + result = COMPARE_SPEED_TIE; } } else if (battler1LaggingTail && battler2LaggingTail == FALSE) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } else if (battler1LaggingTail == FALSE && battler2LaggingTail) { - result = BATTLER_1_GOES_FIRST; + result = COMPARE_SPEED_FASTER; } else if (battler1Ability == ABILITY_STALL && battler2Ability == ABILITY_STALL) { if (battler1Speed > battler2Speed) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } else if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) { - result = BATTLER_2_WINS_SPEED_TIE; + result = COMPARE_SPEED_TIE; } } else if (battler1Ability == ABILITY_STALL && battler2Ability != ABILITY_STALL) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } else if (battler1Ability != ABILITY_STALL && battler2Ability == ABILITY_STALL) { - result = BATTLER_1_GOES_FIRST; + result = COMPARE_SPEED_FASTER; } else if (battleCtx->fieldConditionsMask & FIELD_CONDITION_TRICK_ROOM) { if (battler1Speed > battler2Speed) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) { - result = BATTLER_2_WINS_SPEED_TIE; + result = COMPARE_SPEED_TIE; } } else { if (battler1Speed < battler2Speed) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) { - result = BATTLER_2_WINS_SPEED_TIE; + result = COMPARE_SPEED_TIE; } } } else if (battler1Priority < battler2Priority) { - result = BATTLER_2_GOES_FIRST; + result = COMPARE_SPEED_SLOWER; } return result; From 971bc3e780097c6c2eabd6545c8ff20b9f862f83 Mon Sep 17 00:00:00 2001 From: Rachel Date: Wed, 21 Feb 2024 12:18:01 -0800 Subject: [PATCH 2/3] Rename AICmd_LoadIsBattlerFirstTurn -> AICmd_LoadBattlerTurnCount --- src/overlay014/trainer_ai.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/overlay014/trainer_ai.c b/src/overlay014/trainer_ai.c index 41eeaf73a6..921ebf5c7a 100644 --- a/src/overlay014/trainer_ai.c +++ b/src/overlay014/trainer_ai.c @@ -162,7 +162,7 @@ static void AICmd_IfCanUseLastResort(BattleSystem *battleSys, BattleContext *bat static void AICmd_LoadCurrentMoveClass(BattleSystem *battleSys, BattleContext *battleCtx); static void AICmd_LoadDefenderLastUsedMoveClass(BattleSystem *battleSys, BattleContext *battleCtx); static void AICmd_LoadBattlerSpeedRank(BattleSystem *battleSys, BattleContext *battleCtx); -static void AICmd_LoadIsBattlerFirstTurn(BattleSystem *battleSys, BattleContext *battleCtx); +static void AICmd_LoadBattlerTurnCount(BattleSystem *battleSys, BattleContext *battleCtx); static void AICmd_IfPartyMemberDealsMoreDamage(BattleSystem *battleSys, BattleContext *battleCtx); static void AICmd_IfHasSuperEffectiveMove(BattleSystem *battleSys, BattleContext *battleCtx); static void AICmd_IfBattlerDealsMoreDamage(BattleSystem *battleSys, BattleContext *battleCtx); @@ -299,7 +299,7 @@ static const AICommandFunc sAICommandTable[] = { AICmd_LoadCurrentMoveClass, AICmd_LoadDefenderLastUsedMoveClass, AICmd_LoadBattlerSpeedRank, - AICmd_LoadIsBattlerFirstTurn, + AICmd_LoadBattlerTurnCount, AICmd_IfPartyMemberDealsMoreDamage, AICmd_IfHasSuperEffectiveMove, AICmd_IfBattlerDealsMoreDamage, @@ -2199,7 +2199,7 @@ static void AICmd_LoadBattlerSpeedRank(BattleSystem *battleSys, BattleContext *b } } -static void AICmd_LoadIsBattlerFirstTurn(BattleSystem *battleSys, BattleContext *battleCtx) +static void AICmd_LoadBattlerTurnCount(BattleSystem *battleSys, BattleContext *battleCtx) { AIScript_Iter(battleCtx, 1); From 01db0cca9b8c4906bcaca7c6a45173b908f5dc7b Mon Sep 17 00:00:00 2001 From: Rachel Date: Wed, 21 Feb 2024 13:09:55 -0800 Subject: [PATCH 3/3] Dump trainer AI byte-code script --- asm/incbin/ov14_022248A4.bin | Bin 42428 -> 0 bytes asm/macros/aicmd.inc | 638 +++ asm/meson.build | 2 +- asm/overlay014/ov14_022248A4.s | 6 - asm/trainer_ai/trainer_ai_script.s | 6459 ++++++++++++++++++++++++++ include/constants/battle/condition.h | 1 + platinum.us/main.lsf | 2 +- 7 files changed, 7100 insertions(+), 8 deletions(-) delete mode 100644 asm/incbin/ov14_022248A4.bin create mode 100644 asm/macros/aicmd.inc delete mode 100644 asm/overlay014/ov14_022248A4.s create mode 100644 asm/trainer_ai/trainer_ai_script.s diff --git a/asm/incbin/ov14_022248A4.bin b/asm/incbin/ov14_022248A4.bin deleted file mode 100644 index 8c116702869817b2fa364b1342ea0da9e5e4f6d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42428 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 diff --git a/asm/macros/aicmd.inc b/asm/macros/aicmd.inc new file mode 100644 index 0000000000..099b25d101 --- /dev/null +++ b/asm/macros/aicmd.inc @@ -0,0 +1,638 @@ + .equ FALSE, 0 + .equ TRUE, 1 + + .macro IfRandomLessThan i, jump + .long 0 + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfRandomGreaterThan i, jump + .long 1 + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfRandomEqualTo i, jump + .long 2 + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfRandomNotEqualTo i, jump + .long 3 + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro AddToMoveScore i + .long 4 + .long \i + .endm + + .macro IfHPPercentLessThan battler, i, jump + .long 5 + .long \battler + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfHPPercentGreaterThan battler, i, jump + .long 6 + .long \battler + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfHPPercentEqualTo battler, i, jump + .long 7 + .long \battler + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfHPPercentNotEqualTo battler, i, jump + .long 8 + .long \battler + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfStatus battler, status, jump + .long 9 + .long \battler + .long \status + .long (\jump-.) / 4 - 1 + .endm + + .macro IfNotStatus battler, status, jump + .long 10 + .long \battler + .long \status + .long (\jump-.) / 4 - 1 + .endm + + .macro IfVolatileStatus battler, volatile_status, jump + .long 11 + .long \battler + .long \volatile_status + .long (\jump-.) / 4 - 1 + .endm + + .macro IfNotVolatileStatus battler, volatile_status, jump + .long 12 + .long \battler + .long \volatile_status + .long (\jump-.) / 4 - 1 + .endm + + .macro IfMoveEffect battler, move_effects, jump + .long 13 + .long \battler + .long \move_effects + .long (\jump-.) / 4 - 1 + .endm + + .macro IfNotMoveEffect battler, move_effects, jump + .long 14 + .long \battler + .long \move_effects + .long (\jump-.) / 4 - 1 + .endm + + .macro IfSideCondition battler, side_conditions, jump + .long 15 + .long \battler + .long \side_conditions + .long (\jump-.) / 4 - 1 + .endm + + .macro IfNotSideCondition battler, side_conditions, jump + .long 16 + .long \battler + .long \side_conditions + .long (\jump-.) / 4 - 1 + .endm + + .macro IfLoadedLessThan loaded_val, jump + .long 17 + .long \loaded_val + .long (\jump-.) / 4 - 1 + .endm + + .macro IfLoadedGreaterThan loaded_val, jump + .long 18 + .long \loaded_val + .long (\jump-.) / 4 - 1 + .endm + + .macro IfLoadedEqualTo loaded_val, jump + .long 19 + .long \loaded_val + .long (\jump-.) / 4 - 1 + .endm + + .macro IfLoadedNotEqualTo loaded_val, jump + .long 20 + .long \loaded_val + .long (\jump-.) / 4 - 1 + .endm + + .macro IfLoadedMask loaded_val, jump + .long 21 + .long \loaded_val + .long (\jump-.) / 4 - 1 + .endm + + .macro IfLoadedNotMask loaded_val, jump + .long 22 + .long \loaded_val + .long (\jump-.) / 4 - 1 + .endm + + .macro IfMoveEqualTo move, jump + .long 23 + .long \move + .long (\jump-.) / 4 - 1 + .endm + + .macro IfMoveNotEqualTo move, jump + .long 24 + .long \move + .long (\jump-.) / 4 - 1 + .endm + + .macro IfLoadedinTable table, jump + .long 25 + .long (\table-.) / 4 - 2 + .long (\jump-.) / 4 - 1 + .endm + + .macro IfLoadedNotinTable table, jump + .long 26 + .long (\table-.) / 4 - 2 + .long (\jump-.) / 4 - 1 + .endm + + .macro IfAttackerHasDamagingMoves jump + .long 27 + .long (\jump-.) / 4 - 1 + .endm + + .macro IfAttackerHasNoDamagingMoves jump + .long 28 + .long (\jump-.) / 4 - 1 + .endm + + .macro LoadTurnCount + .long 29 + .endm + + .macro LoadTypeFrom load_type_target + .long 30 + .long \load_type_target + .endm + + .macro LoadMovePower + .long 31 + .endm + + .macro FlagMoveDamageScore bool + .long 32 + .long \bool + .endm + + .macro LoadBattlerPreviousMove battler + .long 33 + .long \battler + .endm + + .macro IfTempEqualTo loaded_val, jump + .long 34 + .long \loaded_val + .long (\jump-.) / 4 - 1 + .endm + + .macro IfTempNotEqualTo loaded_val, jump + .long 35 + .long \loaded_val + .long (\jump-.) / 4 - 1 + .endm + + .macro IfSpeedCompareEqualTo cmp, jump + .long 36 + .long \cmp + .long (\jump-.) / 4 - 1 + .endm + + .macro IfSpeedCompareNotEqualTo cmp, jump + .long 37 + .long \cmp + .long (\jump-.) / 4 - 1 + .endm + + .macro CountAlivePartyBattlers battler + .long 38 + .long \battler + .endm + + .macro LoadCurrentMove + .long 39 + .endm + + .macro LoadCurrentMoveEffect + .long 40 + .endm + + .macro LoadBattlerAbility battler + .long 41 + .long \battler + .endm + + .macro CalcMaxEffectiveness + .long 42 + .endm + + .macro IfMoveEffectivenessEquals modifier, jump + .long 43 + .long \modifier + .long (\jump-.) / 4 - 1 + .endm + + .macro IfPartyMemberStatus battler, pokemon_status, jump + .long 44 + .long \battler + .long \pokemon_status + .long (\jump-.) / 4 - 1 + .endm + + .macro IfPartyMemberNotStatus battler, pokemon_status, jump + .long 45 + .long \battler + .long \pokemon_status + .long (\jump-.) / 4 - 1 + .endm + + .macro LoadCurrentWeather + .long 46 + .endm + + .macro IfCurrentMoveEffectEqualTo battle_effect, jump + .long 47 + .long \battle_effect + .long (\jump-.) / 4 - 1 + .endm + + .macro IfCurrentMoveEffectNotEqualTo battle_effect, jump + .long 48 + .long \battle_effect + .long (\jump-.) / 4 - 1 + .endm + + .macro IfStatStageLessThan battler, stat, i, jump + .long 49 + .long \battler + .long \stat + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfStatStageGreaterThan battler, stat, i, jump + .long 50 + .long \battler + .long \stat + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfStatStageEqualTo battler, stat, i, jump + .long 51 + .long \battler + .long \stat + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfStatStageNotEqualTo battler, stat, i, jump + .long 52 + .long \battler + .long \stat + .long \i + .long (\jump-.) / 4 - 1 + .endm + + .macro IfCurrentMoveKills roll_damage, jump + .long 53 + .long \roll_damage + .long (\jump-.) / 4 - 1 + .endm + + .macro IfCurrentMoveDoesNotKill roll_damage, jump + .long 54 + .long \roll_damage + .long (\jump-.) / 4 - 1 + .endm + + .macro IfMoveKnown battler, move, jump + .long 55 + .long \battler + .long \move + .long (\jump-.) / 4 - 1 + .endm + + .macro IfMoveNotKnown battler, move, jump + .long 56 + .long \battler + .long \move + .long (\jump-.) / 4 - 1 + .endm + + .macro IfMoveEffectKnown battler, battle_effect, jump + .long 57 + .long \battler + .long \battle_effect + .long (\jump-.) / 4 - 1 + .endm + + .macro IfMoveEffectNotKnown battler, battle_effect, jump + .long 58 + .long \battler + .long \battle_effect + .long (\jump-.) / 4 - 1 + .endm + + .macro IfBattlerUnderEffect battler, check_effect, jump + .long 59 + .long \battler + .long \check_effect + .long (\jump-.) / 4 - 1 + .endm + + .macro IfCurrentMoveMatchesEffect check_effect, jump + .long 60 + .long \check_effect + .long (\jump-.) / 4 - 1 + .endm + + .macro Escape + .long 61 + .endm + + .macro Dummy3E i + .long 62 + .long \i + .endm + + .macro Dummy3F + .long 63 + .endm + + .macro LoadHeldItem battler + .long 64 + .long \battler + .endm + + .macro LoadHeldItemEffect battler + .long 65 + .long \battler + .endm + + .macro LoadGender battler + .long 66 + .long \battler + .endm + + .macro LoadIsFirstTurnInBattle battler + .long 67 + .long \battler + .endm + + .macro LoadStockpileCount battler + .long 68 + .long \battler + .endm + + .macro LoadBattleType + .long 69 + .endm + + .macro LoadRecycleItem battler + .long 70 + .long \battler + .endm + + .macro LoadTypeOfLoadedMove + .long 71 + .endm + + .macro LoadPowerOfLoadedMove + .long 72 + .endm + + .macro LoadEffectOfLoadedMove + .long 73 + .endm + + .macro LoadProtectChain battler + .long 74 + .long \battler + .endm + + .macro PushAndGoTo jump + .long 75 + .long (\jump-.) / 4 - 1 + .endm + + .macro GoTo jump + .long 76 + .long (\jump-.) / 4 - 1 + .endm + + .macro PopOrEnd + .long 77 + .endm + + .macro IfLevel check_level, jump + .long 78 + .long \check_level + .long (\jump-.) / 4 - 1 + .endm + + .macro IfTargetIsTaunted jump + .long 79 + .long (\jump-.) / 4 - 1 + .endm + + .macro IfTargetIsNotTaunted jump + .long 80 + .long (\jump-.) / 4 - 1 + .endm + + .macro IfTargetIsPartner jump + .long 81 + .long (\jump-.) / 4 - 1 + .endm + + .macro FlagBattlerIsType battler, type + .long 82 + .long \battler + .long \type + .endm + + .macro CheckBattlerAbility battler, ability + .long 83 + .long \battler + .long \ability + .endm + + .macro IfActivatedFlashFire battler, jump + .long 84 + .long \battler + .long (\jump-.) / 4 - 1 + .endm + + .macro IfHeldItemEqualTo battler, item, jump + .long 85 + .long \battler + .long \item + .long (\jump-.) / 4 - 1 + .endm + + .macro IfFieldConditionsMask field_conditions, jump + .long 86 + .long \field_conditions + .long (\jump-.) / 4 - 1 + .endm + + .macro LoadSpikesLayers battler, side_conditions + .long 87 + .long \battler + .long \side_conditions + .endm + + .macro IfAnyPartyMemberIsWounded battler, jump + .long 88 + .long \battler + .long (\jump-.) / 4 - 1 + .endm + + .macro IfAnyPartyMemberUsedPP battler, jump + .long 89 + .long \battler + .long (\jump-.) / 4 - 1 + .endm + + .macro LoadFlingPower battler + .long 90 + .long \battler + .endm + + .macro LoadCurrentMovePP + .long 91 + .endm + + .macro IfCanUseLastResort battler, jump + .long 92 + .long \battler + .long (\jump-.) / 4 - 1 + .endm + + .macro LoadCurrentMoveClass + .long 93 + .endm + + .macro LoadDefenderLastUsedMoveClass + .long 94 + .endm + + .macro LoadBattlerSpeedRank battler + .long 95 + .long \battler + .endm + + .macro LoadBattlerTurnCount battler + .long 96 + .long \battler + .endm + + .macro IfPartyMemberDealsMoreDamage roll_damage, jump + .long 97 + .long \roll_damage + .long (\jump-.) / 4 - 1 + .endm + + .macro IfHasSuperEffectiveMove jump + .long 98 + .long (\jump-.) / 4 - 1 + .endm + + .macro IfBattlerDealsMoreDamage battler, roll_damage, jump + .long 99 + .long \battler + .long \roll_damage + .long (\jump-.) / 4 - 1 + .endm + + .macro SumPositiveStatStages battler + .long 100 + .long \battler + .endm + + .macro DiffStatStages battler, battle_stat + .long 101 + .long \battler + .long \battle_stat + .endm + + .macro IfBattlerHasHigherStat battler, battle_stat, jump + .long 102 + .long \battler + .long \battle_stat + .long (\jump-.) / 4 - 1 + .endm + + .macro IfBattlerHasLowerStat battler, battle_stat, jump + .long 103 + .long \battler + .long \battle_stat + .long (\jump-.) / 4 - 1 + .endm + + .macro IfBattlerHasEqualStat battler, battle_stat, jump + .long 104 + .long \battler + .long \battle_stat + .long (\jump-.) / 4 - 1 + .endm + + .macro CheckIfHighestDamageWithPartner roll_damage + .long 105 + .long \roll_damage + .endm + + .macro IfBattlerFainted battler, jump + .long 106 + .long \battler + .long (\jump-.) / 4 - 1 + .endm + + .macro IfBattlerNotFainted battler, jump + .long 107 + .long \battler + .long (\jump-.) / 4 - 1 + .endm + + .macro LoadAbility battler + .long 108 + .long \battler + .endm + + .equ TABLE_END, 0xFFFFFFFF + + .macro TableEntry entry + .long \entry + .endm + + .macro LabelDistance dst, src + .long (\dst-\src) / 4 + .endm diff --git a/asm/meson.build b/asm/meson.build index a554f33e42..7e884a5238 100644 --- a/asm/meson.build +++ b/asm/meson.build @@ -1,3 +1,3 @@ pokeplatinum_asm = files( - 'overlay014/ov14_022248A4.s' + 'trainer_ai/trainer_ai_script.s' ) diff --git a/asm/overlay014/ov14_022248A4.s b/asm/overlay014/ov14_022248A4.s deleted file mode 100644 index 3cbc295927..0000000000 --- a/asm/overlay014/ov14_022248A4.s +++ /dev/null @@ -1,6 +0,0 @@ - - .text - - .global gTrainerAITable -gTrainerAITable: ; 0x022248A4 - .incbin "incbin/ov14_022248A4.bin", 0x0, 0xA5BC diff --git a/asm/trainer_ai/trainer_ai_script.s b/asm/trainer_ai/trainer_ai_script.s new file mode 100644 index 0000000000..c5cbc854ec --- /dev/null +++ b/asm/trainer_ai/trainer_ai_script.s @@ -0,0 +1,6459 @@ + .ifndef ASM_BATTLE_SCRIPT_INC + .set ASM_BATTLE_SCRIPT_INC, 1 +#define __ASM_PM_ + +#include "constants/battle.h" +#include "constants/items.h" +#include "constants/battle/trainer_ai.h" + + .include "consts/generated/asm/abilities.inc" + .include "consts/generated/asm/battle.inc" + .include "consts/generated/asm/battle_controller_params.inc" + .include "consts/generated/asm/battle_lib_params.inc" + .include "consts/generated/asm/gender.inc" + .include "consts/generated/asm/items.inc" + .include "consts/generated/asm/moves.inc" + .include "consts/generated/asm/pokemon.inc" + .include "consts/generated/asm/trainer_ai.inc" + .include "macros/aicmd.inc" + + .text + + .global gTrainerAITable +gTrainerAITable: + +_00000: + LabelDistance _00032, _00000 + LabelDistance _08355, _00000 + LabelDistance _02546, _00000 + LabelDistance _08418, _00000 + LabelDistance _08509, _00000 + LabelDistance _08496, _00000 + LabelDistance _08547, _00000 + LabelDistance _08646, _00000 + LabelDistance _10186, _00000 + LabelDistance _10470, _00000 + LabelDistance _10520, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10606, _00000 + LabelDistance _10567, _00000 + LabelDistance _10592, _00000 + LabelDistance _10596, _00000 + +_00032: + IfTargetIsPartner _10606 + IfMoveEqualTo MOVE_FISSURE, _00045 + IfMoveEqualTo MOVE_HORN_DRILL, _00045 + FlagMoveDamageScore FALSE + IfLoadedEqualTo AI_NO_COMPARISON_MADE, _00126 + +_00045: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _00121 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_VOLT_ABSORB, _00078 + IfLoadedEqualTo ABILITY_MOTOR_DRIVE, _00078 + IfLoadedEqualTo ABILITY_WATER_ABSORB, _00085 + IfLoadedEqualTo ABILITY_FLASH_FIRE, _00092 + IfLoadedEqualTo ABILITY_WONDER_GUARD, _00099 + IfLoadedEqualTo ABILITY_LEVITATE, _00107 + IfLoadedEqualTo ABILITY_LEVITATE, _00114 + GoTo _00121 + +_00078: + LoadTypeFrom LOAD_MOVE_TYPE + IfTempEqualTo TYPE_ELECTRIC, _02525 + GoTo _00121 + +_00085: + LoadTypeFrom LOAD_MOVE_TYPE + IfTempEqualTo TYPE_WATER, _02525 + GoTo _00121 + +_00092: + LoadTypeFrom LOAD_MOVE_TYPE + IfTempEqualTo TYPE_FIRE, _02525 + GoTo _00121 + +_00099: + IfMoveEffectivenessEquals TYPE_MULTI_DOUBLE_DAMAGE, _00121 + IfMoveEffectivenessEquals TYPE_MULTI_QUADRUPLE_DAMAGE, _00121 + GoTo _02525 + +_00107: + LoadTypeFrom LOAD_MOVE_TYPE + IfTempEqualTo TYPE_GROUND, _02525 + GoTo _00121 + +_00114: + LoadTypeFrom LOAD_MOVE_TYPE + IfTempEqualTo TYPE_WATER, _02525 + GoTo _00121 + +_00121: + FlagMoveDamageScore FALSE + IfLoadedEqualTo AI_NO_COMPARISON_MADE, _00126 + +_00126: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedNotEqualTo ABILITY_SOUNDPROOF, _00169 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _00169 + IfMoveEqualTo MOVE_GROWL, _02522 + IfMoveEqualTo MOVE_ROAR, _02522 + IfMoveEqualTo MOVE_SING, _02522 + IfMoveEqualTo MOVE_SUPERSONIC, _02522 + IfMoveEqualTo MOVE_SCREECH, _02522 + IfMoveEqualTo MOVE_SNORE, _02522 + IfMoveEqualTo MOVE_UPROAR, _02522 + IfMoveEqualTo MOVE_METAL_SOUND, _02522 + IfMoveEqualTo MOVE_GRASS_WHISTLE, _02522 + IfMoveEqualTo MOVE_BUG_BUZZ, _02522 + IfMoveEqualTo MOVE_CHATTER, _02522 + +_00169: + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_SLEEP, _00626 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_DEFENSE, _00643 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECOVER_DAMAGE_SLEEP, _00683 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_UP, _00695 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_UP, _00712 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_UP, _00729 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_UP, _00749 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_DEF_UP, _00766 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ACC_UP, _00783 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_UP, _00808 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_DOWN, _00833 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_DOWN, _00845 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_DOWN, _00852 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_DOWN, _00868 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_DEF_DOWN, _00875 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ACC_DOWN, _00882 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_DOWN, _00902 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RESET_STAT_CHANGES, _00926 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_BIDE, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FORCE_SWITCH, _00999 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RESTORE_HALF_HP, _01015 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_BADLY_POISON, _01022 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_LIGHT_SCREEN, _01074 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ONE_HIT_KO, _01079 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CHARGE_TURN_HIGH_CRIT, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_HP, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_40_DAMAGE_FLAT, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_STAT_REDUCTION, _01126 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CRIT_UP_2, _01131 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_CONFUSE, _01136 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_UP_2, _00695 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_UP_2, _00712 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_UP_2, _00729 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_UP_2, _00749 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_DEF_UP_2, _00766 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ACC_UP_2, _00783 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_UP_2, _00808 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_DOWN_2, _00833 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_DOWN_2, _00845 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_DOWN_2, _00852 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_DOWN_2, _00868 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_DEF_DOWN_2, _00875 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_DOWN_2, _00882 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ACC_DOWN_2, _00902 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_REFLECT, _01150 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_POISON, _01022 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_PARALYZE, _01155 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_SUBSTITUTE, _01193 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECHARGE_AFTER, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_LEECH_SEED, _01202 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DISABLE, _01222 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_LEVEL_DAMAGE_FLAT, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_DAMAGE_1_TO_150_LEVEL, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_COUNTER, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ENCORE, _01227 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DAMAGE_WHILE_ASLEEP, _01232 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_NEXT_ATTACK_ALWAYS_HITS, _01237 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_USE_RANDOM_LEARNED_MOVE_SLEEP, _01232 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_INCREASE_POWER_WITH_LESS_HP, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_ESCAPE, _01252 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_NIGHTMARE, _00669 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_UP_2_MINIMIZE, _00808 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CURSE, _01257 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_SPIKES, _01304 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_IGNORE_EVASION_REMOVE_GHOST_IMMUNE, _01316 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ALL_FAINT_3_TURNS, _01321 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_SANDSTORM, _01326 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_UP_2_STATUS_CONFUSION, _01136 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_INFATUATE, _01331 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_POWER_BASED_ON_FRIENDSHIP, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_POWER_MAYBE_HEAL, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_POWER_BASED_ON_LOW_FRIENDSHIP, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_STATUS, _01365 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_POWER_10_CASES, _01096 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PASS_STATS_AND_STATUS, _01399 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_10_DAMAGE_FLAT, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HEAL_HALF_MORE_IN_SUN, _01015 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_UNUSED_133, _01015 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_UNUSED_134, _01015 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_POWER_BASED_ON_IVS, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_RAIN, _01405 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_SUN, _01427 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_MAX_ATK_LOSE_HALF_MAX_HP, _00691 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_COPY_STAT_CHANGES, _00926 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_MIRROR_COAT, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CHARGE_TURN_DEF_UP, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_IN_3_TURNS, _01452 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FLEE_FROM_WILD_BATTLE, _02522 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_UP_DOUBLE_ROLLOUT_POWER, _00712 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_UNUSED_157, _01015 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ALWAYS_FLINCH_FIRST_TURN_ONLY, _01461 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STOCKPILE, _01467 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPIT_UP, _01473 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWALLOW, _01473 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_HAIL, _01485 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_TORMENT, _01504 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_UP_CAUSE_CONFUSION, _01136 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_BURN, _01509 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FAINT_AND_ATK_SP_ATK_DOWN_2, _01370 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_LAST_WHIFF_IF_HIT, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_BOOST_ALLY_POWER_BY_50_PERCENT, _01536 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWITCH_HELD_ITEMS, _01541 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_GROUND_TRAP_USER_CONTINUOUS_HEAL, _01552 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_LOWER_OWN_ATK_AND_DEF, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECYCLE, _01557 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_SLEEP_NEXT_TURN, _00626 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_REMOVE_HELD_ITEM, _01541 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_HP_EQUAL_TO_USER, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_MAKE_SHARED_MOVES_UNUSEABLE, _01563 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HEAL_STATUS, _01572 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_INCREASE_POWER_WITH_WEIGHT, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_ELECTRIC_DAMAGE, _01577 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_DEF_DOWN, _01582 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_SPD_UP, _01606 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_DEF_UP, _01633 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_FIRE_DAMAGE, _01660 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_SP_DEF_UP, _01665 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_SPD_UP, _01692 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CAMOUFLAGE, _01722 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HEAL_HALF_REMOVE_FLYING_TYPE, _01015 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_GRAVITY, _01727 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_IGNORE_EVATION_REMOVE_DARK_IMMUNE, _01731 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_POWER_BASED_ON_LOW_SPEED, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FAINT_AND_FULL_HEAL_NEXT_MON, _01736 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_NATURAL_GIFT, _01753 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_SPEED_3_TURNS, _01827 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_STAT_UP_2, _01835 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_METAL_BURST, _01912 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_ITEM_USE, _01937 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FLING, _01951 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_TRANSFER_STATUS, _02144 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIGHER_POWER_WHEN_LOW_PP, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_HEALING, _02230 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_INCREASE_POWER_WITH_MORE_HP, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWAP_ATK_DEF, _02235 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SUPRESS_ABILITY, _02240 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_CRITS, _02268 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_USE_LAST_USED_MOVE, _02273 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWAP_ATK_SP_ATK_STAT_CHANGES, _02281 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWAP_DEF_SP_DEF_STAT_CHANGES, _02296 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_INCREASE_POWER_WITH_MORE_STAT_UP, _01104 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FAIL_IF_NOT_USED_ALL_OTHER_MOVES, _02311 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_ABILITY_TO_INSOMNIA, _02317 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_TOXIC_SPIKES, _02346 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWAP_STAT_CHANGES, _00926 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RESTORE_HP_EVERY_TURN, _02359 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_GIVE_GROUND_IMMUNITY, _02364 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_REMOVE_HAZARDS_SCREENS_EVA_DOWN, _02384 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_TRICK_ROOM, _02421 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_DOWN_2_OPPOSITE_GENDER, _02428 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STEALTH_ROCK, _02474 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FAINT_FULL_RESTORE_NEXT_MON, _02484 + PopOrEnd + +_00626: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02522 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_INSOMNIA, _02522 + IfLoadedEqualTo ABILITY_VITAL_SPIRIT, _02522 + PopOrEnd + +_00643: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _00656 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_DAMP, _02522 + +_00656: + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedNotEqualTo 0, _00668 + CountAlivePartyBattlers AI_BATTLER_DEFENDER + IfLoadedNotEqualTo 0, _02522 + GoTo _02504 + +_00668: + PopOrEnd + +_00669: + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_NIGHTMARE, _02522 + IfNotStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _02519 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02522 + PopOrEnd + +_00683: + IfNotStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _02519 + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + PopOrEnd + +_00691: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 51, _02522 + +_00695: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _00706 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 8, _02522 + PopOrEnd + +_00706: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 12, _02522 + PopOrEnd + +_00712: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _00723 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 8, _02522 + PopOrEnd + +_00723: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 12, _02522 + PopOrEnd + +_00729: + IfFieldConditionsMask FIELD_CONDITION_TRICK_ROOM, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _00743 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SPEED, 8, _02522 + PopOrEnd + +_00743: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SPEED, 12, _02522 + PopOrEnd + +_00749: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _00760 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 8, _02522 + PopOrEnd + +_00760: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 12, _02522 + PopOrEnd + +_00766: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _00777 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 8, _02522 + PopOrEnd + +_00777: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 12, _02522 + PopOrEnd + +_00783: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + IfLoadedNotEqualTo ABILITY_SIMPLE, _00802 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 8, _02522 + PopOrEnd + +_00802: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 12, _02522 + PopOrEnd + +_00808: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + IfLoadedNotEqualTo ABILITY_SIMPLE, _00827 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 8, _02522 + PopOrEnd + +_00827: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 12, _02522 + PopOrEnd + +_00833: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 0, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_HYPER_CUTTER, _02522 + GoTo _00917 + +_00845: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 0, _02522 + GoTo _00917 + +_00852: + IfFieldConditionsMask FIELD_CONDITION_TRICK_ROOM, _02522 + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_SPEED, 0, _02522 + CheckBattlerAbility AI_BATTLER_DEFENDER, ABILITY_SPEED_BOOST + IfLoadedEqualTo AI_HAVE, _02522 + GoTo _00917 + +_00868: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 0, _02522 + GoTo _00917 + +_00875: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE, 0, _02522 + GoTo _00917 + +_00882: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_ACCURACY, 0, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_KEEN_EYE, _02522 + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + GoTo _00917 + +_00902: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 0, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + +_00917: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_CLEAR_BODY, _02522 + IfLoadedEqualTo ABILITY_WHITE_SMOKE, _02522 + PopOrEnd + +_00926: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 6, _00998 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 6, _00998 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SPEED, 6, _00998 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 6, _00998 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 6, _00998 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 6, _00998 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 6, _00998 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 6, _00998 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 6, _00998 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SPEED, 6, _00998 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 6, _00998 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE, 6, _00998 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ACCURACY, 6, _00998 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 6, _00998 + GoTo _02522 + +_00998: + PopOrEnd + +_00999: + CountAlivePartyBattlers AI_BATTLER_DEFENDER + IfLoadedEqualTo 0, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _01014 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_SUCTION_CUPS, _02522 + +_01014: + PopOrEnd + +_01015: + IfHPPercentNotEqualTo AI_BATTLER_ATTACKER, 100, _01021 + AddToMoveScore -8 + +_01021: + PopOrEnd + +_01022: + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_STEEL, _02522 + IfLoadedEqualTo TYPE_POISON, _02522 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_STEEL, _02522 + IfLoadedEqualTo TYPE_POISON, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_IMMUNITY, _02522 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02522 + IfLoadedEqualTo ABILITY_POISON_HEAL, _02522 + IfLoadedNotEqualTo ABILITY_LEAF_GUARD, _01056 + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_SUNNY, _02522 + +_01056: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedNotEqualTo ABILITY_HYDRATION, _01065 + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_RAINING, _02522 + +_01065: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02522 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02522 + PopOrEnd + +_01074: + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_LIGHT_SCREEN, _02519 + PopOrEnd + +_01079: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _01092 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_STURDY, _02522 + +_01092: + IfLevel CHECK_LOWER_THAN_TARGET, _02522 + PopOrEnd + +_01096: + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _01104 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_LEVITATE, _02522 + +_01104: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedNotEqualTo ABILITY_WONDER_GUARD, _01125 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _01125 + IfMoveEffectivenessEquals TYPE_MULTI_DOUBLE_DAMAGE, _01125 + IfMoveEffectivenessEquals TYPE_MULTI_QUADRUPLE_DAMAGE, _01125 + GoTo _02522 + +_01125: + PopOrEnd + +_01126: + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_MIST, _02519 + PopOrEnd + +_01131: + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_FOCUS_ENERGY, _02522 + PopOrEnd + +_01136: + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CONFUSION, _02513 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_OWN_TEMPO, _02522 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02522 + PopOrEnd + +_01150: + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_REFLECT, _02519 + PopOrEnd + +_01155: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_LIMBER, _02522 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _01184 + IfMoveEqualTo MOVE_THUNDER_WAVE, _01176 + GoTo _01184 + +_01176: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_MOTOR_DRIVE, _02522 + IfLoadedEqualTo ABILITY_VOLT_ABSORB, _02522 + +_01184: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02522 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02522 + PopOrEnd + +_01193: + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_SUBSTITUTE, _02519 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 26, _02522 + PopOrEnd + +_01202: + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_LEECH_SEED, _02522 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_GRASS, _02522 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_GRASS, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02522 + PopOrEnd + +_01222: + IfBattlerUnderEffect AI_BATTLER_DEFENDER, CHECK_DISABLE, _02519 + PopOrEnd + +_01227: + IfBattlerUnderEffect AI_BATTLER_DEFENDER, CHECK_ENCORE, _02519 + PopOrEnd + +_01232: + IfNotStatus AI_BATTLER_ATTACKER, MON_CONDITION_SLEEP, _02519 + PopOrEnd + +_01237: + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_LOCK_ON, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_NO_GUARD, _02522 + PopOrEnd + +_01252: + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_MEAN_LOOK, _02522 + PopOrEnd + +_01257: + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_GHOST, _01294 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_GHOST, _01294 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _01283 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 8, _02522 + PopOrEnd + +_01283: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 12, _02519 + PopOrEnd + +_01294: + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CURSE, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02522 + PopOrEnd + +_01304: + LoadSpikesLayers AI_BATTLER_DEFENDER, SIDE_CONDITION_SPIKES + IfLoadedEqualTo 3, _02522 + CountAlivePartyBattlers AI_BATTLER_DEFENDER + IfLoadedEqualTo 0, _02522 + PopOrEnd + +_01316: + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_FORESIGHT, _02522 + PopOrEnd + +_01321: + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_PERISH_SONG, _02522 + PopOrEnd + +_01326: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_SANDSTORM, _02519 + PopOrEnd + +_01331: + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_ATTRACT, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_OBLIVIOUS, _02522 + LoadGender AI_BATTLER_ATTACKER + IfLoadedEqualTo GENDER_MALE, _01350 + IfLoadedEqualTo GENDER_FEMALE, _01357 + GoTo _02522 + +_01350: + LoadGender AI_BATTLER_DEFENDER + IfLoadedEqualTo GENDER_FEMALE, _01364 + GoTo _02522 + +_01357: + LoadGender AI_BATTLER_DEFENDER + IfLoadedEqualTo GENDER_MALE, _01364 + GoTo _02522 + +_01364: + PopOrEnd + +_01365: + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_SAFEGUARD, _02519 + PopOrEnd + +_01370: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _01383 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_CLEAR_BODY, _02522 + IfLoadedEqualTo ABILITY_WHITE_SMOKE, _02522 + +_01383: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 0, _02522 + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 0, _02519 + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _02522 + PopOrEnd + +_01399: + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _02522 + PopOrEnd + +_01405: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_SWIFT_SWIM, _01422 + IfLoadedEqualTo ABILITY_HYDRATION, _01422 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedNotEqualTo ABILITY_HYDRATION, _01422 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02519 + +_01422: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_RAINING, _02519 + PopOrEnd + +_01427: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_FLOWER_GIFT, _01447 + IfLoadedEqualTo ABILITY_LEAF_GUARD, _01447 + IfLoadedEqualTo ABILITY_SOLAR_POWER, _01447 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedNotEqualTo ABILITY_HYDRATION, _01447 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02522 + +_01447: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_SUNNY, _02519 + PopOrEnd + +_01452: + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_FUTURE_SIGHT, _02525 + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_FUTURE_SIGHT, _02525 + PopOrEnd + +_01461: + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedEqualTo FALSE, _02522 + PopOrEnd + +_01467: + LoadStockpileCount AI_BATTLER_ATTACKER + IfLoadedEqualTo 3, _02522 + PopOrEnd + +_01473: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + LoadStockpileCount AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _02522 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWALLOW, _01015 + PopOrEnd + +_01485: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_HAILING, _02519 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedNotEqualTo ABILITY_ICE_BODY, _01503 + AddToMoveScore -8 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_ICE_BODY, _01503 + AddToMoveScore 8 + +_01503: + PopOrEnd + +_01504: + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_TORMENT, _02522 + PopOrEnd + +_01509: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_WATER_VEIL, _02522 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02522 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02522 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_FIRE, _02522 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_FIRE, _02522 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02522 + PopOrEnd + +_01536: + LoadBattleType + IfLoadedNotMask BATTLE_TYPE_DOUBLES, _02522 + PopOrEnd + +_01541: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_STICKY_HOLD, _02522 + LoadHeldItem AI_BATTLER_DEFENDER + IfLoadedEqualTo ITEM_NONE, _02522 + PopOrEnd + +_01552: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_INGRAIN, _02522 + PopOrEnd + +_01557: + LoadRecycleItem AI_BATTLER_ATTACKER + IfLoadedEqualTo ITEM_NONE, _02522 + PopOrEnd + +_01563: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_IMPRISON, _02522 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_IMPRISONED, _02522 + PopOrEnd + +_01572: + IfNotStatus AI_BATTLER_ATTACKER, MON_CONDITION_FACADE_BOOST, _02522 + PopOrEnd + +_01577: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_MUD_SPORT, _02522 + PopOrEnd + +_01582: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _01595 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_CLEAR_BODY, _02522 + IfLoadedEqualTo ABILITY_WHITE_SMOKE, _02522 + +_01595: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 0, _02522 + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 0, _02519 + PopOrEnd + +_01606: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _01622 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 8, _02522 + PopOrEnd + +_01622: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 12, _02519 + PopOrEnd + +_01633: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _01649 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 8, _02522 + PopOrEnd + +_01649: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 12, _02519 + PopOrEnd + +_01660: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_WATER_SPORT, _02522 + PopOrEnd + +_01665: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _01681 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 8, _02522 + PopOrEnd + +_01681: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 12, _02519 + PopOrEnd + +_01692: + IfFieldConditionsMask FIELD_CONDITION_TRICK_ROOM, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_SIMPLE, _01711 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SPEED, 8, _02522 + PopOrEnd + +_01711: + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SPEED, 12, _02519 + PopOrEnd + +_01722: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_CAMOUFLAGE, _02522 + PopOrEnd + +_01727: + IfFieldConditionsMask FIELD_CONDITION_GRAVITY, _02522 + PopOrEnd + +_01731: + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_MIRACLE_EYE, _02522 + PopOrEnd + +_01736: + AddToMoveScore -20 + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _02522 + IfPartyMemberStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _01752 + IfAnyPartyMemberIsWounded AI_BATTLER_ATTACKER, _01752 + GoTo _02522 + +_01752: + PopOrEnd + +_01753: + LoadHeldItem AI_BATTLER_ATTACKER + IfLoadedNotInTable _01762, _02522 + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + PopOrEnd + +_01762: + TableEntry ITEM_CHERI_BERRY + TableEntry ITEM_CHESTO_BERRY + TableEntry ITEM_PECHA_BERRY + TableEntry ITEM_RAWST_BERRY + TableEntry ITEM_ASPEAR_BERRY + TableEntry ITEM_LEPPA_BERRY + TableEntry ITEM_ORAN_BERRY + TableEntry ITEM_PERSIM_BERRY + TableEntry ITEM_LUM_BERRY + TableEntry ITEM_SITRUS_BERRY + TableEntry ITEM_FIGY_BERRY + TableEntry ITEM_WIKI_BERRY + TableEntry ITEM_MAGO_BERRY + TableEntry ITEM_AGUAV_BERRY + TableEntry ITEM_IAPAPA_BERRY + TableEntry ITEM_RAZZ_BERRY + TableEntry ITEM_BLUK_BERRY + TableEntry ITEM_NANAB_BERRY + TableEntry ITEM_WEPEAR_BERRY + TableEntry ITEM_PINAP_BERRY + TableEntry ITEM_POMEG_BERRY + TableEntry ITEM_KELPSY_BERRY + TableEntry ITEM_QUALOT_BERRY + TableEntry ITEM_HONDEW_BERRY + TableEntry ITEM_GREPA_BERRY + TableEntry ITEM_TAMATO_BERRY + TableEntry ITEM_CORNN_BERRY + TableEntry ITEM_MAGOST_BERRY + TableEntry ITEM_RABUTA_BERRY + TableEntry ITEM_NOMEL_BERRY + TableEntry ITEM_SPELON_BERRY + TableEntry ITEM_PAMTRE_BERRY + TableEntry ITEM_WATMEL_BERRY + TableEntry ITEM_DURIN_BERRY + TableEntry ITEM_BELUE_BERRY + TableEntry ITEM_OCCA_BERRY + TableEntry ITEM_PASSHO_BERRY + TableEntry ITEM_WACAN_BERRY + TableEntry ITEM_RINDO_BERRY + TableEntry ITEM_YACHE_BERRY + TableEntry ITEM_CHOPLE_BERRY + TableEntry ITEM_KEBIA_BERRY + TableEntry ITEM_SHUCA_BERRY + TableEntry ITEM_COBA_BERRY + TableEntry ITEM_PAYAPA_BERRY + TableEntry ITEM_TANGA_BERRY + TableEntry ITEM_CHARTI_BERRY + TableEntry ITEM_KASIB_BERRY + TableEntry ITEM_HABAN_BERRY + TableEntry ITEM_COLBUR_BERRY + TableEntry ITEM_BABIRI_BERRY + TableEntry ITEM_CHILAN_BERRY + TableEntry ITEM_LIECHI_BERRY + TableEntry ITEM_GANLON_BERRY + TableEntry ITEM_SALAC_BERRY + TableEntry ITEM_PETAYA_BERRY + TableEntry ITEM_APICOT_BERRY + TableEntry ITEM_LANSAT_BERRY + TableEntry ITEM_STARF_BERRY + TableEntry ITEM_ENIGMA_BERRY + TableEntry ITEM_MICLE_BERRY + TableEntry ITEM_CUSTAP_BERRY + TableEntry ITEM_JABOCA_BERRY + TableEntry ITEM_ROWAP_BERRY + TableEntry TABLE_END + +_01827: + IfFieldConditionsMask FIELD_CONDITION_TRICK_ROOM, _02522 + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_TAILWIND, _02522 + PopOrEnd + +_01835: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_SIMPLE, _01876 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SPEED, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 12, _02522 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 12, _02522 + PopOrEnd + +_01876: + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SPEED, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 8, _02522 + PopOrEnd + +_01912: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_STALL, _02522 + IfHeldItemEqualTo AI_BATTLER_DEFENDER, ITEM_SHINY_STONE, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_STALL, _01936 + IfHeldItemEqualTo AI_BATTLER_ATTACKER, ITEM_SHINY_STONE, _01936 + IfSpeedCompareEqualTo COMPARE_SPEED_FASTER, _02522 + +_01936: + PopOrEnd + +_01937: + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_EMBARGO, _02522 + LoadRecycleItem AI_BATTLER_DEFENDER + IfLoadedEqualTo ITEM_NONE, _01950 + LoadBattleType + IfLoadedMask BATTLE_TYPE_FRONTIER, _02522 + +_01950: + PopOrEnd + +_01951: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _02522 + LoadFlingPower AI_BATTLER_ATTACKER + IfLoadedLessThan 10, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MULTITYPE, _02522 + LoadHeldItemEffect AI_BATTLER_ATTACKER + IfLoadedInTable _02137, _01976 + IfLoadedInTable _02140, _02061 + IfLoadedInTable _02142, _02123 + PopOrEnd + +_01976: + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02017 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02017 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_POISON_HEAL, _02017 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_POISON, _02017 + IfLoadedEqualTo TYPE_STEEL, _02017 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_POISON, _02017 + IfLoadedEqualTo TYPE_STEEL, _02017 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_IMMUNITY, _02017 + IfLoadedEqualTo ABILITY_POISON_HEAL, _02017 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02017 + PopOrEnd + +_02017: + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_SAFEGUARD, _02513 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _02513 + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_POISON, _02513 + IfLoadedEqualTo TYPE_STEEL, _02513 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_POISON, _02513 + IfLoadedEqualTo TYPE_STEEL, _02513 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_KLUTZ, _02513 + IfLoadedEqualTo ABILITY_IMMUNITY, _02513 + IfLoadedEqualTo ABILITY_POISON_HEAL, _02513 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02513 + IfLoadedEqualTo ABILITY_GUTS, _02513 + AddToMoveScore 3 + PopOrEnd + +_02061: + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02088 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02088 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_FIRE, _02088 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_FIRE, _02088 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02088 + IfLoadedEqualTo ABILITY_WATER_VEIL, _02088 + PopOrEnd + +_02088: + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_SAFEGUARD, _02513 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _02513 + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_FIRE, _02513 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_FIRE, _02513 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_KLUTZ, _02513 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02513 + IfLoadedEqualTo ABILITY_WATER_VEIL, _02513 + IfLoadedEqualTo ABILITY_GUTS, _02513 + AddToMoveScore 3 + PopOrEnd + +_02123: + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02513 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02513 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_LIMBER, _02513 + PopOrEnd + +_02137: + TableEntry HOLD_EFFECT_PSN_USER + TableEntry HOLD_EFFECT_STRENGTHEN_POISON + TableEntry TABLE_END + +_02140: + TableEntry HOLD_EFFECT_BRN_USER + TableEntry TABLE_END + +_02142: + TableEntry HOLD_EFFECT_PIKA_SPATK_UP + TableEntry TABLE_END + +_02144: + IfNotStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _02522 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _02522 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _02522 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY_POISON, _02170 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_BURN, _02204 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_PARALYSIS, _02224 + GoTo _02229 + +_02170: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_POISON_HEAL, _02522 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_POISON, _02522 + IfLoadedEqualTo TYPE_STEEL, _02522 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_POISON, _02522 + IfLoadedEqualTo TYPE_STEEL, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_IMMUNITY, _02522 + IfLoadedEqualTo ABILITY_POISON_HEAL, _02522 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02522 + GoTo _02229 + +_02204: + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_FIRE, _02522 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_FIRE, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _02522 + IfLoadedEqualTo ABILITY_WATER_VEIL, _02522 + GoTo _02229 + +_02224: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_LIMBER, _02522 + +_02229: + PopOrEnd + +_02230: + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_HEAL_BLOCK, _02522 + PopOrEnd + +_02235: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_POWER_TRICK, _02522 + PopOrEnd + +_02240: + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_ABILITY_SUPPRESSED, _02522 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_MULTITYPE, _02522 + IfLoadedEqualTo ABILITY_TRUANT, _02522 + IfLoadedEqualTo ABILITY_SLOW_START, _02522 + IfLoadedEqualTo ABILITY_STENCH, _02522 + IfLoadedEqualTo ABILITY_RUN_AWAY, _02522 + IfLoadedEqualTo ABILITY_PICKUP, _02522 + IfLoadedEqualTo ABILITY_HONEY_GATHER, _02522 + PopOrEnd + +_02268: + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_LUCKY_CHANT, _02522 + PopOrEnd + +_02273: + LoadTurnCount + IfLoadedNotEqualTo 0, _02280 + IfSpeedCompareEqualTo COMPARE_SPEED_FASTER, _02522 + +_02280: + PopOrEnd + +_02281: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK + IfLoadedLessThan 1, _02289 + GoTo _02295 + +_02289: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK + IfLoadedLessThan 1, _02522 + +_02295: + PopOrEnd + +_02296: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE + IfLoadedLessThan 1, _02304 + GoTo _02310 + +_02304: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE + IfLoadedLessThan 1, _02522 + +_02310: + PopOrEnd + +_02311: + IfCanUseLastResort AI_BATTLER_ATTACKER, _02316 + AddToMoveScore -10 + +_02316: + PopOrEnd + +_02317: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_TRUANT, _02522 + IfLoadedEqualTo ABILITY_INSOMNIA, _02522 + IfLoadedEqualTo ABILITY_VITAL_SPIRIT, _02522 + IfLoadedEqualTo ABILITY_MULTITYPE, _02522 + IfNotStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _02345 + IfMoveKnown AI_BATTLER_DEFENDER, MOVE_SLEEP_TALK, _02345 + IfMoveKnown AI_BATTLER_DEFENDER, MOVE_SNORE, _02345 + AddToMoveScore -10 + +_02345: + PopOrEnd + +_02346: + LoadSpikesLayers AI_BATTLER_DEFENDER, SIDE_CONDITION_TOXIC_SPIKES + IfLoadedEqualTo 2, _02522 + CountAlivePartyBattlers AI_BATTLER_DEFENDER + IfLoadedEqualTo 0, _02522 + PopOrEnd + PopOrEnd + +_02359: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_AQUA_RING, _02522 + PopOrEnd + +_02364: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_MAGNET_RISE, _02522 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_LEVITATE, _02522 + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_FLYING, _02522 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_FLYING, _02522 + PopOrEnd + +_02384: + IfStatStageNotEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 0, _02420 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_LIGHT_SCREEN, _02420 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_REFLECT, _02420 + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_DEEP_FOG, _02420 + CountAlivePartyBattlers AI_BATTLER_DEFENDER + IfLoadedEqualTo 0, _02522 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SPIKES, _02420 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_STEALTH_ROCK, _02420 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_TOXIC_SPIKES, _02420 + GoTo _02522 + +_02420: + PopOrEnd + +_02421: + IfSpeedCompareEqualTo COMPARE_SPEED_FASTER, _02522 + IfSpeedCompareEqualTo COMPARE_SPEED_TIE, _02522 + PopOrEnd + +_02428: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _02444 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_OBLIVIOUS, _02522 + IfLoadedEqualTo ABILITY_CLEAR_BODY, _02522 + IfLoadedEqualTo ABILITY_WHITE_SMOKE, _02522 + +_02444: + LoadGender AI_BATTLER_ATTACKER + IfLoadedEqualTo GENDER_MALE, _02454 + IfLoadedEqualTo GENDER_FEMALE, _02461 + GoTo _02522 + +_02454: + LoadGender AI_BATTLER_DEFENDER + IfLoadedEqualTo GENDER_FEMALE, _02468 + GoTo _02522 + +_02461: + LoadGender AI_BATTLER_DEFENDER + IfLoadedEqualTo GENDER_MALE, _02468 + GoTo _02522 + +_02468: + IfStatStageLessThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 1, _02522 + PopOrEnd + +_02474: + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_STEALTH_ROCK, _02522 + CountAlivePartyBattlers AI_BATTLER_DEFENDER + IfLoadedEqualTo 0, _02522 + PopOrEnd + +_02484: + AddToMoveScore -20 + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _02522 + IfAnyPartyMemberIsWounded AI_BATTLER_ATTACKER, _02503 + IfPartyMemberStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _02503 + IfAnyPartyMemberUsedPP AI_BATTLER_ATTACKER, _02503 + GoTo _02522 + +_02503: + PopOrEnd + +_02504: + AddToMoveScore -1 + PopOrEnd + +_02507: + AddToMoveScore -2 + PopOrEnd + +_02510: + AddToMoveScore -3 + PopOrEnd + +_02513: + AddToMoveScore -5 + PopOrEnd + AddToMoveScore -6 + PopOrEnd + +_02519: + AddToMoveScore -8 + PopOrEnd + +_02522: + AddToMoveScore -10 + PopOrEnd + +_02525: + AddToMoveScore -12 + PopOrEnd + +_02528: + AddToMoveScore -30 + PopOrEnd + +_02531: + AddToMoveScore 1 + PopOrEnd + +_02534: + AddToMoveScore 2 + PopOrEnd + +_02537: + AddToMoveScore 3 + PopOrEnd + +_02540: + AddToMoveScore 5 + PopOrEnd + +_02543: + AddToMoveScore 10 + PopOrEnd + +_02546: + IfTargetIsPartner _10606 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_SLEEP, _03083 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECOVER_HALF_DAMAGE_DEALT, _03099 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_DEFENSE, _03116 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECOVER_DAMAGE_SLEEP, _03171 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_COPY_MOVE, _03196 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_UP, _03270 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_UP, _03305 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_UP, _03366 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_UP, _03379 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_DEF_UP, _03414 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ACC_UP, _03475 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_UP, _03492 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_BYPASS_ACCURACY, _03590 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_DOWN, _03620 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_DOWN, _03666 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_DOWN, _03707 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_DOWN, _03720 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_DEF_DOWN, _03768 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ACC_DOWN, _03789 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_DOWN, _03882 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RESET_STAT_CHANGES, _03903 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_BIDE, _04023 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FORCE_SWITCH, _04030 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CONVERSION, _04087 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RESTORE_HALF_HP, _04115 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_BADLY_POISON, _04165 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_LIGHT_SCREEN, _04201 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_REST, _04237 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ONE_HIT_KO, _04291 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CHARGE_TURN_HIGH_CRIT, _05626 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_HP, _04297 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_BIND_HIT, _04304 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIGH_CRITICAL, _04328 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECOIL_QUARTER, _08278 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_CONFUSE, _04361 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_UP_2, _03270 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_UP_2, _03305 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_UP_2, _03366 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_UP_2, _03379 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_DEF_UP_2, _03414 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ACC_UP_2, _03475 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_UP_2, _03492 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_DOWN_2, _03620 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_DOWN_2, _03666 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_DOWN_2, _03707 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_DOWN_2, _03720 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_DEF_DOWN_2, _03768 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_DOWN_2, _03789 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ACC_DOWN_2, _03882 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_REFLECT, _04401 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_POISON, _04438 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_PARALYZE, _04449 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_UP_2_STATUS_CONFUSION, _04352 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_LOWER_SPEED_HIT, _03687 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CHARGE_TURN_HIGH_CRIT_FLINCH, _05626 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PRIORITY_NEG_1_BYPASS_ACCURACY, _04466 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_SUBSTITUTE, _04486 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECHARGE_AFTER, _04573 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_LEECH_SEED, _04165 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DISABLE, _04610 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_COUNTER, _04629 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ENCORE, _04726 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_AVERAGE_HP, _04832 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DAMAGE_WHILE_ASLEEP, _04858 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_NEXT_ATTACK_ALWAYS_HITS, _04861 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_USE_RANDOM_LEARNED_MOVE_SLEEP, _04867 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_KO_MON_THAT_DEFEATED_USER, _04874 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_INCREASE_POWER_WITH_LESS_HP, _04907 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CURE_PARTY_STATUS, _04946 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STEAL_HELD_ITEM, _04957 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_ESCAPE, _04304 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EVA_UP_2_MINIMIZE, _03492 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CURSE, _04998 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PROTECT, _05062 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_SPIKES, _05179 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_IGNORE_EVASION_REMOVE_GHOST_IMMUNE, _05200 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SURVIVE_WITH_1_HP, _05228 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PASS_STATS_AND_STATUS, _05246 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_BEFORE_SWITCH, _05336 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HEAL_HALF_MORE_IN_SUN, _04101 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_UNUSED_133, _04101 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_UNUSED_134, _04101 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_RAIN, _05378 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_SUN, _05421 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_MAX_ATK_LOSE_HALF_MAX_HP, _05456 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_COPY_STAT_CHANGES, _05465 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_MIRROR_COAT, _05530 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_CHARGE_TURN_DEF_UP, _05626 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SKIP_CHARGE_TURN_IN_SUN, _05626 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SKIP_CHARGE_TURN_IN_SUN, _05673 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FLY, _05699 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_UNUSED_157, _04115 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ALWAYS_FLINCH_FIRST_TURN_ONLY, _05799 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPIT_UP, _05802 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWALLOW, _04115 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_HAIL, _05813 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_UP_CAUSE_CONFUSION, _04356 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FAINT_AND_ATK_SP_ATK_DOWN_2, _03116 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_POWER_WHEN_STATUSED, _05849 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_LAST_WHIFF_IF_HIT, _05856 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_POWER_AND_CURE_PARALYSIS, _05903 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWITCH_HELD_ITEMS, _05912 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_COPY_ABILITY, _06218 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_GROUND_TRAP_USER_CONTINUOUS_HEAL, _06264 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_LOWER_OWN_ATK_AND_DEF, _06265 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_APPLY_MAGIC_COAT, _06295 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECYCLE, _06325 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_POWER_IF_HIT, _06344 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_REMOVE_SCREENS, _06366 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_REMOVE_HELD_ITEM, _06379 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_HP_EQUAL_TO_USER, _06394 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DECREASE_POWER_WITH_LESS_USER_HP, _06420 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWITCH_ABILITIES, _06218 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_MAKE_SHARED_MOVES_UNUSEABLE, _06445 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HEAL_STATUS, _06456 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STEAL_STATUS_MOVE, _06465 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECOIL_THIRD, _08278 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIGH_CRITICAL_BURN_HIT, _04328 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_ELECTRIC_DAMAGE, _06523 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_USER_SP_ATK_DOWN_2, _06546 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_DEF_DOWN, _03666 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_SPD_UP, _03414 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_DEF_UP, _03305 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIGH_CRITICAL_POISON_HIT, _04328 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_FIRE_DAMAGE, _06571 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_SP_DEF_UP, _03414 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ATK_SPD_UP, _06594 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HEAL_HALF_REMOVE_FLYING_TYPE, _04115 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_GRAVITY, _06614 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_IGNORE_EVATION_REMOVE_DARK_IMMUNE, _06648 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_POWER_HEAL_SLEEP, _06675 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SPEED_DOWN_HIT, _06697 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_POWER_BASED_ON_LOW_SPEED, _06717 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FAINT_AND_FULL_HEAL_NEXT_MON, _08300 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_POWER_WHEN_BELOW_HALF, _06718 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_REMOVE_PROTECT, _06743 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_EAT_BERRY, _06821 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_SPEED_3_TURNS, _06850 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_STAT_UP_2, _06874 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_METAL_BURST, _06895 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWITCH_HIT, _06967 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DEF_SPD_DOWN_HIT, _07036 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_POWER_IF_MOVING_SECOND, _07061 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DOUBLE_POWER_IF_TARGET_HIT, _07086 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_ITEM_USE, _07126 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FLING, _07132 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_TRANSFER_STATUS, _07199 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIGHER_POWER_WHEN_LOW_PP, _07213 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_HEALING, _07280 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_INCREASE_POWER_WITH_MORE_HP, _07355 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWAP_ATK_DEF, _07395 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SUPRESS_ABILITY, _07431 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PREVENT_CRITS, _07458 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_USE_MOVE_FIRST, _07486 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_USE_LAST_USED_MOVE, _07519 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWAP_ATK_SP_ATK_STAT_CHANGES, _07608 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWAP_DEF_SP_DEF_STAT_CHANGES, _07717 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_INCREASE_POWER_WITH_MORE_STAT_UP, _07826 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FAIL_IF_NOT_USED_ALL_OTHER_MOVES, _07875 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SET_ABILITY_TO_INSOMNIA, _07896 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_FIRST_IF_TARGET_ATTACKING, _07919 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_TOXIC_SPIKES, _07938 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SWAP_STAT_CHANGES, _07959 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RESTORE_HP_EVERY_TURN, _08032 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_GIVE_GROUND_IMMUNITY, _08042 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECOIL_BURN_HIT, _08278 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DIVE, _05699 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_DIG, _05699 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_REMOVE_HAZARDS_SCREENS_EVA_DOWN, _08082 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_TRICK_ROOM, _08166 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_BLIZZARD, _08192 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECOIL_PARALYZE_HIT, _08278 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_BOUNCE, _05699 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SP_ATK_DOWN_2_OPPOSITE_GENDER, _08216 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STEALTH_ROCK, _08255 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RECOIL_HALF, _08278 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_FAINT_FULL_RESTORE_NEXT_MON, _08300 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SHADOW_FORCE, _05711 + PopOrEnd + +_03083: + IfMoveEffectKnown AI_BATTLER_ATTACKER, BATTLE_EFFECT_RECOVER_DAMAGE_SLEEP, _03093 + IfMoveEffectKnown AI_BATTLER_ATTACKER, BATTLE_EFFECT_STATUS_NIGHTMARE, _03093 + GoTo _03098 + +_03093: + IfRandomLessThan 128, _03098 + AddToMoveScore 1 + +_03098: + PopOrEnd + +_03099: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _03110 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _03110 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _03110 + GoTo _03115 + +_03110: + IfRandomLessThan 50, _03115 + AddToMoveScore -3 + +_03115: + PopOrEnd + +_03116: + IfStatStageLessThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 7, _03133 + AddToMoveScore -1 + IfStatStageLessThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 10, _03133 + IfRandomLessThan 128, _03133 + AddToMoveScore -1 + +_03133: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 80, _03145 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _03145 + IfRandomLessThan 50, _03170 + GoTo _02510 + +_03145: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _03165 + IfRandomLessThan 128, _03154 + AddToMoveScore 1 + +_03154: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _03170 + IfRandomLessThan 50, _03170 + AddToMoveScore 1 + GoTo _03170 + +_03165: + IfRandomLessThan 50, _03170 + AddToMoveScore -1 + +_03170: + PopOrEnd + +_03171: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _03193 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _03193 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _03193 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _03186 + GoTo _03195 + +_03186: + IfRandomLessThan 51, _03195 + AddToMoveScore 3 + GoTo _03195 + +_03193: + AddToMoveScore -1 + +_03195: + PopOrEnd + +_03196: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _03211 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + IfLoadedNotInTable _03222, _03211 + IfRandomLessThan 128, _03221 + AddToMoveScore 2 + GoTo _03221 + +_03211: + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + IfLoadedInTable _03222, _03221 + IfRandomLessThan 80, _03221 + AddToMoveScore -1 + +_03221: + PopOrEnd + +_03222: + TableEntry MOVE_SLEEP_POWDER + TableEntry MOVE_LOVELY_KISS + TableEntry MOVE_SPORE + TableEntry MOVE_HYPNOSIS + TableEntry MOVE_SING + TableEntry MOVE_GRASS_WHISTLE + TableEntry MOVE_SHADOW_PUNCH + TableEntry MOVE_SAND_ATTACK + TableEntry MOVE_SMOKE_SCREEN + TableEntry MOVE_TOXIC + TableEntry MOVE_GUILLOTINE + TableEntry MOVE_HORN_DRILL + TableEntry MOVE_FISSURE + TableEntry MOVE_SHEER_COLD + TableEntry MOVE_CROSS_CHOP + TableEntry MOVE_AEROBLAST + TableEntry MOVE_CONFUSE_RAY + TableEntry MOVE_SWEET_KISS + TableEntry MOVE_SCREECH + TableEntry MOVE_COTTON_SPORE + TableEntry MOVE_SCARY_FACE + TableEntry MOVE_FAKE_TEARS + TableEntry MOVE_METAL_SOUND + TableEntry MOVE_THUNDER_WAVE + TableEntry MOVE_GLARE + TableEntry MOVE_POISON_POWDER + TableEntry MOVE_SHADOW_BALL + TableEntry MOVE_DYNAMIC_PUNCH + TableEntry MOVE_HYPER_BEAM + TableEntry MOVE_EXTREME_SPEED + TableEntry MOVE_THIEF + TableEntry MOVE_COVET + TableEntry MOVE_ATTRACT + TableEntry MOVE_SWAGGER + TableEntry MOVE_TORMENT + TableEntry MOVE_FLATTER + TableEntry MOVE_TRICK + TableEntry MOVE_SUPERPOWER + TableEntry MOVE_SKILL_SWAP + TableEntry MOVE_PSYCHO_SHIFT + TableEntry MOVE_POWER_SWAP + TableEntry MOVE_GUARD_SWAP + TableEntry MOVE_SUCKER_PUNCH + TableEntry MOVE_HEART_SWAP + TableEntry MOVE_SWITCHEROO + TableEntry MOVE_CAPTIVATE + TableEntry MOVE_DARK_VOID + TableEntry TABLE_END + +_03270: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 9, _03282 + IfRandomLessThan 100, _03291 + AddToMoveScore -1 + GoTo _03291 + +_03282: + IfHPPercentNotEqualTo AI_BATTLER_ATTACKER, 100, _03291 + IfRandomLessThan 128, _03291 + AddToMoveScore 2 + +_03291: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _03304 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _03302 + IfRandomLessThan 40, _03304 + +_03302: + AddToMoveScore -2 + +_03304: + PopOrEnd + +_03305: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 9, _03317 + IfRandomLessThan 100, _03326 + AddToMoveScore -1 + GoTo _03326 + +_03317: + IfHPPercentNotEqualTo AI_BATTLER_ATTACKER, 100, _03326 + IfRandomLessThan 128, _03326 + AddToMoveScore 2 + +_03326: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _03333 + IfRandomLessThan 200, _03355 + +_03333: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _03353 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadPowerOfLoadedMove + IfLoadedEqualTo 0, _03350 + LoadDefenderLastUsedMoveClass + IfLoadedEqualTo CLASS_SPECIAL, _03353 + IfRandomLessThan 60, _03355 + +_03350: + IfRandomLessThan 60, _03355 + +_03353: + AddToMoveScore -2 + +_03355: + PopOrEnd + +_03356: + TableEntry TYPE_NORMAL + TableEntry TYPE_FIGHTING + TableEntry TYPE_POISON + TableEntry TYPE_GROUND + TableEntry TYPE_FLYING + TableEntry TYPE_ROCK + TableEntry TYPE_BUG + TableEntry TYPE_GHOST + TableEntry TYPE_STEEL + TableEntry TABLE_END + +_03366: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _03373 + AddToMoveScore -3 + GoTo _03378 + +_03373: + IfRandomLessThan 70, _03378 + AddToMoveScore 3 + +_03378: + PopOrEnd + +_03379: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 9, _03391 + IfRandomLessThan 100, _03400 + AddToMoveScore -1 + GoTo _03400 + +_03391: + IfHPPercentNotEqualTo AI_BATTLER_ATTACKER, 100, _03400 + IfRandomLessThan 128, _03400 + AddToMoveScore 2 + +_03400: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _03413 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _03411 + IfRandomLessThan 70, _03413 + +_03411: + AddToMoveScore -2 + +_03413: + PopOrEnd + +_03414: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 9, _03426 + IfRandomLessThan 100, _03435 + AddToMoveScore -1 + GoTo _03435 + +_03426: + IfHPPercentNotEqualTo AI_BATTLER_ATTACKER, 100, _03435 + IfRandomLessThan 128, _03435 + AddToMoveScore 2 + +_03435: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _03442 + IfRandomLessThan 200, _03464 + +_03442: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _03462 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadPowerOfLoadedMove + IfLoadedEqualTo 0, _03459 + LoadDefenderLastUsedMoveClass + IfLoadedEqualTo CLASS_PHYSICAL, _03462 + IfRandomLessThan 60, _03464 + +_03459: + IfRandomLessThan 60, _03464 + +_03462: + AddToMoveScore -2 + +_03464: + PopOrEnd + +_03465: + TableEntry TYPE_NORMAL + TableEntry TYPE_FIGHTING + TableEntry TYPE_POISON + TableEntry TYPE_GROUND + TableEntry TYPE_FLYING + TableEntry TYPE_ROCK + TableEntry TYPE_BUG + TableEntry TYPE_GHOST + TableEntry TYPE_STEEL + TableEntry TABLE_END + +_03475: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 9, _03485 + IfRandomLessThan 50, _03485 + AddToMoveScore -2 + +_03485: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _03491 + AddToMoveScore -2 + +_03491: + PopOrEnd + +_03492: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 90, _03501 + IfRandomLessThan 100, _03501 + AddToMoveScore 3 + +_03501: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 9, _03511 + IfRandomLessThan 128, _03511 + AddToMoveScore -1 + +_03511: + IfNotStatus AI_BATTLER_DEFENDER, MON_CONDITION_TOXIC, _03527 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _03522 + IfRandomLessThan 80, _03527 + +_03522: + IfRandomLessThan 50, _03527 + AddToMoveScore 3 + +_03527: + IfNotMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_LEECH_SEED, _03536 + IfRandomLessThan 70, _03536 + AddToMoveScore 3 + +_03536: + IfNotMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_INGRAIN, _03547 + IfRandomLessThan 128, _03558 + AddToMoveScore 2 + GoTo _03558 + +_03547: + IfNotMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_AQUA_RING, _03558 + IfRandomLessThan 128, _03558 + AddToMoveScore 2 + GoTo _03558 + +_03558: + IfNotVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CURSE, _03567 + IfRandomLessThan 70, _03567 + AddToMoveScore 3 + +_03567: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _03589 + IfStatStageEqualTo AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 6, _03589 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _03587 + IfHPPercentLessThan AI_BATTLER_DEFENDER, 40, _03587 + IfRandomLessThan 70, _03589 + +_03587: + AddToMoveScore -2 + +_03589: + PopOrEnd + +_03590: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 10, _03612 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 2, _03612 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 8, _03614 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 4, _03614 + GoTo _03619 + +_03612: + AddToMoveScore 1 + +_03614: + IfRandomLessThan 100, _03619 + AddToMoveScore 1 + +_03619: + PopOrEnd + +_03620: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 6, _03643 + AddToMoveScore -1 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _03633 + AddToMoveScore -1 + +_03633: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 3, _03643 + IfRandomLessThan 50, _03643 + AddToMoveScore -2 + +_03643: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _03649 + AddToMoveScore -2 + +_03649: + LoadDefenderLastUsedMoveClass + IfLoadedNotEqualTo CLASS_SPECIAL, _03658 + IfRandomLessThan 128, _03658 + AddToMoveScore -2 + +_03658: + PopOrEnd + +_03659: + TableEntry TYPE_NORMAL + TableEntry TYPE_FIGHTING + TableEntry TYPE_GROUND + TableEntry TYPE_ROCK + TableEntry TYPE_BUG + TableEntry TYPE_STEEL + TableEntry TABLE_END + +_03666: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _03675 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 3, _03680 + +_03675: + IfRandomLessThan 50, _03680 + AddToMoveScore -2 + +_03680: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _03686 + AddToMoveScore -2 + +_03686: + PopOrEnd + +_03687: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _03706 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _03706 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _03706 + IfMoveEqualTo MOVE_ICY_WIND, _03707 + IfMoveEqualTo MOVE_ROCK_TOMB, _03707 + IfMoveEqualTo MOVE_MUD_SHOT, _03707 + PopOrEnd + +_03706: + PopOrEnd + +_03707: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _03714 + AddToMoveScore -3 + GoTo _03719 + +_03714: + IfRandomLessThan 70, _03719 + AddToMoveScore 2 + +_03719: + PopOrEnd + +_03720: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 6, _03743 + AddToMoveScore -1 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _03733 + AddToMoveScore -1 + +_03733: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 3, _03743 + IfRandomLessThan 50, _03743 + AddToMoveScore -2 + +_03743: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _03749 + AddToMoveScore -2 + +_03749: + LoadDefenderLastUsedMoveClass + IfLoadedNotEqualTo CLASS_PHYSICAL, _03758 + IfRandomLessThan 128, _03758 + AddToMoveScore -2 + +_03758: + PopOrEnd + +_03759: + TableEntry TYPE_FIRE + TableEntry TYPE_WATER + TableEntry TYPE_GRASS + TableEntry TYPE_ELECTRIC + TableEntry TYPE_PSYCHIC + TableEntry TYPE_ICE + TableEntry TYPE_DRAGON + TableEntry TYPE_DARK + TableEntry TABLE_END + +_03768: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _03777 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE, 3, _03782 + +_03777: + IfRandomLessThan 50, _03782 + AddToMoveScore -2 + +_03782: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _03788 + AddToMoveScore -2 + +_03788: + PopOrEnd + +_03789: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _03797 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _03802 + +_03797: + IfRandomLessThan 100, _03802 + AddToMoveScore -1 + +_03802: + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 4, _03812 + IfRandomLessThan 80, _03812 + AddToMoveScore -2 + +_03812: + IfNotStatus AI_BATTLER_DEFENDER, MON_CONDITION_TOXIC, _03821 + IfRandomLessThan 70, _03821 + AddToMoveScore 2 + +_03821: + IfNotMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_LEECH_SEED, _03830 + IfRandomLessThan 70, _03830 + AddToMoveScore 2 + +_03830: + IfNotMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_INGRAIN, _03841 + IfRandomLessThan 128, _03850 + AddToMoveScore 1 + GoTo _03850 + +_03841: + IfNotMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_AQUA_RING, _03850 + IfRandomLessThan 128, _03850 + AddToMoveScore 1 + +_03850: + IfNotVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CURSE, _03859 + IfRandomLessThan 70, _03859 + AddToMoveScore 2 + +_03859: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _03881 + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_ACCURACY, 6, _03881 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _03879 + IfHPPercentLessThan AI_BATTLER_DEFENDER, 40, _03879 + IfRandomLessThan 70, _03881 + +_03879: + AddToMoveScore -2 + +_03881: + PopOrEnd + +_03882: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _03891 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 3, _03896 + +_03891: + IfRandomLessThan 50, _03896 + AddToMoveScore -2 + +_03896: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _03902 + AddToMoveScore -2 + +_03902: + PopOrEnd + +_03903: + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 8, _03955 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 8, _03955 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 8, _03955 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 8, _03955 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 8, _03955 + IfStatStageLessThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 4, _03955 + IfStatStageLessThan AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 4, _03955 + IfStatStageLessThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 4, _03955 + IfStatStageLessThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE, 4, _03955 + IfStatStageLessThan AI_BATTLER_DEFENDER, BATTLE_STAT_ACCURACY, 4, _03955 + GoTo _03960 + +_03955: + IfRandomLessThan 50, _03960 + AddToMoveScore -3 + +_03960: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 8, _04017 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 8, _04017 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 8, _04017 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE, 8, _04017 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 8, _04017 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 4, _04017 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 4, _04017 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 4, _04017 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 4, _04017 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 4, _04017 + IfRandomLessThan 50, _04022 + AddToMoveScore -1 + GoTo _04022 + +_04017: + IfRandomLessThan 50, _04022 + AddToMoveScore 3 + +_04022: + PopOrEnd + +_04023: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _04029 + AddToMoveScore -2 + +_04029: + PopOrEnd + +_04030: + LoadBattlerTurnCount AI_BATTLER_DEFENDER + IfLoadedGreaterThan 3, _04076 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SPIKES, _04081 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_STEALTH_ROCK, _04081 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_TOXIC_SPIKES, _04081 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 8, _04081 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 8, _04081 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 8, _04081 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE, 8, _04081 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 8, _04081 + AddToMoveScore -3 + GoTo _04086 + +_04076: + IfRandomLessThan 64, _04081 + AddToMoveScore 2 + +_04081: + IfRandomLessThan 128, _04086 + AddToMoveScore 2 + +_04086: + PopOrEnd + +_04087: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _04093 + AddToMoveScore -2 + +_04093: + LoadTurnCount + IfLoadedEqualTo 0, _04100 + IfRandomLessThan 200, _02507 + +_04100: + PopOrEnd + +_04101: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_HAILING, _04113 + IfLoadedEqualTo AI_WEATHER_RAINING, _04113 + IfLoadedEqualTo AI_WEATHER_SANDSTORM, _04113 + GoTo _04115 + +_04113: + AddToMoveScore -2 + +_04115: + IfHPPercentEqualTo AI_BATTLER_ATTACKER, 100, _04137 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04141 + AddToMoveScore -8 + GoTo _04164 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _04152 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 80, _04137 + IfRandomLessThan 70, _04152 + +_04137: + AddToMoveScore -3 + GoTo _04164 + +_04141: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _04152 + IfRandomLessThan 30, _04152 + AddToMoveScore -3 + GoTo _04164 + +_04152: + IfMoveEffectNotKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_STEAL_STATUS_MOVE, _04159 + IfRandomLessThan 100, _04164 + +_04159: + IfRandomLessThan 20, _04164 + AddToMoveScore 2 + +_04164: + PopOrEnd + +_04165: + IfAttackerHasNoDamagingMoves _04185 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _04176 + IfRandomLessThan 50, _04176 + AddToMoveScore -3 + +_04176: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 50, _04185 + IfRandomLessThan 50, _04185 + AddToMoveScore -3 + +_04185: + IfMoveEffectKnown AI_BATTLER_ATTACKER, BATTLE_EFFECT_SP_DEF_UP, _04195 + IfMoveEffectKnown AI_BATTLER_ATTACKER, BATTLE_EFFECT_PROTECT, _04195 + GoTo _04200 + +_04195: + IfRandomLessThan 60, _04200 + AddToMoveScore 2 + +_04200: + PopOrEnd + +_04201: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _04225 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 90, _04214 + IfRandomLessThan 128, _04214 + AddToMoveScore 1 + +_04214: + LoadDefenderLastUsedMoveClass + IfLoadedNotEqualTo CLASS_SPECIAL, _04227 + IfRandomLessThan 64, _04227 + AddToMoveScore 1 + GoTo _04227 + +_04225: + AddToMoveScore -2 + +_04227: + PopOrEnd + +_04228: + TableEntry TYPE_FIRE + TableEntry TYPE_WATER + TableEntry TYPE_GRASS + TableEntry TYPE_ELECTRIC + TableEntry TYPE_PSYCHIC + TableEntry TYPE_ICE + TableEntry TYPE_DRAGON + TableEntry TYPE_DARK + TableEntry TABLE_END + +_04237: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04263 + IfHPPercentNotEqualTo AI_BATTLER_ATTACKER, 100, _04248 + AddToMoveScore -8 + GoTo _04290 + +_04248: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _04278 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _04259 + IfRandomLessThan 70, _04278 + +_04259: + AddToMoveScore -3 + GoTo _04290 + +_04263: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 60, _04278 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _04274 + IfRandomLessThan 50, _04278 + +_04274: + AddToMoveScore -3 + GoTo _04290 + +_04278: + IfMoveEffectNotKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_STEAL_STATUS_MOVE, _04285 + IfRandomLessThan 50, _04290 + +_04285: + IfRandomLessThan 10, _04290 + AddToMoveScore 3 + +_04290: + PopOrEnd + +_04291: + IfRandomLessThan 192, _04296 + AddToMoveScore 1 + +_04296: + PopOrEnd + +_04297: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 50, _04303 + AddToMoveScore -1 + +_04303: + PopOrEnd + +_04304: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_TOXIC, _04322 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CURSE, _04322 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_PERISH_SONG, _04322 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_ATTRACT, _04322 + GoTo _04327 + +_04322: + IfRandomLessThan 128, _04327 + AddToMoveScore 1 + +_04327: + PopOrEnd + +_04328: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _04351 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _04351 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _04351 + IfMoveEffectivenessEquals TYPE_MULTI_DOUBLE_DAMAGE, _04346 + IfMoveEffectivenessEquals TYPE_MULTI_QUADRUPLE_DAMAGE, _04346 + IfRandomLessThan 128, _04351 + +_04346: + IfRandomLessThan 128, _04351 + AddToMoveScore 1 + +_04351: + PopOrEnd + +_04352: + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_PSYCH_UP, _04383 + +_04356: + IfRandomLessThan 128, _04361 + AddToMoveScore 1 + +_04361: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _04382 + IfRandomLessThan 128, _04370 + AddToMoveScore -1 + +_04370: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 50, _04382 + AddToMoveScore -1 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 30, _04382 + AddToMoveScore -1 + +_04382: + PopOrEnd + +_04383: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 3, _04398 + AddToMoveScore 3 + LoadTurnCount + IfLoadedNotEqualTo 0, _04400 + AddToMoveScore 2 + GoTo _04400 + +_04398: + AddToMoveScore -5 + +_04400: + PopOrEnd + +_04401: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _04425 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 90, _04414 + IfRandomLessThan 128, _04414 + AddToMoveScore 1 + +_04414: + LoadDefenderLastUsedMoveClass + IfLoadedNotEqualTo CLASS_PHYSICAL, _04427 + IfRandomLessThan 64, _04427 + AddToMoveScore 1 + GoTo _04427 + +_04425: + AddToMoveScore -2 + +_04427: + PopOrEnd + +_04428: + TableEntry TYPE_NORMAL + TableEntry TYPE_FIGHTING + TableEntry TYPE_FLYING + TableEntry TYPE_POISON + TableEntry TYPE_GROUND + TableEntry TYPE_ROCK + TableEntry TYPE_BUG + TableEntry TYPE_GHOST + TableEntry TYPE_STEEL + TableEntry TABLE_END + +_04438: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _04446 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 50, _04448 + +_04446: + AddToMoveScore -1 + +_04448: + PopOrEnd + +_04449: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04460 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _04465 + AddToMoveScore -1 + GoTo _04465 + +_04460: + IfRandomLessThan 20, _04465 + AddToMoveScore 3 + +_04465: + PopOrEnd + +_04466: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04485 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 60, _04485 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _04480 + IfRandomLessThan 180, _04485 + +_04480: + IfRandomLessThan 50, _04485 + AddToMoveScore -1 + +_04485: + PopOrEnd + +_04486: + IfMoveNotKnown AI_BATTLER_ATTACKER, MOVE_FOCUS_PUNCH, _04495 + IfRandomLessThan 96, _04495 + AddToMoveScore 1 + +_04495: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _04522 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _04517 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _04512 + IfRandomLessThan 100, _04512 + AddToMoveScore -1 + +_04512: + IfRandomLessThan 100, _04517 + AddToMoveScore -1 + +_04517: + IfRandomLessThan 100, _04522 + AddToMoveScore -1 + +_04522: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04572 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadEffectOfLoadedMove + IfLoadedEqualTo BATTLE_EFFECT_STATUS_SLEEP, _04551 + IfLoadedEqualTo BATTLE_EFFECT_STATUS_BADLY_POISON, _04551 + IfLoadedEqualTo BATTLE_EFFECT_STATUS_POISON, _04551 + IfLoadedEqualTo BATTLE_EFFECT_STATUS_PARALYZE, _04551 + IfLoadedEqualTo BATTLE_EFFECT_STATUS_BURN, _04551 + IfLoadedEqualTo BATTLE_EFFECT_STATUS_CONFUSE, _04557 + IfLoadedEqualTo BATTLE_EFFECT_STATUS_LEECH_SEED, _04563 + GoTo _04572 + +_04551: + IfNotStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _04567 + GoTo _04572 + +_04557: + IfNotVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CONFUSION, _04567 + GoTo _04572 + +_04563: + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_LEECH_SEED, _04572 + +_04567: + IfRandomLessThan 100, _04572 + AddToMoveScore 1 + +_04572: + PopOrEnd + +_04573: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _04607 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _04607 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _04607 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_TRUANT, _04596 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04603 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 40, _04607 + GoTo _04609 + +_04596: + IfRandomLessThan 80, _04609 + AddToMoveScore 1 + GoTo _04609 + +_04603: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 60, _04609 + +_04607: + AddToMoveScore -1 + +_04609: + PopOrEnd + +_04610: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04628 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadPowerOfLoadedMove + IfLoadedEqualTo 0, _04623 + AddToMoveScore 1 + GoTo _04628 + +_04623: + IfRandomLessThan 100, _04628 + AddToMoveScore -1 + +_04628: + PopOrEnd + +_04629: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _04713 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_ATTRACT, _04713 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CONFUSION, _04713 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _04650 + IfRandomLessThan 10, _04650 + AddToMoveScore -1 + +_04650: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _04659 + IfRandomLessThan 100, _04659 + AddToMoveScore -1 + +_04659: + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_MIRROR_COAT, _04707 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadPowerOfLoadedMove + IfLoadedEqualTo 0, _04687 + IfTargetIsNotTaunted _04676 + IfRandomLessThan 100, _04676 + AddToMoveScore 1 + +_04676: + LoadDefenderLastUsedMoveClass + IfLoadedNotEqualTo CLASS_PHYSICAL, _04713 + IfRandomLessThan 100, _04715 + AddToMoveScore 1 + GoTo _04715 + +_04687: + IfTargetIsNotTaunted _04694 + IfRandomLessThan 100, _04694 + AddToMoveScore 1 + +_04694: + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedInTable _04716, _04715 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedInTable _04716, _04715 + IfRandomLessThan 50, _04715 + +_04707: + IfRandomLessThan 100, _04712 + AddToMoveScore 4 + +_04712: + PopOrEnd + +_04713: + AddToMoveScore -1 + +_04715: + PopOrEnd + +_04716: + TableEntry TYPE_NORMAL + TableEntry TYPE_FIGHTING + TableEntry TYPE_FLYING + TableEntry TYPE_POISON + TableEntry TYPE_GROUND + TableEntry TYPE_ROCK + TableEntry TYPE_BUG + TableEntry TYPE_GHOST + TableEntry TYPE_STEEL + TableEntry TABLE_END + +_04726: + IfBattlerUnderEffect AI_BATTLER_DEFENDER, CHECK_DISABLE, _04739 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04746 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadEffectOfLoadedMove + IfLoadedNotInTable _04749, _04746 + +_04739: + IfRandomLessThan 30, _04748 + AddToMoveScore 3 + GoTo _04748 + +_04746: + AddToMoveScore -2 + +_04748: + PopOrEnd + +_04749: + TableEntry BATTLE_EFFECT_RECOVER_DAMAGE_SLEEP + TableEntry BATTLE_EFFECT_ATK_UP + TableEntry BATTLE_EFFECT_DEF_UP + TableEntry BATTLE_EFFECT_SPEED_UP + TableEntry BATTLE_EFFECT_SP_ATK_UP + TableEntry BATTLE_EFFECT_RESET_STAT_CHANGES + TableEntry BATTLE_EFFECT_FORCE_SWITCH + TableEntry BATTLE_EFFECT_CONVERSION + TableEntry BATTLE_EFFECT_STATUS_BADLY_POISON + TableEntry BATTLE_EFFECT_SET_LIGHT_SCREEN + TableEntry BATTLE_EFFECT_REST + TableEntry BATTLE_EFFECT_HALVE_HP + TableEntry BATTLE_EFFECT_SP_DEF_UP_2 + TableEntry BATTLE_EFFECT_STATUS_CONFUSE + TableEntry BATTLE_EFFECT_STATUS_POISON + TableEntry BATTLE_EFFECT_STATUS_PARALYZE + TableEntry BATTLE_EFFECT_STATUS_LEECH_SEED + TableEntry BATTLE_EFFECT_DO_NOTHING + TableEntry BATTLE_EFFECT_ATK_UP_2 + TableEntry BATTLE_EFFECT_ENCORE + TableEntry BATTLE_EFFECT_CONVERSION2 + TableEntry BATTLE_EFFECT_NEXT_ATTACK_ALWAYS_HITS + TableEntry BATTLE_EFFECT_CURE_PARTY_STATUS + TableEntry BATTLE_EFFECT_PREVENT_ESCAPE + TableEntry BATTLE_EFFECT_STATUS_NIGHTMARE + TableEntry BATTLE_EFFECT_PROTECT + TableEntry BATTLE_EFFECT_SWITCH_ABILITIES + TableEntry BATTLE_EFFECT_IGNORE_EVASION_REMOVE_GHOST_IMMUNE + TableEntry BATTLE_EFFECT_ALL_FAINT_3_TURNS + TableEntry BATTLE_EFFECT_WEATHER_SANDSTORM + TableEntry BATTLE_EFFECT_SURVIVE_WITH_1_HP + TableEntry BATTLE_EFFECT_ATK_UP_2_STATUS_CONFUSION + TableEntry BATTLE_EFFECT_INFATUATE + TableEntry BATTLE_EFFECT_PREVENT_STATUS + TableEntry BATTLE_EFFECT_WEATHER_RAIN + TableEntry BATTLE_EFFECT_WEATHER_SUN + TableEntry BATTLE_EFFECT_MAX_ATK_LOSE_HALF_MAX_HP + TableEntry BATTLE_EFFECT_COPY_STAT_CHANGES + TableEntry BATTLE_EFFECT_HIT_IN_3_TURNS + TableEntry BATTLE_EFFECT_ALWAYS_FLINCH_FIRST_TURN_ONLY + TableEntry BATTLE_EFFECT_STOCKPILE + TableEntry BATTLE_EFFECT_SPIT_UP + TableEntry BATTLE_EFFECT_SWALLOW + TableEntry BATTLE_EFFECT_WEATHER_HAIL + TableEntry BATTLE_EFFECT_TORMENT + TableEntry BATTLE_EFFECT_STATUS_BURN + TableEntry BATTLE_EFFECT_MAKE_GLOBAL_TARGET + TableEntry BATTLE_EFFECT_SP_DEF_UP_DOUBLE_ELECTRIC_POWER + TableEntry BATTLE_EFFECT_SWITCH_HELD_ITEMS + TableEntry BATTLE_EFFECT_COPY_ABILITY + TableEntry BATTLE_EFFECT_GROUND_TRAP_USER_CONTINUOUS_HEAL + TableEntry BATTLE_EFFECT_RECYCLE + TableEntry BATTLE_EFFECT_REMOVE_HELD_ITEM + TableEntry BATTLE_EFFECT_SWITCH_ABILITIES + TableEntry BATTLE_EFFECT_MAKE_SHARED_MOVES_UNUSEABLE + TableEntry BATTLE_EFFECT_HEAL_STATUS + TableEntry BATTLE_EFFECT_REMOVE_ALL_PP_ON_DEFEAT + TableEntry BATTLE_EFFECT_CONFUSE_ALL + TableEntry BATTLE_EFFECT_HALVE_ELECTRIC_DAMAGE + TableEntry BATTLE_EFFECT_HALVE_FIRE_DAMAGE + TableEntry BATTLE_EFFECT_ATK_SPD_UP + TableEntry BATTLE_EFFECT_CAMOUFLAGE + TableEntry BATTLE_EFFECT_GRAVITY + TableEntry BATTLE_EFFECT_IGNORE_EVATION_REMOVE_DARK_IMMUNE + TableEntry BATTLE_EFFECT_FAINT_AND_FULL_HEAL_NEXT_MON + TableEntry BATTLE_EFFECT_NATURAL_GIFT + TableEntry BATTLE_EFFECT_REMOVE_PROTECT + TableEntry BATTLE_EFFECT_DOUBLE_SPEED_3_TURNS + TableEntry BATTLE_EFFECT_RANDOM_STAT_UP_2 + TableEntry BATTLE_EFFECT_FLING + TableEntry BATTLE_EFFECT_TRANSFER_STATUS + TableEntry BATTLE_EFFECT_PREVENT_HEALING + TableEntry BATTLE_EFFECT_SWAP_ATK_DEF + TableEntry BATTLE_EFFECT_SUPRESS_ABILITY + TableEntry BATTLE_EFFECT_PREVENT_CRITS + TableEntry BATTLE_EFFECT_SWAP_ATK_SP_ATK_STAT_CHANGES + TableEntry BATTLE_EFFECT_SWAP_DEF_SP_DEF_STAT_CHANGES + TableEntry BATTLE_EFFECT_SET_ABILITY_TO_INSOMNIA + TableEntry BATTLE_EFFECT_SWAP_STAT_CHANGES + TableEntry BATTLE_EFFECT_RESTORE_HP_EVERY_TURN + TableEntry BATTLE_EFFECT_GIVE_GROUND_IMMUNITY + TableEntry BATTLE_EFFECT_TRICK_ROOM + TableEntry TABLE_END + +_04832: + IfHPPercentLessThan AI_BATTLER_DEFENDER, 80, _04855 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04847 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 40, _04855 + AddToMoveScore 1 + GoTo _04857 + +_04847: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 60, _04855 + AddToMoveScore 1 + GoTo _04857 + +_04855: + AddToMoveScore -1 + +_04857: + PopOrEnd + +_04858: + AddToMoveScore 2 + PopOrEnd + +_04861: + IfRandomLessThan 128, _04866 + AddToMoveScore 2 + +_04866: + PopOrEnd + +_04867: + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_SLEEP, _02543 + AddToMoveScore -5 + PopOrEnd + +_04874: + AddToMoveScore -1 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04906 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _04906 + IfRandomLessThan 128, _04888 + AddToMoveScore 1 + +_04888: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _04906 + IfRandomLessThan 128, _04897 + AddToMoveScore 1 + +_04897: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _04906 + IfRandomLessThan 100, _04906 + AddToMoveScore 2 + +_04906: + PopOrEnd + +_04907: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _04924 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 33, _04943 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 20, _04945 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 8, _04934 + GoTo _04936 + +_04924: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 60, _04943 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 40, _04945 + GoTo _04936 + +_04934: + AddToMoveScore 1 + +_04936: + IfRandomLessThan 100, _04945 + AddToMoveScore 1 + GoTo _04945 + +_04943: + AddToMoveScore -1 + +_04945: + PopOrEnd + +_04946: + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _04956 + IfPartyMemberStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _04956 + AddToMoveScore -5 + +_04956: + PopOrEnd + +_04957: + LoadHeldItemEffect AI_BATTLER_DEFENDER + IfLoadedNotInTable _04972, _04969 + IfRandomLessThan 50, _04971 + AddToMoveScore 1 + GoTo _04971 + +_04969: + AddToMoveScore -2 + +_04971: + PopOrEnd + +_04972: + TableEntry HOLD_EFFECT_SLP_RESTORE + TableEntry HOLD_EFFECT_STATUS_RESTORE + TableEntry HOLD_EFFECT_HP_RESTORE + TableEntry HOLD_EFFECT_ACC_REDUCE + TableEntry HOLD_EFFECT_HP_RESTORE_GRADUAL + TableEntry HOLD_EFFECT_PIKA_SPATK_UP + TableEntry HOLD_EFFECT_CUBONE_ATK_UP + TableEntry HOLD_EFFECT_WEAKEN_SE_FIRE + TableEntry HOLD_EFFECT_WEAKEN_SE_WATER + TableEntry HOLD_EFFECT_WEAKEN_SE_ELECTRIC + TableEntry HOLD_EFFECT_WEAKEN_SE_GRASS + TableEntry HOLD_EFFECT_WEAKEN_SE_ICE + TableEntry HOLD_EFFECT_WEAKEN_SE_FIGHT + TableEntry HOLD_EFFECT_WEAKEN_SE_POISON + TableEntry HOLD_EFFECT_WEAKEN_SE_GROUND + TableEntry HOLD_EFFECT_WEAKEN_SE_FLYING + TableEntry HOLD_EFFECT_WEAKEN_SE_PSYCHIC + TableEntry HOLD_EFFECT_WEAKEN_SE_BUG + TableEntry HOLD_EFFECT_WEAKEN_SE_ROCK + TableEntry HOLD_EFFECT_WEAKEN_SE_GHOST + TableEntry HOLD_EFFECT_WEAKEN_SE_DRAGON + TableEntry HOLD_EFFECT_WEAKEN_SE_DARK + TableEntry HOLD_EFFECT_WEAKEN_SE_STEEL + TableEntry HOLD_EFFECT_WEAKEN_NORMAL + TableEntry HOLD_EFFECT_HP_RESTORE_PSN_TYPE + TableEntry TABLE_END + +_04998: + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_GHOST, _05055 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_GHOST, _05055 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 9, _05061 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_GYRO_BALL, _05023 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_TRICK_ROOM, _05023 + GoTo _05028 + +_05023: + IfRandomLessThan 32, _05033 + AddToMoveScore 1 + +_05028: + IfRandomLessThan 128, _05033 + AddToMoveScore 1 + +_05033: + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 7, _05061 + IfRandomLessThan 128, _05043 + AddToMoveScore 1 + +_05043: + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 6, _05061 + IfRandomLessThan 128, _05061 + AddToMoveScore 1 + GoTo _05061 + +_05055: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 80, _05061 + AddToMoveScore -1 + +_05061: + PopOrEnd + +_05062: + IfMoveKnown AI_BATTLER_DEFENDER, MOVE_FEINT, _05072 + IfMoveKnown AI_BATTLER_DEFENDER, MOVE_SHADOW_FORCE, _05072 + GoTo _05077 + +_05072: + IfRandomLessThan 128, _05077 + AddToMoveScore -2 + +_05077: + LoadProtectChain AI_BATTLER_ATTACKER + IfLoadedGreaterThan 1, _05176 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_TOXIC, _05172 + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_CURSE, _05172 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_PERISH_SONG, _05172 + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_ATTRACT, _05172 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_LEECH_SEED, _05172 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_YAWN, _05172 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_RESTORE_HALF_HP, _05172 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_DEF_UP_DOUBLE_ROLLOUT_POWER, _05172 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_TOXIC, _05151 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CURSE, _05151 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_PERISH_SONG, _05151 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_ATTRACT, _05151 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_LEECH_SEED, _05151 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_YAWN, _05151 + LoadBattleType + IfLoadedMask BATTLE_TYPE_DOUBLES, _05151 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_LOCK_ON, _05151 + IfRandomLessThan 85, _05151 + GoTo _05153 + +_05151: + AddToMoveScore 2 + +_05153: + IfRandomLessThan 128, _05158 + AddToMoveScore -1 + +_05158: + LoadProtectChain AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _05178 + AddToMoveScore -1 + IfRandomLessThan 128, _05178 + AddToMoveScore -1 + GoTo _05178 + +_05172: + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_LOCK_ON, _05178 + +_05176: + AddToMoveScore -2 + +_05178: + PopOrEnd + +_05179: + IfRandomLessThan 128, _05199 + AddToMoveScore 1 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_ROAR, _05194 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_WHIRLWIND, _05194 + GoTo _05199 + +_05194: + IfRandomLessThan 64, _05199 + AddToMoveScore 1 + +_05199: + PopOrEnd + +_05200: + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_GHOST, _05219 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_GHOST, _05219 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 8, _05222 + AddToMoveScore -2 + GoTo _05227 + +_05219: + IfRandomLessThan 80, _05227 + +_05222: + IfRandomLessThan 80, _05227 + AddToMoveScore 2 + +_05227: + PopOrEnd + +_05228: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 4, _05236 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 35, _05240 + +_05236: + AddToMoveScore -1 + GoTo _05245 + +_05240: + IfRandomLessThan 70, _05245 + AddToMoveScore 1 + +_05245: + PopOrEnd + +_05246: + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 8, _05273 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 8, _05273 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 8, _05273 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 8, _05273 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 8, _05273 + GoTo _05293 + +_05273: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _05282 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 60, _05335 + GoTo _05286 + +_05282: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _05335 + +_05286: + IfRandomLessThan 80, _05335 + AddToMoveScore 2 + GoTo _05335 + +_05293: + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 7, _05320 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 7, _05320 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 7, _05320 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 7, _05320 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 7, _05320 + GoTo _05333 + +_05320: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _05329 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 60, _05333 + GoTo _05335 + +_05329: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _05335 + +_05333: + AddToMoveScore -2 + +_05335: + PopOrEnd + +_05336: + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedNotEqualTo FALSE, _05363 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_GHOST, _05363 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_PSYCHIC, _05363 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_GHOST, _05363 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_PSYCHIC, _05363 + GoTo _05368 + +_05363: + IfRandomLessThan 128, _05368 + AddToMoveScore 1 + +_05368: + IfMoveNotKnown AI_BATTLER_DEFENDER, MOVE_U_TURN, _05377 + IfRandomLessThan 128, _05377 + AddToMoveScore 1 + +_05377: + PopOrEnd + +_05378: + IfSpeedCompareEqualTo COMPARE_SPEED_FASTER, _05386 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_SWIFT_SWIM, _05414 + +_05386: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _05418 + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_HAILING, _05414 + IfLoadedEqualTo AI_WEATHER_SUNNY, _05414 + IfLoadedEqualTo AI_WEATHER_SANDSTORM, _05414 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_RAIN_DISH, _05414 + IfLoadedNotEqualTo ABILITY_HYDRATION, _05420 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _05414 + GoTo _05420 + +_05414: + AddToMoveScore 1 + GoTo _05420 + +_05418: + AddToMoveScore -1 + +_05420: + PopOrEnd + +_05421: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _05453 + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_HAILING, _05449 + IfLoadedEqualTo AI_WEATHER_RAINING, _05449 + IfLoadedEqualTo AI_WEATHER_SANDSTORM, _05449 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_FLOWER_GIFT, _05449 + IfLoadedNotEqualTo ABILITY_LEAF_GUARD, _05455 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _05449 + GoTo _05455 + +_05449: + AddToMoveScore 1 + GoTo _05455 + +_05453: + AddToMoveScore -1 + +_05455: + PopOrEnd + +_05456: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 90, _05462 + GoTo _05464 + +_05462: + AddToMoveScore -2 + +_05464: + PopOrEnd + +_05465: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 8, _05492 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 8, _05492 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 8, _05492 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE, 8, _05492 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 8, _05492 + GoTo _05527 + +_05492: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 7, _05524 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 7, _05524 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 7, _05524 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 7, _05524 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 7, _05522 + IfRandomLessThan 50, _05529 + GoTo _05527 + +_05522: + AddToMoveScore 1 + +_05524: + AddToMoveScore 1 + PopOrEnd + +_05527: + AddToMoveScore -2 + +_05529: + PopOrEnd + +_05530: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _05614 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_ATTRACT, _05614 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CONFUSION, _05614 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _05551 + IfRandomLessThan 10, _05551 + AddToMoveScore -1 + +_05551: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _05560 + IfRandomLessThan 100, _05560 + AddToMoveScore -1 + +_05560: + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_COUNTER, _05608 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadPowerOfLoadedMove + IfLoadedEqualTo 0, _05588 + IfTargetIsNotTaunted _05577 + IfRandomLessThan 100, _05577 + AddToMoveScore 1 + +_05577: + LoadDefenderLastUsedMoveClass + IfLoadedNotEqualTo CLASS_SPECIAL, _05614 + IfRandomLessThan 100, _05616 + AddToMoveScore 1 + GoTo _05616 + +_05588: + IfTargetIsNotTaunted _05595 + IfRandomLessThan 100, _05595 + AddToMoveScore 1 + +_05595: + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedInTable _05617, _05616 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedInTable _05617, _05616 + IfRandomLessThan 50, _05616 + +_05608: + IfRandomLessThan 100, _05613 + AddToMoveScore 4 + +_05613: + PopOrEnd + +_05614: + AddToMoveScore -1 + +_05616: + PopOrEnd + +_05617: + TableEntry TYPE_FIRE + TableEntry TYPE_WATER + TableEntry TYPE_GRASS + TableEntry TYPE_ELECTRIC + TableEntry TYPE_PSYCHIC + TableEntry TYPE_ICE + TableEntry TYPE_DRAGON + TableEntry TYPE_DARK + TableEntry TABLE_END + +_05626: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _05670 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _05670 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _05670 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_SKIP_CHARGE_TURN_IN_SUN, _05640 + GoTo _05648 + +_05640: + LoadCurrentWeather + IfLoadedNotEqualTo AI_WEATHER_SUNNY, _05648 + AddToMoveScore 2 + GoTo _05672 + +_05648: + IfHeldItemEqualTo AI_BATTLER_ATTACKER, ITEM_POWER_HERB, _05654 + GoTo _05658 + +_05654: + AddToMoveScore 2 + GoTo _05672 + +_05658: + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_PROTECT, _05670 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 38, _05672 + AddToMoveScore -1 + GoTo _05672 + +_05670: + AddToMoveScore -2 + +_05672: + PopOrEnd + +_05673: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _05693 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _05693 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _05693 + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_SUNNY, _05693 + IfLoadedNotEqualTo AI_WEATHER_RAINING, _05698 + AddToMoveScore 1 + GoTo _05698 + +_05693: + IfRandomLessThan 50, _05698 + AddToMoveScore -3 + +_05698: + PopOrEnd + +_05699: + IfHeldItemEqualTo AI_BATTLER_ATTACKER, ITEM_POWER_HERB, _05654 + IfMoveEffectNotKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_PROTECT, _05711 + AddToMoveScore -1 + GoTo _05791 + +_05711: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _05792 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _05792 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _05792 + IfHeldItemEqualTo AI_BATTLER_ATTACKER, ITEM_POWER_HERB, _05726 + GoTo _05730 + +_05726: + AddToMoveScore 1 + GoTo _05791 + +_05730: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_TOXIC, _05786 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CURSE, _05786 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_LEECH_SEED, _05786 + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_SANDSTORM, _05751 + IfLoadedEqualTo AI_WEATHER_HAILING, _05763 + GoTo _05775 + +_05751: + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedInTable _05795, _05786 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedInTable _05795, _05786 + GoTo _05775 + +_05763: + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_ICE, _05786 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_ICE, _05786 + GoTo _05775 + +_05775: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _05791 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadEffectOfLoadedMove + IfLoadedNotEqualTo BATTLE_EFFECT_NEXT_ATTACK_ALWAYS_HITS, _05786 + GoTo _05791 + +_05786: + IfRandomLessThan 80, _05791 + AddToMoveScore 1 + +_05791: + PopOrEnd + +_05792: + AddToMoveScore 1 + PopOrEnd + +_05795: + TableEntry TYPE_GROUND + TableEntry TYPE_ROCK + TableEntry TYPE_STEEL + TableEntry TABLE_END + +_05799: + AddToMoveScore 2 + PopOrEnd + +_05802: + LoadStockpileCount AI_BATTLER_ATTACKER + IfLoadedLessThan 2, _05812 + IfRandomLessThan 80, _05812 + AddToMoveScore 2 + +_05812: + PopOrEnd + +_05813: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 40, _05846 + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_SUNNY, _05829 + IfLoadedEqualTo AI_WEATHER_RAINING, _05829 + IfLoadedEqualTo AI_WEATHER_SANDSTORM, _05829 + GoTo _05848 + +_05829: + AddToMoveScore 1 + IfMoveNotKnown AI_BATTLER_ATTACKER, MOVE_BLIZZARD, _05837 + AddToMoveScore 2 + +_05837: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_ICE_BODY, _05848 + AddToMoveScore 2 + GoTo _05848 + +_05846: + AddToMoveScore -1 + +_05848: + PopOrEnd + +_05849: + IfNotStatus AI_BATTLER_DEFENDER, MON_CONDITION_FACADE_BOOST, _05855 + AddToMoveScore 1 + +_05855: + PopOrEnd + +_05856: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _05893 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _05893 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _05893 + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_SUBSTITUTE, _02540 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _05900 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_ATTRACT, _05897 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CONFUSION, _05897 + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedNotEqualTo FALSE, _05902 + IfRandomLessThan 200, _05902 + AddToMoveScore 1 + GoTo _05902 + +_05893: + AddToMoveScore -1 + GoTo _05902 + +_05897: + IfRandomLessThan 100, _05902 + +_05900: + AddToMoveScore 1 + +_05902: + PopOrEnd + +_05903: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_PARALYSIS, _05909 + GoTo _05911 + +_05909: + AddToMoveScore 1 + +_05911: + PopOrEnd + +_05912: + LoadHeldItemEffect AI_BATTLER_ATTACKER + IfLoadedInTable _06159, _05933 + IfLoadedInTable _06173, _05942 + IfLoadedInTable _06175, _06028 + IfLoadedInTable _06177, _06096 + IfLoadedInTable _06153, _06142 + +_05929: + AddToMoveScore -3 + GoTo _06152 + +_05933: + LoadHeldItemEffect AI_BATTLER_DEFENDER + IfLoadedInTable _06201, _05929 + AddToMoveScore 5 + GoTo _06152 + +_05942: + LoadHeldItemEffect AI_BATTLER_DEFENDER + IfLoadedInTable _06201, _05929 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _05986 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _05986 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_STEEL, _05986 + IfLoadedEqualTo TYPE_POISON, _05986 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_STEEL, _05986 + IfLoadedEqualTo TYPE_POISON, _05986 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_IMMUNITY, _05986 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _05986 + IfLoadedEqualTo ABILITY_POISON_HEAL, _05986 + AddToMoveScore 5 + GoTo _06152 + +_05986: + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _05929 + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_SAFEGUARD, _05929 + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_STEEL, _05929 + IfLoadedEqualTo TYPE_POISON, _05929 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_STEEL, _05929 + IfLoadedEqualTo TYPE_POISON, _05929 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_IMMUNITY, _05929 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _05929 + IfLoadedEqualTo ABILITY_POISON_HEAL, _05929 + IfLoadedEqualTo ABILITY_KLUTZ, _05929 + AddToMoveScore 5 + GoTo _06152 + +_06028: + LoadHeldItemEffect AI_BATTLER_DEFENDER + IfLoadedInTable _06201, _05929 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_WATER_VEIL, _06063 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _06063 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _06063 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SAFEGUARD, _06063 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_FIRE, _06063 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_FIRE, _06063 + AddToMoveScore 5 + GoTo _06152 + +_06063: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_WATER_VEIL, _05929 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _05929 + IfLoadedEqualTo ABILITY_KLUTZ, _02513 + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _05929 + IfSideCondition AI_BATTLER_ATTACKER, SIDE_CONDITION_SAFEGUARD, _05929 + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_FIRE, _05929 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_FIRE, _05929 + AddToMoveScore 5 + GoTo _06152 + +_06096: + LoadHeldItemEffect AI_BATTLER_DEFENDER + IfLoadedInTable _06201, _05929 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_POISON, _06120 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_POISON, _06120 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _05986 + AddToMoveScore 5 + GoTo _06152 + +_06120: + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_POISON, _05929 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_POISON, _05929 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _05929 + IfLoadedEqualTo ABILITY_KLUTZ, _05929 + AddToMoveScore 5 + GoTo _06152 + +_06142: + LoadHeldItemEffect AI_BATTLER_DEFENDER + IfLoadedInTable _06179, _05929 + IfRandomLessThan 50, _06152 + AddToMoveScore 2 + +_06152: + PopOrEnd + +_06153: + TableEntry HOLD_EFFECT_HP_RESTORE_SPICY + TableEntry HOLD_EFFECT_HP_RESTORE_DRY + TableEntry HOLD_EFFECT_HP_RESTORE_SWEET + TableEntry HOLD_EFFECT_HP_RESTORE_BITTER + TableEntry HOLD_EFFECT_HP_RESTORE_SOUR + TableEntry TABLE_END + +_06159: + TableEntry HOLD_EFFECT_CHOICE_ATK + TableEntry HOLD_EFFECT_CHOICE_SPATK + TableEntry HOLD_EFFECT_CHOICE_SPEED + TableEntry HOLD_EFFECT_SPEED_DOWN_GROUNDED + TableEntry HOLD_EFFECT_PRIORITY_DOWN + TableEntry HOLD_EFFECT_DMG_USER_CONTACT_XFR + TableEntry HOLD_EFFECT_LVLUP_ATK_EV_UP + TableEntry HOLD_EFFECT_LVLUP_DEF_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPATK_EV_UP + TableEntry HOLD_EFFECT_LVLUP_DEF_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPDEF_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPEED_EV_UP + TableEntry HOLD_EFFECT_LVLUP_HP_EV_UP + TableEntry TABLE_END + +_06173: + TableEntry HOLD_EFFECT_PSN_USER + TableEntry TABLE_END + +_06175: + TableEntry HOLD_EFFECT_BRN_USER + TableEntry TABLE_END + +_06177: + TableEntry HOLD_EFFECT_HP_RESTORE_PSN_TYPE + TableEntry TABLE_END + +_06179: + TableEntry HOLD_EFFECT_HP_RESTORE_SPICY + TableEntry HOLD_EFFECT_HP_RESTORE_DRY + TableEntry HOLD_EFFECT_HP_RESTORE_SWEET + TableEntry HOLD_EFFECT_HP_RESTORE_BITTER + TableEntry HOLD_EFFECT_HP_RESTORE_SOUR + TableEntry HOLD_EFFECT_EVS_UP_SPEED_DOWN + TableEntry HOLD_EFFECT_CHOICE_ATK + TableEntry HOLD_EFFECT_CHOICE_SPATK + TableEntry HOLD_EFFECT_CHOICE_SPEED + TableEntry HOLD_EFFECT_SPEED_DOWN_GROUNDED + TableEntry HOLD_EFFECT_PRIORITY_DOWN + TableEntry HOLD_EFFECT_DMG_USER_CONTACT_XFR + TableEntry HOLD_EFFECT_LVLUP_ATK_EV_UP + TableEntry HOLD_EFFECT_LVLUP_DEF_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPATK_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPDEF_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPEED_EV_UP + TableEntry HOLD_EFFECT_LVLUP_HP_EV_UP + TableEntry HOLD_EFFECT_PSN_USER + TableEntry HOLD_EFFECT_BRN_USER + TableEntry HOLD_EFFECT_HP_RESTORE_PSN_TYPE + TableEntry TABLE_END + +_06201: + TableEntry HOLD_EFFECT_EVS_UP_SPEED_DOWN + TableEntry HOLD_EFFECT_CHOICE_ATK + TableEntry HOLD_EFFECT_CHOICE_SPATK + TableEntry HOLD_EFFECT_CHOICE_SPEED + TableEntry HOLD_EFFECT_SPEED_DOWN_GROUNDED + TableEntry HOLD_EFFECT_PRIORITY_DOWN + TableEntry HOLD_EFFECT_DMG_USER_CONTACT_XFR + TableEntry HOLD_EFFECT_LVLUP_ATK_EV_UP + TableEntry HOLD_EFFECT_LVLUP_DEF_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPATK_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPDEF_EV_UP + TableEntry HOLD_EFFECT_LVLUP_SPEED_EV_UP + TableEntry HOLD_EFFECT_LVLUP_HP_EV_UP + TableEntry HOLD_EFFECT_PSN_USER + TableEntry HOLD_EFFECT_BRN_USER + TableEntry HOLD_EFFECT_HP_RESTORE_PSN_TYPE + TableEntry TABLE_END + +_06218: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedInTable _06238, _06228 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedInTable _06238, _06232 + +_06228: + AddToMoveScore -1 + GoTo _06237 + +_06232: + IfRandomLessThan 50, _06237 + AddToMoveScore 2 + +_06237: + PopOrEnd + +_06238: + TableEntry ABILITY_SPEED_BOOST + TableEntry ABILITY_BATTLE_ARMOR + TableEntry ABILITY_SAND_VEIL + TableEntry ABILITY_STATIC + TableEntry ABILITY_FLASH_FIRE + TableEntry ABILITY_WONDER_GUARD + TableEntry ABILITY_EFFECT_SPORE + TableEntry ABILITY_SWIFT_SWIM + TableEntry ABILITY_HUGE_POWER + TableEntry ABILITY_RAIN_DISH + TableEntry ABILITY_CUTE_CHARM + TableEntry ABILITY_SHED_SKIN + TableEntry ABILITY_MARVEL_SCALE + TableEntry ABILITY_PURE_POWER + TableEntry ABILITY_CHLOROPHYLL + TableEntry ABILITY_SHIELD_DUST + TableEntry ABILITY_ADAPTABILITY + TableEntry ABILITY_MAGIC_GUARD + TableEntry ABILITY_MOLD_BREAKER + TableEntry ABILITY_SUPER_LUCK + TableEntry ABILITY_UNAWARE + TableEntry ABILITY_TINTED_LENS + TableEntry ABILITY_FILTER + TableEntry ABILITY_SOLID_ROCK + TableEntry ABILITY_RECKLESS + TableEntry TABLE_END + +_06264: + PopOrEnd + +_06265: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _06292 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _06292 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _06292 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 6, _06292 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _06288 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 40, _06292 + GoTo _06294 + +_06288: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 60, _06294 + +_06292: + AddToMoveScore -1 + +_06294: + PopOrEnd + +_06295: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 30, _06304 + IfRandomLessThan 100, _06304 + AddToMoveScore -1 + +_06304: + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedEqualTo FALSE, _06319 + IfRandomLessThan 150, _06324 + AddToMoveScore 1 + GoTo _06324 + IfRandomLessThan 50, _06324 + +_06319: + IfRandomLessThan 30, _06324 + AddToMoveScore -1 + +_06324: + PopOrEnd + +_06325: + LoadRecycleItem AI_BATTLER_ATTACKER + IfLoadedNotInTable _06340, _06337 + IfRandomLessThan 50, _06339 + AddToMoveScore 1 + GoTo _06339 + +_06337: + AddToMoveScore -2 + +_06339: + PopOrEnd + +_06340: + TableEntry ITEM_CHESTO_BERRY + TableEntry ITEM_LUM_BERRY + TableEntry ITEM_STARF_BERRY + TableEntry TABLE_END + +_06344: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _06363 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_ATTRACT, _06363 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CONFUSION, _06363 + IfRandomLessThan 180, _06363 + AddToMoveScore 2 + GoTo _06365 + +_06363: + AddToMoveScore -2 + +_06365: + PopOrEnd + +_06366: + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_REFLECT, _06376 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_LIGHT_SCREEN, _06376 + GoTo _06378 + +_06376: + AddToMoveScore 1 + +_06378: + PopOrEnd + +_06379: + IfHPPercentLessThan AI_BATTLER_DEFENDER, 30, _06393 + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedGreaterThan FALSE, _06393 + IfRandomLessThan 180, _06393 + AddToMoveScore 1 + +_06393: + PopOrEnd + +_06394: + IfHPPercentLessThan AI_BATTLER_DEFENDER, 70, _06417 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _06409 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 40, _06417 + AddToMoveScore 1 + GoTo _06419 + +_06409: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _06417 + AddToMoveScore 1 + GoTo _06419 + +_06417: + AddToMoveScore -1 + +_06419: + PopOrEnd + +_06420: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _06442 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _06442 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _06442 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _06438 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 50, _06444 + GoTo _06442 + +_06438: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _06444 + +_06442: + AddToMoveScore -1 + +_06444: + PopOrEnd + +_06445: + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedGreaterThan FALSE, _06455 + IfRandomLessThan 100, _06455 + AddToMoveScore 2 + +_06455: + PopOrEnd + +_06456: + IfHPPercentLessThan AI_BATTLER_DEFENDER, 50, _06462 + GoTo _06464 + +_06462: + AddToMoveScore -1 + +_06464: + PopOrEnd + +_06465: + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedEqualTo TRUE, _06503 + IfRandomLessThan 30, _06522 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _06489 + IfHPPercentNotEqualTo AI_BATTLER_ATTACKER, 100, _06517 + IfHPPercentLessThan AI_BATTLER_DEFENDER, 70, _06517 + IfRandomLessThan 60, _06522 + GoTo _06517 + +_06489: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 25, _06517 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_RESTORE_HALF_HP, _06503 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_DEF_UP_DOUBLE_ROLLOUT_POWER, _06503 + GoTo _06510 + +_06503: + IfRandomLessThan 150, _06522 + AddToMoveScore 2 + GoTo _06522 + +_06510: + IfRandomLessThan 230, _06517 + AddToMoveScore 1 + GoTo _06522 + +_06517: + IfRandomLessThan 30, _06522 + AddToMoveScore -2 + +_06522: + PopOrEnd + +_06523: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _06543 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_ELECTRIC, _06539 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_ELECTRIC, _06539 + GoTo _06543 + +_06539: + AddToMoveScore 1 + GoTo _06545 + +_06543: + AddToMoveScore -1 + +_06545: + PopOrEnd + +_06546: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _06568 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _06568 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _06568 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _06564 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 60, _06570 + GoTo _06568 + +_06564: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 80, _06570 + +_06568: + AddToMoveScore -1 + +_06570: + PopOrEnd + +_06571: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _06591 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_FIRE, _06587 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_FIRE, _06587 + GoTo _06591 + +_06587: + AddToMoveScore 1 + GoTo _06593 + +_06591: + AddToMoveScore -1 + +_06593: + PopOrEnd + +_06594: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _06608 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _06613 + IfRandomLessThan 70, _06613 + AddToMoveScore -1 + GoTo _06613 + +_06608: + IfRandomLessThan 128, _06613 + AddToMoveScore 1 + +_06613: + PopOrEnd + +_06614: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_LEVITATE, _06642 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_MAGNET_RISE, _06642 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_FLYING, _06642 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_FLYING, _06642 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 60, _06647 + IfRandomLessThan 128, _06642 + GoTo _06647 + +_06642: + IfRandomLessThan 64, _06647 + AddToMoveScore 1 + +_06647: + PopOrEnd + +_06648: + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_DARK, _06666 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_DARK, _06666 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 8, _06669 + AddToMoveScore -2 + PopOrEnd + +_06666: + IfRandomLessThan 80, _06674 + +_06669: + IfRandomLessThan 80, _06674 + AddToMoveScore 2 + +_06674: + PopOrEnd + +_06675: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _06690 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _06690 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _06690 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _06694 + GoTo _06696 + +_06690: + AddToMoveScore -1 + GoTo _06696 + +_06694: + AddToMoveScore 1 + +_06696: + PopOrEnd + +_06697: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _06711 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _06711 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _06711 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _06714 + GoTo _06716 + +_06711: + AddToMoveScore -1 + PopOrEnd + +_06714: + AddToMoveScore 1 + +_06716: + PopOrEnd + +_06717: + PopOrEnd + +_06718: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _06740 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _06740 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _06740 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 50, _06742 + AddToMoveScore 1 + IfRandomLessThan 128, _06742 + AddToMoveScore 1 + GoTo _06742 + +_06740: + AddToMoveScore -1 + +_06742: + PopOrEnd + +_06743: + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_PROTECT, _06752 + IfRandomLessThan 64, _06752 + GoTo _06817 + +_06752: + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_TOXIC, _06785 + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_CURSE, _06785 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_PERISH_SONG, _06785 + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_ATTRACT, _06785 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_LEECH_SEED, _06785 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_YAWN, _06785 + IfHPPercentEqualTo AI_BATTLER_DEFENDER, 100, _06790 + LoadHeldItemEffect AI_BATTLER_DEFENDER + IfLoadedNotInTable _06818, _06790 + +_06785: + IfRandomLessThan 128, _06790 + AddToMoveScore 1 + +_06790: + LoadProtectChain AI_BATTLER_DEFENDER + IfLoadedEqualTo 0, _06801 + IfLoadedEqualTo 1, _06808 + IfLoadedGreaterThan 2, _06815 + +_06801: + IfRandomLessThan 128, _06817 + AddToMoveScore 1 + GoTo _06817 + +_06808: + IfRandomLessThan 192, _06817 + AddToMoveScore 1 + GoTo _06817 + +_06815: + AddToMoveScore -2 + +_06817: + PopOrEnd + +_06818: + TableEntry HOLD_EFFECT_HP_RESTORE_GRADUAL + TableEntry HOLD_EFFECT_HP_RESTORE_PSN_TYPE + TableEntry TABLE_END + +_06821: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _06847 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _06847 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _06847 + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedEqualTo FALSE, _06840 + IfRandomLessThan 64, _06840 + AddToMoveScore 1 + +_06840: + IfRandomLessThan 128, _06849 + AddToMoveScore 1 + GoTo _06849 + +_06847: + AddToMoveScore -1 + +_06849: + PopOrEnd + +_06850: + IfRandomLessThan 64, _06873 + IfSpeedCompareEqualTo COMPARE_SPEED_FASTER, _06871 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 31, _06871 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 75, _06867 + IfRandomLessThan 64, _06873 + +_06867: + AddToMoveScore 1 + GoTo _06873 + +_06871: + AddToMoveScore -1 + +_06873: + PopOrEnd + +_06874: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 51, _06892 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _06885 + IfRandomLessThan 128, _06894 + +_06885: + IfRandomLessThan 64, _06894 + AddToMoveScore 1 + GoTo _06894 + +_06892: + AddToMoveScore -1 + +_06894: + PopOrEnd + +_06895: + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_SLEEP, _06964 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_ATTRACT, _06964 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_CONFUSION, _06964 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_DOUBLE_POWER_IF_HIT, _06964 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_HIT_LAST_WHIFF_IF_HIT, _06964 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_PRIORITY_NEG_1_BYPASS_ACCURACY, _06964 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _06928 + IfRandomLessThan 10, _06928 + AddToMoveScore -1 + +_06928: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _06937 + IfRandomLessThan 100, _06937 + AddToMoveScore -1 + +_06937: + IfRandomLessThan 192, _06942 + AddToMoveScore 1 + +_06942: + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + LoadPowerOfLoadedMove + IfLoadedEqualTo 0, _06955 + IfTargetIsNotTaunted _06955 + IfRandomLessThan 100, _06955 + AddToMoveScore 1 + +_06955: + IfTargetIsNotTaunted _06966 + IfRandomLessThan 100, _06966 + AddToMoveScore 1 + GoTo _06966 + +_06964: + AddToMoveScore -1 + +_06966: + PopOrEnd + +_06967: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _06985 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _06985 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _06985 + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _07035 + IfHasSuperEffectiveMove _06989 + GoTo _06994 + +_06985: + AddToMoveScore -1 + GoTo _07035 + +_06989: + IfRandomLessThan 64, _06994 + AddToMoveScore -2 + +_06994: + IfPartyMemberDealsMoreDamage USE_MAX_DAMAGE, _07004 + IfRandomLessThan 64, _07004 + AddToMoveScore -2 + GoTo _07035 + +_07004: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _07017 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 30, _07022 + IfRandomLessThan 128, _07027 + GoTo _07022 + +_07017: + IfRandomLessThan 64, _07022 + AddToMoveScore 1 + +_07022: + IfRandomLessThan 128, _07027 + AddToMoveScore 1 + +_07027: + IfSpeedCompareEqualTo COMPARE_SPEED_FASTER, _07033 + IfRandomLessThan 128, _07035 + +_07033: + AddToMoveScore 1 + +_07035: + PopOrEnd + +_07036: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07058 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07058 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07058 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _07054 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 60, _07060 + GoTo _07058 + +_07054: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 80, _07060 + +_07058: + AddToMoveScore -1 + +_07060: + PopOrEnd + +_07061: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07083 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07083 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07083 + IfSpeedCompareEqualTo COMPARE_SPEED_FASTER, _07085 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 30, _07085 + IfRandomLessThan 64, _07085 + AddToMoveScore 1 + PopOrEnd + +_07083: + AddToMoveScore -1 + +_07085: + PopOrEnd + +_07086: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07113 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07113 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07113 + IfSpeedCompareEqualTo COMPARE_SPEED_FASTER, _07122 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_ROUGH_SKIN, _07117 + LoadHeldItemEffect AI_BATTLER_ATTACKER + IfLoadedInTable _07123, _07117 + IfRandomLessThan 128, _07117 + GoTo _07122 + +_07113: + AddToMoveScore -1 + GoTo _07122 + +_07117: + IfRandomLessThan 128, _07122 + AddToMoveScore 1 + +_07122: + PopOrEnd + +_07123: + TableEntry ITEM_JABOCA_BERRY + TableEntry ITEM_ROWAP_BERRY + TableEntry TABLE_END + +_07126: + IfRandomLessThan 128, _07131 + AddToMoveScore 1 + +_07131: + PopOrEnd + +_07132: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07185 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07185 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07185 + LoadFlingPower AI_BATTLER_ATTACKER + IfLoadedLessThan 30, _07159 + IfLoadedGreaterThan 90, _07163 + IfLoadedGreaterThan 60, _07178 + IfRandomLessThan 128, _07192 + AddToMoveScore -1 + GoTo _07192 + +_07159: + AddToMoveScore -2 + GoTo _07192 + +_07163: + IfMoveEffectivenessEquals TYPE_MULTI_DOUBLE_DAMAGE, _07176 + IfMoveEffectivenessEquals TYPE_MULTI_QUADRUPLE_DAMAGE, _07176 + IfRandomLessThan 128, _07178 + AddToMoveScore 1 + GoTo _07178 + +_07176: + AddToMoveScore 4 + +_07178: + IfRandomLessThan 64, _07192 + AddToMoveScore 1 + GoTo _07192 + +_07185: + LoadHeldItemEffect AI_BATTLER_ATTACKER + IfLoadedInTable _07193, _07192 + AddToMoveScore -1 + +_07192: + PopOrEnd + +_07193: + TableEntry HOLD_EFFECT_SOMETIMES_FLINCH + TableEntry HOLD_EFFECT_STRENGTHEN_POISON + TableEntry HOLD_EFFECT_PSN_USER + TableEntry HOLD_EFFECT_BRN_USER + TableEntry HOLD_EFFECT_PIKA_SPATK_UP + TableEntry TABLE_END + +_07199: + IfNotStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _02522 + IfRandomLessThan 128, _07212 + IfHPPercentLessThan AI_BATTLER_DEFENDER, 30, _07212 + AddToMoveScore 1 + +_07212: + PopOrEnd + +_07213: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07277 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07277 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07277 + LoadCurrentMovePP + IfLoadedEqualTo 1, _07273 + IfLoadedEqualTo 2, _07264 + IfLoadedEqualTo 3, _07266 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedNotEqualTo ABILITY_PRESSURE, _07242 + IfRandomLessThan 30, _07242 + AddToMoveScore 1 + +_07242: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 10, _07264 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 2, _07264 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 8, _07266 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ACCURACY, 4, _07266 + GoTo _07279 + +_07264: + AddToMoveScore 1 + +_07266: + IfRandomLessThan 100, _07279 + AddToMoveScore 1 + GoTo _07279 + +_07273: + AddToMoveScore 3 + GoTo _07279 + +_07277: + AddToMoveScore -1 + +_07279: + PopOrEnd + +_07280: + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_RECOVER_DAMAGE_SLEEP, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_RESTORE_HALF_HP, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_HEAL_HALF_REMOVE_FLYING_TYPE, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_UNUSED_157, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_HEAL_HALF_MORE_IN_SUN, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_REST, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_SWALLOW, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_RECOVER_HALF_DAMAGE_DEALT, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_GROUND_TRAP_USER_CONTINUOUS_HEAL, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_RESTORE_HP_EVERY_TURN, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_STATUS_LEECH_SEED, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_FAINT_AND_FULL_HEAL_NEXT_MON, _07349 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_FAINT_FULL_RESTORE_NEXT_MON, _07349 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_LEECH_SEED, _07349 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_AQUA_RING, _07349 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_INGRAIN, _07349 + IfRandomLessThan 96, _07349 + GoTo _07354 + +_07349: + IfRandomLessThan 25, _07354 + AddToMoveScore 1 + +_07354: + PopOrEnd + +_07355: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07392 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07392 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07392 + IfHPPercentLessThan AI_BATTLER_DEFENDER, 50, _07392 + IfHPPercentEqualTo AI_BATTLER_DEFENDER, 100, _07378 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 85, _07385 + GoTo _07394 + +_07378: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _07383 + AddToMoveScore 1 + +_07383: + AddToMoveScore 1 + +_07385: + IfRandomLessThan 25, _07394 + AddToMoveScore 1 + GoTo _07394 + +_07392: + AddToMoveScore -1 + +_07394: + PopOrEnd + +_07395: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _07409 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 60, _07416 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _07423 + GoTo _02507 + +_07409: + IfRandomLessThan 96, _07430 + AddToMoveScore 1 + GoTo _07430 + +_07416: + IfRandomLessThan 128, _07430 + AddToMoveScore 1 + GoTo _07430 + +_07423: + IfRandomLessThan 164, _07430 + AddToMoveScore 1 + GoTo _07430 + +_07430: + PopOrEnd + +_07431: + IfRandomLessThan 64, _07457 + AddToMoveScore 1 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _07457 + IfRandomLessThan 128, _07445 + AddToMoveScore -1 + +_07445: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 50, _07457 + AddToMoveScore -1 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 30, _07457 + AddToMoveScore -1 + +_07457: + PopOrEnd + +_07458: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _07483 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_HIGH_CRITICAL, _07479 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_HIGH_CRITICAL_BURN_HIT, _07479 + IfMoveEffectKnown AI_BATTLER_DEFENDER, BATTLE_EFFECT_HIGH_CRITICAL_POISON_HIT, _07479 + IfRandomLessThan 64, _07479 + GoTo _07485 + +_07479: + AddToMoveScore 1 + GoTo _07485 + +_07483: + AddToMoveScore -1 + +_07485: + PopOrEnd + +_07486: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _07516 + IfBattlerDealsMoreDamage AI_BATTLER_DEFENDER, USE_MAX_DAMAGE, _07495 + GoTo _07500 + +_07495: + IfRandomLessThan 32, _07500 + AddToMoveScore 1 + +_07500: + LoadDefenderLastUsedMoveClass + IfLoadedEqualTo CLASS_STATUS, _07509 + IfRandomLessThan 128, _07518 + AddToMoveScore 1 + +_07509: + IfRandomLessThan 64, _07518 + AddToMoveScore 1 + GoTo _07518 + +_07516: + AddToMoveScore -2 + +_07518: + PopOrEnd + +_07519: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _07545 + IfBattlerDealsMoreDamage AI_BATTLER_DEFENDER, USE_MAX_DAMAGE, _07538 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + IfLoadedNotInTable _07560, _07545 + IfRandomLessThan 128, _07559 + AddToMoveScore 2 + GoTo _07559 + +_07538: + IfRandomLessThan 32, _07559 + AddToMoveScore 2 + GoTo _07559 + +_07545: + IfBattlerDealsMoreDamage AI_BATTLER_DEFENDER, USE_MAX_DAMAGE, _07559 + LoadBattlerPreviousMove AI_BATTLER_DEFENDER + IfLoadedInTable _07560, _07559 + IfRandomLessThan 80, _07559 + AddToMoveScore -1 + +_07559: + PopOrEnd + +_07560: + TableEntry MOVE_SLEEP_POWDER + TableEntry MOVE_LOVELY_KISS + TableEntry MOVE_SPORE + TableEntry MOVE_HYPNOSIS + TableEntry MOVE_SING + TableEntry MOVE_GRASS_WHISTLE + TableEntry MOVE_SHADOW_PUNCH + TableEntry MOVE_SAND_ATTACK + TableEntry MOVE_SMOKE_SCREEN + TableEntry MOVE_TOXIC + TableEntry MOVE_GUILLOTINE + TableEntry MOVE_HORN_DRILL + TableEntry MOVE_FISSURE + TableEntry MOVE_SHEER_COLD + TableEntry MOVE_CROSS_CHOP + TableEntry MOVE_AEROBLAST + TableEntry MOVE_CONFUSE_RAY + TableEntry MOVE_SWEET_KISS + TableEntry MOVE_SCREECH + TableEntry MOVE_COTTON_SPORE + TableEntry MOVE_SCARY_FACE + TableEntry MOVE_FAKE_TEARS + TableEntry MOVE_METAL_SOUND + TableEntry MOVE_THUNDER_WAVE + TableEntry MOVE_GLARE + TableEntry MOVE_POISON_POWDER + TableEntry MOVE_SHADOW_BALL + TableEntry MOVE_DYNAMIC_PUNCH + TableEntry MOVE_HYPER_BEAM + TableEntry MOVE_EXTREME_SPEED + TableEntry MOVE_THIEF + TableEntry MOVE_COVET + TableEntry MOVE_ATTRACT + TableEntry MOVE_SWAGGER + TableEntry MOVE_TORMENT + TableEntry MOVE_FLATTER + TableEntry MOVE_TRICK + TableEntry MOVE_SUPERPOWER + TableEntry MOVE_SKILL_SWAP + TableEntry MOVE_PSYCHO_SHIFT + TableEntry MOVE_POWER_SWAP + TableEntry MOVE_GUARD_SWAP + TableEntry MOVE_SUCKER_PUNCH + TableEntry MOVE_HEART_SWAP + TableEntry MOVE_SWITCHEROO + TableEntry MOVE_CAPTIVATE + TableEntry MOVE_DARK_VOID + TableEntry TABLE_END + +_07608: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07625 + IfLoadedGreaterThan MOVE_POUND, _07639 + IfLoadedGreaterThan MOVE_NONE, _07653 + IfLoadedEqualTo MOVE_NONE, _07667 + GoTo _07716 + +_07625: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07681 + IfLoadedGreaterThan MOVE_POUND, _07688 + IfLoadedEqualTo MOVE_NONE, _07695 + GoTo _07716 + +_07639: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07688 + IfLoadedGreaterThan MOVE_POUND, _07695 + IfLoadedEqualTo MOVE_NONE, _07702 + GoTo _07716 + +_07653: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07695 + IfLoadedGreaterThan MOVE_POUND, _07702 + IfLoadedEqualTo MOVE_NONE, _07709 + GoTo _07716 + +_07667: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07695 + IfLoadedGreaterThan MOVE_POUND, _07702 + IfLoadedGreaterThan MOVE_NONE, _07709 + GoTo _07716 + +_07681: + IfRandomLessThan 128, _07688 + AddToMoveScore 5 + GoTo _07716 + +_07688: + IfRandomLessThan 128, _07695 + AddToMoveScore 4 + GoTo _07716 + +_07695: + IfRandomLessThan 128, _07702 + AddToMoveScore 3 + GoTo _07716 + +_07702: + IfRandomLessThan 128, _07709 + AddToMoveScore 2 + GoTo _07716 + +_07709: + IfRandomLessThan 128, _07716 + AddToMoveScore 1 + GoTo _07716 + +_07716: + PopOrEnd + +_07717: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07734 + IfLoadedGreaterThan MOVE_POUND, _07748 + IfLoadedGreaterThan MOVE_NONE, _07762 + IfLoadedEqualTo MOVE_NONE, _07776 + GoTo _07825 + +_07734: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07790 + IfLoadedGreaterThan MOVE_POUND, _07797 + IfLoadedEqualTo MOVE_NONE, _07804 + GoTo _07825 + +_07748: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07797 + IfLoadedGreaterThan MOVE_POUND, _07804 + IfLoadedEqualTo MOVE_NONE, _07811 + GoTo _07825 + +_07762: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07804 + IfLoadedGreaterThan MOVE_POUND, _07811 + IfLoadedEqualTo MOVE_NONE, _07818 + GoTo _07825 + +_07776: + DiffStatStages AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07804 + IfLoadedGreaterThan MOVE_POUND, _07811 + IfLoadedGreaterThan MOVE_NONE, _07818 + GoTo _07825 + +_07790: + IfRandomLessThan 128, _07797 + AddToMoveScore 5 + GoTo _07825 + +_07797: + IfRandomLessThan 128, _07804 + AddToMoveScore 4 + GoTo _07825 + +_07804: + IfRandomLessThan 128, _07811 + AddToMoveScore 3 + GoTo _07825 + +_07811: + IfRandomLessThan 128, _07818 + AddToMoveScore 2 + GoTo _07825 + +_07818: + IfRandomLessThan 128, _07825 + AddToMoveScore 1 + GoTo _07825 + +_07825: + PopOrEnd + +_07826: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07874 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07874 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07874 + SumPositiveStatStages AI_BATTLER_DEFENDER + IfLoadedGreaterThan MOVE_PAY_DAY, _07854 + IfLoadedGreaterThan MOVE_MEGA_PUNCH, _07859 + IfLoadedGreaterThan MOVE_COMET_PUNCH, _07864 + IfLoadedGreaterThan MOVE_DOUBLE_SLAP, _07869 + IfLoadedGreaterThan MOVE_KARATE_CHOP, _07869 + GoTo _07874 + +_07854: + IfRandomLessThan 128, _07859 + AddToMoveScore 4 + +_07859: + IfRandomLessThan 128, _07864 + AddToMoveScore 3 + +_07864: + IfRandomLessThan 128, _07869 + AddToMoveScore 2 + +_07869: + IfRandomLessThan 128, _07874 + AddToMoveScore 1 + +_07874: + PopOrEnd + +_07875: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07889 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07889 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07889 + IfCanUseLastResort AI_BATTLER_ATTACKER, _07893 + GoTo _07895 + +_07889: + AddToMoveScore -1 + GoTo _07895 + +_07893: + AddToMoveScore 1 + +_07895: + PopOrEnd + +_07896: + IfMoveNotKnown AI_BATTLER_DEFENDER, MOVE_REST, _07902 + AddToMoveScore 1 + +_07902: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _07911 + IfRandomLessThan 128, _07911 + AddToMoveScore 1 + +_07911: + IfRandomLessThan 64, _07918 + AddToMoveScore 1 + GoTo _07918 + +_07918: + PopOrEnd + +_07919: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _07935 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _07935 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _07935 + IfRandomLessThan 64, _07937 + AddToMoveScore 1 + GoTo _07937 + +_07935: + AddToMoveScore -1 + +_07937: + PopOrEnd + +_07938: + IfRandomLessThan 128, _07958 + AddToMoveScore 1 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_ROAR, _07953 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_WHIRLWIND, _07953 + GoTo _07958 + +_07953: + IfRandomLessThan 64, _07958 + AddToMoveScore 1 + +_07958: + PopOrEnd + +_07959: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 7, _07990 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_DEFENSE, 7, _07990 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 7, _07990 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_DEFENSE, 7, _07990 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 7, _07990 + IfVolatileStatus AI_BATTLER_DEFENDER, VOLATILE_CONDITION_FOCUS_ENERGY, _07990 + GoTo _08029 + +_07990: + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 7, _08026 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_DEFENSE, 7, _08026 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 7, _08026 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_DEFENSE, 7, _08026 + IfStatStageLessThan AI_BATTLER_ATTACKER, BATTLE_STAT_EVASION, 7, _08024 + IfNotVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_FOCUS_ENERGY, _08026 + IfRandomLessThan 50, _08031 + GoTo _08029 + +_08024: + AddToMoveScore 1 + +_08026: + AddToMoveScore 1 + PopOrEnd + +_08029: + AddToMoveScore -2 + +_08031: + PopOrEnd + +_08032: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 30, _08041 + IfRandomLessThan 128, _08041 + AddToMoveScore 1 + +_08041: + PopOrEnd + +_08042: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _08077 + IfMoveKnown AI_BATTLER_DEFENDER, MOVE_EARTHQUAKE, _08060 + IfMoveKnown AI_BATTLER_DEFENDER, MOVE_EARTH_POWER, _08060 + IfMoveKnown AI_BATTLER_DEFENDER, MOVE_FISSURE, _08060 + GoTo _08062 + +_08060: + AddToMoveScore 1 + +_08062: + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_GROUND, _08075 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_GROUND, _08075 + IfRandomLessThan 128, _08077 + +_08075: + AddToMoveScore 1 + +_08077: + PopOrEnd + PopOrEnd + PopOrEnd + PopOrEnd + PopOrEnd + +_08082: + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_LIGHT_SCREEN, _08104 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_REFLECT, _08104 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SPIKES, _08134 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_STEALTH_ROCK, _08134 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_TOXIC_SPIKES, _08134 + GoTo _08145 + +_08104: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _08113 + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _08154 + +_08113: + AddToMoveScore 1 + CountAlivePartyBattlers AI_BATTLER_DEFENDER + IfLoadedEqualTo 0, _08165 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_SPIKES, _08138 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_STEALTH_ROCK, _08138 + IfSideCondition AI_BATTLER_DEFENDER, SIDE_CONDITION_TOXIC_SPIKES, _08138 + GoTo _08145 + +_08134: + AddToMoveScore -2 + GoTo _08145 + +_08138: + IfRandomLessThan 128, _08145 + AddToMoveScore -1 + GoTo _08145 + +_08145: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 70, _08154 + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_EVASION, 3, _08159 + +_08154: + IfRandomLessThan 50, _08159 + AddToMoveScore -2 + +_08159: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _08165 + AddToMoveScore -2 + +_08165: + PopOrEnd + +_08166: + LoadBattleType + IfLoadedMask BATTLE_TYPE_DOUBLES, _08191 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _08179 + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _08191 + +_08179: + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _08186 + AddToMoveScore -1 + GoTo _08191 + +_08186: + IfRandomLessThan 64, _08191 + AddToMoveScore 3 + +_08191: + PopOrEnd + +_08192: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _08209 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _08209 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _08209 + LoadCurrentWeather + IfLoadedNotEqualTo AI_WEATHER_HAILING, _08214 + AddToMoveScore 1 + GoTo _08214 + +_08209: + IfRandomLessThan 50, _08214 + AddToMoveScore -3 + +_08214: + PopOrEnd + PopOrEnd + +_08216: + IfStatStageEqualTo AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 6, _08239 + AddToMoveScore -1 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _08229 + AddToMoveScore -1 + +_08229: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_SP_ATTACK, 3, _08239 + IfRandomLessThan 50, _08239 + AddToMoveScore -2 + +_08239: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _08245 + AddToMoveScore -2 + +_08245: + LoadDefenderLastUsedMoveClass + IfLoadedNotEqualTo CLASS_PHYSICAL, _08254 + IfRandomLessThan 64, _08254 + AddToMoveScore -1 + +_08254: + PopOrEnd + +_08255: + IfRandomLessThan 128, _08275 + AddToMoveScore 1 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_ROAR, _08270 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_WHIRLWIND, _08270 + GoTo _08275 + +_08270: + IfRandomLessThan 64, _08275 + AddToMoveScore 1 + +_08275: + PopOrEnd + PopOrEnd + PopOrEnd + +_08278: + IfMoveEffectivenessEquals TYPE_MULTI_IMMUNE, _08299 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _08299 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _08299 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_ROCK_HEAD, _08297 + IfLoadedEqualTo ABILITY_MAGIC_GUARD, _08297 + GoTo _08299 + +_08297: + AddToMoveScore 1 + +_08299: + PopOrEnd + +_08300: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 80, _08312 + IfSpeedCompareEqualTo COMPARE_SPEED_SLOWER, _08312 + IfRandomLessThan 192, _08354 + GoTo _02513 + +_08312: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _08349 + IfRandomLessThan 192, _08338 + AddToMoveScore 1 + IfHasSuperEffectiveMove _08328 + IfRandomLessThan 192, _08328 + AddToMoveScore 1 + +_08328: + IfPartyMemberDealsMoreDamage USE_MAX_DAMAGE, _08333 + GoTo _08338 + +_08333: + IfRandomLessThan 128, _08338 + AddToMoveScore 1 + +_08338: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _08354 + IfRandomLessThan 128, _08354 + AddToMoveScore 1 + GoTo _08354 + +_08349: + IfRandomLessThan 50, _08354 + AddToMoveScore -1 + +_08354: + PopOrEnd + +_08355: + IfTargetIsPartner _10606 + IfCurrentMoveKills USE_MAX_DAMAGE, _08391 + FlagMoveDamageScore FALSE + IfLoadedEqualTo AI_NOT_HIGHEST_DAMAGE, _02504 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_DEFENSE, _08376 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_LAST_WHIFF_IF_HIT, _08376 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_FIRST_IF_TARGET_ATTACKING, _08376 + GoTo _08381 + +_08376: + IfRandomLessThan 51, _08381 + AddToMoveScore -2 + +_08381: + IfMoveEffectivenessEquals TYPE_MULTI_QUADRUPLE_DAMAGE, _08385 + PopOrEnd + +_08385: + IfRandomLessThan 80, _08417 + AddToMoveScore 2 + PopOrEnd + +_08391: + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_DEFENSE, _08417 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_LAST_WHIFF_IF_HIT, _08408 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_FIRST_IF_TARGET_ATTACKING, _08408 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HIT_IN_3_TURNS, _08408 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PRIORITY_1, _08413 + GoTo _08415 + +_08408: + IfRandomLessThan 170, _08417 + GoTo _08415 + +_08413: + AddToMoveScore 2 + +_08415: + AddToMoveScore 4 + +_08417: + PopOrEnd + +_08418: + IfTargetIsPartner _10606 + LoadTurnCount + IfLoadedNotEqualTo 0, _08433 + LoadCurrentMoveEffect + IfLoadedNotInTable _08434, _08433 + IfRandomLessThan 80, _08433 + AddToMoveScore 2 + +_08433: + PopOrEnd + +_08434: + TableEntry BATTLE_EFFECT_ATK_UP + TableEntry BATTLE_EFFECT_DEF_UP + TableEntry BATTLE_EFFECT_SPEED_UP + TableEntry BATTLE_EFFECT_SP_ATK_UP + TableEntry BATTLE_EFFECT_SP_DEF_UP + TableEntry BATTLE_EFFECT_ACC_UP + TableEntry BATTLE_EFFECT_EVA_UP + TableEntry BATTLE_EFFECT_ATK_DOWN + TableEntry BATTLE_EFFECT_DEF_DOWN + TableEntry BATTLE_EFFECT_SPEED_DOWN + TableEntry BATTLE_EFFECT_SP_ATK_DOWN + TableEntry BATTLE_EFFECT_SP_DEF_DOWN + TableEntry BATTLE_EFFECT_ACC_DOWN + TableEntry BATTLE_EFFECT_EVA_DOWN + TableEntry BATTLE_EFFECT_CONVERSION + TableEntry BATTLE_EFFECT_SET_LIGHT_SCREEN + TableEntry BATTLE_EFFECT_SP_DEF_UP_2 + TableEntry BATTLE_EFFECT_CRIT_UP_2 + TableEntry BATTLE_EFFECT_STATUS_CONFUSE + TableEntry BATTLE_EFFECT_ATK_UP_2 + TableEntry BATTLE_EFFECT_DEF_UP_2 + TableEntry BATTLE_EFFECT_SPEED_UP_2 + TableEntry BATTLE_EFFECT_SP_ATK_UP_2 + TableEntry BATTLE_EFFECT_SP_DEF_UP_2 + TableEntry BATTLE_EFFECT_ACC_UP_2 + TableEntry BATTLE_EFFECT_EVA_UP_2 + TableEntry BATTLE_EFFECT_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_SPEED_DOWN_2 + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_SP_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_EVA_DOWN_2 + TableEntry BATTLE_EFFECT_ACC_DOWN_2 + TableEntry BATTLE_EFFECT_SET_REFLECT + TableEntry BATTLE_EFFECT_STATUS_POISON + TableEntry BATTLE_EFFECT_STATUS_PARALYZE + TableEntry BATTLE_EFFECT_SET_SUBSTITUTE + TableEntry BATTLE_EFFECT_STATUS_LEECH_SEED + TableEntry BATTLE_EFFECT_EVA_UP_2_MINIMIZE + TableEntry BATTLE_EFFECT_CURSE + TableEntry BATTLE_EFFECT_ATK_UP_2_STATUS_CONFUSION + TableEntry BATTLE_EFFECT_CAMOUFLAGE + TableEntry BATTLE_EFFECT_STATUS_SLEEP_NEXT_TURN + TableEntry BATTLE_EFFECT_DEF_UP_DOUBLE_ROLLOUT_POWER + TableEntry BATTLE_EFFECT_TORMENT + TableEntry BATTLE_EFFECT_SP_ATK_UP_CAUSE_CONFUSION + TableEntry BATTLE_EFFECT_STATUS_BURN + TableEntry BATTLE_EFFECT_GROUND_TRAP_USER_CONTINUOUS_HEAL + TableEntry BATTLE_EFFECT_MAKE_SHARED_MOVES_UNUSEABLE + TableEntry BATTLE_EFFECT_CONFUSE_ALL + TableEntry BATTLE_EFFECT_ATK_DEF_DOWN + TableEntry BATTLE_EFFECT_DEF_SPD_UP + TableEntry BATTLE_EFFECT_ATK_DEF_UP + TableEntry BATTLE_EFFECT_SP_ATK_SP_DEF_UP + TableEntry BATTLE_EFFECT_CAMOUFLAGE + TableEntry BATTLE_EFFECT_DOUBLE_SPEED_3_TURNS + TableEntry BATTLE_EFFECT_RANDOM_STAT_UP_2 + TableEntry BATTLE_EFFECT_PREVENT_CRITS + TableEntry BATTLE_EFFECT_GIVE_GROUND_IMMUNITY + TableEntry BATTLE_EFFECT_REMOVE_HAZARDS_SCREENS_EVA_DOWN + TableEntry BATTLE_EFFECT_WHIRLPOOL + TableEntry TABLE_END + +_08496: + IfTargetIsPartner _10606 + FlagMoveDamageScore FALSE + IfLoadedNotEqualTo AI_NO_COMPARISON_MADE, _08508 + IfRandomLessThan 100, _08508 + AddToMoveScore 2 + +_08508: + PopOrEnd + +_08509: + IfTargetIsPartner _10606 + LoadCurrentMoveEffect + IfLoadedNotInTable _08521, _08520 + IfRandomLessThan 128, _08520 + AddToMoveScore 2 + +_08520: + PopOrEnd + +_08521: + TableEntry BATTLE_EFFECT_STATUS_SLEEP + TableEntry BATTLE_EFFECT_HALVE_DEFENSE + TableEntry BATTLE_EFFECT_COPY_MOVE + TableEntry BATTLE_EFFECT_ONE_HIT_KO + TableEntry BATTLE_EFFECT_HIGH_CRITICAL + TableEntry BATTLE_EFFECT_STATUS_CONFUSE + TableEntry BATTLE_EFFECT_CALL_RANDOM_MOVE + TableEntry BATTLE_EFFECT_RANDOM_DAMAGE_1_TO_150_LEVEL + TableEntry BATTLE_EFFECT_COUNTER + TableEntry BATTLE_EFFECT_KO_MON_THAT_DEFEATED_USER + TableEntry BATTLE_EFFECT_ATK_UP_2_STATUS_CONFUSION + TableEntry BATTLE_EFFECT_INFATUATE + TableEntry BATTLE_EFFECT_RANDOM_POWER_MAYBE_HEAL + TableEntry BATTLE_EFFECT_RAISE_ALL_STATS_HIT + TableEntry BATTLE_EFFECT_MAX_ATK_LOSE_HALF_MAX_HP + TableEntry BATTLE_EFFECT_MIRROR_COAT + TableEntry BATTLE_EFFECT_HIT_LAST_WHIFF_IF_HIT + TableEntry BATTLE_EFFECT_DOUBLE_POWER_IF_HIT + TableEntry BATTLE_EFFECT_CONFUSE_ALL + TableEntry BATTLE_EFFECT_POWER_BASED_ON_LOW_SPEED + TableEntry BATTLE_EFFECT_RANDOM_STAT_UP_2 + TableEntry BATTLE_EFFECT_METAL_BURST + TableEntry BATTLE_EFFECT_DOUBLE_POWER_IF_MOVING_SECOND + TableEntry BATTLE_EFFECT_USE_MOVE_FIRST + TableEntry BATTLE_EFFECT_HIT_FIRST_IF_TARGET_ATTACKING + TableEntry TABLE_END + +_08547: + IfTargetIsPartner _10606 + CountAlivePartyBattlers AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _08645 + FlagMoveDamageScore FALSE + IfLoadedNotEqualTo AI_NO_COMPARISON_MADE, _08645 + IfMoveEffectKnown AI_BATTLER_ATTACKER, BATTLE_EFFECT_PASS_STATS_AND_STATUS, _08566 + IfRandomLessThan 80, _08520 + +_08566: + IfMoveEqualTo MOVE_SWORDS_DANCE, _08589 + IfMoveEqualTo MOVE_DRAGON_DANCE, _08589 + IfMoveEqualTo MOVE_CALM_MIND, _08589 + IfMoveEqualTo MOVE_NASTY_PLOT, _08589 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PROTECT, _08599 + IfMoveEqualTo MOVE_BATON_PASS, _08610 + IfRandomLessThan 20, _08520 + AddToMoveScore 3 + +_08589: + LoadTurnCount + IfLoadedEqualTo 0, _02540 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 60, _02522 + GoTo _02531 + +_08599: + LoadBattlerPreviousMove AI_BATTLER_ATTACKER + IfLoadedInTable _08607, _02507 + AddToMoveScore 2 + PopOrEnd + +_08607: + TableEntry MOVE_PROTECT + TableEntry MOVE_DETECT + TableEntry TABLE_END + +_08610: + LoadTurnCount + IfLoadedEqualTo 0, _02507 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 8, _02537 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 7, _02534 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_ATTACK, 6, _02531 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 8, _02537 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 7, _02534 + IfStatStageGreaterThan AI_BATTLER_ATTACKER, BATTLE_STAT_SP_ATTACK, 6, _02531 + PopOrEnd + +_08645: + PopOrEnd + +_08646: + IfTargetIsPartner _09658 + FlagMoveDamageScore FALSE + IfLoadedEqualTo AI_NO_COMPARISON_MADE, _08766 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ONE_HIT_KO, _08704 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_40_DAMAGE_FLAT, _08704 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_LEVEL_DAMAGE_FLAT, _08704 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_DAMAGE_1_TO_150_LEVEL, _08704 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_10_DAMAGE_FLAT, _08704 + IfMoveEffectivenessEquals TYPE_MULTI_HALF_DAMAGE, _08676 + IfMoveEffectivenessEquals TYPE_MULTI_QUARTER_DAMAGE, _08690 + GoTo _08704 + +_08676: + IfCurrentMoveKills USE_MAX_DAMAGE, _08704 + IfHPPercentEqualTo AI_BATTLER_DEFENDER_PARTNER, 0, _08704 + IfRandomLessThan 64, _08704 + AddToMoveScore -1 + GoTo _08704 + +_08690: + IfCurrentMoveKills USE_MAX_DAMAGE, _08704 + IfHPPercentEqualTo AI_BATTLER_DEFENDER_PARTNER, 0, _08704 + IfRandomLessThan 64, _08704 + AddToMoveScore -2 + GoTo _08704 + +_08704: + CheckIfHighestDamageWithPartner USE_MAX_DAMAGE + IfLoadedNotEqualTo AI_MOVE_IS_HIGHEST_DAMAGE, _08729 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_HALVE_DEFENSE, _08766 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_PRIORITY_1, _08722 + IfRandomLessThan 128, _08729 + AddToMoveScore 1 + GoTo _08766 + +_08722: + IfRandomLessThan 50, _08729 + AddToMoveScore 1 + GoTo _08766 + +_08729: + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ONE_HIT_KO, _08766 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_40_DAMAGE_FLAT, _08766 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_LEVEL_DAMAGE_FLAT, _08766 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_DAMAGE_1_TO_150_LEVEL, _08766 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_10_DAMAGE_FLAT, _08766 + IfMoveEffectivenessEquals TYPE_MULTI_DOUBLE_DAMAGE, _08752 + IfMoveEffectivenessEquals TYPE_MULTI_QUADRUPLE_DAMAGE, _08759 + GoTo _08766 + +_08752: + IfRandomLessThan 100, _08766 + AddToMoveScore 1 + GoTo _08766 + +_08759: + IfRandomLessThan 64, _08766 + AddToMoveScore 1 + GoTo _08766 + +_08766: + IfMoveEqualTo MOVE_SKILL_SWAP, _09455 + LoadTypeFrom LOAD_MOVE_TYPE + IfMoveEqualTo MOVE_EARTHQUAKE, _09339 + IfMoveEqualTo MOVE_MAGNITUDE, _09339 + IfMoveEqualTo MOVE_FUTURE_SIGHT, _09381 + IfMoveEqualTo MOVE_DOOM_DESIRE, _09381 + IfMoveEqualTo MOVE_RAIN_DANCE, _08820 + IfMoveEqualTo MOVE_SUNNY_DAY, _08861 + IfMoveEqualTo MOVE_HAIL, _08958 + IfMoveEqualTo MOVE_SANDSTORM, _08995 + IfMoveEqualTo MOVE_GRAVITY, _09037 + IfMoveEqualTo MOVE_TRICK_ROOM, _09135 + IfMoveEqualTo MOVE_FOLLOW_ME, _09207 + LoadTypeFrom LOAD_MOVE_TYPE + IfLoadedEqualTo TYPE_ELECTRIC, _09493 + IfLoadedEqualTo TYPE_FIRE, _09607 + IfLoadedEqualTo TYPE_WATER, _09558 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_HELPING_HAND, _09302 + PopOrEnd + +_08820: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_HYDRATION, _08830 + IfLoadedEqualTo ABILITY_DRY_SKIN, _08834 + GoTo _08838 + +_08830: + IfNotStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _08838 + +_08834: + AddToMoveScore 2 + GoTo _08838 + +_08838: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_HYDRATION + IfLoadedEqualTo AI_HAVE, _08852 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_DRY_SKIN + IfLoadedEqualTo AI_HAVE, _08856 + GoTo _08860 + +_08852: + IfNotStatus AI_BATTLER_ATTACKER_PARTNER, MON_CONDITION_ANY, _08860 + +_08856: + AddToMoveScore 2 + GoTo _08860 + +_08860: + PopOrEnd + +_08861: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_LEAF_GUARD, _08877 + IfLoadedEqualTo ABILITY_FLOWER_GIFT, _08885 + IfLoadedEqualTo ABILITY_DRY_SKIN, _08889 + IfLoadedEqualTo ABILITY_SOLAR_POWER, _08893 + GoTo _08904 + +_08877: + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _08904 + IfHPPercentLessThan AI_BATTLER_ATTACKER, 30, _08904 + +_08885: + AddToMoveScore 2 + GoTo _08904 + +_08889: + AddToMoveScore -2 + GoTo _08904 + +_08893: + IfHPPercentLessThan AI_BATTLER_ATTACKER, 50, _08899 + AddToMoveScore 1 + +_08899: + IfRandomLessThan 128, _08904 + AddToMoveScore -2 + +_08904: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_LEAF_GUARD + IfLoadedEqualTo AI_HAVE, _08930 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_FLOWER_GIFT + IfLoadedEqualTo AI_HAVE, _08938 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_DRY_SKIN + IfLoadedEqualTo AI_HAVE, _08942 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_SOLAR_POWER + IfLoadedEqualTo AI_HAVE, _08946 + GoTo _08957 + +_08930: + IfStatus AI_BATTLER_ATTACKER_PARTNER, MON_CONDITION_ANY, _08957 + IfHPPercentLessThan AI_BATTLER_ATTACKER_PARTNER, 30, _08957 + +_08938: + AddToMoveScore 2 + GoTo _08957 + +_08942: + AddToMoveScore -2 + GoTo _08957 + +_08946: + IfHPPercentLessThan AI_BATTLER_ATTACKER_PARTNER, 50, _08952 + AddToMoveScore 1 + +_08952: + IfRandomLessThan 128, _08957 + AddToMoveScore -2 + +_08957: + PopOrEnd + +_08958: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_ICE_BODY, _08972 + IfLoadedEqualTo ABILITY_SNOW_CLOAK, _08972 + IfMoveKnown AI_BATTLER_ATTACKER, MOVE_BLIZZARD, _08972 + GoTo _08974 + +_08972: + AddToMoveScore 2 + +_08974: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_ICE_BODY + IfLoadedEqualTo AI_HAVE, _08992 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_SNOW_CLOAK + IfLoadedEqualTo AI_HAVE, _08992 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_BLIZZARD, _08992 + GoTo _08994 + +_08992: + AddToMoveScore 2 + +_08994: + PopOrEnd + +_08995: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_SAND_VEIL, _09012 + LoadTypeFrom LOAD_ATTACKER_TYPE_1 + IfLoadedEqualTo TYPE_ROCK, _09012 + LoadTypeFrom LOAD_ATTACKER_TYPE_2 + IfLoadedEqualTo TYPE_ROCK, _09012 + GoTo _09016 + +_09012: + AddToMoveScore 2 + GoTo _09016 + +_09016: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_SAND_VEIL + IfLoadedEqualTo AI_HAVE, _09034 + LoadTypeFrom LOAD_ATTACKER_PARTNER_TYPE_1 + IfLoadedEqualTo TYPE_ROCK, _09034 + LoadTypeFrom LOAD_ATTACKER_PARTNER_TYPE_2 + IfLoadedEqualTo TYPE_ROCK, _09034 + GoTo _09036 + +_09034: + AddToMoveScore 2 + +_09036: + PopOrEnd + +_09037: + IfFieldConditionsMask FIELD_CONDITION_GRAVITY, _10183 + CheckBattlerAbility AI_BATTLER_ATTACKER, ABILITY_LEVITATE + IfLoadedEqualTo AI_HAVE, _09058 + FlagBattlerIsType AI_BATTLER_ATTACKER, TYPE_FLYING + IfLoadedEqualTo AI_HAVE, _09058 + IfMoveEffect AI_BATTLER_ATTACKER, MOVE_EFFECT_MAGNET_RISE, _09058 + GoTo _09062 + +_09058: + AddToMoveScore -5 + GoTo _09062 + +_09062: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_LEVITATE + IfLoadedEqualTo AI_HAVE, _09080 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_FLYING + IfLoadedEqualTo AI_HAVE, _09080 + IfMoveEffect AI_BATTLER_ATTACKER_PARTNER, MOVE_EFFECT_MAGNET_RISE, _09080 + GoTo _09084 + +_09080: + AddToMoveScore -5 + GoTo _09084 + +_09084: + CheckBattlerAbility AI_BATTLER_DEFENDER, ABILITY_LEVITATE + IfLoadedEqualTo AI_HAVE, _09102 + FlagBattlerIsType AI_BATTLER_DEFENDER, TYPE_FLYING + IfLoadedEqualTo AI_HAVE, _09102 + IfMoveEffect AI_BATTLER_DEFENDER, MOVE_EFFECT_MAGNET_RISE, _09102 + GoTo _09109 + +_09102: + IfRandomLessThan 64, _09109 + AddToMoveScore 3 + GoTo _09109 + +_09109: + CheckBattlerAbility AI_BATTLER_DEFENDER_PARTNER, ABILITY_LEVITATE + IfLoadedEqualTo AI_HAVE, _09127 + FlagBattlerIsType AI_BATTLER_DEFENDER_PARTNER, TYPE_FLYING + IfLoadedEqualTo AI_HAVE, _09127 + IfMoveEffect AI_BATTLER_DEFENDER_PARTNER, MOVE_EFFECT_MAGNET_RISE, _09127 + GoTo _09134 + +_09127: + IfRandomLessThan 64, _09134 + AddToMoveScore 3 + GoTo _09134 + +_09134: + PopOrEnd + +_09135: + IfHPPercentEqualTo AI_BATTLER_ATTACKER_PARTNER, 0, _02528 + IfHPPercentEqualTo AI_BATTLER_DEFENDER_PARTNER, 0, _02528 + IfHPPercentEqualTo AI_BATTLER_DEFENDER, 0, _02528 + LoadBattlerSpeedRank AI_BATTLER_ATTACKER + IfLoadedEqualTo 0, _09163 + IfLoadedEqualTo 1, _09173 + IfLoadedEqualTo 2, _09180 + IfLoadedEqualTo 3, _09192 + GoTo _09206 + +_09163: + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedEqualTo 1, _02528 + IfLoadedEqualTo 0, _02528 + GoTo _09204 + +_09173: + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedEqualTo 0, _02528 + GoTo _09204 + +_09180: + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedNotEqualTo 3, _09204 + IfRandomLessThan 64, _09204 + AddToMoveScore 5 + GoTo _09206 + +_09192: + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedNotEqualTo 2, _09204 + IfRandomLessThan 64, _09204 + AddToMoveScore 5 + GoTo _09206 + +_09204: + AddToMoveScore -5 + +_09206: + PopOrEnd + +_09207: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 90, _09224 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 50, _09238 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _09252 + IfRandomLessThan 64, _09301 + GoTo _02513 + +_09224: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 90, _09266 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 50, _09280 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 30, _09287 + GoTo _09294 + +_09238: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 90, _09273 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 50, _09266 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 30, _09280 + GoTo _09287 + +_09252: + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 90, _09273 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 50, _09273 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 30, _09280 + GoTo _09287 + +_09266: + IfRandomLessThan 64, _09301 + AddToMoveScore -1 + GoTo _09301 + +_09273: + IfRandomLessThan 64, _09301 + AddToMoveScore -2 + GoTo _09301 + +_09280: + IfRandomLessThan 64, _09301 + AddToMoveScore 1 + GoTo _09301 + +_09287: + IfRandomLessThan 64, _09301 + AddToMoveScore 2 + GoTo _09301 + +_09294: + IfRandomLessThan 64, _09301 + AddToMoveScore 3 + GoTo _09301 + +_09301: + PopOrEnd + +_09302: + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_ONE_HIT_KO, _09322 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_40_DAMAGE_FLAT, _09322 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_LEVEL_DAMAGE_FLAT, _09322 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_RANDOM_DAMAGE_1_TO_150_LEVEL, _09322 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_10_DAMAGE_FLAT, _09322 + FlagMoveDamageScore FALSE + IfLoadedNotEqualTo AI_NO_COMPARISON_MADE, _02531 + +_09322: + PopOrEnd + IfStatus AI_BATTLER_ATTACKER, MON_CONDITION_ANY, _09328 + PopOrEnd + +_09328: + FlagMoveDamageScore FALSE + IfLoadedEqualTo AI_NO_COMPARISON_MADE, _02513 + AddToMoveScore 1 + IfLoadedEqualTo AI_MOVE_IS_HIGHEST_DAMAGE, _02534 + PopOrEnd + +_09339: + IfMoveEffect AI_BATTLER_ATTACKER_PARTNER, MOVE_EFFECT_MAGNET_RISE, _02534 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_LEVITATE + IfLoadedEqualTo AI_HAVE, _02534 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_FLYING + IfLoadedEqualTo AI_HAVE, _02534 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_FIRE + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_ELECTRIC + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_POISON + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_ROCK + IfLoadedEqualTo AI_HAVE, _02522 + GoTo _02510 + +_09381: + IfHPPercentEqualTo AI_BATTLER_ATTACKER_PARTNER, 0, _09454 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_FUTURE_SIGHT, _09395 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_DOOM_DESIRE, _09395 + GoTo _09454 + +_09395: + LoadBattlerSpeedRank AI_BATTLER_ATTACKER + IfLoadedEqualTo 3, _02510 + IfLoadedEqualTo 2, _09411 + IfLoadedEqualTo 1, _09429 + IfLoadedEqualTo 0, _09444 + GoTo _09454 + +_09411: + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedEqualTo 0, _02510 + IfLoadedEqualTo 1, _02510 + IfRandomLessThan 128, _09454 + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedEqualTo 2, _02510 + GoTo _09454 + +_09429: + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedEqualTo 0, _02510 + IfRandomLessThan 128, _09454 + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedEqualTo 1, _02510 + GoTo _09454 + +_09444: + IfRandomLessThan 128, _09454 + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedEqualTo 0, _02510 + GoTo _09454 + +_09454: + PopOrEnd + +_09455: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_TRUANT, _02540 + IfLoadedEqualTo ABILITY_SLOW_START, _02540 + IfLoadedEqualTo ABILITY_STALL, _02540 + IfLoadedEqualTo ABILITY_KLUTZ, _02540 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_SHADOW_TAG, _02534 + IfLoadedEqualTo ABILITY_PURE_POWER, _02534 + IfLoadedEqualTo ABILITY_HUGE_POWER, _02534 + IfLoadedEqualTo ABILITY_MOLD_BREAKER, _02534 + IfLoadedEqualTo ABILITY_SOLID_ROCK, _02534 + IfLoadedEqualTo ABILITY_FILTER, _02534 + IfLoadedEqualTo ABILITY_FLOWER_GIFT, _02534 + PopOrEnd + +_09493: + IfMoveEqualTo MOVE_DISCHARGE, _09525 + CheckBattlerAbility AI_BATTLER_DEFENDER_PARTNER, ABILITY_LIGHTNING_ROD + IfLoadedEqualTo AI_HAVE, _09504 + GoTo _09514 + +_09504: + AddToMoveScore -1 + FlagBattlerIsType AI_BATTLER_DEFENDER_PARTNER, TYPE_GROUND + IfLoadedEqualTo AI_NOT_HAVE, _09514 + AddToMoveScore -8 + +_09514: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_LIGHTNING_ROD + IfLoadedEqualTo AI_HAVE, _02522 + IfMoveEqualTo MOVE_DISCHARGE, _09525 + GoTo _09557 + +_09525: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_MOTOR_DRIVE + IfLoadedEqualTo AI_HAVE, _02537 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_VOLT_ABSORB + IfLoadedEqualTo AI_HAVE, _02537 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_WATER + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_FLYING + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_GROUND + IfLoadedEqualTo AI_HAVE, _02537 + AddToMoveScore -3 + +_09557: + PopOrEnd + +_09558: + IfMoveEqualTo MOVE_SURF, _09580 + CheckBattlerAbility AI_BATTLER_DEFENDER_PARTNER, ABILITY_STORM_DRAIN + IfLoadedEqualTo AI_NOT_HAVE, _09569 + AddToMoveScore -1 + +_09569: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_STORM_DRAIN + IfLoadedEqualTo AI_HAVE, _02522 + IfMoveEqualTo MOVE_SURF, _09580 + GoTo _09606 + +_09580: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_DRY_SKIN + IfLoadedEqualTo AI_HAVE, _02537 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_WATER_ABSORB + IfLoadedEqualTo AI_HAVE, _02537 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_GROUND + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_FIRE + IfLoadedEqualTo AI_HAVE, _02522 + AddToMoveScore -3 + +_09606: + PopOrEnd + +_09607: + IfActivatedFlashFire AI_BATTLER_ATTACKER, _09612 + GoTo _09614 + +_09612: + AddToMoveScore 1 + +_09614: + IfMoveEqualTo MOVE_LAVA_PLUME, _09619 + GoTo _09657 + +_09619: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_DRY_SKIN + IfLoadedEqualTo AI_HAVE, _02510 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_FLASH_FIRE + IfLoadedEqualTo AI_HAVE, _02537 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_GRASS + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_STEEL + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_ICE + IfLoadedEqualTo AI_HAVE, _02522 + FlagBattlerIsType AI_BATTLER_ATTACKER_PARTNER, TYPE_BUG + IfLoadedEqualTo AI_HAVE, _02522 + AddToMoveScore -3 + +_09657: + PopOrEnd + +_09658: + IfBattlerFainted AI_BATTLER_ATTACKER_PARTNER, _10183 + FlagMoveDamageScore FALSE + IfLoadedEqualTo AI_NO_COMPARISON_MADE, _09801 + LoadTypeFrom LOAD_MOVE_TYPE + IfLoadedEqualTo TYPE_FIRE, _09682 + IfLoadedEqualTo TYPE_ELECTRIC, _09695 + IfLoadedEqualTo TYPE_WATER, _09753 + IfMoveEqualTo MOVE_FLING, _10062 + +_09680: + GoTo _02528 + +_09682: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_FLASH_FIRE + IfLoadedEqualTo AI_HAVE, _09690 + GoTo _09680 + +_09690: + IfActivatedFlashFire AI_BATTLER_ATTACKER_PARTNER, _09680 + GoTo _02537 + +_09695: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_MOTOR_DRIVE + IfLoadedEqualTo AI_HAVE, _09709 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_VOLT_ABSORB + IfLoadedEqualTo AI_HAVE, _09719 + GoTo _09680 + +_09709: + IfRandomLessThan 160, _09752 + IfStatStageEqualTo AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_SPEED, 12, _09680 + GoTo _02537 + +_09719: + IfHPPercentEqualTo AI_BATTLER_ATTACKER_PARTNER, 100, _02522 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 90, _09752 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 75, _09737 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 50, _09742 + GoTo _09747 + +_09737: + IfRandomLessThan 64, _02537 + GoTo _09752 + +_09742: + IfRandomLessThan 128, _02537 + GoTo _09752 + +_09747: + IfRandomLessThan 192, _02537 + GoTo _09752 + +_09752: + PopOrEnd + +_09753: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_WATER_ABSORB + IfLoadedEqualTo AI_HAVE, _09767 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_DRY_SKIN + IfLoadedEqualTo AI_HAVE, _09767 + GoTo _09680 + +_09767: + IfHPPercentEqualTo AI_BATTLER_ATTACKER_PARTNER, 100, _02522 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 90, _09800 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 75, _09785 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 50, _09790 + GoTo _09795 + +_09785: + IfRandomLessThan 64, _02537 + GoTo _09800 + +_09790: + IfRandomLessThan 128, _02537 + GoTo _09800 + +_09795: + IfRandomLessThan 192, _02537 + GoTo _09800 + +_09800: + PopOrEnd + +_09801: + IfMoveEqualTo MOVE_SKILL_SWAP, _09836 + IfMoveEqualTo MOVE_WILL_O_WISP, _09939 + IfMoveEqualTo MOVE_THUNDER_WAVE, _09979 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_BADLY_POISON, _10003 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_STATUS_POISON, _10003 + IfMoveEqualTo MOVE_HELPING_HAND, _10023 + IfMoveEqualTo MOVE_SWAGGER, _10044 + IfMoveEqualTo MOVE_TRICK, _10062 + IfMoveEqualTo MOVE_SWITCHEROO, _10062 + IfMoveEqualTo MOVE_GASTRO_ACID, _10063 + IfMoveEqualTo MOVE_ACUPRESSURE, _10084 + GoTo _10183 + +_09836: + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_TRUANT, _02543 + IfLoadedEqualTo ABILITY_SLOW_START, _02543 + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedNotEqualTo ABILITY_LEVITATE, _09869 + LoadBattlerAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_LEVITATE, _10183 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedNotEqualTo TYPE_ELECTRIC, _09869 + AddToMoveScore 1 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedNotEqualTo TYPE_ELECTRIC, _09869 + AddToMoveScore 1 + PopOrEnd + +_09869: + LoadBattlerAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_COMPOUND_EYES, _09879 + IfLoadedEqualTo ABILITY_NO_GUARD, _09879 + GoTo _10183 + +_09879: + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_FIRE_BLAST, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_THUNDER, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_CROSS_CHOP, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_HYDRO_PUMP, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_DYNAMIC_PUNCH, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_BLIZZARD, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_ZAP_CANNON, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_MEGAHORN, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_FOCUS_BLAST, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_GUNK_SHOT, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_MAGMA_STORM, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_POWER_WHIP, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_SEED_FLARE, _09937 + IfMoveKnown AI_BATTLER_ATTACKER_PARTNER, MOVE_HEAD_SMASH, _09937 + GoTo _10183 + +_09937: + GoTo _02537 + +_09939: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_FLASH_FIRE + IfLoadedEqualTo AI_HAVE, _09682 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_GUTS + IfLoadedNotEqualTo AI_HAVE, _10183 + IfStatus AI_BATTLER_ATTACKER_PARTNER, MON_CONDITION_ANY, _10183 + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_FIRE, _10183 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_FIRE, _10183 + IfHeldItemEqualTo AI_BATTLER_ATTACKER_PARTNER, ITEM_FLAME_ORB, _10183 + IfHeldItemEqualTo AI_BATTLER_ATTACKER_PARTNER, ITEM_TOXIC_ORB, _10183 + IfHPPercentLessThan AI_BATTLER_ATTACKER_PARTNER, 81, _10183 + GoTo _02540 + +_09979: + LoadTypeFrom LOAD_DEFENDER_TYPE_1 + IfLoadedEqualTo TYPE_GROUND, _10183 + LoadTypeFrom LOAD_DEFENDER_TYPE_2 + IfLoadedEqualTo TYPE_GROUND, _10183 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_MOTOR_DRIVE + IfLoadedEqualTo AI_HAVE, _09695 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_VOLT_ABSORB + IfLoadedEqualTo AI_HAVE, _09695 + GoTo _10183 + +_10003: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_POISON_HEAL + IfLoadedNotEqualTo AI_HAVE, _10183 + IfStatus AI_BATTLER_DEFENDER, MON_CONDITION_ANY, _10183 + IfHeldItemEqualTo AI_BATTLER_ATTACKER_PARTNER, ITEM_TOXIC_ORB, _10183 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 91, _10183 + GoTo _02540 + +_10023: + IfHPPercentEqualTo AI_BATTLER_ATTACKER_PARTNER, 0, _02528 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 50, _10038 + LoadBattlerSpeedRank AI_BATTLER_ATTACKER_PARTNER + IfLoadedLessThan 1, _10038 + GoTo _10043 + +_10038: + IfRandomLessThan 64, _02504 + AddToMoveScore 2 + +_10043: + PopOrEnd + +_10044: + IfHeldItemEqualTo AI_BATTLER_DEFENDER, ITEM_PERSIM_BERRY, _10054 + IfHeldItemEqualTo AI_BATTLER_DEFENDER, ITEM_LUM_BERRY, _10054 + GoTo _10183 + +_10054: + IfStatStageGreaterThan AI_BATTLER_DEFENDER, BATTLE_STAT_ATTACK, 7, _10061 + AddToMoveScore 3 + +_10061: + PopOrEnd + +_10062: + PopOrEnd + +_10063: + IfMoveEffect AI_BATTLER_ATTACKER_PARTNER, MOVE_EFFECT_ABILITY_SUPPRESSED, _10183 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_TRUANT + IfLoadedEqualTo AI_HAVE, _10081 + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_SLOW_START + IfLoadedEqualTo AI_HAVE, _10081 + GoTo _10083 + +_10081: + AddToMoveScore 5 + +_10083: + PopOrEnd + +_10084: + CheckBattlerAbility AI_BATTLER_ATTACKER_PARTNER, ABILITY_SIMPLE + IfLoadedEqualTo AI_HAVE, _10127 + IfStatStageEqualTo AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_ATTACK, 12, _10183 + IfStatStageEqualTo AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_DEFENSE, 12, _10183 + IfStatStageEqualTo AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_SPEED, 12, _10183 + IfStatStageEqualTo AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_SP_ATTACK, 12, _10183 + IfStatStageEqualTo AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_SP_DEFENSE, 12, _10183 + IfStatStageEqualTo AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_EVASION, 12, _10183 + IfStatStageEqualTo AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_ACCURACY, 12, _10183 + GoTo _10162 + +_10127: + IfStatStageGreaterThan AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_ATTACK, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_DEFENSE, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_SPEED, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_SP_ATTACK, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_SP_DEFENSE, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_EVASION, 8, _02522 + IfStatStageGreaterThan AI_BATTLER_ATTACKER_PARTNER, BATTLE_STAT_ACCURACY, 8, _02522 + +_10162: + IfHPPercentLessThan AI_BATTLER_ATTACKER_PARTNER, 51, _10180 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER_PARTNER, 90, _10173 + IfRandomLessThan 128, _10182 + +_10173: + IfRandomLessThan 80, _10182 + AddToMoveScore 2 + GoTo _10182 + +_10180: + AddToMoveScore -1 + +_10182: + PopOrEnd + +_10183: + AddToMoveScore -30 + PopOrEnd + +_10186: + IfTargetIsPartner _09658 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 70, _10202 + IfHPPercentGreaterThan AI_BATTLER_ATTACKER, 30, _10208 + LoadCurrentMoveEffect + IfLoadedInTable _10311, _10214 + GoTo _10219 + +_10202: + LoadCurrentMoveEffect + IfLoadedInTable _10251, _10214 + GoTo _10219 + +_10208: + LoadCurrentMoveEffect + IfLoadedInTable _10264, _10214 + GoTo _10219 + +_10214: + IfRandomLessThan 50, _10219 + AddToMoveScore -2 + +_10219: + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 70, _10233 + IfHPPercentGreaterThan AI_BATTLER_DEFENDER, 30, _10239 + LoadCurrentMoveEffect + IfLoadedInTable _10407, _10245 + GoTo _10250 + +_10233: + LoadCurrentMoveEffect + IfLoadedInTable _10363, _10245 + GoTo _10250 + +_10239: + LoadCurrentMoveEffect + IfLoadedInTable _10364, _10245 + GoTo _10250 + +_10245: + IfRandomLessThan 50, _10250 + AddToMoveScore -2 + +_10250: + PopOrEnd + +_10251: + TableEntry BATTLE_EFFECT_HALVE_DEFENSE + TableEntry BATTLE_EFFECT_RESTORE_HALF_HP + TableEntry BATTLE_EFFECT_REST + TableEntry BATTLE_EFFECT_KO_MON_THAT_DEFEATED_USER + TableEntry BATTLE_EFFECT_INCREASE_POWER_WITH_LESS_HP + TableEntry BATTLE_EFFECT_SURVIVE_WITH_1_HP + TableEntry BATTLE_EFFECT_HEAL_HALF_MORE_IN_SUN + TableEntry BATTLE_EFFECT_FAINT_AND_ATK_SP_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_REMOVE_ALL_PP_ON_DEFEAT + TableEntry BATTLE_EFFECT_HEAL_HALF_REMOVE_FLYING_TYPE + TableEntry BATTLE_EFFECT_FAINT_AND_FULL_HEAL_NEXT_MON + TableEntry BATTLE_EFFECT_FAINT_FULL_RESTORE_NEXT_MON + TableEntry TABLE_END + +_10264: + TableEntry BATTLE_EFFECT_HALVE_DEFENSE + TableEntry BATTLE_EFFECT_ATK_UP + TableEntry BATTLE_EFFECT_DEF_UP + TableEntry BATTLE_EFFECT_SPEED_UP + TableEntry BATTLE_EFFECT_SP_ATK_UP + TableEntry BATTLE_EFFECT_SP_DEF_UP + TableEntry BATTLE_EFFECT_ACC_UP + TableEntry BATTLE_EFFECT_EVA_UP + TableEntry BATTLE_EFFECT_ATK_DOWN + TableEntry BATTLE_EFFECT_DEF_DOWN + TableEntry BATTLE_EFFECT_SPEED_DOWN + TableEntry BATTLE_EFFECT_SP_ATK_DOWN + TableEntry BATTLE_EFFECT_SP_DEF_DOWN + TableEntry BATTLE_EFFECT_ACC_DOWN + TableEntry BATTLE_EFFECT_EVA_DOWN + TableEntry BATTLE_EFFECT_BIDE + TableEntry BATTLE_EFFECT_CONVERSION + TableEntry BATTLE_EFFECT_SET_LIGHT_SCREEN + TableEntry BATTLE_EFFECT_PREVENT_STAT_REDUCTION + TableEntry BATTLE_EFFECT_CRIT_UP_2 + TableEntry BATTLE_EFFECT_ATK_UP_2 + TableEntry BATTLE_EFFECT_DEF_UP_2 + TableEntry BATTLE_EFFECT_SPEED_UP_2 + TableEntry BATTLE_EFFECT_SP_ATK_UP_2 + TableEntry BATTLE_EFFECT_SP_DEF_UP_2 + TableEntry BATTLE_EFFECT_ACC_UP_2 + TableEntry BATTLE_EFFECT_EVA_UP_2 + TableEntry BATTLE_EFFECT_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_SPEED_DOWN_2 + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_SP_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_EVA_DOWN_2 + TableEntry BATTLE_EFFECT_ACC_DOWN_2 + TableEntry BATTLE_EFFECT_CONVERSION2 + TableEntry BATTLE_EFFECT_PREVENT_STATUS + TableEntry BATTLE_EFFECT_MAX_ATK_LOSE_HALF_MAX_HP + TableEntry BATTLE_EFFECT_ATK_DEF_DOWN + TableEntry BATTLE_EFFECT_DEF_SPD_UP + TableEntry BATTLE_EFFECT_ATK_DEF_UP + TableEntry BATTLE_EFFECT_SP_ATK_SP_DEF_UP + TableEntry BATTLE_EFFECT_ATK_SPD_UP + TableEntry BATTLE_EFFECT_PREVENT_CRITS + TableEntry BATTLE_EFFECT_SWAP_ATK_SP_ATK_STAT_CHANGES + TableEntry BATTLE_EFFECT_SWAP_DEF_SP_DEF_STAT_CHANGES + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2_OPPOSITE_GENDER + TableEntry TABLE_END + +_10311: + TableEntry BATTLE_EFFECT_ATK_UP + TableEntry BATTLE_EFFECT_DEF_UP + TableEntry BATTLE_EFFECT_SPEED_UP + TableEntry BATTLE_EFFECT_SP_ATK_UP + TableEntry BATTLE_EFFECT_SP_DEF_UP + TableEntry BATTLE_EFFECT_ACC_UP + TableEntry BATTLE_EFFECT_EVA_UP + TableEntry BATTLE_EFFECT_ATK_DOWN + TableEntry BATTLE_EFFECT_DEF_DOWN + TableEntry BATTLE_EFFECT_SPEED_DOWN + TableEntry BATTLE_EFFECT_SP_ATK_DOWN + TableEntry BATTLE_EFFECT_SP_DEF_DOWN + TableEntry BATTLE_EFFECT_ACC_DOWN + TableEntry BATTLE_EFFECT_EVA_DOWN + TableEntry BATTLE_EFFECT_BIDE + TableEntry BATTLE_EFFECT_CONVERSION + TableEntry BATTLE_EFFECT_SET_LIGHT_SCREEN + TableEntry BATTLE_EFFECT_PREVENT_STAT_REDUCTION + TableEntry BATTLE_EFFECT_CRIT_UP_2 + TableEntry BATTLE_EFFECT_ATK_UP_2 + TableEntry BATTLE_EFFECT_DEF_UP_2 + TableEntry BATTLE_EFFECT_SPEED_UP_2 + TableEntry BATTLE_EFFECT_SP_ATK_UP_2 + TableEntry BATTLE_EFFECT_SP_DEF_UP_2 + TableEntry BATTLE_EFFECT_ACC_UP_2 + TableEntry BATTLE_EFFECT_EVA_UP_2 + TableEntry BATTLE_EFFECT_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_SPEED_DOWN_2 + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_SP_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_EVA_DOWN_2 + TableEntry BATTLE_EFFECT_ACC_DOWN_2 + TableEntry BATTLE_EFFECT_RAISE_ATK_WHEN_HIT + TableEntry BATTLE_EFFECT_CONVERSION2 + TableEntry BATTLE_EFFECT_NEXT_ATTACK_ALWAYS_HITS + TableEntry BATTLE_EFFECT_PREVENT_STATUS + TableEntry BATTLE_EFFECT_MAX_ATK_LOSE_HALF_MAX_HP + TableEntry BATTLE_EFFECT_COPY_STAT_CHANGES + TableEntry BATTLE_EFFECT_MIRROR_COAT + TableEntry BATTLE_EFFECT_DECREASE_POWER_WITH_LESS_USER_HP + TableEntry BATTLE_EFFECT_ATK_DEF_DOWN + TableEntry BATTLE_EFFECT_DEF_SPD_UP + TableEntry BATTLE_EFFECT_ATK_DEF_UP + TableEntry BATTLE_EFFECT_SP_ATK_SP_DEF_UP + TableEntry BATTLE_EFFECT_ATK_SPD_UP + TableEntry BATTLE_EFFECT_HALVE_ELECTRIC_DAMAGE + TableEntry BATTLE_EFFECT_HALVE_FIRE_DAMAGE + TableEntry BATTLE_EFFECT_RANDOM_STAT_UP_2 + TableEntry BATTLE_EFFECT_METAL_BURST + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2_OPPOSITE_GENDER + TableEntry TABLE_END + +_10363: + TableEntry TABLE_END + +_10364: + TableEntry BATTLE_EFFECT_ATK_UP + TableEntry BATTLE_EFFECT_DEF_UP + TableEntry BATTLE_EFFECT_SPEED_UP + TableEntry BATTLE_EFFECT_SP_ATK_UP + TableEntry BATTLE_EFFECT_SP_DEF_UP + TableEntry BATTLE_EFFECT_ACC_UP + TableEntry BATTLE_EFFECT_EVA_UP + TableEntry BATTLE_EFFECT_ATK_DOWN + TableEntry BATTLE_EFFECT_DEF_DOWN + TableEntry BATTLE_EFFECT_SPEED_DOWN + TableEntry BATTLE_EFFECT_SP_ATK_DOWN + TableEntry BATTLE_EFFECT_SP_DEF_DOWN + TableEntry BATTLE_EFFECT_ACC_DOWN + TableEntry BATTLE_EFFECT_EVA_DOWN + TableEntry BATTLE_EFFECT_PREVENT_STAT_REDUCTION + TableEntry BATTLE_EFFECT_CRIT_UP_2 + TableEntry BATTLE_EFFECT_ATK_UP_2 + TableEntry BATTLE_EFFECT_DEF_UP_2 + TableEntry BATTLE_EFFECT_SPEED_UP_2 + TableEntry BATTLE_EFFECT_SP_ATK_UP_2 + TableEntry BATTLE_EFFECT_SP_DEF_UP_2 + TableEntry BATTLE_EFFECT_ACC_UP_2 + TableEntry BATTLE_EFFECT_EVA_UP_2 + TableEntry BATTLE_EFFECT_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_SPEED_DOWN_2 + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_SP_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_EVA_DOWN_2 + TableEntry BATTLE_EFFECT_ACC_DOWN_2 + TableEntry BATTLE_EFFECT_STATUS_POISON + TableEntry BATTLE_EFFECT_AVERAGE_HP + TableEntry BATTLE_EFFECT_ALL_FAINT_3_TURNS + TableEntry BATTLE_EFFECT_PREVENT_STATUS + TableEntry BATTLE_EFFECT_ATK_DEF_DOWN + TableEntry BATTLE_EFFECT_DEF_SPD_UP + TableEntry BATTLE_EFFECT_ATK_DEF_UP + TableEntry BATTLE_EFFECT_SP_ATK_SP_DEF_UP + TableEntry BATTLE_EFFECT_ATK_SPD_UP + TableEntry BATTLE_EFFECT_RANDOM_STAT_UP_2 + TableEntry BATTLE_EFFECT_INCREASE_POWER_WITH_MORE_HP + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2_OPPOSITE_GENDER + TableEntry TABLE_END + +_10407: + TableEntry BATTLE_EFFECT_STATUS_SLEEP + TableEntry BATTLE_EFFECT_HALVE_DEFENSE + TableEntry BATTLE_EFFECT_ATK_UP + TableEntry BATTLE_EFFECT_DEF_UP + TableEntry BATTLE_EFFECT_SPEED_UP + TableEntry BATTLE_EFFECT_SP_ATK_UP + TableEntry BATTLE_EFFECT_SP_DEF_UP + TableEntry BATTLE_EFFECT_ACC_UP + TableEntry BATTLE_EFFECT_EVA_UP + TableEntry BATTLE_EFFECT_ATK_DOWN + TableEntry BATTLE_EFFECT_DEF_DOWN + TableEntry BATTLE_EFFECT_SPEED_DOWN + TableEntry BATTLE_EFFECT_SP_ATK_DOWN + TableEntry BATTLE_EFFECT_SP_DEF_DOWN + TableEntry BATTLE_EFFECT_ACC_DOWN + TableEntry BATTLE_EFFECT_EVA_DOWN + TableEntry BATTLE_EFFECT_BIDE + TableEntry BATTLE_EFFECT_CONVERSION + TableEntry BATTLE_EFFECT_STATUS_BADLY_POISON + TableEntry BATTLE_EFFECT_SET_LIGHT_SCREEN + TableEntry BATTLE_EFFECT_ONE_HIT_KO + TableEntry BATTLE_EFFECT_HALVE_HP + TableEntry BATTLE_EFFECT_HALVE_HP + TableEntry BATTLE_EFFECT_PREVENT_STAT_REDUCTION + TableEntry BATTLE_EFFECT_CRIT_UP_2 + TableEntry BATTLE_EFFECT_STATUS_CONFUSE + TableEntry BATTLE_EFFECT_ATK_UP_2 + TableEntry BATTLE_EFFECT_DEF_UP_2 + TableEntry BATTLE_EFFECT_SPEED_UP_2 + TableEntry BATTLE_EFFECT_SP_ATK_UP_2 + TableEntry BATTLE_EFFECT_SP_DEF_UP_2 + TableEntry BATTLE_EFFECT_ACC_UP_2 + TableEntry BATTLE_EFFECT_EVA_UP_2 + TableEntry BATTLE_EFFECT_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_SPEED_DOWN_2 + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_SP_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_EVA_DOWN_2 + TableEntry BATTLE_EFFECT_ACC_DOWN_2 + TableEntry BATTLE_EFFECT_STATUS_POISON + TableEntry BATTLE_EFFECT_STATUS_PARALYZE + TableEntry BATTLE_EFFECT_AVERAGE_HP + TableEntry BATTLE_EFFECT_CONVERSION2 + TableEntry BATTLE_EFFECT_NEXT_ATTACK_ALWAYS_HITS + TableEntry BATTLE_EFFECT_DECREASE_LAST_MOVE_PP + TableEntry BATTLE_EFFECT_ALL_FAINT_3_TURNS + TableEntry BATTLE_EFFECT_ATK_UP_2_STATUS_CONFUSION + TableEntry BATTLE_EFFECT_DOUBLE_POWER_EACH_TURN + TableEntry BATTLE_EFFECT_INFATUATE + TableEntry BATTLE_EFFECT_PREVENT_STATUS + TableEntry BATTLE_EFFECT_COPY_STAT_CHANGES + TableEntry BATTLE_EFFECT_MIRROR_COAT + TableEntry BATTLE_EFFECT_STATUS_BURN + TableEntry BATTLE_EFFECT_ATK_DEF_DOWN + TableEntry BATTLE_EFFECT_DEF_SPD_UP + TableEntry BATTLE_EFFECT_ATK_DEF_UP + TableEntry BATTLE_EFFECT_SP_ATK_SP_DEF_UP + TableEntry BATTLE_EFFECT_ATK_SPD_UP + TableEntry BATTLE_EFFECT_RANDOM_STAT_UP_2 + TableEntry BATTLE_EFFECT_INCREASE_POWER_WITH_MORE_HP + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2_OPPOSITE_GENDER + TableEntry TABLE_END + +_10470: + IfTargetIsPartner _10606 + LoadTurnCount + IfLoadedNotEqualTo 0, _10519 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_SUN, _10488 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_RAIN, _10494 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_SANDSTORM, _10500 + IfCurrentMoveEffectEqualTo BATTLE_EFFECT_WEATHER_HAIL, _10506 + +_10488: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_SUNNY, _10519 + GoTo _10512 + +_10494: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_RAINING, _10519 + GoTo _10512 + +_10500: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_SANDSTORM, _10519 + GoTo _10512 + +_10506: + LoadCurrentWeather + IfLoadedEqualTo AI_WEATHER_HAILING, _10519 + GoTo _10512 + +_10512: + LoadIsFirstTurnInBattle AI_BATTLER_ATTACKER + IfLoadedEqualTo FALSE, _10519 + AddToMoveScore 5 + +_10519: + PopOrEnd + +_10520: + IfTargetIsPartner _10606 + LoadCurrentMoveEffect + IfLoadedNotInTable _10532, _10531 + IfRandomLessThan 128, _10531 + AddToMoveScore 2 + +_10531: + PopOrEnd + +_10532: + TableEntry BATTLE_EFFECT_STATUS_SLEEP + TableEntry BATTLE_EFFECT_ATK_DOWN + TableEntry BATTLE_EFFECT_DEF_DOWN + TableEntry BATTLE_EFFECT_ACC_DOWN + TableEntry BATTLE_EFFECT_EVA_DOWN + TableEntry BATTLE_EFFECT_STATUS_CONFUSE + TableEntry BATTLE_EFFECT_ATK_DOWN_2 + TableEntry BATTLE_EFFECT_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_SPEED_DOWN_2 + TableEntry BATTLE_EFFECT_SP_DEF_DOWN_2 + TableEntry BATTLE_EFFECT_STATUS_POISON + TableEntry BATTLE_EFFECT_STATUS_PARALYZE + TableEntry BATTLE_EFFECT_STATUS_LEECH_SEED + TableEntry BATTLE_EFFECT_ENCORE + TableEntry BATTLE_EFFECT_DECREASE_LAST_MOVE_PP + TableEntry BATTLE_EFFECT_SET_SPIKES + TableEntry BATTLE_EFFECT_ATK_UP_2_STATUS_CONFUSION + TableEntry BATTLE_EFFECT_INFATUATE + TableEntry BATTLE_EFFECT_TORMENT + TableEntry BATTLE_EFFECT_SP_ATK_UP_CAUSE_CONFUSION + TableEntry BATTLE_EFFECT_STATUS_BURN + TableEntry BATTLE_EFFECT_NATURE_POWER + TableEntry BATTLE_EFFECT_STATUS_SLEEP_NEXT_TURN + TableEntry BATTLE_EFFECT_REMOVE_HELD_ITEM + TableEntry BATTLE_EFFECT_MAKE_SHARED_MOVES_UNUSEABLE + TableEntry BATTLE_EFFECT_SECRET_POWER + TableEntry BATTLE_EFFECT_CONFUSE_ALL + TableEntry BATTLE_EFFECT_ATK_DEF_DOWN + TableEntry BATTLE_EFFECT_CAMOUFLAGE + TableEntry BATTLE_EFFECT_PREVENT_ITEM_USE + TableEntry BATTLE_EFFECT_TRANSFER_STATUS + TableEntry BATTLE_EFFECT_TOXIC_SPIKES + TableEntry BATTLE_EFFECT_REMOVE_HAZARDS_SCREENS_EVA_DOWN + TableEntry BATTLE_EFFECT_SP_ATK_DOWN_2_OPPOSITE_GENDER + TableEntry TABLE_END + +_10567: + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_BIND, _10591 + IfVolatileStatus AI_BATTLER_ATTACKER, VOLATILE_CONDITION_MEAN_LOOK, _10591 + LoadAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_SHADOW_TAG, _10591 + LoadAbility AI_BATTLER_ATTACKER + IfLoadedEqualTo ABILITY_LEVITATE, _10590 + LoadAbility AI_BATTLER_DEFENDER + IfLoadedEqualTo ABILITY_ARENA_TRAP, _10591 + +_10590: + Escape + +_10591: + PopOrEnd + +_10592: + Dummy3E 1 + Dummy3F + Escape + +_10596: + IfHPPercentEqualTo AI_BATTLER_DEFENDER, 20, _10605 + IfHPPercentLessThan AI_BATTLER_DEFENDER, 20, _10605 + PopOrEnd + +_10605: + Escape + +_10606: + PopOrEnd + + .endif diff --git a/include/constants/battle/condition.h b/include/constants/battle/condition.h index 5744564e33..72308204ff 100644 --- a/include/constants/battle/condition.h +++ b/include/constants/battle/condition.h @@ -82,6 +82,7 @@ #define VOLATILE_CONDITION_BIND_SHIFT 13 #define VOLATILE_CONDITION_ATTRACT_SHIFT 16 +#define SIDE_CONDITION_NONE 0 #define SIDE_CONDITION_REFLECT (1 << 0) #define SIDE_CONDITION_LIGHT_SCREEN (1 << 1) #define SIDE_CONDITION_SPIKES (1 << 2) diff --git a/platinum.us/main.lsf b/platinum.us/main.lsf index a835165f36..950579e687 100644 --- a/platinum.us/main.lsf +++ b/platinum.us/main.lsf @@ -678,7 +678,7 @@ Overlay overlay14 { After overlay11 Object main.nef.p/src_overlay014_trainer_ai.c.o - Object main.nef.p/overlay014/asm_overlay014_ov14_022248A4.s.o + Object main.nef.p/asm_trainer_ai_trainer_ai_script.s.o } Overlay overlay15