Merge branch 'upcoming' into feature/dynmulti-expansion
This commit is contained in:
commit
34f51da5f8
2
Makefile
2
Makefile
@ -473,7 +473,7 @@ endif
|
||||
$(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
|
||||
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld
|
||||
|
||||
LDFLAGS = -Map ../../$(MAP)
|
||||
LDFLAGS = -Map ../../$(MAP) --no-warn-rwx-segments
|
||||
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) libagbsyscall
|
||||
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ <objects> <lib>"
|
||||
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat
|
||||
|
||||
@ -222,16 +222,6 @@ void RecalcBattlerStats(u32 battler, struct Pokemon *mon);
|
||||
bool32 IsAlly(u32 battlerAtk, u32 battlerDef);
|
||||
bool32 IsGen6ExpShareEnabled(void);
|
||||
|
||||
// Ability checks
|
||||
bool32 IsSkillSwapBannedAbility(u16 ability);
|
||||
bool32 IsRolePlayDoodleBannedAbility(u16 ability);
|
||||
bool32 IsRolePlayDoodleBannedAbilityAttacker(u16 ability);
|
||||
bool32 IsWorrySeedBannedAbility(u16 ability);
|
||||
bool32 IsGastroAcidBannedAbility(u16 ability);
|
||||
bool32 IsEntrainmentBannedAbility(u16 ability);
|
||||
bool32 IsEntrainmentBannedAbilityAttacker(u16 ability);
|
||||
bool32 IsSimpleBeamBannedAbility(u16 ability);
|
||||
|
||||
bool32 CanSleep(u32 battler);
|
||||
bool32 CanBePoisoned(u32 battlerAttacker, u32 battlerTarget);
|
||||
bool32 CanBeBurned(u32 battler);
|
||||
|
||||
@ -71,6 +71,9 @@
|
||||
#define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5.
|
||||
#define B_EXTRAPOLATED_MOVE_FLAGS TRUE // Adds move flags to moves that they don't officially have but would likely have if they were in the latest core series game.
|
||||
|
||||
// Ability data settings
|
||||
#define B_UPDATED_ABILITY_DATA GEN_LATEST // Affects flags
|
||||
|
||||
// Move accuracy settings
|
||||
#define B_TOXIC_NEVER_MISS GEN_LATEST // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss.
|
||||
#define B_MINIMIZE_DMG_ACC GEN_LATEST // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks.
|
||||
|
||||
@ -594,5 +594,11 @@
|
||||
#define P_FAMILY_MUNKIDORI P_GEN_9_POKEMON
|
||||
#define P_FAMILY_FEZANDIPITI P_GEN_9_POKEMON
|
||||
#define P_FAMILY_OGERPON P_GEN_9_POKEMON
|
||||
#define P_FAMILY_GOUGING_FIRE P_GEN_9_POKEMON
|
||||
#define P_FAMILY_RAGING_BOLT P_GEN_9_POKEMON
|
||||
#define P_FAMILY_IRON_BOULDER P_GEN_9_POKEMON
|
||||
#define P_FAMILY_IRON_CROWN P_GEN_9_POKEMON
|
||||
#define P_FAMILY_TERAPAGOS P_GEN_9_POKEMON
|
||||
#define P_FAMILY_PECHARUNT P_GEN_9_POKEMON
|
||||
|
||||
#endif // GUARD_CONFIG_SPECIES_ENABLED_H
|
||||
|
||||
@ -2025,6 +2025,7 @@ enum {
|
||||
CRY_APPLETUN,
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
CRY_DIPPLIN,
|
||||
//CRY_HYDRAPPLE,
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_APPLIN
|
||||
#if P_FAMILY_SILICOBRA
|
||||
@ -2112,6 +2113,9 @@ enum {
|
||||
#endif //P_FAMILY_ARCTOVISH
|
||||
#if P_FAMILY_DURALUDON
|
||||
CRY_DURALUDON,
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
//CRY_ARCHALUDON,
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_DURALUDON
|
||||
#if P_FAMILY_DREEPY
|
||||
CRY_DREEPY,
|
||||
@ -2404,6 +2408,24 @@ enum {
|
||||
#if P_FAMILY_OGERPON
|
||||
CRY_OGERPON,
|
||||
#endif //P_FAMILY_OGERPON
|
||||
#if P_FAMILY_GOUGING_FIRE
|
||||
//CRY_GOUGING_FIRE,
|
||||
#endif //P_FAMILY_GOUGING_FIRE
|
||||
#if P_FAMILY_RAGING_BOLT
|
||||
//CRY_RAGING_BOLT,
|
||||
#endif //P_FAMILY_RAGING_BOLT
|
||||
#if P_FAMILY_IRON_BOULDER
|
||||
//CRY_IRON_BOULDER,
|
||||
#endif //P_FAMILY_IRON_BOULDER
|
||||
#if P_FAMILY_IRON_CROWN
|
||||
//CRY_IRON_CROWN,
|
||||
#endif //P_FAMILY_IRON_CROWN
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
//CRY_TERAPAGOS,
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
#if P_FAMILY_PECHARUNT
|
||||
//CRY_PECHARUNT,
|
||||
#endif //P_FAMILY_PECHARUNT
|
||||
CRY_COUNT,
|
||||
};
|
||||
|
||||
|
||||
@ -1031,21 +1031,21 @@ enum {
|
||||
NATIONAL_DEX_MUNKIDORI,
|
||||
NATIONAL_DEX_FEZANDIPITI,
|
||||
NATIONAL_DEX_OGERPON,
|
||||
NATIONAL_DEX_1018,
|
||||
NATIONAL_DEX_1019,
|
||||
NATIONAL_DEX_1020,
|
||||
NATIONAL_DEX_1021,
|
||||
NATIONAL_DEX_1022,
|
||||
NATIONAL_DEX_1023,
|
||||
NATIONAL_DEX_1024,
|
||||
NATIONAL_DEX_1025,
|
||||
NATIONAL_DEX_ARCHALUDON,
|
||||
NATIONAL_DEX_HYDRAPPLE,
|
||||
NATIONAL_DEX_GOUGING_FIRE,
|
||||
NATIONAL_DEX_RAGING_BOLT,
|
||||
NATIONAL_DEX_IRON_BOULDER,
|
||||
NATIONAL_DEX_IRON_CROWN,
|
||||
NATIONAL_DEX_TERAPAGOS,
|
||||
NATIONAL_DEX_PECHARUNT,
|
||||
};
|
||||
|
||||
#define KANTO_DEX_COUNT NATIONAL_DEX_MEW
|
||||
#define JOHTO_DEX_COUNT NATIONAL_DEX_CELEBI
|
||||
|
||||
#if P_GEN_9_POKEMON == TRUE
|
||||
#define NATIONAL_DEX_COUNT NATIONAL_DEX_1025
|
||||
#define NATIONAL_DEX_COUNT NATIONAL_DEX_PECHARUNT
|
||||
#elif P_GEN_8_POKEMON == TRUE
|
||||
#define NATIONAL_DEX_COUNT NATIONAL_DEX_ENAMORUS
|
||||
#elif P_GEN_7_POKEMON == TRUE
|
||||
|
||||
@ -1658,19 +1658,19 @@
|
||||
#define SPECIES_OGERPON_CORNERSTONE_MASK_TERA GEN9_START + 135
|
||||
#define SPECIES_URSALUNA_BLOODMOON GEN9_START + 136
|
||||
// Indigo Disk
|
||||
#define SPECIES_1018 GEN9_START + 137
|
||||
#define SPECIES_1019 GEN9_START + 138
|
||||
#define SPECIES_1020 GEN9_START + 139
|
||||
#define SPECIES_1021 GEN9_START + 140
|
||||
#define SPECIES_1022 GEN9_START + 141
|
||||
#define SPECIES_1023 GEN9_START + 142
|
||||
#define SPECIES_1024 SPECIES_1024_FORM_1
|
||||
#define SPECIES_1024_FORM_1 GEN9_START + 143
|
||||
#define SPECIES_1024_FORM_2 GEN9_START + 144
|
||||
#define SPECIES_1024_FORM_3 GEN9_START + 145
|
||||
#define SPECIES_1025 GEN9_START + 146
|
||||
#define SPECIES_ARCHALUDON GEN9_START + 137
|
||||
#define SPECIES_HYDRAPPLE GEN9_START + 138
|
||||
#define SPECIES_GOUGING_FIRE GEN9_START + 139
|
||||
#define SPECIES_RAGING_BOLT GEN9_START + 140
|
||||
#define SPECIES_IRON_BOULDER GEN9_START + 141
|
||||
#define SPECIES_IRON_CROWN GEN9_START + 142
|
||||
#define SPECIES_TERAPAGOS SPECIES_TERAPAGOS_NORMAL
|
||||
#define SPECIES_TERAPAGOS_NORMAL GEN9_START + 143
|
||||
#define SPECIES_TERAPAGOS_TERASTAL GEN9_START + 144
|
||||
#define SPECIES_TERAPAGOS_STELLAR GEN9_START + 145
|
||||
#define SPECIES_PECHARUNT GEN9_START + 146
|
||||
|
||||
#define PLACEHOLDER_START SPECIES_1025
|
||||
#define PLACEHOLDER_START SPECIES_PECHARUNT
|
||||
// XD: Gale of Darkness
|
||||
#define SPECIES_LUGIA_SHADOW PLACEHOLDER_START + 1
|
||||
// Diamond & Pearl
|
||||
|
||||
@ -3,4 +3,6 @@
|
||||
|
||||
extern u32 IntrMain[];
|
||||
|
||||
extern void ReInitializeEWRAM();
|
||||
|
||||
#endif //GUARD_CRT0_H
|
||||
|
||||
@ -6,8 +6,10 @@
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
#define IWRAM_DATA __attribute__((section("iwram_data")))
|
||||
#define EWRAM_DATA __attribute__((section("ewram_data")))
|
||||
#define IWRAM_DATA __attribute__((section(".bss")))
|
||||
#define EWRAM_DATA __attribute__((section(".sbss")))
|
||||
#define IWRAM_INIT __attribute__((section(".iwram")))
|
||||
#define EWRAM_INIT __attribute__((section(".ewram")))
|
||||
#define UNUSED __attribute__((unused))
|
||||
|
||||
#if MODERN
|
||||
|
||||
@ -514,6 +514,13 @@ struct Ability
|
||||
u8 name[ABILITY_NAME_LENGTH + 1];
|
||||
const u8 *description;
|
||||
s8 aiRating;
|
||||
u8 cantBeCopied:1; // cannot be copied by Role Play or Doodle
|
||||
u8 cantBeSwapped:1; // cannot be swapped with Skill Swap or Wandering Spirit
|
||||
u8 cantBeTraced:1; // cannot be copied by Trace - same as cantBeCopied except for Wonder Guard
|
||||
u8 cantBeSuppressed:1; // cannot be negated by Gastro Acid or Neutralizing Gas
|
||||
u8 cantBeOverwritten:1; // cannot be overwritten by Entrainment, Worry Seed or Simple Beam (but can be by Mummy) - same as cantBeSuppressed except for Truant
|
||||
u8 breakable:1; // can be bypassed by Mold Breaker and clones
|
||||
u8 failsOnImposter:1; // doesn't work on an Imposter mon; when can we actually use this?
|
||||
};
|
||||
|
||||
#define SPINDA_SPOT_WIDTH 16
|
||||
|
||||
38
ld_script.ld
38
ld_script.ld
@ -13,19 +13,35 @@ MEMORY
|
||||
|
||||
SECTIONS {
|
||||
|
||||
ewram 0x2000000 (NOLOAD) :
|
||||
.ewram ORIGIN(EWRAM) : AT (__ewram_lma)
|
||||
ALIGN(4)
|
||||
{
|
||||
__ewram_start = .;
|
||||
*(.ewram*)
|
||||
__ewram_end = .;
|
||||
} > EWRAM
|
||||
|
||||
.ewram.sbss (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
INCLUDE "sym_ewram.ld"
|
||||
src/*.o(ewram_data);
|
||||
gflib/*.o(ewram_data);
|
||||
src/*.o(.sbss);
|
||||
gflib/*.o(.sbss);
|
||||
|
||||
*libc.a:impure.o(.data);
|
||||
*libc.a:locale.o(.data);
|
||||
*libc.a:mallocr.o(.data);
|
||||
} > EWRAM
|
||||
|
||||
iwram 0x3000000 (NOLOAD) :
|
||||
.iwram ORIGIN(IWRAM) : AT (__iwram_lma)
|
||||
ALIGN(4)
|
||||
{
|
||||
__iwram_start = .;
|
||||
*(.iwram*);
|
||||
__iwram_end = .;
|
||||
} > IWRAM
|
||||
|
||||
.iwram.bss (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
/* .bss starts at 0x3000000 */
|
||||
@ -1324,6 +1340,20 @@ SECTIONS {
|
||||
data/*.o(.rodata);
|
||||
} > ROM = 0
|
||||
|
||||
.data.iwram :
|
||||
ALIGN(4)
|
||||
{
|
||||
__iwram_lma = .;
|
||||
. = . + (__iwram_end - __iwram_start);
|
||||
} > ROM = 0
|
||||
|
||||
.data.ewram :
|
||||
ALIGN(4)
|
||||
{
|
||||
__ewram_lma = .;
|
||||
. = . + (__ewram_end - __ewram_start);
|
||||
} > ROM = 0
|
||||
|
||||
__rom_end = .;
|
||||
|
||||
/* DWARF debug sections.
|
||||
|
||||
@ -12,15 +12,32 @@ MEMORY
|
||||
}
|
||||
|
||||
SECTIONS {
|
||||
ewram 0x2000000 (NOLOAD) :
|
||||
|
||||
|
||||
.ewram ORIGIN(EWRAM) : AT (__ewram_lma)
|
||||
ALIGN(4)
|
||||
{
|
||||
src/*.o(ewram_data);
|
||||
gflib/*.o(ewram_data);
|
||||
|
||||
__ewram_start = .;
|
||||
*(.ewram*)
|
||||
__ewram_end = .;
|
||||
} > EWRAM
|
||||
|
||||
iwram 0x3000000 (NOLOAD) :
|
||||
.ewram.sbss (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/*.o(.sbss);
|
||||
gflib/*.o(.sbss);
|
||||
} > EWRAM
|
||||
|
||||
.iwram ORIGIN(IWRAM) : AT (__iwram_lma)
|
||||
ALIGN(4)
|
||||
{
|
||||
__iwram_start = .;
|
||||
*(.iwram*);
|
||||
__iwram_end = .;
|
||||
} > IWRAM
|
||||
|
||||
.iwram.bss (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/*.o(.bss);
|
||||
@ -38,9 +55,8 @@ SECTIONS {
|
||||
} > IWRAM
|
||||
|
||||
/* BEGIN ROM DATA */
|
||||
. = 0x8000000;
|
||||
|
||||
.text :
|
||||
.text ORIGIN(ROM) :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/rom_header.o(.text*);
|
||||
@ -125,6 +141,20 @@ SECTIONS {
|
||||
src/graphics.o(.rodata);
|
||||
} > ROM =0
|
||||
|
||||
.data.iwram :
|
||||
ALIGN(4)
|
||||
{
|
||||
__iwram_lma = .;
|
||||
. = . + (__iwram_end - __iwram_start);
|
||||
} > ROM = 0
|
||||
|
||||
.data.ewram :
|
||||
ALIGN(4)
|
||||
{
|
||||
__ewram_lma = .;
|
||||
. = . + (__ewram_end - __ewram_start);
|
||||
} > ROM = 0
|
||||
|
||||
__rom_end = .;
|
||||
|
||||
/* DWARF debug sections.
|
||||
|
||||
@ -12,15 +12,32 @@ MEMORY
|
||||
}
|
||||
|
||||
SECTIONS {
|
||||
ewram 0x2000000 (NOLOAD) :
|
||||
|
||||
.ewram ORIGIN(EWRAM) : AT (__ewram_lma)
|
||||
ALIGN(4)
|
||||
{
|
||||
src/*.o(ewram_data);
|
||||
gflib/*.o(ewram_data);
|
||||
test/*.o(ewram_data);
|
||||
__ewram_start = .;
|
||||
*(.ewram*)
|
||||
__ewram_end = .;
|
||||
} > EWRAM
|
||||
|
||||
iwram 0x3000000 (NOLOAD) :
|
||||
.ewram.sbss (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/*.o(.sbss);
|
||||
gflib/*.o(.sbss);
|
||||
test/*.o(.sbss);
|
||||
} > EWRAM
|
||||
|
||||
.iwram ORIGIN(IWRAM) : AT (__iwram_lma)
|
||||
ALIGN(4)
|
||||
{
|
||||
__iwram_start = .;
|
||||
*(.iwram*);
|
||||
__iwram_end = .;
|
||||
} > IWRAM
|
||||
|
||||
.iwram.sbss (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/*.o(.bss);
|
||||
@ -97,6 +114,20 @@ SECTIONS {
|
||||
src/libisagbprn.o(.rodata);
|
||||
} > ROM =0
|
||||
|
||||
.data.iwram :
|
||||
ALIGN(4)
|
||||
{
|
||||
__iwram_lma = .;
|
||||
. = . + (__iwram_end - __iwram_start);
|
||||
} > ROM = 0
|
||||
|
||||
.data.ewram :
|
||||
ALIGN(4)
|
||||
{
|
||||
__ewram_lma = .;
|
||||
. = . + (__ewram_end - __ewram_start);
|
||||
} > ROM = 0
|
||||
|
||||
tests :
|
||||
ALIGN(4)
|
||||
{
|
||||
|
||||
@ -2153,8 +2153,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
case EFFECT_ROLE_PLAY:
|
||||
if (aiData->abilities[battlerAtk] == aiData->abilities[battlerDef]
|
||||
|| aiData->abilities[battlerDef] == ABILITY_NONE
|
||||
|| IsRolePlayDoodleBannedAbilityAttacker(aiData->abilities[battlerAtk])
|
||||
|| IsRolePlayDoodleBannedAbility(aiData->abilities[battlerDef]))
|
||||
|| gAbilities[aiData->abilities[battlerAtk]].cantBeSuppressed
|
||||
|| gAbilities[aiData->abilities[battlerDef]].cantBeCopied)
|
||||
ADJUST_SCORE(-10);
|
||||
else if (IsAbilityOfRating(aiData->abilities[battlerAtk], 5))
|
||||
ADJUST_SCORE(-4);
|
||||
@ -2183,25 +2183,26 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
break;
|
||||
case EFFECT_SKILL_SWAP:
|
||||
if (aiData->abilities[battlerAtk] == ABILITY_NONE || aiData->abilities[battlerDef] == ABILITY_NONE
|
||||
|| IsSkillSwapBannedAbility(aiData->abilities[battlerAtk]) || IsSkillSwapBannedAbility(aiData->abilities[battlerDef])
|
||||
|| gAbilities[aiData->abilities[battlerAtk]].cantBeSwapped
|
||||
|| gAbilities[aiData->abilities[battlerDef]].cantBeSwapped
|
||||
|| aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD)
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_WORRY_SEED:
|
||||
if (aiData->abilities[battlerDef] == ABILITY_INSOMNIA
|
||||
|| IsWorrySeedBannedAbility(aiData->abilities[battlerDef])
|
||||
|| gAbilities[aiData->abilities[battlerDef]].cantBeOverwritten
|
||||
|| aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD)
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_GASTRO_ACID:
|
||||
if (gStatuses3[battlerDef] & STATUS3_GASTRO_ACID
|
||||
|| IsGastroAcidBannedAbility(aiData->abilities[battlerDef]))
|
||||
|| gAbilities[aiData->abilities[battlerDef]].cantBeSuppressed)
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_ENTRAINMENT:
|
||||
if (aiData->abilities[battlerAtk] == ABILITY_NONE
|
||||
|| IsEntrainmentBannedAbilityAttacker(aiData->abilities[battlerAtk])
|
||||
|| IsEntrainmentBannedAbility(aiData->abilities[battlerDef])
|
||||
|| gAbilities[aiData->abilities[battlerAtk]].cantBeCopied
|
||||
|| gAbilities[aiData->abilities[battlerDef]].cantBeOverwritten
|
||||
|| aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ABILITY_SHIELD)
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
@ -2209,7 +2210,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
break;
|
||||
case EFFECT_SIMPLE_BEAM:
|
||||
if (aiData->abilities[battlerDef] == ABILITY_SIMPLE
|
||||
|| IsSimpleBeamBannedAbility(aiData->abilities[battlerDef])
|
||||
|| gAbilities[aiData->abilities[battlerDef]].cantBeOverwritten
|
||||
|| aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD)
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
@ -4377,8 +4378,8 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
}
|
||||
break;
|
||||
case EFFECT_ROLE_PLAY:
|
||||
if (!IsRolePlayDoodleBannedAbilityAttacker(aiData->abilities[battlerAtk])
|
||||
&& !IsRolePlayDoodleBannedAbility(aiData->abilities[battlerDef])
|
||||
if (!gAbilities[aiData->abilities[battlerAtk]].cantBeSuppressed
|
||||
&& !gAbilities[aiData->abilities[battlerDef]].cantBeCopied
|
||||
&& !IsAbilityOfRating(aiData->abilities[battlerAtk], 5)
|
||||
&& IsAbilityOfRating(aiData->abilities[battlerDef], 5))
|
||||
ADJUST_SCORE(2);
|
||||
|
||||
@ -9210,28 +9210,14 @@ static void Cmd_various(void)
|
||||
i = GetBattlerAbility(gBattlerAbility);
|
||||
if (IsBattlerAlive(gBattlerAbility)
|
||||
&& (i == ABILITY_RECEIVER || i == ABILITY_POWER_OF_ALCHEMY)
|
||||
&& GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD)
|
||||
&& GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD
|
||||
&& !gAbilities[gBattleMons[battler].ability].cantBeCopied)
|
||||
{
|
||||
switch (gBattleMons[battler].ability)
|
||||
{ // Can't copy these abilities.
|
||||
case ABILITY_POWER_OF_ALCHEMY: case ABILITY_RECEIVER:
|
||||
case ABILITY_FORECAST: case ABILITY_MULTITYPE:
|
||||
case ABILITY_FLOWER_GIFT: case ABILITY_ILLUSION:
|
||||
case ABILITY_WONDER_GUARD: case ABILITY_ZEN_MODE:
|
||||
case ABILITY_STANCE_CHANGE: case ABILITY_IMPOSTER:
|
||||
case ABILITY_POWER_CONSTRUCT: case ABILITY_BATTLE_BOND:
|
||||
case ABILITY_SCHOOLING: case ABILITY_COMATOSE:
|
||||
case ABILITY_SHIELDS_DOWN: case ABILITY_DISGUISE:
|
||||
case ABILITY_RKS_SYSTEM: case ABILITY_TRACE:
|
||||
case ABILITY_ZERO_TO_HERO:
|
||||
break;
|
||||
default:
|
||||
gBattleStruct->tracedAbility[gBattlerAbility] = gBattleMons[battler].ability; // re-using the variable for trace
|
||||
gBattleScripting.battler = battler;
|
||||
BattleScriptPush(cmd->nextInstr);
|
||||
gBattlescriptCurrInstr = BattleScript_ReceiverActivates;
|
||||
return;
|
||||
}
|
||||
gBattleStruct->tracedAbility[gBattlerAbility] = gBattleMons[battler].ability; // re-using the variable for trace
|
||||
gBattleScripting.battler = battler;
|
||||
BattleScriptPush(cmd->nextInstr);
|
||||
gBattlescriptCurrInstr = BattleScript_ReceiverActivates;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -9329,7 +9315,7 @@ static void Cmd_various(void)
|
||||
case VARIOUS_SET_SIMPLE_BEAM:
|
||||
{
|
||||
VARIOUS_ARGS(const u8 *failInstr);
|
||||
if (IsSimpleBeamBannedAbility(gBattleMons[gBattlerTarget].ability)
|
||||
if (gAbilities[gBattleMons[gBattlerTarget].ability].cantBeOverwritten
|
||||
|| gBattleMons[gBattlerTarget].ability == ABILITY_SIMPLE)
|
||||
{
|
||||
RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability);
|
||||
@ -9353,8 +9339,8 @@ static void Cmd_various(void)
|
||||
case VARIOUS_TRY_ENTRAINMENT:
|
||||
{
|
||||
VARIOUS_ARGS(const u8 *failInstr);
|
||||
if (IsEntrainmentBannedAbilityAttacker(gBattleMons[gBattlerAttacker].ability)
|
||||
|| IsEntrainmentBannedAbility(gBattleMons[gBattlerTarget].ability))
|
||||
if (gAbilities[gBattleMons[gBattlerAttacker].ability].cantBeCopied
|
||||
|| gAbilities[gBattleMons[gBattlerTarget].ability].cantBeOverwritten)
|
||||
{
|
||||
RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability);
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
@ -13951,9 +13937,9 @@ static void Cmd_trycopyability(void)
|
||||
|
||||
if (gBattleMons[battler].ability == defAbility
|
||||
|| defAbility == ABILITY_NONE
|
||||
|| IsRolePlayDoodleBannedAbilityAttacker(gBattleMons[battler].ability)
|
||||
|| IsRolePlayDoodleBannedAbilityAttacker(gBattleMons[BATTLE_PARTNER(battler)].ability)
|
||||
|| IsRolePlayDoodleBannedAbility(defAbility))
|
||||
|| gAbilities[gBattleMons[battler].ability].cantBeSuppressed
|
||||
|| gAbilities[gBattleMons[BATTLE_PARTNER(battler)].ability].cantBeSuppressed
|
||||
|| gAbilities[defAbility].cantBeCopied)
|
||||
{
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
}
|
||||
@ -14029,7 +14015,7 @@ static void Cmd_setgastroacid(void)
|
||||
{
|
||||
CMD_ARGS(const u8 *failInstr);
|
||||
|
||||
if (IsGastroAcidBannedAbility(gBattleMons[gBattlerTarget].ability))
|
||||
if (gAbilities[gBattleMons[gBattlerTarget].ability].cantBeSuppressed)
|
||||
{
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
}
|
||||
@ -14129,8 +14115,8 @@ static void Cmd_tryswapabilities(void)
|
||||
{
|
||||
CMD_ARGS(const u8 *failInstr);
|
||||
|
||||
if (IsSkillSwapBannedAbility(gBattleMons[gBattlerAttacker].ability)
|
||||
|| IsSkillSwapBannedAbility(gBattleMons[gBattlerTarget].ability))
|
||||
if (gAbilities[gBattleMons[gBattlerAttacker].ability].cantBeSwapped
|
||||
|| gAbilities[gBattleMons[gBattlerTarget].ability].cantBeSwapped)
|
||||
{
|
||||
RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability);
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
@ -15489,7 +15475,8 @@ static void Cmd_tryworryseed(void)
|
||||
{
|
||||
CMD_ARGS(const u8 *failInstr);
|
||||
|
||||
if (IsWorrySeedBannedAbility(gBattleMons[gBattlerTarget].ability))
|
||||
if (gAbilities[gBattleMons[gBattlerTarget].ability].cantBeOverwritten
|
||||
|| gBattleMons[gBattlerTarget].ability == ABILITY_INSOMNIA)
|
||||
{
|
||||
RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability);
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
|
||||
|
||||
@ -94,224 +94,6 @@ static const u8 sPkblToEscapeFactor[][3] = {
|
||||
static const u8 sGoNearCounterToCatchFactor[] = {4, 3, 2, 1};
|
||||
static const u8 sGoNearCounterToEscapeFactor[] = {4, 4, 4, 4};
|
||||
|
||||
static const u16 sSkillSwapBannedAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_BATTLE_BOND,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_COMMANDER,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_HADRON_ENGINE,
|
||||
ABILITY_HUNGER_SWITCH,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_ILLUSION,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_NEUTRALIZING_GAS,
|
||||
ABILITY_ORICHALCUM_PULSE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_PROTOSYNTHESIS,
|
||||
ABILITY_QUARK_DRIVE,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_WONDER_GUARD,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
static const u16 sRolePlayDoodleBannedAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_BATTLE_BOND,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_COMMANDER,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_FLOWER_GIFT,
|
||||
ABILITY_FORECAST,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_HADRON_ENGINE,
|
||||
ABILITY_HUNGER_SWITCH,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_ILLUSION,
|
||||
ABILITY_IMPOSTER,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_NEUTRALIZING_GAS,
|
||||
ABILITY_ORICHALCUM_PULSE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_POWER_OF_ALCHEMY,
|
||||
ABILITY_PROTOSYNTHESIS,
|
||||
ABILITY_QUARK_DRIVE,
|
||||
ABILITY_RECEIVER,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_TRACE,
|
||||
ABILITY_WONDER_GUARD,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
static const u16 sRolePlayDoodleBannedAttackerAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_BATTLE_BOND,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_COMMANDER,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_HADRON_ENGINE,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_ORICHALCUM_PULSE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_PROTOSYNTHESIS,
|
||||
ABILITY_QUARK_DRIVE,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
static const u16 sWorrySeedBannedAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_BATTLE_BOND,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_COMMANDER,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_HADRON_ENGINE,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_INSOMNIA,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_ORICHALCUM_PULSE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_PROTOSYNTHESIS,
|
||||
ABILITY_QUARK_DRIVE,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_TRUANT,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
static const u16 sGastroAcidBannedAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_BATTLE_BOND,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_COMMANDER,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_HADRON_ENGINE,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_ORICHALCUM_PULSE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
static const u16 sEntrainmentBannedAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_BATTLE_BOND,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_COMMANDER,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_HADRON_ENGINE,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_ORICHALCUM_PULSE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_PROTOSYNTHESIS,
|
||||
ABILITY_QUARK_DRIVE,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_TRUANT,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
static const u16 sEntrainmentBannedAttackerAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_BATTLE_BOND,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_COMMANDER,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_FLOWER_GIFT,
|
||||
ABILITY_FORECAST,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_HADRON_ENGINE,
|
||||
ABILITY_HUNGER_SWITCH,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_ILLUSION,
|
||||
ABILITY_IMPOSTER,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_NEUTRALIZING_GAS,
|
||||
ABILITY_ORICHALCUM_PULSE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_POWER_OF_ALCHEMY,
|
||||
ABILITY_PROTOSYNTHESIS,
|
||||
ABILITY_QUARK_DRIVE,
|
||||
ABILITY_RECEIVER,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_TRACE,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
static const u16 sSimpleBeamBannedAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_BATTLE_BOND,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_COMMANDER,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_HADRON_ENGINE,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_ORICHALCUM_PULSE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_PROTOSYNTHESIS,
|
||||
ABILITY_QUARK_DRIVE,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_SIMPLE,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_TRUANT,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
static u8 CalcBeatUpPower(void)
|
||||
{
|
||||
u8 basePower;
|
||||
@ -985,114 +767,6 @@ void HandleAction_ActionFinished(void)
|
||||
}
|
||||
}
|
||||
|
||||
static const u8 sAbilitiesAffectedByMoldBreaker[] =
|
||||
{
|
||||
[ABILITY_BATTLE_ARMOR] = 1,
|
||||
[ABILITY_CLEAR_BODY] = 1,
|
||||
[ABILITY_DAMP] = 1,
|
||||
[ABILITY_DRY_SKIN] = 1,
|
||||
[ABILITY_FILTER] = 1,
|
||||
[ABILITY_FLASH_FIRE] = 1,
|
||||
[ABILITY_FLOWER_GIFT] = 1,
|
||||
[ABILITY_HEATPROOF] = 1,
|
||||
[ABILITY_HYPER_CUTTER] = 1,
|
||||
[ABILITY_IMMUNITY] = 1,
|
||||
[ABILITY_INNER_FOCUS] = 1,
|
||||
[ABILITY_INSOMNIA] = 1,
|
||||
[ABILITY_KEEN_EYE] = 1,
|
||||
[ABILITY_LEAF_GUARD] = 1,
|
||||
[ABILITY_LEVITATE] = 1,
|
||||
[ABILITY_LIGHTNING_ROD] = 1,
|
||||
[ABILITY_LIMBER] = 1,
|
||||
[ABILITY_MAGMA_ARMOR] = 1,
|
||||
[ABILITY_MARVEL_SCALE] = 1,
|
||||
[ABILITY_MOTOR_DRIVE] = 1,
|
||||
[ABILITY_OBLIVIOUS] = 1,
|
||||
[ABILITY_OWN_TEMPO] = 1,
|
||||
[ABILITY_SAND_VEIL] = 1,
|
||||
[ABILITY_SHELL_ARMOR] = 1,
|
||||
[ABILITY_SHIELD_DUST] = 1,
|
||||
[ABILITY_SIMPLE] = 1,
|
||||
[ABILITY_SNOW_CLOAK] = 1,
|
||||
[ABILITY_SOLID_ROCK] = 1,
|
||||
[ABILITY_SOUNDPROOF] = 1,
|
||||
[ABILITY_STICKY_HOLD] = 1,
|
||||
[ABILITY_STORM_DRAIN] = 1,
|
||||
[ABILITY_STURDY] = 1,
|
||||
[ABILITY_SUCTION_CUPS] = 1,
|
||||
[ABILITY_TANGLED_FEET] = 1,
|
||||
[ABILITY_THICK_FAT] = 1,
|
||||
[ABILITY_UNAWARE] = 1,
|
||||
[ABILITY_VITAL_SPIRIT] = 1,
|
||||
[ABILITY_VOLT_ABSORB] = 1,
|
||||
[ABILITY_WATER_ABSORB] = 1,
|
||||
[ABILITY_WATER_VEIL] = 1,
|
||||
[ABILITY_WHITE_SMOKE] = 1,
|
||||
[ABILITY_WONDER_GUARD] = 1,
|
||||
[ABILITY_BIG_PECKS] = 1,
|
||||
[ABILITY_CONTRARY] = 1,
|
||||
[ABILITY_FRIEND_GUARD] = 1,
|
||||
[ABILITY_HEAVY_METAL] = 1,
|
||||
[ABILITY_LIGHT_METAL] = 1,
|
||||
[ABILITY_MAGIC_BOUNCE] = 1,
|
||||
[ABILITY_MULTISCALE] = 1,
|
||||
[ABILITY_SAP_SIPPER] = 1,
|
||||
[ABILITY_TELEPATHY] = 1,
|
||||
[ABILITY_WONDER_SKIN] = 1,
|
||||
[ABILITY_AROMA_VEIL] = 1,
|
||||
[ABILITY_BULLETPROOF] = 1,
|
||||
[ABILITY_FLOWER_VEIL] = 1,
|
||||
[ABILITY_FUR_COAT] = 1,
|
||||
[ABILITY_OVERCOAT] = 1,
|
||||
[ABILITY_SWEET_VEIL] = 1,
|
||||
[ABILITY_DAZZLING] = 1,
|
||||
[ABILITY_DISGUISE] = 1,
|
||||
[ABILITY_FLUFFY] = 1,
|
||||
[ABILITY_QUEENLY_MAJESTY] = 1,
|
||||
[ABILITY_WATER_BUBBLE] = 1,
|
||||
[ABILITY_MIRROR_ARMOR] = 1,
|
||||
[ABILITY_PUNK_ROCK] = 1,
|
||||
[ABILITY_ICE_SCALES] = 1,
|
||||
[ABILITY_ICE_FACE] = 1,
|
||||
[ABILITY_PASTEL_VEIL] = 1,
|
||||
[ABILITY_ARMOR_TAIL] = 1,
|
||||
[ABILITY_EARTH_EATER] = 1,
|
||||
[ABILITY_GOOD_AS_GOLD] = 1,
|
||||
[ABILITY_PURIFYING_SALT] = 1,
|
||||
[ABILITY_WELL_BAKED_BODY] = 1,
|
||||
[ABILITY_MINDS_EYE] = 1,
|
||||
[ABILITY_ILLUMINATE] = 1,
|
||||
};
|
||||
|
||||
static const u8 sAbilitiesNotTraced[ABILITIES_COUNT] =
|
||||
{
|
||||
[ABILITY_AS_ONE_ICE_RIDER] = 1,
|
||||
[ABILITY_AS_ONE_SHADOW_RIDER] = 1,
|
||||
[ABILITY_BATTLE_BOND] = 1,
|
||||
[ABILITY_COMATOSE] = 1,
|
||||
[ABILITY_DISGUISE] = 1,
|
||||
[ABILITY_FLOWER_GIFT] = 1,
|
||||
[ABILITY_FORECAST] = 1,
|
||||
[ABILITY_GULP_MISSILE] = 1,
|
||||
[ABILITY_HUNGER_SWITCH] = 1,
|
||||
[ABILITY_ICE_FACE] = 1,
|
||||
[ABILITY_ILLUSION] = 1,
|
||||
[ABILITY_IMPOSTER] = 1,
|
||||
[ABILITY_MULTITYPE] = 1,
|
||||
[ABILITY_NEUTRALIZING_GAS] = 1,
|
||||
[ABILITY_NONE] = 1,
|
||||
[ABILITY_POWER_CONSTRUCT] = 1,
|
||||
[ABILITY_POWER_OF_ALCHEMY] = 1,
|
||||
[ABILITY_RECEIVER] = 1,
|
||||
[ABILITY_RKS_SYSTEM] = 1,
|
||||
[ABILITY_SCHOOLING] = 1,
|
||||
[ABILITY_SHIELDS_DOWN] = 1,
|
||||
[ABILITY_STANCE_CHANGE] = 1,
|
||||
[ABILITY_TRACE] = 1,
|
||||
[ABILITY_ZEN_MODE] = 1,
|
||||
[ABILITY_ZERO_TO_HERO] = 1,
|
||||
};
|
||||
|
||||
static const u8 sHoldEffectToType[][2] =
|
||||
{
|
||||
{HOLD_EFFECT_BUG_POWER, TYPE_BUG},
|
||||
@ -5459,34 +5133,22 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
&& IsBattlerAlive(gBattlerAttacker)
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& IsMoveMakingContact(move, gBattlerAttacker)
|
||||
&& gBattleStruct->overwrittenAbilities[gBattlerAttacker] != GetBattlerAbility(gBattlerTarget))
|
||||
&& gBattleStruct->overwrittenAbilities[gBattlerAttacker] != GetBattlerAbility(gBattlerTarget)
|
||||
&& gBattleMons[gBattlerTarget].ability != ABILITY_MUMMY
|
||||
&& gBattleMons[gBattlerTarget].ability != ABILITY_LINGERING_AROMA
|
||||
&& !gAbilities[gBattleMons[gBattlerTarget].ability].cantBeSuppressed)
|
||||
{
|
||||
switch (gBattleMons[gBattlerAttacker].ability)
|
||||
if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD)
|
||||
{
|
||||
case ABILITY_MUMMY:
|
||||
case ABILITY_BATTLE_BOND:
|
||||
case ABILITY_COMATOSE:
|
||||
case ABILITY_DISGUISE:
|
||||
case ABILITY_MULTITYPE:
|
||||
case ABILITY_POWER_CONSTRUCT:
|
||||
case ABILITY_RKS_SYSTEM:
|
||||
case ABILITY_SCHOOLING:
|
||||
case ABILITY_SHIELDS_DOWN:
|
||||
case ABILITY_STANCE_CHANGE:
|
||||
break;
|
||||
default:
|
||||
if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD)
|
||||
{
|
||||
RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD);
|
||||
break;
|
||||
}
|
||||
|
||||
gLastUsedAbility = gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_MummyActivates;
|
||||
effect++;
|
||||
RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD);
|
||||
break;
|
||||
}
|
||||
|
||||
gLastUsedAbility = gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_MummyActivates;
|
||||
effect++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ABILITY_WANDERING_SPIRIT:
|
||||
@ -5494,40 +5156,22 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
&& IsBattlerAlive(gBattlerAttacker)
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& IsMoveMakingContact(move, gBattlerAttacker)
|
||||
&& !IsDynamaxed(gBattlerTarget))
|
||||
&& !IsDynamaxed(gBattlerTarget)
|
||||
&& !gAbilities[gBattleMons[gBattlerAttacker].ability].cantBeSwapped)
|
||||
{
|
||||
switch (gBattleMons[gBattlerAttacker].ability)
|
||||
if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD)
|
||||
{
|
||||
case ABILITY_DISGUISE:
|
||||
case ABILITY_FLOWER_GIFT:
|
||||
case ABILITY_GULP_MISSILE:
|
||||
case ABILITY_HUNGER_SWITCH:
|
||||
case ABILITY_ICE_FACE:
|
||||
case ABILITY_ILLUSION:
|
||||
case ABILITY_IMPOSTER:
|
||||
case ABILITY_RECEIVER:
|
||||
case ABILITY_RKS_SYSTEM:
|
||||
case ABILITY_SCHOOLING:
|
||||
case ABILITY_STANCE_CHANGE:
|
||||
case ABILITY_WONDER_GUARD:
|
||||
case ABILITY_ZEN_MODE:
|
||||
case ABILITY_ZERO_TO_HERO:
|
||||
break;
|
||||
default:
|
||||
if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD)
|
||||
{
|
||||
RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD);
|
||||
break;
|
||||
}
|
||||
|
||||
gLastUsedAbility = gBattleMons[gBattlerAttacker].ability;
|
||||
gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability;
|
||||
gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gLastUsedAbility;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_WanderingSpiritActivates;
|
||||
effect++;
|
||||
RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD);
|
||||
break;
|
||||
}
|
||||
|
||||
gLastUsedAbility = gBattleMons[gBattlerAttacker].ability;
|
||||
gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability;
|
||||
gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gLastUsedAbility;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_WanderingSpiritActivates;
|
||||
effect++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ABILITY_ANGER_POINT:
|
||||
@ -6152,17 +5796,17 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
if (!sAbilitiesNotTraced[gBattleMons[target1].ability] && gBattleMons[target1].hp != 0
|
||||
&& !sAbilitiesNotTraced[gBattleMons[target2].ability] && gBattleMons[target2].hp != 0)
|
||||
if (!gAbilities[gBattleMons[target1].ability].cantBeTraced && gBattleMons[target1].hp != 0
|
||||
&& !gAbilities[gBattleMons[target2].ability].cantBeTraced && gBattleMons[target2].hp != 0)
|
||||
chosenTarget = GetBattlerAtPosition((RandomPercentage(RNG_TRACE, 50) * 2) | side), effect++;
|
||||
else if (!sAbilitiesNotTraced[gBattleMons[target1].ability] && gBattleMons[target1].hp != 0)
|
||||
else if (!gAbilities[gBattleMons[target1].ability].cantBeTraced && gBattleMons[target1].hp != 0)
|
||||
chosenTarget = target1, effect++;
|
||||
else if (!sAbilitiesNotTraced[gBattleMons[target2].ability] && gBattleMons[target2].hp != 0)
|
||||
else if (!gAbilities[gBattleMons[target2].ability].cantBeTraced && gBattleMons[target2].hp != 0)
|
||||
chosenTarget = target2, effect++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!sAbilitiesNotTraced[gBattleMons[target1].ability] && gBattleMons[target1].hp != 0)
|
||||
if (!gAbilities[gBattleMons[target1].ability].cantBeTraced && gBattleMons[target1].hp != 0)
|
||||
chosenTarget = target1, effect++;
|
||||
}
|
||||
|
||||
@ -6324,35 +5968,6 @@ bool32 TryPrimalReversion(u32 battler)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static const u16 sNeutralizingGasBannedAbilities[] =
|
||||
{
|
||||
ABILITY_AS_ONE_ICE_RIDER,
|
||||
ABILITY_AS_ONE_SHADOW_RIDER,
|
||||
ABILITY_COMATOSE,
|
||||
ABILITY_DISGUISE,
|
||||
ABILITY_GULP_MISSILE,
|
||||
ABILITY_ICE_FACE,
|
||||
ABILITY_MULTITYPE,
|
||||
ABILITY_POWER_CONSTRUCT,
|
||||
ABILITY_RKS_SYSTEM,
|
||||
ABILITY_SCHOOLING,
|
||||
ABILITY_SHIELDS_DOWN,
|
||||
ABILITY_STANCE_CHANGE,
|
||||
ABILITY_ZEN_MODE,
|
||||
ABILITY_ZERO_TO_HERO,
|
||||
};
|
||||
|
||||
bool32 IsNeutralizingGasBannedAbility(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sNeutralizingGasBannedAbilities); i++)
|
||||
{
|
||||
if (ability == sNeutralizingGasBannedAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsNeutralizingGasOnField(void)
|
||||
{
|
||||
u32 i;
|
||||
@ -6386,10 +6001,13 @@ bool32 IsMoldBreakerTypeAbility(u32 ability)
|
||||
|
||||
u32 GetBattlerAbility(u32 battler)
|
||||
{
|
||||
if (gAbilities[gBattleMons[battler].ability].cantBeSuppressed)
|
||||
return gBattleMons[battler].ability;
|
||||
|
||||
if (gStatuses3[battler] & STATUS3_GASTRO_ACID)
|
||||
return ABILITY_NONE;
|
||||
|
||||
if (IsNeutralizingGasOnField() && !IsNeutralizingGasBannedAbility(gBattleMons[battler].ability))
|
||||
if (IsNeutralizingGasOnField() && gBattleMons[battler].ability != ABILITY_NEUTRALIZING_GAS)
|
||||
return ABILITY_NONE;
|
||||
|
||||
if (IsMyceliumMightOnField())
|
||||
@ -6398,7 +6016,7 @@ u32 GetBattlerAbility(u32 battler)
|
||||
if (((IsMoldBreakerTypeAbility(gBattleMons[gBattlerAttacker].ability)
|
||||
&& !(gStatuses3[gBattlerAttacker] & STATUS3_GASTRO_ACID))
|
||||
|| gBattleMoves[gCurrentMove].ignoresTargetAbility)
|
||||
&& sAbilitiesAffectedByMoldBreaker[gBattleMons[battler].ability]
|
||||
&& gAbilities[gBattleMons[battler].ability].breakable
|
||||
&& gBattlerByTurnOrder[gCurrentTurnActionNumber] == gBattlerAttacker
|
||||
&& gActionsByTurnOrder[gBattlerByTurnOrder[gBattlerAttacker]] == B_ACTION_USE_MOVE
|
||||
&& gCurrentTurnActionNumber < gBattlersCount)
|
||||
@ -10953,95 +10571,6 @@ bool32 CanFling(u32 battler)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Ability checks
|
||||
bool32 IsSkillSwapBannedAbility(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sSkillSwapBannedAbilities); i++)
|
||||
{
|
||||
if (ability == sSkillSwapBannedAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsRolePlayDoodleBannedAbility(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sRolePlayDoodleBannedAbilities); i++)
|
||||
{
|
||||
if (ability == sRolePlayDoodleBannedAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsRolePlayDoodleBannedAbilityAttacker(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sRolePlayDoodleBannedAttackerAbilities); i++)
|
||||
{
|
||||
if (ability == sRolePlayDoodleBannedAttackerAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsWorrySeedBannedAbility(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sWorrySeedBannedAbilities); i++)
|
||||
{
|
||||
if (ability == sWorrySeedBannedAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsGastroAcidBannedAbility(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sGastroAcidBannedAbilities); i++)
|
||||
{
|
||||
if (ability == sGastroAcidBannedAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsEntrainmentBannedAbility(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sEntrainmentBannedAbilities); i++)
|
||||
{
|
||||
if (ability == sEntrainmentBannedAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsEntrainmentBannedAbilityAttacker(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sEntrainmentBannedAttackerAbilities); i++)
|
||||
{
|
||||
if (ability == sEntrainmentBannedAttackerAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsSimpleBeamBannedAbility(u16 ability)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sSimpleBeamBannedAbilities); i++)
|
||||
{
|
||||
if (ability == sSimpleBeamBannedAbilities[i])
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Sort an array of battlers by speed
|
||||
// Useful for effects like pickpocket, eject button, red card, dancer
|
||||
void SortBattlersBySpeed(u8 *battlers, bool32 slowToFast)
|
||||
|
||||
61
src/crt0.s
61
src/crt0.s
@ -6,22 +6,28 @@
|
||||
|
||||
.align 2, 0
|
||||
Init::
|
||||
@ Set up location for IRQ stack
|
||||
mov r0, #PSR_IRQ_MODE
|
||||
msr cpsr_cf, r0
|
||||
ldr sp, sp_irq
|
||||
@ Set up location for system stack
|
||||
mov r0, #PSR_SYS_MODE
|
||||
msr cpsr_cf, r0
|
||||
ldr sp, sp_sys
|
||||
@ Prepare for interrupt handling
|
||||
ldr r1, =INTR_VECTOR
|
||||
adr r0, IntrMain
|
||||
str r0, [r1]
|
||||
.if MODERN
|
||||
@ Dispatch memory reset request to hardware
|
||||
mov r0, #255 @ RESET_ALL
|
||||
svc #1 << 16
|
||||
.endif @ MODERN
|
||||
@ Fill RAM areas with appropriate data
|
||||
bl InitializeWorkingMemory
|
||||
@ Jump to AgbMain
|
||||
ldr r1, =AgbMain + 1
|
||||
mov lr, pc
|
||||
bx r1
|
||||
@ Re-init if AgbMain exits
|
||||
b Init
|
||||
|
||||
.align 2, 0
|
||||
@ -124,3 +130,54 @@ IntrMain_RetAddr:
|
||||
.pool
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
||||
@ Fills initialized IWRAM and EWRAM sections in RAM from LMA areas in ROM
|
||||
InitializeWorkingMemory:
|
||||
push {r0-r3,lr}
|
||||
ldr r0, =__iwram_lma
|
||||
ldr r1, =__iwram_start
|
||||
ldr r2, =__iwram_end
|
||||
cmp r1, r2
|
||||
beq skip_iwram_copy
|
||||
bl CopyMemory_DMA
|
||||
skip_iwram_copy:
|
||||
ldr r0, =__ewram_lma
|
||||
ldr r1, =__ewram_start
|
||||
ldr r2, =__ewram_end
|
||||
cmp r1, r2
|
||||
beq skip_ewram_copy
|
||||
bl CopyMemory_DMA
|
||||
skip_ewram_copy:
|
||||
pop {r0-r3,lr}
|
||||
bx lr
|
||||
|
||||
@ Uses a DMA transfer to load from r0 into r1 until r2
|
||||
CopyMemory_DMA:
|
||||
subs r2, r2, r1
|
||||
lsr r2, r2, #2
|
||||
mov r4, #0x80000000
|
||||
orr r4, r4, #(1 << 26)
|
||||
orr r2, r2, r4
|
||||
ldr r3, =REG_DMA3
|
||||
stmia r3, {r0, r1, r2}
|
||||
bx lr
|
||||
|
||||
.thumb
|
||||
@ Called from C code to reinitialize working memory after a link connection failure
|
||||
ReInitializeEWRAM::
|
||||
ldr r0, =__ewram_lma
|
||||
ldr r1, =__ewram_start
|
||||
ldr r2, =__ewram_end
|
||||
cmp r1, r2
|
||||
beq EndReinitializeEWRAM
|
||||
subs r2, r1
|
||||
movs r3, #1
|
||||
lsls r3, r3, #26
|
||||
orrs r2, r2, r3
|
||||
swi 0x0B
|
||||
EndReinitializeEWRAM:
|
||||
bx lr
|
||||
|
||||
.pool
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
||||
@ -5,6 +5,8 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("-------"),
|
||||
.description = COMPOUND_STRING("No special ability."),
|
||||
.aiRating = 0,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_STENCH] =
|
||||
@ -33,6 +35,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Battle Armor"),
|
||||
.description = COMPOUND_STRING("Blocks critical hits."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_STURDY] =
|
||||
@ -40,6 +43,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Sturdy"),
|
||||
.description = COMPOUND_STRING("Negates 1-hit KO attacks."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_DAMP] =
|
||||
@ -47,6 +51,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Damp"),
|
||||
.description = COMPOUND_STRING("Prevents self-destruction."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_LIMBER] =
|
||||
@ -54,6 +59,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Limber"),
|
||||
.description = COMPOUND_STRING("Prevents paralysis."),
|
||||
.aiRating = 3,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SAND_VEIL] =
|
||||
@ -61,6 +67,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Sand Veil"),
|
||||
.description = COMPOUND_STRING("Ups evasion in a sandstorm."),
|
||||
.aiRating = 3,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_STATIC] =
|
||||
@ -75,6 +82,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Volt Absorb"),
|
||||
.description = COMPOUND_STRING("Turns electricity into HP."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_WATER_ABSORB] =
|
||||
@ -82,6 +90,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Water Absorb"),
|
||||
.description = COMPOUND_STRING("Changes water into HP."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_OBLIVIOUS] =
|
||||
@ -89,6 +98,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Oblivious"),
|
||||
.description = COMPOUND_STRING("Prevents attraction."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_CLOUD_NINE] =
|
||||
@ -114,6 +124,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Insomnia"),
|
||||
.description = COMPOUND_STRING("Prevents sleep."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_COLOR_CHANGE] =
|
||||
@ -128,6 +139,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Immunity"),
|
||||
.description = COMPOUND_STRING("Prevents poisoning."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_FLASH_FIRE] =
|
||||
@ -135,6 +147,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Flash Fire"),
|
||||
.description = COMPOUND_STRING("Powers up if hit by fire."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SHIELD_DUST] =
|
||||
@ -142,6 +155,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Shield Dust"),
|
||||
.description = COMPOUND_STRING("Prevents added effects."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_OWN_TEMPO] =
|
||||
@ -149,6 +163,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Own Tempo"),
|
||||
.description = COMPOUND_STRING("Prevents confusion."),
|
||||
.aiRating = 3,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SUCTION_CUPS] =
|
||||
@ -156,6 +171,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Suction Cups"),
|
||||
.description = COMPOUND_STRING("Firmly anchors the body."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_INTIMIDATE] =
|
||||
@ -184,6 +200,9 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Wonder Guard"),
|
||||
.description = COMPOUND_STRING("“Supereffective” hits."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_LEVITATE] =
|
||||
@ -191,6 +210,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Levitate"),
|
||||
.description = COMPOUND_STRING("Not hit by Ground attacks."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_EFFECT_SPORE] =
|
||||
@ -212,6 +232,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Clear Body"),
|
||||
.description = COMPOUND_STRING("Prevents ability reduction."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_NATURAL_CURE] =
|
||||
@ -230,6 +251,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Draws electrical moves."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SERENE_GRACE] =
|
||||
@ -258,6 +280,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Illuminate"),
|
||||
.description = COMPOUND_STRING("Encounter rate increases."),
|
||||
.aiRating = 0,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_TRACE] =
|
||||
@ -265,6 +288,8 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Trace"),
|
||||
.description = COMPOUND_STRING("Copies special ability."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_HUGE_POWER] =
|
||||
@ -286,6 +311,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Inner Focus"),
|
||||
.description = COMPOUND_STRING("Prevents flinching."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_MAGMA_ARMOR] =
|
||||
@ -293,6 +319,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Magma Armor"),
|
||||
.description = COMPOUND_STRING("Prevents freezing."),
|
||||
.aiRating = 1,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_WATER_VEIL] =
|
||||
@ -300,6 +327,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Water Veil"),
|
||||
.description = COMPOUND_STRING("Prevents burns."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_MAGNET_PULL] =
|
||||
@ -314,6 +342,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Soundproof"),
|
||||
.description = COMPOUND_STRING("Avoids sound-based moves."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_RAIN_DISH] =
|
||||
@ -342,6 +371,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Thick Fat"),
|
||||
.description = COMPOUND_STRING("Heat-and-cold protection."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_EARLY_BIRD] =
|
||||
@ -370,6 +400,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Keen Eye"),
|
||||
.description = COMPOUND_STRING("Prevents loss of accuracy."),
|
||||
.aiRating = 1,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_HYPER_CUTTER] =
|
||||
@ -377,6 +408,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Hyper Cutter"),
|
||||
.description = COMPOUND_STRING("Prevents Attack reduction."),
|
||||
.aiRating = 3,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_PICKUP] =
|
||||
@ -391,6 +423,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Truant"),
|
||||
.description = COMPOUND_STRING("Moves only every two turns."),
|
||||
.aiRating = -2,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_HUSTLE] =
|
||||
@ -426,6 +459,8 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Forecast"),
|
||||
.description = COMPOUND_STRING("Changes with the weather."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_STICKY_HOLD] =
|
||||
@ -433,6 +468,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Sticky Hold"),
|
||||
.description = COMPOUND_STRING("Prevents item theft."),
|
||||
.aiRating = 3,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SHED_SKIN] =
|
||||
@ -454,6 +490,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Marvel Scale"),
|
||||
.description = COMPOUND_STRING("Ups Defense if suffering."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_LIQUID_OOZE] =
|
||||
@ -517,6 +554,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Vital Spirit"),
|
||||
.description = COMPOUND_STRING("Prevents sleep."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_WHITE_SMOKE] =
|
||||
@ -524,6 +562,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("White Smoke"),
|
||||
.description = COMPOUND_STRING("Prevents ability reduction."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_PURE_POWER] =
|
||||
@ -538,6 +577,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Shell Armor"),
|
||||
.description = COMPOUND_STRING("Blocks critical hits."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_AIR_LOCK] =
|
||||
@ -552,6 +592,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Tangled Feet"),
|
||||
.description = COMPOUND_STRING("Ups evasion if confused."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_MOTOR_DRIVE] =
|
||||
@ -559,6 +600,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Motor Drive"),
|
||||
.description = COMPOUND_STRING("Electricity raises Speed."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_RIVALRY] =
|
||||
@ -580,6 +622,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Snow Cloak"),
|
||||
.description = COMPOUND_STRING("Ups evasion in Hail or Snow."),
|
||||
.aiRating = 3,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_GLUTTONY] =
|
||||
@ -608,6 +651,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Heatproof"),
|
||||
.description = COMPOUND_STRING("Heat and burn protection."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SIMPLE] =
|
||||
@ -615,6 +659,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Simple"),
|
||||
.description = COMPOUND_STRING("Prone to wild stat changes."),
|
||||
.aiRating = 8,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_DRY_SKIN] =
|
||||
@ -622,6 +667,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Dry Skin"),
|
||||
.description = COMPOUND_STRING("Prefers moisture to heat."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_DOWNLOAD] =
|
||||
@ -727,6 +773,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Leaf Guard"),
|
||||
.description = COMPOUND_STRING("Blocks status in sunshine."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_KLUTZ] =
|
||||
@ -776,6 +823,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Unaware"),
|
||||
.description = COMPOUND_STRING("Ignores stat changes."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_TINTED_LENS] =
|
||||
@ -790,6 +838,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Filter"),
|
||||
.description = COMPOUND_STRING("Weakens “supereffective”."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SLOW_START] =
|
||||
@ -811,6 +860,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Storm Drain"),
|
||||
.description = COMPOUND_STRING("Draws in Water moves."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_ICE_BODY] =
|
||||
@ -825,6 +875,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Solid Rock"),
|
||||
.description = COMPOUND_STRING("Weakens “supereffective”."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SNOW_WARNING] =
|
||||
@ -860,6 +911,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Multitype"),
|
||||
.description = COMPOUND_STRING("Changes type to its Plate."),
|
||||
.aiRating = 8,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_FLOWER_GIFT] =
|
||||
@ -867,6 +923,9 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Flower Gift"),
|
||||
.description = COMPOUND_STRING("Allies power up in sunshine."),
|
||||
.aiRating = 4,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_BAD_DREAMS] =
|
||||
@ -895,6 +954,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Contrary"),
|
||||
.description = COMPOUND_STRING("Inverts stat changes."),
|
||||
.aiRating = 8,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_UNNERVE] =
|
||||
@ -937,6 +997,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Friend Guard"),
|
||||
.description = COMPOUND_STRING("Lowers damage to partner."),
|
||||
.aiRating = 0,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_WEAK_ARMOR] =
|
||||
@ -951,6 +1012,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Heavy Metal"),
|
||||
.description = COMPOUND_STRING("Doubles weight."),
|
||||
.aiRating = -1,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_LIGHT_METAL] =
|
||||
@ -958,6 +1020,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Light Metal"),
|
||||
.description = COMPOUND_STRING("Halves weight."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_MULTISCALE] =
|
||||
@ -965,6 +1028,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Multiscale"),
|
||||
.description = COMPOUND_STRING("Halves damage at full HP."),
|
||||
.aiRating = 8,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_TOXIC_BOOST] =
|
||||
@ -993,6 +1057,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Telepathy"),
|
||||
.description = COMPOUND_STRING("Can't be damaged by an ally."),
|
||||
.aiRating = 0,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_MOODY] =
|
||||
@ -1007,6 +1072,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Overcoat"),
|
||||
.description = COMPOUND_STRING("Blocks weather and powder."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_POISON_TOUCH] =
|
||||
@ -1028,6 +1094,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Big Pecks"),
|
||||
.description = COMPOUND_STRING("Prevents Defense loss."),
|
||||
.aiRating = 1,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SAND_RUSH] =
|
||||
@ -1042,6 +1109,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Wonder Skin"),
|
||||
.description = COMPOUND_STRING("May avoid status problems."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_ANALYTIC] =
|
||||
@ -1056,6 +1124,9 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Illusion"),
|
||||
.description = COMPOUND_STRING("Appears as a partner."),
|
||||
.aiRating = 8,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_IMPOSTER] =
|
||||
@ -1063,6 +1134,8 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Imposter"),
|
||||
.description = COMPOUND_STRING("Transforms into the foe."),
|
||||
.aiRating = 9,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_INFILTRATOR] =
|
||||
@ -1105,6 +1178,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Magic Bounce"),
|
||||
.description = COMPOUND_STRING("Reflects status moves."),
|
||||
.aiRating = 9,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SAP_SIPPER] =
|
||||
@ -1112,6 +1186,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Sap Sipper"),
|
||||
.description = COMPOUND_STRING("Grass increases Attack."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_PRANKSTER] =
|
||||
@ -1140,6 +1215,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Zen Mode"),
|
||||
.description = COMPOUND_STRING("Transforms at half HP."),
|
||||
.aiRating = -1,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = B_UPDATED_ABILITY_DATA >= GEN_7,
|
||||
},
|
||||
|
||||
[ABILITY_VICTORY_STAR] =
|
||||
@ -1168,6 +1247,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Aroma Veil"),
|
||||
.description = COMPOUND_STRING("Prevents limiting of moves."),
|
||||
.aiRating = 3,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_FLOWER_VEIL] =
|
||||
@ -1238,6 +1318,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Sweet Veil"),
|
||||
.description = COMPOUND_STRING("Prevents party from sleep."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_STANCE_CHANGE] =
|
||||
@ -1249,6 +1330,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Transforms as it battles."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_GALE_WINGS] =
|
||||
@ -1274,6 +1360,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Grass Pelt"),
|
||||
.description = COMPOUND_STRING("Ups Defense in grass."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SYMBIOSIS] =
|
||||
@ -1420,6 +1507,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Shields Down"),
|
||||
.description = COMPOUND_STRING("Shell breaks at half HP."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_STAKEOUT] =
|
||||
@ -1497,6 +1589,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Schooling"),
|
||||
.description = COMPOUND_STRING("Forms a school when strong."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_DISGUISE] =
|
||||
@ -1504,6 +1601,12 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Disguise"),
|
||||
.description = COMPOUND_STRING("Decoy protects it once."),
|
||||
.aiRating = 8,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_BATTLE_BOND] =
|
||||
@ -1511,6 +1614,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Battle Bond"),
|
||||
.description = COMPOUND_STRING("Changes form after a KO."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_POWER_CONSTRUCT] =
|
||||
@ -1522,6 +1630,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Cells aid it when weakened."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_CORROSION] =
|
||||
@ -1536,6 +1649,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Comatose"),
|
||||
.description = COMPOUND_STRING("Always drowsing."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_QUEENLY_MAJESTY] =
|
||||
@ -1547,6 +1665,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Protects from priority."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_INNARDS_OUT] =
|
||||
@ -1575,6 +1694,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Fluffy"),
|
||||
.description = COMPOUND_STRING("Tougher but flammable."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_DAZZLING] =
|
||||
@ -1582,6 +1702,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Dazzling"),
|
||||
.description = COMPOUND_STRING("Protects from priority."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SOUL_HEART] =
|
||||
@ -1607,6 +1728,8 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Receiver"),
|
||||
.description = COMPOUND_STRING("Copies ally's ability."),
|
||||
.aiRating = 0,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_POWER_OF_ALCHEMY] =
|
||||
@ -1618,6 +1741,8 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Copies ally's ability."),
|
||||
.aiRating = 0,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_BEAST_BOOST] =
|
||||
@ -1632,6 +1757,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("RKS System"),
|
||||
.description = COMPOUND_STRING("Memories change its type."),
|
||||
.aiRating = 8,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_ELECTRIC_SURGE] =
|
||||
@ -1764,6 +1894,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Mirror Armor"),
|
||||
.description = COMPOUND_STRING("Reflect stat decreases."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_GULP_MISSILE] =
|
||||
@ -1771,6 +1902,9 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Gulp Missile"),
|
||||
.description = COMPOUND_STRING("If hit, spits prey from sea."),
|
||||
.aiRating = 3,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_STALWART] =
|
||||
@ -1792,6 +1926,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Punk Rock"),
|
||||
.description = COMPOUND_STRING("Ups and resists sound."),
|
||||
.aiRating = 2,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SAND_SPIT] =
|
||||
@ -1806,6 +1941,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Ice Scales"),
|
||||
.description = COMPOUND_STRING("Halves special damage."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_RIPEN] =
|
||||
@ -1820,6 +1956,13 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Ice Face"),
|
||||
.description = COMPOUND_STRING("Hail or Snow renew free hit."),
|
||||
.aiRating = 4,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
.breakable = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_POWER_SPOT] =
|
||||
@ -1896,6 +2039,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("All Abilities are nullified."),
|
||||
.aiRating = 5,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_PASTEL_VEIL] =
|
||||
@ -1903,6 +2050,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Pastel Veil"),
|
||||
.description = COMPOUND_STRING("Protects team from poison."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_HUNGER_SWITCH] =
|
||||
@ -1914,6 +2062,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Changes form each turn."),
|
||||
.aiRating = 2,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_QUICK_DRAW] =
|
||||
@ -1978,6 +2130,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("As One"),
|
||||
.description = COMPOUND_STRING("Unnerve and Chilling Neigh."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_AS_ONE_SHADOW_RIDER] =
|
||||
@ -1985,6 +2142,11 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("As One"),
|
||||
.description = COMPOUND_STRING("Unnerve and Grim Neigh."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_LINGERING_AROMA] =
|
||||
@ -2014,6 +2176,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Fire hits up Attack."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_ANGER_SHELL] =
|
||||
@ -2032,6 +2195,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Protected by pure salts."),
|
||||
.aiRating = 6,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_WELL_BAKED_BODY] =
|
||||
@ -2043,6 +2207,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Strengthened by Fire."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_WIND_RIDER] =
|
||||
@ -2050,6 +2215,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Wind Rider"),
|
||||
.description = COMPOUND_STRING("Ups Attack if hit by wind."),
|
||||
.aiRating = 4,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_GUARD_DOG] =
|
||||
@ -2057,6 +2223,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Guard Dog"),
|
||||
.description = COMPOUND_STRING("Cannot be intimidated."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_ROCKY_PAYLOAD] =
|
||||
@ -2082,6 +2249,12 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Zero to Hero"),
|
||||
.description = COMPOUND_STRING("Changes form on switch out."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_COMMANDER] =
|
||||
@ -2089,6 +2262,9 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Commander"),
|
||||
.description = COMPOUND_STRING("Commands from Dondozo."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_ELECTROMORPHOSIS] =
|
||||
@ -2111,6 +2287,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Sun boosts best stat."),
|
||||
.aiRating = 7,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_QUARK_DRIVE] =
|
||||
@ -2118,6 +2298,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Quark Drive"),
|
||||
.description = COMPOUND_STRING("Elec. field ups best stat."),
|
||||
.aiRating = 7,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_GOOD_AS_GOLD] =
|
||||
@ -2125,6 +2309,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Good as Gold"),
|
||||
.description = COMPOUND_STRING("Avoids status problems."),
|
||||
.aiRating = 8,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_VESSEL_OF_RUIN] =
|
||||
@ -2136,6 +2321,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Lowers foes' sp. damage."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_SWORD_OF_RUIN] =
|
||||
@ -2147,6 +2333,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Lowers foes' Defense."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_TABLETS_OF_RUIN] =
|
||||
@ -2158,6 +2345,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Lowers foes' damage."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_BEADS_OF_RUIN] =
|
||||
@ -2169,6 +2357,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Lowers foes' Sp. Defense."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_ORICHALCUM_PULSE] =
|
||||
@ -2244,6 +2433,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Armor Tail"),
|
||||
.description = COMPOUND_STRING("Protects from priority."),
|
||||
.aiRating = 5,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_EARTH_EATER] =
|
||||
@ -2251,6 +2441,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Earth Eater"),
|
||||
.description = COMPOUND_STRING("Eats ground to heal HP."),
|
||||
.aiRating = 7,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_MYCELIUM_MIGHT] =
|
||||
@ -2276,6 +2467,7 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Mind's Eye"),
|
||||
.description = COMPOUND_STRING("Keen Eye and Scrappy."),
|
||||
.aiRating = 8,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_EMBODY_ASPECT_TEAL] =
|
||||
@ -2287,6 +2479,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Raises Speed."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_EMBODY_ASPECT_HEARTHFLAME] =
|
||||
@ -2298,6 +2494,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Raises Attack."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_EMBODY_ASPECT_WELLSPRING] =
|
||||
@ -2309,6 +2509,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Raises Sp. Def."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_EMBODY_ASPECT_CORNERSTONE] =
|
||||
@ -2320,6 +2524,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Raises Defense."),
|
||||
.aiRating = 6,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_TOXIC_CHAIN] =
|
||||
@ -2345,6 +2553,12 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Tera Shift"),
|
||||
.description = COMPOUND_STRING("Terasteralizes upon entry."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.cantBeSuppressed = TRUE,
|
||||
.cantBeOverwritten = TRUE,
|
||||
.failsOnImposter = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_TERA_SHELL] =
|
||||
@ -2352,6 +2566,10 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
.name = _("Tera Shell"),
|
||||
.description = COMPOUND_STRING("Resistant to types at full HP."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
.breakable = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_TERAFORM_ZERO] =
|
||||
@ -2363,6 +2581,9 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Removes weather and terrain."),
|
||||
.aiRating = 10,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
|
||||
[ABILITY_POISON_PUPPETEER] =
|
||||
@ -2374,5 +2595,8 @@ const struct Ability gAbilities[ABILITIES_COUNT] =
|
||||
#endif
|
||||
.description = COMPOUND_STRING("Confuses poisoned foes."),
|
||||
.aiRating = 8,
|
||||
.cantBeCopied = TRUE,
|
||||
.cantBeSwapped = TRUE,
|
||||
.cantBeTraced = TRUE,
|
||||
},
|
||||
};
|
||||
|
||||
@ -9269,6 +9269,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar
|
||||
const u32 gMonShinyPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/shiny.gbapal.lz");
|
||||
const u8 gMonIcon_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/icon.4bpp");
|
||||
// const u8 gMonFootprint_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/footprint.1bpp");
|
||||
|
||||
// const u32 gMonFrontPic_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/front.4bpp.lz");
|
||||
// const u32 gMonPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/icon.4bpp");
|
||||
// const u8 gMonFootprint_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/footprint.1bpp");
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_APPLIN
|
||||
|
||||
@ -9767,6 +9774,15 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar
|
||||
const u32 gMonShinyPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/shiny.gbapal.lz");
|
||||
const u8 gMonIcon_DuraludonGigantamax[] = INCBIN_U8("graphics/pokemon/duraludon/gigantamax/icon.4bpp");
|
||||
#endif //P_GIGANTAMAX_FORMS
|
||||
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
// const u32 gMonFrontPic_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/front.4bpp.lz");
|
||||
// const u32 gMonPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/icon.4bpp");
|
||||
// const u8 gMonFootprint_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/footprint.1bpp");
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_DURALUDON
|
||||
|
||||
#if P_FAMILY_DREEPY
|
||||
@ -10906,6 +10922,72 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar
|
||||
// const u32 gMonShinyPalette_OgerponCornerstoneMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/tera/shiny.gbapal.lz");
|
||||
#endif //P_FAMILY_OGERPON
|
||||
|
||||
#if P_FAMILY_GOUGING_FIRE
|
||||
// const u32 gMonFrontPic_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/front.4bpp.lz");
|
||||
// const u32 gMonPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/icon.4bpp");
|
||||
// const u8 gMonFootprint_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/footprint.1bpp");
|
||||
#endif //P_FAMILY_GOUGING_FIRE
|
||||
|
||||
#if P_FAMILY_RAGING_BOLT
|
||||
// const u32 gMonFrontPic_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/front.4bpp.lz");
|
||||
// const u32 gMonPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/icon.4bpp");
|
||||
// const u8 gMonFootprint_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/footprint.1bpp");
|
||||
#endif //P_FAMILY_RAGING_BOLT
|
||||
|
||||
#if P_FAMILY_IRON_BOULDER
|
||||
// const u32 gMonFrontPic_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/front.4bpp.lz");
|
||||
// const u32 gMonPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/icon.4bpp");
|
||||
// const u8 gMonFootprint_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/footprint.1bpp");
|
||||
#endif //P_FAMILY_IRON_BOULDER
|
||||
|
||||
#if P_FAMILY_IRON_CROWN
|
||||
// const u32 gMonFrontPic_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/front.4bpp.lz");
|
||||
// const u32 gMonPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/icon.4bpp");
|
||||
// const u8 gMonFootprint_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/footprint.1bpp");
|
||||
#endif //P_FAMILY_IRON_CROWN
|
||||
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
// const u32 gMonFrontPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/front.4bpp.lz");
|
||||
// const u32 gMonPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/icon.4bpp");
|
||||
// const u8 gMonFootprint_Terapagos[] = INCBIN_U8("graphics/pokemon/terapagos/footprint.1bpp");
|
||||
|
||||
// const u32 gMonFrontPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/front.4bpp.lz");
|
||||
// const u32 gMonPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/icon.4bpp");
|
||||
|
||||
// const u32 gMonFrontPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/front.4bpp.lz");
|
||||
// const u32 gMonPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/icon.4bpp");
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
|
||||
#if P_FAMILY_PECHARUNT
|
||||
// const u32 gMonFrontPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/front.4bpp.lz");
|
||||
// const u32 gMonPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/normal.gbapal.lz");
|
||||
// const u32 gMonBackPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/back.4bpp.lz");
|
||||
// const u32 gMonShinyPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/shiny.gbapal.lz");
|
||||
// const u8 gMonIcon_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/icon.4bpp");
|
||||
// const u8 gMonFootprint_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/footprint.1bpp");
|
||||
#endif //P_FAMILY_PECHARUNT
|
||||
|
||||
const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz");
|
||||
const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.lz");
|
||||
const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp");
|
||||
|
||||
@ -1092,5 +1092,14 @@ static const struct FormChange sOgerponFormChangeTable[] = {
|
||||
};
|
||||
#endif //P_FAMILY_OGERPON
|
||||
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
static const struct FormChange sTerapagosFormChangeTable[] = {
|
||||
{FORM_CHANGE_BEGIN_BATTLE, SPECIES_TERAPAGOS_TERASTAL}, //needs to be tied to the ability
|
||||
//{FORM_CHANGE_TERASTALLIZATION, SPECIES_TERAPAGOS_STELLAR},
|
||||
{FORM_CHANGE_END_BATTLE, SPECIES_TERAPAGOS_NORMAL},
|
||||
{FORM_CHANGE_TERMINATOR},
|
||||
};
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
|
||||
#undef WHEN_LEARNED
|
||||
#undef WHEN_FORGOTTEN
|
||||
|
||||
@ -1761,3 +1761,12 @@ static const u16 sOgerponFormSpeciesIdTable[] = {
|
||||
FORM_SPECIES_END,
|
||||
};
|
||||
#endif //P_FAMILY_OGERPON
|
||||
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
static const u16 sTerapagosFormSpeciesIdTable[] = {
|
||||
SPECIES_TERAPAGOS_NORMAL,
|
||||
SPECIES_TERAPAGOS_TERASTAL,
|
||||
SPECIES_TERAPAGOS_STELLAR,
|
||||
FORM_SPECIES_END,
|
||||
};
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
|
||||
@ -629,6 +629,7 @@ const u8 *const gItemEffectTable[ITEMS_COUNT] =
|
||||
[ITEM_SYRUPY_APPLE] = gItemEffect_EvoItem,
|
||||
[ITEM_UNREMARKABLE_TEACUP] = gItemEffect_EvoItem,
|
||||
[ITEM_MASTERPIECE_TEACUP] = gItemEffect_EvoItem,
|
||||
[ITEM_METAL_ALLOY] = gItemEffect_EvoItem,
|
||||
|
||||
// Berries
|
||||
[ITEM_CHERI_BERRY] = gItemEffect_CheriBerry,
|
||||
|
||||
@ -19855,6 +19855,26 @@ static const struct LevelUpMove sDipplinLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE(44, MOVE_SUBSTITUTE),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
|
||||
static const struct LevelUpMove sHydrappleLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE( 0, MOVE_FICKLE_BEAM),
|
||||
LEVEL_UP_MOVE( 1, MOVE_WITHDRAW),
|
||||
LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT),
|
||||
LEVEL_UP_MOVE( 1, MOVE_RECYCLE),
|
||||
LEVEL_UP_MOVE( 1, MOVE_ASTONISH),
|
||||
LEVEL_UP_MOVE( 4, MOVE_DRAGON_TAIL),
|
||||
LEVEL_UP_MOVE( 8, MOVE_GROWTH),
|
||||
LEVEL_UP_MOVE(12, MOVE_DRAGON_BREATH),
|
||||
LEVEL_UP_MOVE(16, MOVE_PROTECT),
|
||||
LEVEL_UP_MOVE(20, MOVE_BULLET_SEED),
|
||||
LEVEL_UP_MOVE(28, MOVE_SYRUP_BOMB),
|
||||
LEVEL_UP_MOVE(32, MOVE_DRAGON_PULSE),
|
||||
LEVEL_UP_MOVE(36, MOVE_RECOVER),
|
||||
LEVEL_UP_MOVE(40, MOVE_ENERGY_BALL),
|
||||
LEVEL_UP_MOVE(44, MOVE_SUBSTITUTE),
|
||||
LEVEL_UP_MOVE(54, MOVE_POWER_WHIP),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_APPLIN
|
||||
|
||||
@ -20571,6 +20591,26 @@ static const struct LevelUpMove sDuraludonLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE(66, MOVE_HYPER_BEAM),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
static const struct LevelUpMove sArchaludonLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE( 0, MOVE_ELECTRO_SHOT),
|
||||
LEVEL_UP_MOVE( 1, MOVE_LEER),
|
||||
LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW),
|
||||
LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH),
|
||||
LEVEL_UP_MOVE(12, MOVE_HONE_CLAWS),
|
||||
LEVEL_UP_MOVE(18, MOVE_METAL_SOUND),
|
||||
LEVEL_UP_MOVE(24, MOVE_BREAKING_SWIPE),
|
||||
LEVEL_UP_MOVE(30, MOVE_DRAGON_TAIL),
|
||||
LEVEL_UP_MOVE(36, MOVE_IRON_DEFENSE),
|
||||
LEVEL_UP_MOVE(42, MOVE_FOCUS_ENERGY),
|
||||
LEVEL_UP_MOVE(48, MOVE_DRAGON_CLAW),
|
||||
LEVEL_UP_MOVE(54, MOVE_FLASH_CANNON),
|
||||
LEVEL_UP_MOVE(60, MOVE_METAL_BURST),
|
||||
LEVEL_UP_MOVE(66, MOVE_HYPER_BEAM),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_DURALUDON
|
||||
|
||||
#if P_FAMILY_DREEPY
|
||||
@ -23146,4 +23186,133 @@ static const struct LevelUpMove sOgerponLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE(66, MOVE_WOOD_HAMMER),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif
|
||||
#endif //P_FAMILY_OGERPON
|
||||
|
||||
#if P_FAMILY_GOUGING_FIRE
|
||||
static const struct LevelUpMove sGougingFireLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE( 1, MOVE_STOMP),
|
||||
LEVEL_UP_MOVE( 1, MOVE_LEER),
|
||||
LEVEL_UP_MOVE( 1, MOVE_INCINERATE),
|
||||
LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY),
|
||||
LEVEL_UP_MOVE( 7, MOVE_FIRE_FANG),
|
||||
LEVEL_UP_MOVE(14, MOVE_HOWL),
|
||||
LEVEL_UP_MOVE(21, MOVE_BITE),
|
||||
LEVEL_UP_MOVE(28, MOVE_DRAGON_CLAW),
|
||||
LEVEL_UP_MOVE(35, MOVE_CRUSH_CLAW),
|
||||
LEVEL_UP_MOVE(42, MOVE_MORNING_SUN),
|
||||
LEVEL_UP_MOVE(49, MOVE_BURNING_BULWARK),
|
||||
LEVEL_UP_MOVE(56, MOVE_DRAGON_RUSH),
|
||||
LEVEL_UP_MOVE(63, MOVE_FIRE_BLAST),
|
||||
LEVEL_UP_MOVE(70, MOVE_LAVA_PLUME),
|
||||
LEVEL_UP_MOVE(77, MOVE_OUTRAGE),
|
||||
LEVEL_UP_MOVE(84, MOVE_FLARE_BLITZ),
|
||||
LEVEL_UP_MOVE(91, MOVE_RAGING_FURY),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif //P_FAMILY_GOUGING_FIRE
|
||||
|
||||
#if P_FAMILY_RAGING_BOLT
|
||||
static const struct LevelUpMove sRagingBoltLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE( 1, MOVE_TWISTER),
|
||||
LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY),
|
||||
LEVEL_UP_MOVE( 1, MOVE_SHOCK_WAVE),
|
||||
LEVEL_UP_MOVE( 1, MOVE_STOMP),
|
||||
LEVEL_UP_MOVE( 7, MOVE_CHARGE),
|
||||
LEVEL_UP_MOVE(14, MOVE_DRAGON_BREATH),
|
||||
LEVEL_UP_MOVE(21, MOVE_ELECTRIC_TERRAIN),
|
||||
LEVEL_UP_MOVE(28, MOVE_DISCHARGE),
|
||||
LEVEL_UP_MOVE(35, MOVE_DRAGON_TAIL),
|
||||
LEVEL_UP_MOVE(42, MOVE_CALM_MIND),
|
||||
LEVEL_UP_MOVE(49, MOVE_THUNDERCLAP),
|
||||
LEVEL_UP_MOVE(56, MOVE_DRAGON_HAMMER),
|
||||
LEVEL_UP_MOVE(63, MOVE_RISING_VOLTAGE),
|
||||
LEVEL_UP_MOVE(70, MOVE_DRAGON_PULSE),
|
||||
LEVEL_UP_MOVE(77, MOVE_ZAP_CANNON),
|
||||
LEVEL_UP_MOVE(84, MOVE_BODY_PRESS),
|
||||
LEVEL_UP_MOVE(91, MOVE_THUNDER),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif //P_FAMILY_RAGING_BOLT
|
||||
|
||||
#if P_FAMILY_IRON_BOULDER
|
||||
static const struct LevelUpMove sIronBoulderLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK),
|
||||
LEVEL_UP_MOVE( 1, MOVE_LEER),
|
||||
LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW),
|
||||
LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN),
|
||||
LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK),
|
||||
LEVEL_UP_MOVE(14, MOVE_SLASH),
|
||||
LEVEL_UP_MOVE(21, MOVE_AGILITY),
|
||||
LEVEL_UP_MOVE(28, MOVE_PSYCHO_CUT),
|
||||
LEVEL_UP_MOVE(35, MOVE_COUNTER),
|
||||
LEVEL_UP_MOVE(42, MOVE_ROCK_TOMB),
|
||||
LEVEL_UP_MOVE(49, MOVE_SACRED_SWORD),
|
||||
LEVEL_UP_MOVE(56, MOVE_MIGHTY_CLEAVE),
|
||||
LEVEL_UP_MOVE(63, MOVE_SWORDS_DANCE),
|
||||
LEVEL_UP_MOVE(70, MOVE_MEGAHORN),
|
||||
LEVEL_UP_MOVE(77, MOVE_QUICK_GUARD),
|
||||
LEVEL_UP_MOVE(84, MOVE_STONE_EDGE),
|
||||
LEVEL_UP_MOVE(91, MOVE_GIGA_IMPACT),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif //P_FAMILY_IRON_BOULDER
|
||||
|
||||
#if P_FAMILY_IRON_CROWN
|
||||
static const struct LevelUpMove sIronCrownLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE( 1, MOVE_LEER),
|
||||
LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN),
|
||||
LEVEL_UP_MOVE( 1, MOVE_CONFUSION),
|
||||
LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW),
|
||||
LEVEL_UP_MOVE( 7, MOVE_SMART_STRIKE),
|
||||
LEVEL_UP_MOVE(14, MOVE_SLASH),
|
||||
LEVEL_UP_MOVE(21, MOVE_IRON_DEFENSE),
|
||||
LEVEL_UP_MOVE(28, MOVE_PSYSHOCK),
|
||||
LEVEL_UP_MOVE(35, MOVE_PSYCHO_CUT),
|
||||
LEVEL_UP_MOVE(42, MOVE_FLASH_CANNON),
|
||||
LEVEL_UP_MOVE(49, MOVE_SACRED_SWORD),
|
||||
LEVEL_UP_MOVE(56, MOVE_TACHYON_CUTTER),
|
||||
LEVEL_UP_MOVE(63, MOVE_FUTURE_SIGHT),
|
||||
LEVEL_UP_MOVE(70, MOVE_VOLT_SWITCH),
|
||||
LEVEL_UP_MOVE(77, MOVE_QUICK_GUARD),
|
||||
LEVEL_UP_MOVE(84, MOVE_METAL_BURST),
|
||||
LEVEL_UP_MOVE(91, MOVE_HYPER_BEAM),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif //P_FAMILY_IRON_CROWN
|
||||
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
static const struct LevelUpMove sTerapagosLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE( 1, MOVE_WITHDRAW),
|
||||
LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK),
|
||||
LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN),
|
||||
LEVEL_UP_MOVE(10, MOVE_ANCIENT_POWER),
|
||||
LEVEL_UP_MOVE(20, MOVE_HEADBUTT),
|
||||
LEVEL_UP_MOVE(30, MOVE_PROTECT),
|
||||
LEVEL_UP_MOVE(40, MOVE_EARTH_POWER),
|
||||
LEVEL_UP_MOVE(50, MOVE_HEAVY_SLAM),
|
||||
LEVEL_UP_MOVE(60, MOVE_TERA_STARSTORM),
|
||||
LEVEL_UP_MOVE(70, MOVE_DOUBLE_EDGE),
|
||||
LEVEL_UP_MOVE(80, MOVE_ROCK_POLISH),
|
||||
LEVEL_UP_MOVE(90, MOVE_GYRO_BALL),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
|
||||
#if P_FAMILY_PECHARUNT
|
||||
static const struct LevelUpMove sPecharuntLevelUpLearnset[] = {
|
||||
LEVEL_UP_MOVE( 1, MOVE_SMOG),
|
||||
LEVEL_UP_MOVE( 1, MOVE_POISON_GAS),
|
||||
LEVEL_UP_MOVE( 1, MOVE_MEMENTO),
|
||||
LEVEL_UP_MOVE( 1, MOVE_ASTONISH),
|
||||
LEVEL_UP_MOVE( 8, MOVE_WITHDRAW),
|
||||
LEVEL_UP_MOVE(16, MOVE_DESTINY_BOND),
|
||||
LEVEL_UP_MOVE(24, MOVE_FAKE_TEARS),
|
||||
LEVEL_UP_MOVE(32, MOVE_PARTING_SHOT),
|
||||
LEVEL_UP_MOVE(40, MOVE_SHADOW_BALL),
|
||||
LEVEL_UP_MOVE(48, MOVE_MALIGNANT_CHAIN),
|
||||
LEVEL_UP_MOVE(56, MOVE_TOXIC),
|
||||
LEVEL_UP_MOVE(64, MOVE_NASTY_PLOT),
|
||||
LEVEL_UP_MOVE(72, MOVE_RECOVER),
|
||||
LEVEL_UP_END
|
||||
};
|
||||
#endif //P_FAMILY_PECHARUNT
|
||||
|
||||
@ -26,6 +26,7 @@ const u16 gPokedexOrder_Alphabetical[] =
|
||||
NATIONAL_DEX_ARBOLIVA,
|
||||
NATIONAL_DEX_ARCANINE,
|
||||
NATIONAL_DEX_ARCEUS,
|
||||
NATIONAL_DEX_ARCHALUDON,
|
||||
NATIONAL_DEX_ARCHEN,
|
||||
NATIONAL_DEX_ARCHEOPS,
|
||||
NATIONAL_DEX_ARCTIBAX,
|
||||
@ -361,6 +362,7 @@ const u16 gPokedexOrder_Alphabetical[] =
|
||||
NATIONAL_DEX_GOTHITA,
|
||||
NATIONAL_DEX_GOTHITELLE,
|
||||
NATIONAL_DEX_GOTHORITA,
|
||||
NATIONAL_DEX_GOUGING_FIRE,
|
||||
NATIONAL_DEX_GOURGEIST,
|
||||
NATIONAL_DEX_GRAFAIAI,
|
||||
NATIONAL_DEX_GRANBULL,
|
||||
@ -416,6 +418,7 @@ const u16 gPokedexOrder_Alphabetical[] =
|
||||
NATIONAL_DEX_HOUNDOUR,
|
||||
NATIONAL_DEX_HOUNDSTONE,
|
||||
NATIONAL_DEX_HUNTAIL,
|
||||
NATIONAL_DEX_HYDRAPPLE,
|
||||
NATIONAL_DEX_HYDREIGON,
|
||||
NATIONAL_DEX_HYPNO,
|
||||
|
||||
@ -427,7 +430,9 @@ const u16 gPokedexOrder_Alphabetical[] =
|
||||
NATIONAL_DEX_INFERNAPE,
|
||||
NATIONAL_DEX_INKAY,
|
||||
NATIONAL_DEX_INTELEON,
|
||||
NATIONAL_DEX_IRON_BOULDER,
|
||||
NATIONAL_DEX_IRON_BUNDLE,
|
||||
NATIONAL_DEX_IRON_CROWN,
|
||||
NATIONAL_DEX_IRON_HANDS,
|
||||
NATIONAL_DEX_IRON_JUGULIS,
|
||||
NATIONAL_DEX_IRON_LEAVES,
|
||||
@ -658,6 +663,7 @@ const u16 gPokedexOrder_Alphabetical[] =
|
||||
NATIONAL_DEX_PAWMO,
|
||||
NATIONAL_DEX_PAWMOT,
|
||||
NATIONAL_DEX_PAWNIARD,
|
||||
NATIONAL_DEX_PECHARUNT,
|
||||
NATIONAL_DEX_PELIPPER,
|
||||
NATIONAL_DEX_PERRSERKER,
|
||||
NATIONAL_DEX_PERSIAN,
|
||||
@ -715,6 +721,7 @@ const u16 gPokedexOrder_Alphabetical[] =
|
||||
|
||||
NATIONAL_DEX_RABOOT,
|
||||
NATIONAL_DEX_RABSCA,
|
||||
NATIONAL_DEX_RAGING_BOLT,
|
||||
NATIONAL_DEX_RAICHU,
|
||||
NATIONAL_DEX_RAIKOU,
|
||||
NATIONAL_DEX_RALTS,
|
||||
@ -906,6 +913,7 @@ const u16 gPokedexOrder_Alphabetical[] =
|
||||
NATIONAL_DEX_TENTACOOL,
|
||||
NATIONAL_DEX_TENTACRUEL,
|
||||
NATIONAL_DEX_TEPIG,
|
||||
NATIONAL_DEX_TERAPAGOS,
|
||||
NATIONAL_DEX_TERRAKION,
|
||||
NATIONAL_DEX_THIEVUL,
|
||||
NATIONAL_DEX_THROH,
|
||||
@ -1078,6 +1086,7 @@ const u16 gPokedexOrder_Weight[] =
|
||||
//NATIONAL_DEX_MINIOR_CORE_INDIGO,
|
||||
//NATIONAL_DEX_MINIOR_CORE_VIOLET,
|
||||
NATIONAL_DEX_MILCERY,
|
||||
NATIONAL_DEX_PECHARUNT,
|
||||
// 0.9 lbs / 0.4 kg
|
||||
NATIONAL_DEX_POLTEAGEIST,
|
||||
NATIONAL_DEX_CURSOLA,
|
||||
@ -1397,6 +1406,7 @@ const u16 gPokedexOrder_Weight[] =
|
||||
//NATIONAL_DEX_MELOETTA_PIROUETTE,
|
||||
NATIONAL_DEX_PAWMO,
|
||||
NATIONAL_DEX_SMOLIV,
|
||||
NATIONAL_DEX_TERAPAGOS,//_NORMAL
|
||||
// 14.6 lbs / 6.6 kg
|
||||
NATIONAL_DEX_RALTS,
|
||||
NATIONAL_DEX_WHIMSICOTT,
|
||||
@ -1662,6 +1672,7 @@ const u16 gPokedexOrder_Weight[] =
|
||||
NATIONAL_DEX_CORVISQUIRE,
|
||||
NATIONAL_DEX_NACLI,
|
||||
NATIONAL_DEX_MASCHIFF,
|
||||
//NATIONAL_DEX_TERAPAGOS_TERASTAL
|
||||
// 35.9 lbs / 16.3 kg
|
||||
NATIONAL_DEX_WHISMUR,
|
||||
NATIONAL_DEX_LILLIGANT,
|
||||
@ -2281,6 +2292,7 @@ const u16 gPokedexOrder_Weight[] =
|
||||
NATIONAL_DEX_LATIOS,
|
||||
//NATIONAL_DEX_GUMSHOOS_TOTEM_SIZED,
|
||||
NATIONAL_DEX_SANDY_SHOCKS,
|
||||
NATIONAL_DEX_ARCHALUDON,
|
||||
// 132.7 lbs / 60.2 kg
|
||||
NATIONAL_DEX_FINIZEN,
|
||||
NATIONAL_DEX_PALAFIN,//_ZERO,
|
||||
@ -2377,6 +2389,7 @@ const u16 gPokedexOrder_Weight[] =
|
||||
NATIONAL_DEX_COFAGRIGUS,
|
||||
// 168.9 lbs / 76.6 kg
|
||||
NATIONAL_DEX_GOLDUCK,
|
||||
//NATIONAL_DEX_TERAPAGOS_STELLAR
|
||||
// 170.6 lbs / 77.4 kg
|
||||
NATIONAL_DEX_CACTURNE,
|
||||
// 172.0 lbs / 78.0 kg
|
||||
@ -2477,6 +2490,8 @@ const u16 gPokedexOrder_Weight[] =
|
||||
// 204.8 lbs / 92.9 kg
|
||||
NATIONAL_DEX_DARMANITAN,//_STANDARD_MODE,
|
||||
//NATIONAL_DEX_DARMANITAN_ZEN_MODE,
|
||||
// 205.0 lbs / 93.0 kg
|
||||
NATIONAL_DEX_HYDRAPPLE,
|
||||
// 208.6 lbs / 94.6 kg
|
||||
NATIONAL_DEX_BOUFFALANT,
|
||||
NATIONAL_DEX_SAMUROTT,
|
||||
@ -2659,6 +2674,8 @@ const u16 gPokedexOrder_Weight[] =
|
||||
NATIONAL_DEX_ARCANINE,
|
||||
// 342.8 lbs / 155.5 kg
|
||||
//NATIONAL_DEX_VENUSAUR_MEGA,
|
||||
// 343.9 lbs / 156.0 kg
|
||||
NATIONAL_DEX_IRON_CROWN,
|
||||
// 352.7 lbs / 160.0 kg
|
||||
NATIONAL_DEX_HYDREIGON,
|
||||
NATIONAL_DEX_FARIGIRAF,
|
||||
@ -2666,6 +2683,8 @@ const u16 gPokedexOrder_Weight[] =
|
||||
//NATIONAL_DEX_SABLEYE_MEGA,
|
||||
// 357.1 lbs / 162.0 kg
|
||||
NATIONAL_DEX_MILOTIC,
|
||||
// 358.2 lbs / 162.5 kg
|
||||
NATIONAL_DEX_IRON_BOULDER,
|
||||
// 370.4 lbs / 168.0 kg
|
||||
//NATIONAL_DEX_ARCANINE_HISUIAN,
|
||||
NATIONAL_DEX_LUNATONE,
|
||||
@ -2859,6 +2878,8 @@ const u16 gPokedexOrder_Weight[] =
|
||||
// 1014.1 lbs / 460.0 kg
|
||||
NATIONAL_DEX_SNORLAX,
|
||||
//NATIONAL_DEX_NECROZMA_DUSK_MANE,
|
||||
// 1058.2 lbs / 480.0 kg
|
||||
NATIONAL_DEX_RAGING_BOLT,
|
||||
// 1080.3 lbs / 490.0 kg
|
||||
//NATIONAL_DEX_HOOPA_UNBOUND,
|
||||
// 1113.3 lbs / 505.0 kg
|
||||
@ -2867,6 +2888,8 @@ const u16 gPokedexOrder_Weight[] =
|
||||
NATIONAL_DEX_STONJOURNER,
|
||||
// 1212.5 lbs / 550.0 kg
|
||||
NATIONAL_DEX_METAGROSS,
|
||||
// 1300.7 lbs / 590.0 kg
|
||||
NATIONAL_DEX_GOUGING_FIRE,
|
||||
// 1344.8 lbs / 610.0 kg
|
||||
//NATIONAL_DEX_ZYGARDE_COMPLETE,
|
||||
// 1433.8 lbs / 650.0 kg
|
||||
@ -2965,6 +2988,7 @@ const u16 gPokedexOrder_Height[] =
|
||||
NATIONAL_DEX_RELLOR,
|
||||
NATIONAL_DEX_FLITTLE,
|
||||
NATIONAL_DEX_SINISTCHA,
|
||||
NATIONAL_DEX_TERAPAGOS,//_NORMAL
|
||||
// 1'00" / 0.3m
|
||||
NATIONAL_DEX_CATERPIE,
|
||||
NATIONAL_DEX_WEEDLE,
|
||||
@ -3129,6 +3153,8 @@ const u16 gPokedexOrder_Height[] =
|
||||
//NATIONAL_DEX_TATSUGIRI_DROOPY,
|
||||
//NATIONAL_DEX_TATSUGIRI_STRETCHY,
|
||||
NATIONAL_DEX_GIMMIGHOUL,//_CHEST,
|
||||
//NATIONAL_DEX_TERAPAGOS_TERASTAL,
|
||||
NATIONAL_DEX_PECHARUNT,
|
||||
// 0.4m
|
||||
NATIONAL_DEX_SPRIGATITO,
|
||||
NATIONAL_DEX_FUECOCO,
|
||||
@ -3871,6 +3897,7 @@ const u16 gPokedexOrder_Height[] =
|
||||
NATIONAL_DEX_GLIMMORA,
|
||||
NATIONAL_DEX_WO_CHIEN,
|
||||
NATIONAL_DEX_IRON_LEAVES,
|
||||
NATIONAL_DEX_IRON_BOULDER,
|
||||
// 5'03" / 1.6m
|
||||
NATIONAL_DEX_BLASTOISE,
|
||||
//NATIONAL_DEX_BLASTOISE_MEGA,
|
||||
@ -3918,6 +3945,7 @@ const u16 gPokedexOrder_Height[] =
|
||||
NATIONAL_DEX_CYCLIZAR,
|
||||
NATIONAL_DEX_FLAMIGO,
|
||||
NATIONAL_DEX_IRON_THORNS,
|
||||
NATIONAL_DEX_IRON_CROWN,
|
||||
// 5'07" / 1.7m
|
||||
NATIONAL_DEX_CHARIZARD,
|
||||
//NATIONAL_DEX_CHARIZARD_MEGA_X,
|
||||
@ -3955,6 +3983,7 @@ const u16 gPokedexOrder_Height[] =
|
||||
//NATIONAL_DEX_GOURGEIST_SUPER,
|
||||
NATIONAL_DEX_VOLCANION,
|
||||
NATIONAL_DEX_CRABOMINABLE,
|
||||
//NATIONAL_DEX_TERAPAGOS_STELLAR
|
||||
// 5'11" / 1.8m
|
||||
NATIONAL_DEX_DODRIO,
|
||||
NATIONAL_DEX_AERODACTYL,
|
||||
@ -3993,6 +4022,7 @@ const u16 gPokedexOrder_Height[] =
|
||||
NATIONAL_DEX_CLODSIRE,
|
||||
NATIONAL_DEX_IRON_HANDS,
|
||||
NATIONAL_DEX_OKIDOGI,
|
||||
NATIONAL_DEX_HYDRAPPLE,
|
||||
// 6'03" / 1.9m
|
||||
NATIONAL_DEX_ARCANINE,
|
||||
NATIONAL_DEX_RHYDON,
|
||||
@ -4053,6 +4083,7 @@ const u16 gPokedexOrder_Height[] =
|
||||
NATIONAL_DEX_HOUNDSTONE,
|
||||
NATIONAL_DEX_KINGAMBIT,
|
||||
NATIONAL_DEX_ROARING_MOON,
|
||||
NATIONAL_DEX_ARCHALUDON,
|
||||
// 6'11" / 2.1m
|
||||
//NATIONAL_DEX_AERODACTYL_MEGA,
|
||||
NATIONAL_DEX_SNORLAX,
|
||||
@ -4198,6 +4229,7 @@ const u16 gPokedexOrder_Height[] =
|
||||
NATIONAL_DEX_GROUDON,
|
||||
NATIONAL_DEX_MIRAIDON,
|
||||
NATIONAL_DEX_WALKING_WAKE,
|
||||
NATIONAL_DEX_GOUGING_FIRE,
|
||||
// 11'10" / 3.6m
|
||||
//NATIONAL_DEX_KYUREM_WHITE,
|
||||
NATIONAL_DEX_NAGANADEL,
|
||||
@ -4229,6 +4261,7 @@ const u16 gPokedexOrder_Height[] =
|
||||
//NATIONAL_DEX_ZYGARDE_50_POWER_CONSTRUCT,
|
||||
// 17'01" / 5.2m
|
||||
NATIONAL_DEX_LUGIA,
|
||||
NATIONAL_DEX_RAGING_BOLT,
|
||||
// 17'09" / 5.4m
|
||||
NATIONAL_DEX_DIALGA,
|
||||
// 18'01" / 5.5m
|
||||
|
||||
@ -1938,6 +1938,54 @@ const struct SpeciesInfo gSpeciesInfoGen8[] =
|
||||
ICON(Dipplin, 1),
|
||||
//.footprint = gMonFootprint_Dipplin,
|
||||
LEARNSETS(Dipplin),
|
||||
.evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_CHEER, SPECIES_HYDRAPPLE}),
|
||||
},
|
||||
|
||||
[SPECIES_HYDRAPPLE] =
|
||||
{
|
||||
.baseHP = 106,
|
||||
.baseAttack = 80,
|
||||
.baseDefense = 110,
|
||||
.baseSpeed = 44,
|
||||
.baseSpAttack = 120,
|
||||
.baseSpDefense = 80,
|
||||
.types = { TYPE_GRASS, TYPE_DRAGON },
|
||||
.catchRate = 10,
|
||||
.expYield = 170, //Currently unknown
|
||||
.evYield_SpAttack = 3,
|
||||
.genderRatio = PERCENT_FEMALE(50),
|
||||
.eggCycles = 20,
|
||||
.friendship = STANDARD_FRIENDSHIP,
|
||||
.growthRate = GROWTH_ERRATIC,
|
||||
.eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON },
|
||||
.abilities = { ABILITY_SUPERSWEET_SYRUP, ABILITY_REGENERATOR, ABILITY_STICKY_HOLD },
|
||||
.bodyColor = BODY_COLOR_GREEN,
|
||||
.speciesName = _("Hydrapple"),
|
||||
//.cryId = CRY_HYDRAPPLE,
|
||||
.natDexNum = NATIONAL_DEX_HYDRAPPLE,
|
||||
.categoryName = _("Apple Hydra"),
|
||||
.height = 18,
|
||||
.weight = 930,
|
||||
.description = COMPOUND_STRING(
|
||||
"These capricious syrpents have\n"
|
||||
"banded together. On the rare\n"
|
||||
"occasion that their moods align,\n"
|
||||
"their true power is unleashed."),
|
||||
.pokemonScale = 356,
|
||||
.pokemonOffset = 17,
|
||||
.trainerScale = 256,
|
||||
.trainerOffset = 0,
|
||||
//FRONT_PIC(Hydrapple, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_Hydrapple,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(Hydrapple, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(Hydrapple),
|
||||
//ICON(Hydrapple, 0),
|
||||
//.footprint = gMonFootprint_Hydrapple,
|
||||
LEARNSETS(Hydrapple),
|
||||
},
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_APPLIN
|
||||
@ -4215,6 +4263,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] =
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
PALETTES(Duraludon),
|
||||
ICON(Duraludon, 0),
|
||||
.evolutions = EVOLUTION({EVO_ITEM, ITEM_METAL_ALLOY, SPECIES_ARCHALUDON}),
|
||||
},
|
||||
|
||||
#if P_GIGANTAMAX_FORMS
|
||||
@ -4244,6 +4293,55 @@ const struct SpeciesInfo gSpeciesInfoGen8[] =
|
||||
.isGigantamax = TRUE,
|
||||
},
|
||||
#endif //P_GIGANTAMAX_FORMS
|
||||
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
[SPECIES_ARCHALUDON] =
|
||||
{
|
||||
.baseHP = 90,
|
||||
.baseAttack = 105,
|
||||
.baseDefense = 130,
|
||||
.baseSpeed = 85,
|
||||
.baseSpAttack = 125,
|
||||
.baseSpDefense = 65,
|
||||
.types = { TYPE_STEEL, TYPE_DRAGON },
|
||||
.catchRate = 10,
|
||||
.expYield = 187, //Currently unknown
|
||||
.evYield_Defense = 3,
|
||||
.genderRatio = PERCENT_FEMALE(50),
|
||||
.eggCycles = 30,
|
||||
.friendship = STANDARD_FRIENDSHIP,
|
||||
.growthRate = GROWTH_MEDIUM_FAST,
|
||||
.eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_DRAGON },
|
||||
.abilities = { ABILITY_STAMINA, ABILITY_STURDY, ABILITY_STALWART },
|
||||
.bodyColor = BODY_COLOR_WHITE,
|
||||
.speciesName = _("Archaludon"),
|
||||
//.cryId = CRY_ARCHALUDON,
|
||||
.natDexNum = NATIONAL_DEX_ARCHALUDON,
|
||||
.categoryName = _("Alloy"),
|
||||
.height = 20,
|
||||
.weight = 600,
|
||||
.description = COMPOUND_STRING(
|
||||
"It gathers static electricity\n"
|
||||
"from its surroundings. The beams\n"
|
||||
"it launches when down on all fours\n"
|
||||
"are tremendously powerful."),
|
||||
.pokemonScale = 267,
|
||||
.pokemonOffset = 2,
|
||||
.trainerScale = 286,
|
||||
.trainerOffset = 1,
|
||||
//FRONT_PIC(Archaludon, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_Archaludon,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(Archaludon, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(Archaludon),
|
||||
//ICON(Archaludon, 0),
|
||||
//.footprint = gMonFootprint_Archaludon,
|
||||
LEARNSETS(Archaludon),
|
||||
},
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_DURALUDON
|
||||
|
||||
#if P_FAMILY_DREEPY
|
||||
|
||||
@ -5026,7 +5026,9 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
|
||||
.height = 35,
|
||||
.weight = 2800,
|
||||
.description = COMPOUND_STRING(
|
||||
"Ecology under research."),
|
||||
"This ferocious creature is shrouded in\n"
|
||||
"mystery. It's named after an aquatic\n"
|
||||
"monster mentioned in an old journal."),
|
||||
.pokemonScale = 356,
|
||||
.pokemonOffset = 17,
|
||||
.trainerScale = 256,
|
||||
@ -5073,7 +5075,9 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
|
||||
.height = 15,
|
||||
.weight = 1250,
|
||||
.description = COMPOUND_STRING(
|
||||
"Ecology under analysis."),
|
||||
"According to the few eyewitness accounts\n"
|
||||
"that exist, it used its shining blades\n"
|
||||
"to julienne large trees and boulders."),
|
||||
.pokemonScale = 356,
|
||||
.pokemonOffset = 17,
|
||||
.trainerScale = 256,
|
||||
@ -5428,6 +5432,376 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
|
||||
|
||||
#endif //P_FAMILY_OGERPON
|
||||
|
||||
#if P_FAMILY_GOUGING_FIRE
|
||||
[SPECIES_GOUGING_FIRE] =
|
||||
{
|
||||
.baseHP = 105,
|
||||
.baseAttack = 115,
|
||||
.baseDefense = 121,
|
||||
.baseSpeed = 91,
|
||||
.baseSpAttack = 65,
|
||||
.baseSpDefense = 93,
|
||||
.types = { TYPE_FIRE, TYPE_DRAGON },
|
||||
.catchRate = 10,
|
||||
.expYield = 261, //Currently unknown
|
||||
.evYield_Defense = 3,
|
||||
.genderRatio = MON_GENDERLESS,
|
||||
.eggCycles = 50,
|
||||
.friendship = 0,
|
||||
.growthRate = GROWTH_SLOW,
|
||||
.eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },
|
||||
.abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE },
|
||||
.bodyColor = BODY_COLOR_BROWN,
|
||||
.isParadoxForm = TRUE,
|
||||
.speciesName = _("GouginFire"),
|
||||
//.cryId = CRY_GOUGING_FIRE,
|
||||
.natDexNum = NATIONAL_DEX_GOUGING_FIRE,
|
||||
.categoryName = _("Paradox"),
|
||||
.height = 35,
|
||||
.weight = 5900,
|
||||
.description = COMPOUND_STRING(
|
||||
"There are scant few reports of\n"
|
||||
"this creature being sighted.\n"
|
||||
"One short video shows it rampaging,\n"
|
||||
"and spouting pillars of flame."),
|
||||
.pokemonScale = 259,
|
||||
.pokemonOffset = 0,
|
||||
.trainerScale = 345,
|
||||
.trainerOffset = 7,
|
||||
//FRONT_PIC(GougingFire, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_GougingFire,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(GougingFire, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(GougingFire),
|
||||
//ICON(GougingFire, 0),
|
||||
//.footprint = gMonFootprint_GougingFire,
|
||||
LEARNSETS(GougingFire),
|
||||
},
|
||||
#endif //P_FAMILY_GOUGING_FIRE
|
||||
|
||||
#if P_FAMILY_RAGING_BOLT
|
||||
[SPECIES_RAGING_BOLT] =
|
||||
{
|
||||
.baseHP = 125,
|
||||
.baseAttack = 73,
|
||||
.baseDefense = 91,
|
||||
.baseSpeed = 75,
|
||||
.baseSpAttack = 137,
|
||||
.baseSpDefense = 89,
|
||||
.types = { TYPE_ELECTRIC, TYPE_DRAGON },
|
||||
.catchRate = 10,
|
||||
.expYield = 261, //Currently unknown
|
||||
.evYield_SpAttack = 3,
|
||||
.genderRatio = MON_GENDERLESS,
|
||||
.eggCycles = 50,
|
||||
.friendship = 0,
|
||||
.growthRate = GROWTH_SLOW,
|
||||
.eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },
|
||||
.abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE },
|
||||
.bodyColor = BODY_COLOR_YELLOW,
|
||||
.isParadoxForm = TRUE,
|
||||
.speciesName = _("RagingBolt"),
|
||||
//.cryId = CRY_RAGING_BOLT,
|
||||
.natDexNum = NATIONAL_DEX_RAGING_BOLT,
|
||||
.categoryName = _("Paradox"),
|
||||
.height = 52,
|
||||
.weight = 4800,
|
||||
.description = COMPOUND_STRING(
|
||||
"It bears resemblance to a Pokémon\n"
|
||||
"that became a hot topic for a short\n"
|
||||
"while after a paranomal magazine\n"
|
||||
"touted it as Raikou's ancestor."),
|
||||
.pokemonScale = 256,
|
||||
.pokemonOffset = 0,
|
||||
.trainerScale = 345,
|
||||
.trainerOffset = 7,
|
||||
//FRONT_PIC(RagingBolt, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_RagingBolt,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(RagingBolt, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(RagingBolt),
|
||||
//ICON(RagingBolt, 0),
|
||||
//.footprint = gMonFootprint_RagingBolt,
|
||||
LEARNSETS(RagingBolt),
|
||||
},
|
||||
#endif //P_FAMILY_RAGING_BOLT
|
||||
|
||||
#if P_FAMILY_IRON_BOULDER
|
||||
[SPECIES_IRON_BOULDER] =
|
||||
{
|
||||
.baseHP = 90,
|
||||
.baseAttack = 120,
|
||||
.baseDefense = 80,
|
||||
.baseSpeed = 124,
|
||||
.baseSpAttack = 68,
|
||||
.baseSpDefense = 108,
|
||||
.types = { TYPE_ROCK, TYPE_PSYCHIC },
|
||||
.catchRate = 10,
|
||||
.expYield = 261, //Currently unknown
|
||||
.evYield_Speed = 3,
|
||||
.genderRatio = MON_GENDERLESS,
|
||||
.eggCycles = 50,
|
||||
.friendship = 0,
|
||||
.growthRate = GROWTH_SLOW,
|
||||
.eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },
|
||||
.abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE },
|
||||
.bodyColor = BODY_COLOR_GRAY,
|
||||
.isParadoxForm = TRUE,
|
||||
.speciesName = _("IronBouldr"),
|
||||
//.cryId = CRY_IRON_BOULDER,
|
||||
.natDexNum = NATIONAL_DEX_IRON_BOULDER,
|
||||
.categoryName = _("Paradox"),
|
||||
.height = 15,
|
||||
.weight = 1625,
|
||||
.description = COMPOUND_STRING(
|
||||
"It was named after a mysterious\n"
|
||||
"object recorded in an old book.\n"
|
||||
"Its body seems to be metallic."),
|
||||
.pokemonScale = 256,
|
||||
.pokemonOffset = 1,
|
||||
.trainerScale = 336,
|
||||
.trainerOffset = 4,
|
||||
//FRONT_PIC(IronBoulder, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_IronBoulder,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(IronBoulder, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(IronBoulder),
|
||||
//ICON(IronBoulder, 0),
|
||||
//.footprint = gMonFootprint_IronBoulder,
|
||||
LEARNSETS(IronBoulder),
|
||||
},
|
||||
#endif //P_FAMILY_IRON_BOULDER
|
||||
|
||||
#if P_FAMILY_IRON_CROWN
|
||||
[SPECIES_IRON_CROWN] =
|
||||
{
|
||||
.baseHP = 90,
|
||||
.baseAttack = 72,
|
||||
.baseDefense = 100,
|
||||
.baseSpeed = 98,
|
||||
.baseSpAttack = 122,
|
||||
.baseSpDefense = 108,
|
||||
.types = { TYPE_STEEL, TYPE_PSYCHIC },
|
||||
.catchRate = 10,
|
||||
.expYield = 261, //Currently unknown
|
||||
.evYield_SpAttack = 3,
|
||||
.genderRatio = MON_GENDERLESS,
|
||||
.eggCycles = 50,
|
||||
.friendship = 0,
|
||||
.growthRate = GROWTH_SLOW,
|
||||
.eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },
|
||||
.abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE },
|
||||
.bodyColor = BODY_COLOR_BLUE,
|
||||
.isParadoxForm = TRUE,
|
||||
.speciesName = _("Iron Crown"),
|
||||
//.cryId = CRY_IRON_CROWN,
|
||||
.natDexNum = NATIONAL_DEX_IRON_CROWN,
|
||||
.categoryName = _("Paradox"),
|
||||
.height = 16,
|
||||
.weight = 1560,
|
||||
.description = COMPOUND_STRING(
|
||||
"It resembles a mysterious object\n"
|
||||
"introduced in a paranormal magazine\n"
|
||||
"as a cutting-edge weapon\n"
|
||||
"shaped like Cobalion."),
|
||||
.pokemonScale = 256,
|
||||
.pokemonOffset = 0,
|
||||
.trainerScale = 365,
|
||||
.trainerOffset = 7,
|
||||
//FRONT_PIC(IronCrown, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_IronCrown,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(IronCrown, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(IronCrown),
|
||||
//ICON(IronCrown, 0),
|
||||
//.footprint = gMonFootprint_IronCrown,
|
||||
LEARNSETS(IronCrown),
|
||||
},
|
||||
#endif //P_FAMILY_IRON_CROWN
|
||||
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
#define TERAPAGOS_MISC_INFO \
|
||||
.types = { TYPE_NORMAL, TYPE_NORMAL }, \
|
||||
.catchRate = 255, \
|
||||
.expYield = 275, \
|
||||
.genderRatio = PERCENT_FEMALE(50), \
|
||||
.eggCycles = 20, \
|
||||
.friendship = STANDARD_FRIENDSHIP, \
|
||||
.growthRate = GROWTH_SLOW, \
|
||||
.eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \
|
||||
.bodyColor = BODY_COLOR_BLUE, \
|
||||
.speciesName = _("Terapagos"), \
|
||||
.natDexNum = NATIONAL_DEX_TERAPAGOS, \
|
||||
.categoryName = _("Tera"), \
|
||||
LEARNSETS(Terapagos), \
|
||||
.formSpeciesIdTable = sTerapagosFormSpeciesIdTable, \
|
||||
.formChangeTable = sTerapagosFormChangeTable, \
|
||||
.isLegendary = TRUE
|
||||
//.cryId = CRY_TERAPAGOS,
|
||||
//.footprint = gMonFootprint_Terapagos,
|
||||
|
||||
[SPECIES_TERAPAGOS_NORMAL] =
|
||||
{
|
||||
TERAPAGOS_MISC_INFO,
|
||||
.baseHP = 90,
|
||||
.baseAttack = 65,
|
||||
.baseDefense = 85,
|
||||
.baseSpeed = 60,
|
||||
.baseSpAttack = 65,
|
||||
.baseSpDefense = 85,
|
||||
.evYield_Defense = 1,
|
||||
.abilities = { ABILITY_TERA_SHIFT, ABILITY_NONE },
|
||||
.height = 2,
|
||||
.weight = 65,
|
||||
.description = COMPOUND_STRING(
|
||||
"Terapagos protects itself using its\n"
|
||||
"power to transform energy into hard\n"
|
||||
"crystals. This Pokémon is the source\n"
|
||||
"of the Terastal phenomenon."),
|
||||
.pokemonScale = 256,
|
||||
.pokemonOffset = 0,
|
||||
.trainerScale = 365,
|
||||
.trainerOffset = 7,
|
||||
//FRONT_PIC(TerapagosNormal, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_TerapagosNormal,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(TerapagosNormal, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(TerapagosNormal),
|
||||
//ICON(TerapagosNormal, 0),
|
||||
},
|
||||
|
||||
[SPECIES_TERAPAGOS_TERASTAL] =
|
||||
{
|
||||
TERAPAGOS_MISC_INFO,
|
||||
.baseHP = 95,
|
||||
.baseAttack = 95,
|
||||
.baseDefense = 110,
|
||||
.baseSpeed = 85,
|
||||
.baseSpAttack = 105,
|
||||
.baseSpDefense = 110,
|
||||
.evYield_Defense = 2,
|
||||
.abilities = { ABILITY_TERA_SHELL, ABILITY_NONE },
|
||||
.height = 3,
|
||||
.weight = 160,
|
||||
.description = COMPOUND_STRING(
|
||||
"The shell is made of crystallized\n"
|
||||
"Terastal energy. When struck by a move,\n"
|
||||
"this shell absorbs the move's energy\n"
|
||||
"and transfers it to Terapagos."),
|
||||
.pokemonScale = 256,
|
||||
.pokemonOffset = 0,
|
||||
.trainerScale = 365,
|
||||
.trainerOffset = 7,
|
||||
//FRONT_PIC(TerapagosTerastal, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_TerapagosTerastal,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(TerapagosTerastal, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(TerapagosTerastal),
|
||||
//ICON(TerapagosTerastal, 0),
|
||||
},
|
||||
|
||||
[SPECIES_TERAPAGOS_STELLAR] =
|
||||
{
|
||||
TERAPAGOS_MISC_INFO,
|
||||
.baseHP = 160,
|
||||
.baseAttack = 105,
|
||||
.baseDefense = 110,
|
||||
.baseSpeed = 85,
|
||||
.baseSpAttack = 130,
|
||||
.baseSpDefense = 110,
|
||||
.evYield_HP = 3,
|
||||
.abilities = { ABILITY_TERAFORM_ZERO, ABILITY_NONE },
|
||||
.height = 17,
|
||||
.weight = 770,
|
||||
.description = COMPOUND_STRING(
|
||||
"An old expedition journal describes the\n"
|
||||
"sight of this Pokémon buried in the,\n"
|
||||
"depths of the earth as resembling a\n"
|
||||
"planet floating in space."),
|
||||
.pokemonScale = 256,
|
||||
.pokemonOffset = 0,
|
||||
.trainerScale = 365,
|
||||
.trainerOffset = 7,
|
||||
//FRONT_PIC(TerapagosStellar, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_TerapagosStellar,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(TerapagosStellar, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(TerapagosStellar),
|
||||
//ICON(TerapagosStellar, 0),
|
||||
},
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
|
||||
#if P_FAMILY_PECHARUNT
|
||||
[SPECIES_PECHARUNT] =
|
||||
{
|
||||
.baseHP = 88,
|
||||
.baseAttack = 88,
|
||||
.baseDefense = 160,
|
||||
.baseSpeed = 88,
|
||||
.baseSpAttack = 88,
|
||||
.baseSpDefense = 88,
|
||||
.types = { TYPE_POISON, TYPE_GHOST },
|
||||
.catchRate = 3,
|
||||
.expYield = 261, //Currently unknown
|
||||
.evYield_Defense = 3,
|
||||
.genderRatio = MON_GENDERLESS,
|
||||
.eggCycles = 50,
|
||||
.friendship = 0,
|
||||
.growthRate = GROWTH_SLOW,
|
||||
.eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },
|
||||
.abilities = { ABILITY_POISON_PUPPETEER, ABILITY_NONE },
|
||||
.bodyColor = BODY_COLOR_PURPLE,
|
||||
.isMythical = TRUE,
|
||||
.speciesName = _("Pecharunt"),
|
||||
//.cryId = CRY_PECHARUNT,
|
||||
.natDexNum = NATIONAL_DEX_PECHARUNT,
|
||||
.categoryName = _("Subjugation"),
|
||||
.height = 3,
|
||||
.weight = 3,
|
||||
.description = COMPOUND_STRING(
|
||||
"It feeds others toxic mochi that\n"
|
||||
"draw out desires and capabilities.\n"
|
||||
"Those who eat the mochi fall under\n"
|
||||
"Pecharunt's control, chained to its will."),
|
||||
.pokemonScale = 256,
|
||||
.pokemonOffset = 0,
|
||||
.trainerScale = 365,
|
||||
.trainerOffset = 7,
|
||||
//FRONT_PIC(Pecharunt, 64, 64),
|
||||
.frontPicYOffset = 0,
|
||||
.frontAnimFrames = sAnims_Pecharunt,
|
||||
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||
//BACK_PIC(Pecharunt, 64, 64),
|
||||
.backPicYOffset = 0,
|
||||
//.backAnimId = BACK_ANIM_NONE,
|
||||
//PALETTES(Pecharunt),
|
||||
//ICON(Pecharunt, 0),
|
||||
//.footprint = gMonFootprint_Pecharunt,
|
||||
LEARNSETS(Pecharunt),
|
||||
},
|
||||
#endif //P_FAMILY_PECHARUNT
|
||||
|
||||
#ifdef __INTELLISENSE__
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -33821,6 +33821,10 @@ static const u16 sAppletunTeachableLearnset[] = {
|
||||
static const u16 sDipplinTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
|
||||
static const u16 sHydrappleTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_APPLIN
|
||||
|
||||
@ -34654,6 +34658,12 @@ static const u16 sDuraludonTeachableLearnset[] = {
|
||||
MOVE_THUNDER_WAVE,
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
static const u16 sArchaludonTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_DURALUDON
|
||||
|
||||
#if P_FAMILY_DREEPY
|
||||
@ -39114,3 +39124,39 @@ static const u16 sOgerponTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_FAMILY_OGERPON
|
||||
|
||||
#if P_FAMILY_GOUGING_FIRE
|
||||
static const u16 sGougingFireTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_FAMILY_GOUGING_FIRE
|
||||
|
||||
#if P_FAMILY_RAGING_BOLT
|
||||
static const u16 sRagingBoltTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_FAMILY_RAGING_BOLT
|
||||
|
||||
#if P_FAMILY_IRON_BOULDER
|
||||
static const u16 sIronBoulderTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_FAMILY_IRON_BOULDER
|
||||
|
||||
#if P_FAMILY_IRON_CROWN
|
||||
static const u16 sIronCrownTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_FAMILY_IRON_CROWN
|
||||
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
static const u16 sTerapagosTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
|
||||
#if P_FAMILY_PECHARUNT
|
||||
static const u16 sPecharuntTeachableLearnset[] = {
|
||||
MOVE_UNAVAILABLE,
|
||||
};
|
||||
#endif //P_FAMILY_PECHARUNT
|
||||
|
||||
@ -9567,6 +9567,7 @@ PLACEHOLDER_ANIM_SINGLE_FRAME(AppletunGigantamax);
|
||||
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(Dipplin);
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(Hydrapple);
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_APPLIN
|
||||
|
||||
@ -9718,6 +9719,10 @@ PLACEHOLDER_ANIM_SINGLE_FRAME(Duraludon);
|
||||
#if P_GIGANTAMAX_FORMS
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(DuraludonGigantamax);
|
||||
#endif //P_GIGANTAMAX_FORMS
|
||||
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(Archaludon);
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_DURALUDON
|
||||
|
||||
#if P_FAMILY_DREEPY
|
||||
@ -10084,6 +10089,32 @@ PLACEHOLDER_ANIM_SINGLE_FRAME(Fezandipiti);
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(Ogerpon);
|
||||
#endif //P_FAMILY_OGERPON
|
||||
|
||||
#if P_FAMILY_GOUGING_FIRE
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(GougingFire);
|
||||
#endif //P_FAMILY_GOUGING_FIRE
|
||||
|
||||
#if P_FAMILY_RAGING_BOLT
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(RagingBolt);
|
||||
#endif //P_FAMILY_RAGING_BOLT
|
||||
|
||||
#if P_FAMILY_IRON_BOULDER
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(IronBoulder);
|
||||
#endif //P_FAMILY_IRON_BOULDER
|
||||
|
||||
#if P_FAMILY_IRON_CROWN
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(IronCrown);
|
||||
#endif //P_FAMILY_IRON_CROWN
|
||||
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(TerapagosNormal);
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(TerapagosTerastal);
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(TerapagosStellar);
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
|
||||
#if P_FAMILY_PECHARUNT
|
||||
PLACEHOLDER_ANIM_SINGLE_FRAME(Pecharunt);
|
||||
#endif //P_FAMILY_PECHARUNT
|
||||
|
||||
static const union AnimCmd sAnim_Egg_1[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 6),
|
||||
@ -12341,6 +12372,7 @@ SINGLE_ANIMATION(AppletunGigantamax);
|
||||
#endif //P_GIGANTAMAX_FORMS
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
SINGLE_ANIMATION(Dipplin);
|
||||
SINGLE_ANIMATION(Hydrapple);
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_APPLIN
|
||||
#if P_FAMILY_SILICOBRA
|
||||
@ -12448,6 +12480,9 @@ SINGLE_ANIMATION(Duraludon);
|
||||
#if P_GIGANTAMAX_FORMS
|
||||
SINGLE_ANIMATION(DuraludonGigantamax);
|
||||
#endif //P_GIGANTAMAX_FORMS
|
||||
#if P_GEN_9_CROSS_EVOS
|
||||
SINGLE_ANIMATION(Archaludon);
|
||||
#endif //P_GEN_9_CROSS_EVOS
|
||||
#endif //P_FAMILY_DURALUDON
|
||||
#if P_FAMILY_DREEPY
|
||||
SINGLE_ANIMATION(Dreepy);
|
||||
@ -12731,4 +12766,24 @@ SINGLE_ANIMATION(Fezandipiti);
|
||||
#if P_FAMILY_OGERPON
|
||||
SINGLE_ANIMATION(Ogerpon);
|
||||
#endif //P_FAMILY_OGERPON
|
||||
#if P_FAMILY_GOUGING_FIRE
|
||||
SINGLE_ANIMATION(GougingFire);
|
||||
#endif //P_FAMILY_GOUGING_FIRE
|
||||
#if P_FAMILY_RAGING_BOLT
|
||||
SINGLE_ANIMATION(RagingBolt);
|
||||
#endif //P_FAMILY_RAGING_BOLT
|
||||
#if P_FAMILY_IRON_BOULDER
|
||||
SINGLE_ANIMATION(IronBoulder);
|
||||
#endif //P_FAMILY_IRON_BOULDER
|
||||
#if P_FAMILY_IRON_CROWN
|
||||
SINGLE_ANIMATION(IronCrown);
|
||||
#endif //P_FAMILY_IRON_CROWN
|
||||
#if P_FAMILY_TERAPAGOS
|
||||
SINGLE_ANIMATION(TerapagosNormal);
|
||||
SINGLE_ANIMATION(TerapagosTerastal);
|
||||
SINGLE_ANIMATION(TerapagosStellar);
|
||||
#endif //P_FAMILY_TERAPAGOS
|
||||
#if P_FAMILY_PECHARUNT
|
||||
SINGLE_ANIMATION(Pecharunt);
|
||||
#endif //P_FAMILY_PECHARUNT
|
||||
SINGLE_ANIMATION(Egg);
|
||||
|
||||
@ -1,54 +0,0 @@
|
||||
static const u8 sHardyNatureName[] = _("Hardy");
|
||||
static const u8 sLonelyNatureName[] = _("Lonely");
|
||||
static const u8 sBraveNatureName[] = _("Brave");
|
||||
static const u8 sAdamantNatureName[] = _("Adamant");
|
||||
static const u8 sNaughtyNatureName[] = _("Naughty");
|
||||
static const u8 sBoldNatureName[] = _("Bold");
|
||||
static const u8 sDocileNatureName[] = _("Docile");
|
||||
static const u8 sRelaxedNatureName[] = _("Relaxed");
|
||||
static const u8 sImpishNatureName[] = _("Impish");
|
||||
static const u8 sLaxNatureName[] = _("Lax");
|
||||
static const u8 sTimidNatureName[] = _("Timid");
|
||||
static const u8 sHastyNatureName[] = _("Hasty");
|
||||
static const u8 sSeriousNatureName[] = _("Serious");
|
||||
static const u8 sJollyNatureName[] = _("Jolly");
|
||||
static const u8 sNaiveNatureName[] = _("Naive");
|
||||
static const u8 sModestNatureName[] = _("Modest");
|
||||
static const u8 sMildNatureName[] = _("Mild");
|
||||
static const u8 sQuietNatureName[] = _("Quiet");
|
||||
static const u8 sBashfulNatureName[] = _("Bashful");
|
||||
static const u8 sRashNatureName[] = _("Rash");
|
||||
static const u8 sCalmNatureName[] = _("Calm");
|
||||
static const u8 sGentleNatureName[] = _("Gentle");
|
||||
static const u8 sSassyNatureName[] = _("Sassy");
|
||||
static const u8 sCarefulNatureName[] = _("Careful");
|
||||
static const u8 sQuirkyNatureName[] = _("Quirky");
|
||||
|
||||
const u8 *const gNatureNamePointers[NUM_NATURES] =
|
||||
{
|
||||
[NATURE_HARDY] = sHardyNatureName,
|
||||
[NATURE_LONELY] = sLonelyNatureName,
|
||||
[NATURE_BRAVE] = sBraveNatureName,
|
||||
[NATURE_ADAMANT] = sAdamantNatureName,
|
||||
[NATURE_NAUGHTY] = sNaughtyNatureName,
|
||||
[NATURE_BOLD] = sBoldNatureName,
|
||||
[NATURE_DOCILE] = sDocileNatureName,
|
||||
[NATURE_RELAXED] = sRelaxedNatureName,
|
||||
[NATURE_IMPISH] = sImpishNatureName,
|
||||
[NATURE_LAX] = sLaxNatureName,
|
||||
[NATURE_TIMID] = sTimidNatureName,
|
||||
[NATURE_HASTY] = sHastyNatureName,
|
||||
[NATURE_SERIOUS] = sSeriousNatureName,
|
||||
[NATURE_JOLLY] = sJollyNatureName,
|
||||
[NATURE_NAIVE] = sNaiveNatureName,
|
||||
[NATURE_MODEST] = sModestNatureName,
|
||||
[NATURE_MILD] = sMildNatureName,
|
||||
[NATURE_QUIET] = sQuietNatureName,
|
||||
[NATURE_BASHFUL] = sBashfulNatureName,
|
||||
[NATURE_RASH] = sRashNatureName,
|
||||
[NATURE_CALM] = sCalmNatureName,
|
||||
[NATURE_GENTLE] = sGentleNatureName,
|
||||
[NATURE_SASSY] = sSassyNatureName,
|
||||
[NATURE_CAREFUL] = sCarefulNatureName,
|
||||
[NATURE_QUIRKY] = sQuirkyNatureName,
|
||||
};
|
||||
@ -93,11 +93,6 @@ void EnableVCountIntrAtLine150(void);
|
||||
|
||||
void AgbMain()
|
||||
{
|
||||
// Modern compilers are liberal with the stack on entry to this function,
|
||||
// so RegisterRamReset may crash if it resets IWRAM.
|
||||
#if !MODERN
|
||||
RegisterRamReset(RESET_ALL);
|
||||
#endif //MODERN
|
||||
*(vu16 *)BG_PLTT = RGB_WHITE; // Set the backdrop to white on startup
|
||||
InitGpuRegManager();
|
||||
REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3;
|
||||
|
||||
@ -362,6 +362,35 @@ const struct SpindaSpot gSpindaSpotGraphics[] =
|
||||
|
||||
#include "data/pokemon/item_effects.h"
|
||||
|
||||
const u8 *const gNatureNamePointers[NUM_NATURES] =
|
||||
{
|
||||
[NATURE_HARDY] = COMPOUND_STRING("Hardy"),
|
||||
[NATURE_LONELY] = COMPOUND_STRING("Lonely"),
|
||||
[NATURE_BRAVE] = COMPOUND_STRING("Brave"),
|
||||
[NATURE_ADAMANT] = COMPOUND_STRING("Adamant"),
|
||||
[NATURE_NAUGHTY] = COMPOUND_STRING("Naughty"),
|
||||
[NATURE_BOLD] = COMPOUND_STRING("Bold"),
|
||||
[NATURE_DOCILE] = COMPOUND_STRING("Docile"),
|
||||
[NATURE_RELAXED] = COMPOUND_STRING("Relaxed"),
|
||||
[NATURE_IMPISH] = COMPOUND_STRING("Impish"),
|
||||
[NATURE_LAX] = COMPOUND_STRING("Lax"),
|
||||
[NATURE_TIMID] = COMPOUND_STRING("Timid"),
|
||||
[NATURE_HASTY] = COMPOUND_STRING("Hasty"),
|
||||
[NATURE_SERIOUS] = COMPOUND_STRING("Serious"),
|
||||
[NATURE_JOLLY] = COMPOUND_STRING("Jolly"),
|
||||
[NATURE_NAIVE] = COMPOUND_STRING("Naive"),
|
||||
[NATURE_MODEST] = COMPOUND_STRING("Modest"),
|
||||
[NATURE_MILD] = COMPOUND_STRING("Mild"),
|
||||
[NATURE_QUIET] = COMPOUND_STRING("Quiet"),
|
||||
[NATURE_BASHFUL] = COMPOUND_STRING("Bashful"),
|
||||
[NATURE_RASH] = COMPOUND_STRING("Rash"),
|
||||
[NATURE_CALM] = COMPOUND_STRING("Calm"),
|
||||
[NATURE_GENTLE] = COMPOUND_STRING("Gentle"),
|
||||
[NATURE_SASSY] = COMPOUND_STRING("Sassy"),
|
||||
[NATURE_CAREFUL] = COMPOUND_STRING("Careful"),
|
||||
[NATURE_QUIRKY] = COMPOUND_STRING("Quirky"),
|
||||
};
|
||||
|
||||
const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] =
|
||||
{ // Attack Defense Speed Sp.Atk Sp. Def
|
||||
[NATURE_HARDY] = { 0, 0, 0, 0, 0 },
|
||||
|
||||
1468
src/pokemon_icon.c
1468
src/pokemon_icon.c
File diff suppressed because it is too large
Load Diff
@ -322,7 +322,6 @@ static void SummaryScreen_DestroyAnimDelayTask(void);
|
||||
|
||||
// const rom data
|
||||
#include "data/text/move_descriptions.h"
|
||||
#include "data/text/nature_names.h"
|
||||
|
||||
static const struct BgTemplate sBgTemplates[] =
|
||||
{
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "main.h"
|
||||
#include "crt0.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "m4a.h"
|
||||
#include "load_save.h"
|
||||
@ -15,6 +16,7 @@ void ReloadSave(void)
|
||||
u16 imeBackup = REG_IME;
|
||||
REG_IME = 0;
|
||||
RegisterRamReset(RESET_EWRAM);
|
||||
ReInitializeEWRAM();
|
||||
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_FORCED_BLANK);
|
||||
REG_IME = imeBackup;
|
||||
gMain.inBattle = FALSE;
|
||||
|
||||
@ -49,7 +49,7 @@ DOUBLE_BATTLE_TEST("Doodle can't copy a banned ability")
|
||||
DOUBLE_BATTLE_TEST("Doodle fails if user has a banned Ability")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); }
|
||||
PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); }
|
||||
PLAYER(SPECIES_WYNAUT) { Ability(ABILITY_SHADOW_TAG); }
|
||||
OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -59,7 +59,7 @@ DOUBLE_BATTLE_TEST("Doodle fails if user has a banned Ability")
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft);
|
||||
MESSAGE("But it failed!");
|
||||
} THEN {
|
||||
EXPECT(playerLeft->ability == ABILITY_PROTOSYNTHESIS);
|
||||
EXPECT(playerLeft->ability == ABILITY_GULP_MISSILE);
|
||||
EXPECT(playerRight->ability == ABILITY_SHADOW_TAG);
|
||||
}
|
||||
}
|
||||
@ -68,7 +68,7 @@ DOUBLE_BATTLE_TEST("Doodle fails if partner has a banned Ability")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WYNAUT) { Ability(ABILITY_SHADOW_TAG); }
|
||||
PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); }
|
||||
PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); }
|
||||
OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
@ -78,6 +78,6 @@ DOUBLE_BATTLE_TEST("Doodle fails if partner has a banned Ability")
|
||||
MESSAGE("But it failed!");
|
||||
} THEN {
|
||||
EXPECT(playerLeft->ability == ABILITY_SHADOW_TAG);
|
||||
EXPECT(playerRight->ability == ABILITY_PROTOSYNTHESIS);
|
||||
EXPECT(playerRight->ability == ABILITY_GULP_MISSILE);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user