Battle Dome Automation (#3596)
* MOVE_POINTS_STRONG * MOVE_POINTS_POWERFUL * MOVE_POINTS_LOW_PP * MOVE_POINTS_STAT_RAISE * Removed duplicate function * MOVE_POINTS_STAT_LOWER * MOVE_POINTS_DMG * MOVE_POINTS_ACCURATE * MOVE_POINTS_HEAL * MOVE_POINTS_DEF * MOVE_POINTS_RISKY * MOVE_POINTS_EFFECT * MOVE_POINTS_LUCK * MOVE_POINTS_POPULAR * MOVE_POINTS_STATUS * MOVE_POINTS_RARE * MOVE_POINTS_COMBO * Apply review suggestions * More implemented review suggestions --------- Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
This commit is contained in:
parent
b7cd6502d4
commit
74bb0f05f5
5 changed files with 319 additions and 428 deletions
|
@ -105,22 +105,22 @@
|
|||
#define DOME_TEXT_SPEED 12
|
||||
#define DOME_TEXT_SPATK 14
|
||||
|
||||
// Move point indexes for sBattleStyleMovePoints[][], to determine Battle Dome trainers battle styles
|
||||
#define MOVE_POINTS_COMBO 0 // Moves that work well in combination (e.g. Rain Dance + Hydro Pump)
|
||||
// Determine Battle Dome trainers battle styles
|
||||
#define MOVE_POINTS_COMBO 0 // Moves that work well in combination: moves that cause or are affected by weather/terrain, Stockpile+, entry hazards, sleep inflictions & effects benefiting from it, offensive boosts of a single stat with at least two stages or at least two stats, and several other effects
|
||||
#define MOVE_POINTS_STAT_RAISE 1
|
||||
#define MOVE_POINTS_STAT_LOWER 2
|
||||
#define MOVE_POINTS_RARE 3 // Uncommon moves. Mostly arbitrary
|
||||
#define MOVE_POINTS_HEAL 4
|
||||
#define MOVE_POINTS_RISKY 5
|
||||
#define MOVE_POINTS_STATUS 6
|
||||
#define MOVE_POINTS_DMG 7
|
||||
#define MOVE_POINTS_DEF 8 // Defensive moves, like Amnesia, Light Screen, or accuracy-lowers
|
||||
#define MOVE_POINTS_ACCURATE 9
|
||||
#define MOVE_POINTS_POWERFUL 10 // Most of the moves that are >= 100 power
|
||||
#define MOVE_POINTS_POPULAR 11 // Group seems arbitrary. All using it are TM/HMs, but its only 11/58
|
||||
#define MOVE_POINTS_LUCK 12
|
||||
#define MOVE_POINTS_STRONG 13 // Most of the moves that are >= 90 power
|
||||
#define MOVE_POINTS_LOW_PP 14
|
||||
#define MOVE_POINTS_RARE 3 // Moves that appear in less than 5% of levelup learnsets
|
||||
#define MOVE_POINTS_HEAL 4 // Moves that heal
|
||||
#define MOVE_POINTS_RISKY 5 // Move effects deemed risky by the Emerald developers (excluding High Jump Kick and others for some reason)
|
||||
#define MOVE_POINTS_STATUS 6 // Moves that cause status effects without dealing damage
|
||||
#define MOVE_POINTS_DMG 7 // Moves that deal damage (BP > 0)
|
||||
#define MOVE_POINTS_DEF 8 // Moves like screens, accuracy-lowers or evasiveness-raisers, (special) defense raisers, protect etc.
|
||||
#define MOVE_POINTS_ACCURATE 9 // Moves with 100% accuracy (or that are guaranteed hits)
|
||||
#define MOVE_POINTS_POWERFUL 10 // Moves with 100 BP or more
|
||||
#define MOVE_POINTS_POPULAR 11 // TM/HM moves with 90 BP or more or those that raise a single offensive stat by at least 2 stages
|
||||
#define MOVE_POINTS_LUCK 12 // Move effects that depend on luck and moves with Accuracy of <= 50%
|
||||
#define MOVE_POINTS_STRONG 13 // Moves with 90 BP or more
|
||||
#define MOVE_POINTS_LOW_PP 14 // Moves with 5 PP or less
|
||||
#define MOVE_POINTS_EFFECT 15 // Moves with additional effects
|
||||
#define NUM_MOVE_POINT_TYPES 16
|
||||
|
||||
|
|
|
@ -850,7 +850,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_FLOWER_VEIL:
|
||||
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringMoveEffect(moveEffect)))
|
||||
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringEffect(moveEffect)))
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_MAGIC_BOUNCE:
|
||||
|
@ -858,13 +858,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
RETURN_SCORE_MINUS(20);
|
||||
break;
|
||||
case ABILITY_CONTRARY:
|
||||
if (IsStatLoweringMoveEffect(moveEffect))
|
||||
if (IsStatLoweringEffect(moveEffect))
|
||||
RETURN_SCORE_MINUS(20);
|
||||
break;
|
||||
case ABILITY_CLEAR_BODY:
|
||||
case ABILITY_FULL_METAL_BODY:
|
||||
case ABILITY_WHITE_SMOKE:
|
||||
if (IsStatLoweringMoveEffect(moveEffect))
|
||||
if (IsStatLoweringEffect(moveEffect))
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_HYPER_CUTTER:
|
||||
|
@ -886,7 +886,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
break;
|
||||
case ABILITY_DEFIANT:
|
||||
case ABILITY_COMPETITIVE:
|
||||
if (IsStatLoweringMoveEffect(moveEffect) && !IS_TARGETING_PARTNER(battlerAtk, battlerDef))
|
||||
if (IsStatLoweringEffect(moveEffect) && !IS_TARGETING_PARTNER(battlerAtk, battlerDef))
|
||||
RETURN_SCORE_MINUS(8);
|
||||
break;
|
||||
case ABILITY_COMATOSE:
|
||||
|
@ -927,7 +927,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
RETURN_SCORE_MINUS(20);
|
||||
break;
|
||||
case ABILITY_FLOWER_VEIL:
|
||||
if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringMoveEffect(moveEffect)))
|
||||
if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringEffect(moveEffect)))
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_AROMA_VEIL:
|
||||
|
|
|
@ -1422,30 +1422,6 @@ bool32 IsConfusionMoveEffect(u32 moveEffect)
|
|||
}
|
||||
}
|
||||
|
||||
bool32 IsStatLoweringMoveEffect(u32 moveEffect)
|
||||
{
|
||||
switch (moveEffect)
|
||||
{
|
||||
case EFFECT_ATTACK_DOWN:
|
||||
case EFFECT_DEFENSE_DOWN:
|
||||
case EFFECT_SPEED_DOWN:
|
||||
case EFFECT_SPECIAL_ATTACK_DOWN:
|
||||
case EFFECT_SPECIAL_DEFENSE_DOWN:
|
||||
case EFFECT_ACCURACY_DOWN:
|
||||
case EFFECT_EVASION_DOWN:
|
||||
case EFFECT_ATTACK_DOWN_2:
|
||||
case EFFECT_DEFENSE_DOWN_2:
|
||||
case EFFECT_SPEED_DOWN_2:
|
||||
case EFFECT_SPECIAL_ATTACK_DOWN_2:
|
||||
case EFFECT_SPECIAL_DEFENSE_DOWN_2:
|
||||
case EFFECT_ACCURACY_DOWN_2:
|
||||
case EFFECT_EVASION_DOWN_2:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 IsHazardMoveEffect(u32 moveEffect)
|
||||
{
|
||||
switch (moveEffect)
|
||||
|
@ -2055,6 +2031,8 @@ bool32 IsHealingMoveEffect(u32 effect)
|
|||
case EFFECT_HEAL_PULSE:
|
||||
case EFFECT_REST:
|
||||
case EFFECT_JUNGLE_HEALING:
|
||||
case EFFECT_ABSORB:
|
||||
case EFFECT_DREAM_EATER:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "global.h"
|
||||
#include "battle_dome.h"
|
||||
#include "battle.h"
|
||||
#include "battle_ai_util.h"
|
||||
#include "battle_main.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
|
@ -32,6 +33,7 @@
|
|||
#include "script_pokemon_util.h"
|
||||
#include "graphics.h"
|
||||
#include "constants/battle_dome.h"
|
||||
#include "constants/battle_move_effects.h"
|
||||
#include "constants/frontier_util.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/trainers.h"
|
||||
|
@ -162,367 +164,6 @@ static void InitDomeTrainers(void);
|
|||
static EWRAM_DATA struct TourneyTreeInfoCard *sInfoCard = {0};
|
||||
static EWRAM_DATA u8 *sTilemapBuffer = NULL;
|
||||
|
||||
// Each move has an array of points for different move characteristics which contribute to a tourney trainers listed battle style (see sBattleStyleThresholds)
|
||||
// All move points are either 1 or 0, so theyre essentially flags saying whether or not the move has that characteristic
|
||||
static const u8 sBattleStyleMovePoints[MOVES_COUNT][NUM_MOVE_POINT_TYPES] =
|
||||
{
|
||||
[MOVE_NONE] = {0},
|
||||
[MOVE_POUND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_KARATE_CHOP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_DOUBLE_SLAP] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_COMET_PUNCH] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_MEGA_PUNCH] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_PAY_DAY] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_FIRE_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_ICE_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_THUNDER_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SCRATCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_VISE_GRIP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_GUILLOTINE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_RAZOR_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SWORDS_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_POPULAR] = 1},
|
||||
[MOVE_CUT] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_GUST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_WING_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_WHIRLWIND] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FLY] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_BIND] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SLAM] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_VINE_WHIP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_STOMP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_DOUBLE_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_MEGA_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_JUMP_KICK] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_ROLLING_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SAND_ATTACK] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_HEADBUTT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_HORN_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FURY_ATTACK] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_HORN_DRILL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_TACKLE] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_BODY_SLAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_WRAP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_TAKE_DOWN] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_THRASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_DOUBLE_EDGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_TAIL_WHIP] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_POISON_STING] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_TWINEEDLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_PIN_MISSILE] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_LEER] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_BITE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_GROWL] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_ROAR] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SING] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_SUPERSONIC] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_SONIC_BOOM] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_DISABLE] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_ACID] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_EMBER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_FLAMETHROWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MIST] = {0},
|
||||
[MOVE_WATER_GUN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_HYDRO_PUMP] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_SURF] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_ICE_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_BLIZZARD] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_PSYBEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_BUBBLE_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_AURORA_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_HYPER_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_PECK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_DRILL_PECK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SUBMISSION] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_LOW_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_COUNTER] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_SEISMIC_TOSS] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_STRENGTH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_ABSORB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_MEGA_DRAIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_LEECH_SEED] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_GROWTH] = {[MOVE_POINTS_STAT_RAISE] = 1},
|
||||
[MOVE_RAZOR_LEAF] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_SOLAR_BEAM] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_POISON_POWDER] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_STUN_SPORE] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_SLEEP_POWDER] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_PETAL_DANCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_STRING_SHOT] = {[MOVE_POINTS_STAT_LOWER] = 1},
|
||||
[MOVE_DRAGON_RAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FIRE_SPIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_THUNDER_SHOCK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_THUNDERBOLT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_THUNDER_WAVE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_THUNDER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_ROCK_THROW] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_EARTHQUAKE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_FISSURE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_DIG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_TOXIC] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_CONFUSION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_PSYCHIC] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_HYPNOSIS] = {[MOVE_POINTS_COMBO] = 1},
|
||||
[MOVE_MEDITATE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1},
|
||||
[MOVE_AGILITY] = {[MOVE_POINTS_STAT_RAISE] = 1},
|
||||
[MOVE_QUICK_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_RAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_TELEPORT] = {0},
|
||||
[MOVE_NIGHT_SHADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_MIMIC] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SCREECH] = {[MOVE_POINTS_STAT_LOWER] = 1},
|
||||
[MOVE_DOUBLE_TEAM] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_RECOVER] = {0},
|
||||
[MOVE_HARDEN] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_MINIMIZE] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_SMOKESCREEN] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_CONFUSE_RAY] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_WITHDRAW] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_DEFENSE_CURL] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_BARRIER] = {[MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_LIGHT_SCREEN] = {[MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_HAZE] = {0},
|
||||
[MOVE_REFLECT] = {[MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_FOCUS_ENERGY] = {[MOVE_POINTS_COMBO] = 1},
|
||||
[MOVE_BIDE] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_METRONOME] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_MIRROR_MOVE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_SELF_DESTRUCT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_EGG_BOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_LICK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SMOG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SLUDGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_BONE_CLUB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_FIRE_BLAST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_WATERFALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_CLAMP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SWIFT] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_SKULL_BASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_SPIKE_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_CONSTRICT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_AMNESIA] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_KINESIS] = {[MOVE_POINTS_STAT_LOWER] = 1},
|
||||
[MOVE_SOFT_BOILED] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_HIGH_JUMP_KICK] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_GLARE] = {[MOVE_POINTS_STAT_LOWER] = 1},
|
||||
[MOVE_DREAM_EATER] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_RARE] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_POISON_GAS] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_BARRAGE] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_LEECH_LIFE] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_LOVELY_KISS] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_SKY_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_TRANSFORM] = {[MOVE_POINTS_RARE] = 1},
|
||||
[MOVE_BUBBLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_DIZZY_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SPORE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FLASH] = {0},
|
||||
[MOVE_PSYWAVE] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_SPLASH] = {[MOVE_POINTS_RARE] = 1},
|
||||
[MOVE_ACID_ARMOR] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_CRABHAMMER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_EXPLOSION] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_FURY_SWIPES] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_BONEMERANG] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_REST] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1},
|
||||
[MOVE_ROCK_SLIDE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_HYPER_FANG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SHARPEN] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_CONVERSION] = {[MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_TRI_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SUPER_FANG] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_SLASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SUBSTITUTE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_STRUGGLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, // Odd that this is assigned qualities
|
||||
[MOVE_SKETCH] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_TRIPLE_KICK] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_THIEF] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SPIDER_WEB] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_MIND_READER] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_NIGHTMARE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FLAME_WHEEL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SNORE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_CURSE] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_FLAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_CONVERSION_2] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_AEROBLAST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_COTTON_SPORE] = {[MOVE_POINTS_STAT_LOWER] = 1},
|
||||
[MOVE_REVERSAL] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SPITE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_POWDER_SNOW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_PROTECT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_POPULAR] = 1},
|
||||
[MOVE_MACH_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SCARY_FACE] = {0},
|
||||
[MOVE_FEINT_ATTACK] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_SWEET_KISS] = {0},
|
||||
[MOVE_BELLY_DRUM] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1},
|
||||
[MOVE_SLUDGE_BOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MUD_SLAP] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_OCTAZOOKA] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SPIKES] = {[MOVE_POINTS_COMBO] = 1},
|
||||
[MOVE_ZAP_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_FORESIGHT] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_DESTINY_BOND] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_PERISH_SONG] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_ICY_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_DETECT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_BONE_RUSH] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_LOCK_ON] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_OUTRAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SANDSTORM] = {0},
|
||||
[MOVE_GIGA_DRAIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_ENDURE] = {[MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_CHARM] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_ROLLOUT] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_FALSE_SWIPE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SWAGGER] = {[MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MILK_DRINK] = {[MOVE_POINTS_HEAL] = 1},
|
||||
[MOVE_SPARK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_FURY_CUTTER] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_STEEL_WING] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MEAN_LOOK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_ATTRACT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SLEEP_TALK] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_HEAL_BELL] = {[MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_RETURN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_PRESENT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_FRUSTRATION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SAFEGUARD] = {[MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_PAIN_SPLIT] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SACRED_FIRE] = {[MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MAGNITUDE] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_DYNAMIC_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MEGAHORN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_DRAGON_BREATH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_BATON_PASS] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_RARE] = 1},
|
||||
[MOVE_ENCORE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_PURSUIT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_RAPID_SPIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SWEET_SCENT] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_IRON_TAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_METAL_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_VITAL_THROW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_MORNING_SUN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_SYNTHESIS] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_MOONLIGHT] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_HIDDEN_POWER] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_CROSS_CHOP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_TWISTER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_RAIN_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_SUNNY_DAY] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_CRUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MIRROR_COAT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_PSYCH_UP] = {[MOVE_POINTS_STAT_RAISE] = 1},
|
||||
[MOVE_EXTREME_SPEED] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_ANCIENT_POWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SHADOW_BALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_FUTURE_SIGHT] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_ROCK_SMASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_WHIRLPOOL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_BEAT_UP] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FAKE_OUT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_UPROAR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_STOCKPILE] = {[MOVE_POINTS_COMBO] = 1},
|
||||
[MOVE_SPIT_UP] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_SWALLOW] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1},
|
||||
[MOVE_HEAT_WAVE] = {[MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_HAIL] = {0},
|
||||
[MOVE_TORMENT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FLATTER] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_WILL_O_WISP] = {[MOVE_POINTS_STATUS] = 1},
|
||||
[MOVE_MEMENTO] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FACADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FOCUS_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_SMELLING_SALTS] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FOLLOW_ME] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_NATURE_POWER] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_CHARGE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_TAUNT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_HELPING_HAND] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_TRICK] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_ROLE_PLAY] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_WISH] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_ASSIST] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_INGRAIN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_SUPERPOWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_MAGIC_COAT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_RECYCLE] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_REVENGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_BRICK_BREAK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_YAWN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_KNOCK_OFF] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_ENDEAVOR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_ERUPTION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_SKILL_SWAP] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_IMPRISON] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_REFRESH] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_GRUDGE] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_SNATCH] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1},
|
||||
[MOVE_SECRET_POWER] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_DIVE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_ARM_THRUST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_CAMOUFLAGE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_TAIL_GLOW] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_LUSTER_PURGE] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MIST_BALL] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_FEATHER_DANCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_TEETER_DANCE] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_BLAZE_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MUD_SPORT] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_ICE_BALL] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_NEEDLE_ARM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SLACK_OFF] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_HYPER_VOICE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_POISON_FANG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_CRUSH_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_BLAST_BURN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_HYDRO_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_METEOR_MASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_ASTONISH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_WEATHER_BALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_AROMATHERAPY] = {[MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_FAKE_TEARS] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_AIR_CUTTER] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_OVERHEAT] = {[MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_ODOR_SLEUTH] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_ROCK_TOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SILVER_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_METAL_SOUND] = {0},
|
||||
[MOVE_GRASS_WHISTLE] = {0},
|
||||
[MOVE_TICKLE] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_COSMIC_POWER] = {0},
|
||||
[MOVE_WATER_SPOUT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_SIGNAL_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SHADOW_PUNCH] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_EXTRASENSORY] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SKY_UPPERCUT] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_SAND_TOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_SHEER_COLD] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_MUDDY_WATER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_BULLET_SEED] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_AERIAL_ACE] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_ICICLE_SPEAR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_IRON_DEFENSE] = {[MOVE_POINTS_DEF] = 1},
|
||||
[MOVE_BLOCK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_HOWL] = {0},
|
||||
[MOVE_DRAGON_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_FRENZY_PLANT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_BULK_UP] = {[MOVE_POINTS_COMBO] = 1},
|
||||
[MOVE_BOUNCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_MUD_SHOT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_POISON_TAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_COVET] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_VOLT_TACKLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1},
|
||||
[MOVE_MAGICAL_LEAF] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_WATER_SPORT] = {[MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_CALM_MIND] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1},
|
||||
[MOVE_LEAF_BLADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1},
|
||||
[MOVE_DRAGON_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1},
|
||||
[MOVE_ROCK_BLAST] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_SHOCK_WAVE] = {[MOVE_POINTS_DMG] = 1},
|
||||
[MOVE_WATER_PULSE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
[MOVE_DOOM_DESIRE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1},
|
||||
[MOVE_PSYCHO_BOOST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
|
||||
};
|
||||
|
||||
// This array is searched in-order to determine what battle style a tourney trainer uses.
|
||||
// If the sum of the points for the party's moves meets/exceeds all the point totals of an element, then they use that battle style
|
||||
static const u8 sBattleStyleThresholds[NUM_BATTLE_STYLES - 1][NUM_MOVE_POINT_TYPES] =
|
||||
|
@ -4287,6 +3928,244 @@ static u8 Task_GetInfoCardInput(u8 taskId)
|
|||
|
||||
#undef tUsingAlternateSlot
|
||||
|
||||
static bool32 IsDomeHealingMoveEffect(u32 effect)
|
||||
{
|
||||
if (IsHealingMoveEffect(effect))
|
||||
return TRUE;
|
||||
// Check extra effects not considered plain healing by AI
|
||||
switch(effect)
|
||||
{
|
||||
case EFFECT_INGRAIN:
|
||||
case EFFECT_REFRESH:
|
||||
case EFFECT_AQUA_RING:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 IsDomeDefensiveMoveEffect(u32 effect)
|
||||
{
|
||||
switch(effect)
|
||||
{
|
||||
case EFFECT_COUNTER:
|
||||
case EFFECT_EVASION_UP:
|
||||
case EFFECT_DEFENSE_UP:
|
||||
case EFFECT_DEFENSE_UP_2:
|
||||
case EFFECT_SPECIAL_DEFENSE_UP:
|
||||
case EFFECT_SPECIAL_DEFENSE_UP_2:
|
||||
case EFFECT_MINIMIZE:
|
||||
case EFFECT_ACCURACY_DOWN:
|
||||
case EFFECT_DEFENSE_CURL:
|
||||
case EFFECT_LIGHT_SCREEN:
|
||||
case EFFECT_REFLECT:
|
||||
case EFFECT_AURORA_VEIL:
|
||||
case EFFECT_CONVERSION:
|
||||
case EFFECT_PROTECT:
|
||||
case EFFECT_MAT_BLOCK:
|
||||
case EFFECT_ENDURE:
|
||||
case EFFECT_SAFEGUARD:
|
||||
case EFFECT_MIRROR_COAT:
|
||||
case EFFECT_MAGIC_COAT:
|
||||
case EFFECT_INGRAIN:
|
||||
case EFFECT_AQUA_RING:
|
||||
case EFFECT_SUBSTITUTE:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 IsDomeRiskyMoveEffect(u32 effect)
|
||||
{
|
||||
switch(effect)
|
||||
{
|
||||
case EFFECT_EXPLOSION:
|
||||
case EFFECT_SPITE:
|
||||
case EFFECT_DESTINY_BOND:
|
||||
case EFFECT_PERISH_SONG:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 IsDomeLuckyMove(u32 move)
|
||||
{
|
||||
if (gBattleMoves[move].accuracy <= 50)
|
||||
return TRUE;
|
||||
switch(gBattleMoves[move].effect)
|
||||
{
|
||||
case EFFECT_COUNTER:
|
||||
case EFFECT_OHKO: // Technically redundant because of the above accuracy check
|
||||
case EFFECT_METRONOME:
|
||||
case EFFECT_MIRROR_MOVE:
|
||||
case EFFECT_SKETCH:
|
||||
case EFFECT_SLEEP_TALK:
|
||||
case EFFECT_PRESENT:
|
||||
case EFFECT_ASSIST:
|
||||
case EFFECT_MAGIC_COAT:
|
||||
case EFFECT_REVENGE:
|
||||
case EFFECT_IMPRISON:
|
||||
case EFFECT_SNATCH:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 IsDomePopularMove(u32 move)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; i++)
|
||||
{
|
||||
if (ItemIdToBattleMoveId(ITEM_TM01 + i) == move)
|
||||
return TRUE;
|
||||
}
|
||||
if (i == NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES)
|
||||
return FALSE;
|
||||
// Filter in TMs/HMs
|
||||
if (gBattleMoves[move].power >= 90)
|
||||
return TRUE;
|
||||
|
||||
switch(gBattleMoves[move].effect)
|
||||
{
|
||||
case EFFECT_PROTECT:
|
||||
case EFFECT_MAT_BLOCK:
|
||||
case EFFECT_ATTACK_UP_2:
|
||||
case EFFECT_SPECIAL_ATTACK_UP_2:
|
||||
case EFFECT_SPECIAL_ATTACK_UP_3:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 IsDomeStatusMoveEffect(u32 effect)
|
||||
{
|
||||
switch(effect)
|
||||
{
|
||||
case EFFECT_TRAP:
|
||||
case EFFECT_SLEEP:
|
||||
case EFFECT_CONFUSE:
|
||||
case EFFECT_DISABLE:
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_PARALYZE:
|
||||
case EFFECT_TOXIC:
|
||||
case EFFECT_LEECH_SEED:
|
||||
case EFFECT_TAUNT:
|
||||
case EFFECT_TORMENT:
|
||||
case EFFECT_WILL_O_WISP:
|
||||
case EFFECT_ENCORE:
|
||||
case EFFECT_ATTRACT:
|
||||
case EFFECT_NIGHTMARE:
|
||||
case EFFECT_YAWN:
|
||||
case EFFECT_CURSE:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 IsDomeRareMove(u32 move)
|
||||
{
|
||||
u16 i, j;
|
||||
u16 species = 0;
|
||||
for(i = 0; i < NUM_SPECIES; i++)
|
||||
{
|
||||
for(j = 0; gLevelUpLearnsets[i][j].move != LEVEL_UP_MOVE_END; j++)
|
||||
{
|
||||
if (gLevelUpLearnsets[i][j].move == move)
|
||||
{
|
||||
species++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (species >= NUM_SPECIES / 20) // At least 5% of all mons can learn this move
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool32 IsDomeComboMoveEffect(u32 effect)
|
||||
{
|
||||
switch(effect)
|
||||
{
|
||||
// Weather moves
|
||||
case EFFECT_SUNNY_DAY:
|
||||
case EFFECT_RAIN_DANCE:
|
||||
case EFFECT_SANDSTORM:
|
||||
case EFFECT_HAIL:
|
||||
case EFFECT_SNOWSCAPE:
|
||||
// Terrain moves
|
||||
case EFFECT_GRASSY_TERRAIN:
|
||||
case EFFECT_ELECTRIC_TERRAIN:
|
||||
case EFFECT_MISTY_TERRAIN:
|
||||
case EFFECT_PSYCHIC_TERRAIN:
|
||||
// Moves dependent on weather
|
||||
case EFFECT_SYNTHESIS:
|
||||
case EFFECT_MORNING_SUN:
|
||||
case EFFECT_MOONLIGHT:
|
||||
case EFFECT_SHORE_UP:
|
||||
case EFFECT_THUNDER:
|
||||
case EFFECT_HURRICANE:
|
||||
//case EFFECT_BLIZZARD: (needs a unique effect in gBattleMoves!)
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_GROWTH:
|
||||
case EFFECT_AURORA_VEIL:
|
||||
case EFFECT_WEATHER_BALL:
|
||||
// Moves dependent on terrain
|
||||
case EFFECT_EXPANDING_FORCE:
|
||||
case EFFECT_GRASSY_GLIDE:
|
||||
//case EFFECT_MISTY_EXPLOSION: (needs a unique effect in gBattleMoves!)
|
||||
case EFFECT_PSYBLADE:
|
||||
case EFFECT_RISING_VOLTAGE:
|
||||
case EFFECT_TERRAIN_PULSE:
|
||||
// Stockpile group
|
||||
case EFFECT_STOCKPILE:
|
||||
case EFFECT_SPIT_UP:
|
||||
case EFFECT_SWALLOW:
|
||||
// Entry hazards & cleaners
|
||||
case EFFECT_SPIKES:
|
||||
case EFFECT_TOXIC_SPIKES:
|
||||
case EFFECT_STEALTH_ROCK:
|
||||
case EFFECT_STICKY_WEB:
|
||||
// Inflicting sleep & related effects
|
||||
case EFFECT_SLEEP:
|
||||
case EFFECT_YAWN:
|
||||
case EFFECT_DREAM_EATER:
|
||||
case EFFECT_NIGHTMARE:
|
||||
case EFFECT_REST:
|
||||
case EFFECT_SLEEP_TALK:
|
||||
case EFFECT_SNORE:
|
||||
// Anything that ups offensive stats by more than one
|
||||
case EFFECT_ATTACK_UP:
|
||||
case EFFECT_ATTACK_UP_2:
|
||||
case EFFECT_ATTACK_SPATK_UP:
|
||||
case EFFECT_SPECIAL_ATTACK_UP:
|
||||
case EFFECT_SPECIAL_ATTACK_UP_2:
|
||||
case EFFECT_SPECIAL_ATTACK_UP_3:
|
||||
case EFFECT_CALM_MIND:
|
||||
case EFFECT_DRAGON_DANCE:
|
||||
case EFFECT_BELLY_DRUM:
|
||||
case EFFECT_CHARGE:
|
||||
case EFFECT_BULK_UP:
|
||||
case EFFECT_ATTACK_ACCURACY_UP:
|
||||
// Others
|
||||
case EFFECT_FOCUS_ENERGY:
|
||||
case EFFECT_LOCK_ON:
|
||||
case EFFECT_FLAIL:
|
||||
case EFFECT_BATON_PASS:
|
||||
case EFFECT_INGRAIN:
|
||||
case EFFECT_AQUA_RING:
|
||||
case EFFECT_LEECH_SEED:
|
||||
case EFFECT_ROAR:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// allocatedArray below needs to be large enough to hold stat totals for each mon, or totals of each type of move points
|
||||
#define ALLOC_ARRAY_SIZE max(NUM_STATS * FRONTIER_PARTY_SIZE, NUM_MOVE_POINT_TYPES)
|
||||
|
||||
|
@ -4456,12 +4335,65 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId)
|
|||
{
|
||||
for (k = 0; k < NUM_MOVE_POINT_TYPES; k++)
|
||||
{
|
||||
u16 move;
|
||||
if (trainerId == TRAINER_FRONTIER_BRAIN)
|
||||
allocatedArray[k] += sBattleStyleMovePoints[GetFrontierBrainMonMove(i, j)][k];
|
||||
move = GetFrontierBrainMonMove(i, j);
|
||||
else if (trainerId == TRAINER_PLAYER)
|
||||
allocatedArray[k] += sBattleStyleMovePoints[gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j]][k];
|
||||
move = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j];
|
||||
else
|
||||
allocatedArray[k] += sBattleStyleMovePoints[gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].moves[j]][k];
|
||||
move = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].moves[j];
|
||||
|
||||
switch (k)
|
||||
{
|
||||
case MOVE_POINTS_COMBO:
|
||||
allocatedArray[k] = IsDomeComboMoveEffect(gBattleMoves[move].effect) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_STAT_RAISE:
|
||||
allocatedArray[k] = IsStatRaisingEffect(gBattleMoves[move].effect) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_STAT_LOWER:
|
||||
allocatedArray[k] = IsStatLoweringEffect(gBattleMoves[move].effect) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_RARE:
|
||||
allocatedArray[k] = IsDomeRareMove(move) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_HEAL:
|
||||
allocatedArray[k] = IsDomeHealingMoveEffect(gBattleMoves[move].effect) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_RISKY:
|
||||
allocatedArray[k] = IsDomeRiskyMoveEffect(gBattleMoves[move].effect) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_STATUS:
|
||||
allocatedArray[k] = IsDomeStatusMoveEffect(gBattleMoves[move].effect) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_DMG:
|
||||
allocatedArray[k] = (gBattleMoves[move].power != 0) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_DEF:
|
||||
allocatedArray[k] = IsDomeDefensiveMoveEffect(gBattleMoves[move].effect) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_ACCURATE:
|
||||
allocatedArray[k] = (gBattleMoves[move].accuracy == 0 || gBattleMoves[move].accuracy == 100) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_POWERFUL:
|
||||
allocatedArray[k] = (gBattleMoves[move].power >= 100) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_POPULAR:
|
||||
allocatedArray[k] = IsDomePopularMove(move) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_LUCK:
|
||||
allocatedArray[k] = IsDomeLuckyMove(move) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_STRONG:
|
||||
allocatedArray[k] = (gBattleMoves[move].power >= 90) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_LOW_PP:
|
||||
allocatedArray[k] = (gBattleMoves[move].pp <= 5) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_EFFECT:
|
||||
allocatedArray[k] = (gBattleMoves[move].secondaryEffectChance > 0) ? 1 : 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4703,27 +4703,8 @@ s8 GetMovePriority(u32 battler, u16 move)
|
|||
{
|
||||
priority++;
|
||||
}
|
||||
else if (ability == ABILITY_TRIAGE)
|
||||
{
|
||||
switch (gBattleMoves[move].effect)
|
||||
{
|
||||
case EFFECT_RESTORE_HP:
|
||||
case EFFECT_REST:
|
||||
case EFFECT_MORNING_SUN:
|
||||
case EFFECT_MOONLIGHT:
|
||||
case EFFECT_SYNTHESIS:
|
||||
case EFFECT_HEAL_PULSE:
|
||||
case EFFECT_HEALING_WISH:
|
||||
case EFFECT_SWALLOW:
|
||||
case EFFECT_WISH:
|
||||
case EFFECT_SOFTBOILED:
|
||||
case EFFECT_ABSORB:
|
||||
case EFFECT_ROOST:
|
||||
case EFFECT_JUNGLE_HEALING:
|
||||
priority += 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (ability == ABILITY_TRIAGE && IsHealingMoveEffect(gBattleMoves[move].effect))
|
||||
priority += 3;
|
||||
|
||||
if (gProtectStructs[battler].quash)
|
||||
priority = -8;
|
||||
|
|
Loading…
Reference in a new issue