Master to upcoming merge (#6868)

This commit is contained in:
hedara90 2025-05-16 09:37:39 +02:00 committed by GitHub
commit 4d4dea1b38
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 360 additions and 168 deletions

View File

@ -366,9 +366,6 @@ clean-generated:
COMPETITIVE_PARTY_SYNTAX := $(shell PATH="$(PATH)"; echo 'COMPETITIVE_PARTY_SYNTAX' | $(CPP) $(CPPFLAGS) -imacros include/gba/defines.h -imacros include/config/general.h | tail -n1)
ifeq ($(COMPETITIVE_PARTY_SYNTAX),1)
%.h: %.party ; $(CPP) $(CPPFLAGS) -traditional-cpp - < $< | $(TRAINERPROC) -o $@ -i $< -
AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/trainers.h
AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/battle_partners.h
endif
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast

View File

@ -5050,7 +5050,7 @@ BattleScript_EffectSnatch::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_EffectRecoilHP25::
BattleScript_EffectStruggle::
jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit
incrementgamestat GAME_STAT_USED_STRUGGLE
goto BattleScript_EffectHit
@ -8372,9 +8372,11 @@ BattleScript_FriskMsg::
BattleScript_FriskActivates::
saveattacker
savetarget
copybyte gBattlerAttacker, sBATTLER
tryfriskmsg BS_SCRIPTING
restoreattacker
restoretarget
end3
BattleScript_ImposterActivates::
@ -8874,34 +8876,29 @@ BattleScript_BerryConfuseHealRet_Anim:
removeitem BS_TARGET
return
BattleScript_BerryStatRaiseEnd2::
jumpifability BS_ATTACKER, ABILITY_RIPEN, BattleScript_BerryStatRaiseEnd2_AbilityPopup
goto BattleScript_BerryStatRaiseEnd2_Anim
BattleScript_BerryStatRaiseEnd2_AbilityPopup:
call BattleScript_AbilityPopUp
BattleScript_BerryStatRaiseEnd2_Anim:
statbuffchange STAT_CHANGE_ALLOW_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_BerryStatRaiseEnd2_End
setgraphicalstatchangevalues
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, sB_ANIM_ARG1
setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM
call BattleScript_StatUp
removeitem BS_ATTACKER
BattleScript_BerryStatRaiseEnd2_End::
BattleScript_ConsumableStatRaiseEnd2::
call BattleScript_ConsumableStatRaiseRet
end2
BattleScript_BerryStatRaiseRet::
jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_BerryStatRaiseRet_AbilityPopup
goto BattleScript_BerryStatRaiseRet_Anim
BattleScript_BerryStatRaiseRet_AbilityPopup:
BattleScript_ConsumableStatRaiseRet::
@ to ensure `statbuffchange` has correct battler id, backup and use target
savetarget
copybyte gBattlerTarget, sBATTLER
jumpifnotberry BS_SCRIPTING, BattleScript_ConsumableStatRaiseRet_Anim
@ check ripen popup if consuming berry
jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_ConsumableStatRaiseRet_AbilityPopup
goto BattleScript_ConsumableStatRaiseRet_Anim
BattleScript_ConsumableStatRaiseRet_AbilityPopup:
call BattleScript_AbilityPopUp
BattleScript_BerryStatRaiseRet_Anim:
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_BerryStatRaiseRet_End
BattleScript_ConsumableStatRaiseRet_Anim:
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_ConsumableStatRaiseRet_End
setgraphicalstatchangevalues
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, sB_ANIM_ARG1
setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM
call BattleScript_StatUp
removeitem BS_SCRIPTING
BattleScript_BerryStatRaiseRet_End:
BattleScript_ConsumableStatRaiseRet_End:
restoretarget
return
BattleScript_BerryFocusEnergyRet::

View File

@ -235,8 +235,8 @@ extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItemInPalace[];
extern const u8 BattleScript_HangedOnMsg[];
extern const u8 BattleScript_BerryConfuseHealEnd2[];
extern const u8 BattleScript_BerryConfuseHealRet[];
extern const u8 BattleScript_BerryStatRaiseEnd2[];
extern const u8 BattleScript_BerryStatRaiseRet[];
extern const u8 BattleScript_ConsumableStatRaiseEnd2[];
extern const u8 BattleScript_ConsumableStatRaiseRet[];
extern const u8 BattleScript_BerryFocusEnergyRet[];
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
@ -491,7 +491,6 @@ extern const u8 BattleScript_ShellTrapSetUp[];
extern const u8 BattleScript_StealthRockActivates[];
extern const u8 BattleScript_CouldntFullyProtect[];
extern const u8 BattleScript_MoveEffectStockpileWoreOff[];
extern const u8 BattleScript_StealthRockActivates[];
extern const u8 BattleScript_SpikesActivates[];
extern const u8 BattleScript_BerserkGeneRet[];
extern const u8 BattleScript_BerserkGeneRetEnd2[];
@ -824,7 +823,7 @@ extern const u8 BattleScript_MoveEffectEerieSpell[];
extern const u8 BattleScript_EffectJungleHealing[];
extern const u8 BattleScript_EffectCoaching[];
extern const u8 BattleScript_EffectDecorate[];
extern const u8 BattleScript_EffectRecoilHP25[];
extern const u8 BattleScript_EffectStruggle[];
extern const u8 BattleScript_EffectStuffCheeks[];
extern const u8 BattleScript_MoveEffectLightScreen[];
extern const u8 BattleScript_MoveEffectReflect[];

View File

@ -292,7 +292,7 @@ enum BattleMoveEffects
EFFECT_DYNAMAX_DOUBLE_DMG,
EFFECT_DECORATE,
EFFECT_SNIPE_SHOT,
EFFECT_RECOIL_HP_25,
EFFECT_STRUGGLE,
EFFECT_STUFF_CHEEKS,
EFFECT_GRAV_APPLE,
EFFECT_HYPERSPACE_FURY,

View File

@ -6050,10 +6050,12 @@ void SetTypeBeforeUsingMove(u32 move, u32 battler)
gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_SET;
// Check if a gem should activate.
u32 effect = GetMoveEffect(move);
if (holdEffect == HOLD_EFFECT_GEMS
&& GetBattleMoveType(move) == ItemId_GetSecondaryId(heldItem)
&& GetMoveEffect(move) != EFFECT_PLEDGE
&& GetMovePower(move) > 1)
&& effect != EFFECT_PLEDGE
&& effect != EFFECT_OHKO
&& effect != EFFECT_STRUGGLE)
{
gSpecialStatuses[battler].gemParam = GetBattlerHoldEffectParam(battler);
gSpecialStatuses[battler].gemBoost = TRUE;

View File

@ -2277,8 +2277,7 @@ static void Cmd_adjustdamage(void)
if (gSpecialStatuses[gBattlerAttacker].gemBoost
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)
&& !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE)
&& gBattleMons[gBattlerAttacker].item
&& gCurrentMove != MOVE_STRUGGLE)
&& gBattleMons[gBattlerAttacker].item)
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_GemActivates;
@ -5234,8 +5233,9 @@ static void Cmd_getexp(void)
}
}
bool32 NoAliveMonsForBattlerSide(u32 battler)
static u32 CountAliveMonsForBattlerSide(u32 battler)
{
u32 aliveMons = 0;
struct Pokemon *party = GetBattlerParty(battler);
for (u32 partyMon = 0; partyMon < PARTY_SIZE; partyMon++)
@ -5243,10 +5243,15 @@ bool32 NoAliveMonsForBattlerSide(u32 battler)
if (GetMonData(&party[partyMon], MON_DATA_SPECIES)
&& GetMonData(&party[partyMon], MON_DATA_HP) > 0
&& !GetMonData(&party[partyMon], MON_DATA_IS_EGG))
return FALSE;
aliveMons++;
}
return TRUE;
return aliveMons;
}
bool32 NoAliveMonsForBattlerSide(u32 battler)
{
return CountAliveMonsForBattlerSide(battler) == 0;
}
bool32 NoAliveMonsForPlayer(void)
@ -5364,7 +5369,12 @@ static void Cmd_checkteamslost(void)
}
else
{
if (emptyOpponentSpots != 0 && emptyPlayerSpots != 0)
u32 occupiedPlayerSpots = (gBattlersCount / 2) - emptyPlayerSpots;
u32 occupiedOpponentSpots = (gBattlersCount / 2) - emptyOpponentSpots;
u32 alivePlayerPartyMons = CountAliveMonsForBattlerSide(B_POSITION_PLAYER_LEFT) - occupiedPlayerSpots;
u32 aliveOpponentPartyMons = CountAliveMonsForBattlerSide(B_POSITION_OPPONENT_LEFT) - occupiedOpponentSpots;
if (emptyPlayerSpots > 0 && alivePlayerPartyMons > 0 && emptyOpponentSpots > 0 && aliveOpponentPartyMons > 0)
gBattlescriptCurrInstr = cmd->jumpInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;
@ -11134,7 +11144,7 @@ static void Cmd_various(void)
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_ROOM_SERVICE && TryRoomService(battler))
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
}
else
{

View File

@ -5907,7 +5907,7 @@ static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, u32 statId, enum
if (CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN) && HasEnoughHpToEatBerry(battler, GetBattlerItemHoldEffectParam(battler, itemId), itemId))
{
BufferStatChange(battler, statId, STRINGID_STATROSE);
gEffectBattler = battler;
gEffectBattler = gBattleScripting.battler = battler;
if (GetBattlerAbility(battler) == ABILITY_RIPEN)
SET_STATCHANGER(statId, 2, FALSE);
else
@ -5918,12 +5918,12 @@ static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, u32 statId, enum
if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL)
{
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2);
}
else
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
}
return ITEM_STATS_CHANGE;
}
@ -5945,7 +5945,7 @@ static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, enum ItemCa
u16 battlerAbility = GetBattlerAbility(battler);
u32 savedAttacker = gBattlerAttacker;
// MoodyCantRaiseStat requires that the battler is set to gBattlerAttacker
gBattlerAttacker = battler;
gBattlerAttacker = gBattleScripting.battler = battler;
stat = RandomUniformExcept(RNG_RANDOM_STAT_UP, STAT_ATK, NUM_STATS - 1, MoodyCantRaiseStat);
gBattlerAttacker = savedAttacker;
@ -5969,12 +5969,12 @@ static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, enum ItemCa
gBattleScripting.animArg2 = 0;
if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL)
{
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2);
}
else
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
}
return ITEM_STATS_CHANGE;
@ -6044,7 +6044,7 @@ static enum ItemEffect DamagedStatBoostBerryEffect(u32 battler, u8 statId, u8 ca
gBattleScripting.animArg1 = STAT_ANIM_PLUS1 + statId;
gBattleScripting.animArg2 = 0;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
return ITEM_STATS_CHANGE;
}
return ITEM_NO_EFFECT;
@ -6062,12 +6062,12 @@ enum ItemEffect TryHandleSeed(u32 battler, u32 terrainFlag, u32 statId, u32 item
gBattleScripting.animArg2 = 0;
if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN)
{
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2);
}
else
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet;
}
return ITEM_STATS_CHANGE;
}
@ -6781,7 +6781,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
case HOLD_EFFECT_ROOM_SERVICE:
if (TryRoomService(battler))
{
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;

View File

@ -1870,9 +1870,9 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
.battleTvScore = 0, // TODO: Assign points
},
[EFFECT_RECOIL_HP_25] =
[EFFECT_STRUGGLE] =
{
.battleScript = BattleScript_EffectRecoilHP25,
.battleScript = BattleScript_EffectStruggle,
.battleTvScore = 0, // TODO: Assign points
},

View File

@ -111,6 +111,14 @@ static const u8 sFeintDescription[] = _(
"An attack that hits foes\n"
"using moves like Protect.");
static const u8 sProtectDescription[] = _(
"Evades attack, but may fail\n"
"if used in succession.");
static const u8 sGMaxOneBlowDescription[] = _(
"G-max Urshifu attack.\n"
"Ignores Max Guard.");
const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
{
[MOVE_NONE] =
@ -4345,7 +4353,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
"Used only if all PP are gone.\n"
"Also hurts the user a little."),
#if B_UPDATED_MOVE_DATA >= GEN_4
.effect = EFFECT_RECOIL_HP_25,
.effect = EFFECT_STRUGGLE,
.accuracy = 0,
.mirrorMoveBanned = TRUE,
.additionalEffects = ADDITIONAL_EFFECTS({
@ -4798,9 +4806,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_PROTECT] =
{
.name = COMPOUND_STRING("Protect"),
.description = COMPOUND_STRING(
"Evades attack, but may fail\n"
"if used in succession."),
.description = sProtectDescription,
.effect = EFFECT_PROTECT,
.power = 0,
.type = TYPE_NORMAL,
@ -5189,9 +5195,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_DETECT] =
{
.name = COMPOUND_STRING("Detect"),
.description = COMPOUND_STRING(
"Evades attack, but may fail\n"
"if used in succession."),
.description = sProtectDescription,
.effect = EFFECT_PROTECT,
.power = 0,
.type = TYPE_FIGHTING,
@ -21069,7 +21073,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_BREAKNECK_BLITZ] =
{
.name = COMPOUND_STRING("Breakneck Blitz"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Builds momentum and crashes\n"
"into the foe. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_NORMAL,
@ -21082,8 +21088,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_ALL_OUT_PUMMELING] =
{
.name = COMPOUND_STRING("All Out Pummeling"),
.description = sNullDescription,
.name = COMPOUND_STRING("All-Out Pummeling"),
.description = COMPOUND_STRING(
"Rams an energy orb into\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_FIGHTING,
@ -21097,7 +21105,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SUPERSONIC_SKYSTRIKE] =
{
.name = COMPOUND_STRING("Supersonic Skystrike"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Soars up and plummets toward\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_FLYING,
@ -21111,7 +21121,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_ACID_DOWNPOUR] =
{
.name = COMPOUND_STRING("Acid Downpour"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Sinks the target in a poison\n"
"swamp. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_POISON,
@ -21125,7 +21137,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_TECTONIC_RAGE] =
{
.name = COMPOUND_STRING("Tectonic Rage"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Burrows deep and slams into\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_GROUND,
@ -21140,7 +21154,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_CONTINENTAL_CRUSH] =
{
.name = COMPOUND_STRING("Continental Crush"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Drops a huge rock mountain\n"
"on the foe. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_ROCK,
@ -21153,8 +21169,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_SAVAGE_SPIN_OUT] =
{
.name = COMPOUND_STRING("Savage Spin Out"),
.description = sNullDescription,
.name = COMPOUND_STRING("Savage Spin-Out"),
.description = COMPOUND_STRING(
"Spits threads of silk to\n"
"bind the foe. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_BUG,
@ -21167,8 +21185,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_NEVER_ENDING_NIGHTMARE] =
{
.name = COMPOUND_STRING("Never Ending Nightmare"),
.description = sNullDescription,
.name = COMPOUND_STRING("Never-Ending Nightmare"),
.description = COMPOUND_STRING(
"Deep-seated grudges trap\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_GHOST,
@ -21182,7 +21202,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_CORKSCREW_CRASH] =
{
.name = COMPOUND_STRING("Corkscrew Crash"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Spins very fast and rams\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_STEEL,
@ -21196,7 +21218,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_INFERNO_OVERDRIVE] =
{
.name = COMPOUND_STRING("Inferno Overdrive"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Breathes intense fire at\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_FIRE,
@ -21210,7 +21234,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_HYDRO_VORTEX] =
{
.name = COMPOUND_STRING("Hydro Vortex"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"A huge whirlpool swallows\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_WATER,
@ -21224,7 +21250,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_BLOOM_DOOM] =
{
.name = COMPOUND_STRING("Bloom Doom"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Uses plant energy to attack\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_GRASS,
@ -21238,7 +21266,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_GIGAVOLT_HAVOC] =
{
.name = COMPOUND_STRING("Gigavolt Havoc"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Hits the foe with powerful\n"
"electricity. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_ELECTRIC,
@ -21252,7 +21282,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SHATTERED_PSYCHE] =
{
.name = COMPOUND_STRING("Shattered Psyche"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Controls the target to\n"
"hurt it. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_PSYCHIC,
@ -21266,7 +21298,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SUBZERO_SLAMMER] =
{
.name = COMPOUND_STRING("Subzero Slammer"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Drops the temp and freezes\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_ICE,
@ -21280,7 +21314,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_DEVASTATING_DRAKE] =
{
.name = COMPOUND_STRING("Devastating Drake"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Develops aura and attacks\n"
"the target. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_DRAGON,
@ -21294,7 +21330,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_BLACK_HOLE_ECLIPSE] =
{
.name = COMPOUND_STRING("Black Hole Eclipse"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Sucks the target into dark\n"
"energy. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_DARK,
@ -21308,7 +21346,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_TWINKLE_TACKLE] =
{
.name = COMPOUND_STRING("Twinkle Tackle"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Toys with the target in a\n"
"charming space. Power varies."),
.effect = EFFECT_HIT,
.power = 1,
.type = TYPE_FAIRY,
@ -21322,7 +21362,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_CATASTROPIKA] =
{
.name = COMPOUND_STRING("Catastropika"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Pikachu uses the max amount\n"
"of electricity and pounces."),
.effect = EFFECT_HIT,
.power = 210,
.type = TYPE_ELECTRIC,
@ -21336,7 +21378,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_10000000_VOLT_THUNDERBOLT] =
{
.name = COMPOUND_STRING("10,000,000 Volt Thunderbolt"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Cap Pikachu unleashes jolt.\n"
"High critical-hit ratio."),
.effect = EFFECT_HIT,
.power = 195,
.type = TYPE_ELECTRIC,
@ -21351,7 +21395,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_STOKED_SPARKSURFER] =
{
.name = COMPOUND_STRING("Stoked Sparksurfer"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Alolan Raichu attacks with\n"
"full force. Causes paralysis."),
.effect = EFFECT_HIT,
.power = 175,
.type = TYPE_ELECTRIC,
@ -21369,7 +21415,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_EXTREME_EVOBOOST] =
{
.name = COMPOUND_STRING("Extreme Evoboost"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Eevee gets energy from\n"
"its friends. Boosts stats."),
.effect = EFFECT_EXTREME_EVOBOOST,
.power = 0,
.type = TYPE_NORMAL,
@ -21383,7 +21431,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_PULVERIZING_PANCAKE] =
{
.name = COMPOUND_STRING("Pulverizing Pancake"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Snorlax energetically moves\n"
"and attacks with full force."),
.effect = EFFECT_HIT,
.power = 210,
.type = TYPE_NORMAL,
@ -21397,7 +21447,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_GENESIS_SUPERNOVA] =
{
.name = COMPOUND_STRING("Genesis Supernova"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Mew attacks with full force.\n"
"Psychically charges terrain."),
.effect = EFFECT_HIT_SET_REMOVE_TERRAIN,
.power = 185,
.type = TYPE_PSYCHIC,
@ -21412,7 +21464,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SINISTER_ARROW_RAID] =
{
.name = COMPOUND_STRING("Sinister Arrow Raid"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Decidueye shoots countless\n"
"arrows with full force."),
.effect = EFFECT_HIT,
.power = 180,
.type = TYPE_GHOST,
@ -21426,7 +21480,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MALICIOUS_MOONSAULT] =
{
.name = COMPOUND_STRING("Malicious Moonsault"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Incineroar crashes into\n"
"the target with full force."),
.effect = EFFECT_HIT,
.power = 180,
.type = TYPE_DARK,
@ -21440,7 +21496,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_OCEANIC_OPERETTA] =
{
.name = COMPOUND_STRING("Oceanic Operetta"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Primarina summons a massive\n"
"amount of water at the foe."),
.effect = EFFECT_HIT,
.power = 195,
.type = TYPE_WATER,
@ -21454,7 +21512,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SPLINTERED_STORMSHARDS] =
{
.name = COMPOUND_STRING("Splintered Stormshards"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Lycanroc attacks with full\n"
"force. Removes all terrain."),
.effect = EFFECT_HIT_SET_REMOVE_TERRAIN,
.power = 190,
.type = TYPE_ROCK,
@ -21469,7 +21529,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_LETS_SNUGGLE_FOREVER] =
{
.name = COMPOUND_STRING("Let's Snuggle Forever"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Mimikyu punches the target\n"
"with full force."),
.effect = EFFECT_HIT,
.power = 190,
.type = TYPE_FAIRY,
@ -21483,7 +21545,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_CLANGOROUS_SOULBLAZE] =
{
.name = COMPOUND_STRING("Clangorous Soulblaze"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Kommo-o attacks with full\n"
"force. Boosts all stats."),
.effect = EFFECT_HIT,
.power = 185,
.type = TYPE_DRAGON,
@ -21504,7 +21568,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_GUARDIAN_OF_ALOLA] =
{
.name = COMPOUND_STRING("Guardian of Alola"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"The Land Spirit Pokémon\n"
"greatly reduces the foe's HP."),
.effect = EFFECT_GUARDIAN_OF_ALOLA,
.power = 1,
.type = TYPE_FAIRY,
@ -21518,7 +21584,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_SEARING_SUNRAZE_SMASH] =
{
.name = COMPOUND_STRING("Searing Sunraze Smash"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Solgaleo attacks with full\n"
"force. Ignores abilities."),
.effect = EFFECT_HIT,
.power = 200,
.type = TYPE_STEEL,
@ -21533,7 +21601,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MENACING_MOONRAZE_MAELSTROM] =
{
.name = COMPOUND_STRING("Menacing Moonraze Maelstrom"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Lunala attacks with full\n"
"force. Ignores abilities."),
.effect = EFFECT_HIT,
.power = 200,
.type = TYPE_GHOST,
@ -21547,8 +21617,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_LIGHT_THAT_BURNS_THE_SKY] =
{
.name = COMPOUND_STRING("Light That Burns The Sky"),
.description = sNullDescription,
.name = COMPOUND_STRING("Light That Burns the Sky"),
.description = COMPOUND_STRING(
"Uses Necrozma's highest\n"
"attack. Ignores abilities."),
.effect = EFFECT_PHOTON_GEYSER,
.power = 200,
.type = TYPE_PSYCHIC,
@ -21562,8 +21634,10 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
},
[MOVE_SOUL_STEALING_7_STAR_STRIKE] =
{
.name = COMPOUND_STRING("Soul Stealing 7 Star Strike"),
.description = sNullDescription,
.name = COMPOUND_STRING("Soul-Stealing 7-Star Strike"),
.description = COMPOUND_STRING(
"Marshadow punches and\n"
"kicks with full force."),
.effect = EFFECT_HIT,
.power = 195,
.type = TYPE_GHOST,
@ -21578,7 +21652,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_GUARD] =
{
.name = COMPOUND_STRING("Max Guard"),
.description = sNullDescription,
.description = sProtectDescription,
.effect = EFFECT_PROTECT,
.power = 0,
.type = TYPE_NORMAL,
@ -21594,7 +21668,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_FLARE] =
{
.name = COMPOUND_STRING("Max Flare"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Fire Dynamax attack.\n"
"Intensifies sun for 5 turns."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_FIRE,
@ -21614,7 +21690,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_FLUTTERBY] =
{
.name = COMPOUND_STRING("Max Flutterby"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Bug Dynamax attack.\n"
"Lowers foe's Sp. Atk stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_BUG,
@ -21634,7 +21712,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_LIGHTNING] =
{
.name = COMPOUND_STRING("Max Lightning"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Electric Dynamax attack.\n"
"Turns the terrain electric."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_ELECTRIC,
@ -21654,7 +21734,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_STRIKE] =
{
.name = COMPOUND_STRING("Max Strike"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Normal Dynamax attack.\n"
"Lowers foe's Speed stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_NORMAL,
@ -21674,7 +21756,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_KNUCKLE] =
{
.name = COMPOUND_STRING("Max Knuckle"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Fighting Dynamax attack.\n"
"Boosts ally Attack stats."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_FIGHTING,
@ -21694,7 +21778,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_PHANTASM] =
{
.name = COMPOUND_STRING("Max Phantasm"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Ghost Dynamax attack.\n"
"Lowers foe's Defense stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_GHOST,
@ -21714,7 +21800,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_HAILSTORM] =
{
.name = COMPOUND_STRING("Max Hailstorm"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Ice Dynamax attack.\n"
"Summons hail for 5 turns."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_ICE,
@ -21734,7 +21822,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_OOZE] =
{
.name = COMPOUND_STRING("Max Ooze"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Poison Dynamax attack.\n"
"Boosts ally Sp. Atk stats."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_POISON,
@ -21754,7 +21844,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_GEYSER] =
{
.name = COMPOUND_STRING("Max Geyser"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Water Dynamax attack.\n"
"Summons rain for 5 turns."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_WATER,
@ -21774,7 +21866,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_AIRSTREAM] =
{
.name = COMPOUND_STRING("Max Airstream"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Flying Dynamax attack.\n"
"Boosts ally Speed stats."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_FLYING,
@ -21794,7 +21888,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_STARFALL] =
{
.name = COMPOUND_STRING("Max Starfall"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Fairy Dynamax attack.\n"
"Turns the terrain misty."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_FAIRY,
@ -21814,7 +21910,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_WYRMWIND] =
{
.name = COMPOUND_STRING("Max Wyrmwind"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Dragon Dynamax attack.\n"
"Lowers foe's Attack stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_DRAGON,
@ -21834,7 +21932,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_MINDSTORM] =
{
.name = COMPOUND_STRING("Max Mindstorm"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Psychic Dynamax attack.\n"
"Turns the terrain psychic."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_PSYCHIC,
@ -21854,7 +21954,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_ROCKFALL] =
{
.name = COMPOUND_STRING("Max Rockfall"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Rock Dynamax attack.\n"
"Summons a sandstorm."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_ROCK,
@ -21874,7 +21976,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_QUAKE] =
{
.name = COMPOUND_STRING("Max Quake"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Ground Dynamax attack.\n"
"Boosts ally Sp. Def stats."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_GROUND,
@ -21895,7 +21999,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_DARKNESS] =
{
.name = COMPOUND_STRING("Max Darkness"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Dark Dynamax attack.\n"
"Lowers foe's Sp. Def stat."),
.effect = EFFECT_MAX_MOVE,
.power = 1,
.type = TYPE_DARK,
@ -21915,7 +22021,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_OVERGROWTH] =
{
.name = COMPOUND_STRING("Max Overgrowth"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Grass Dynamax attack.\n"
"Turns the terrain grassy."),
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@ -21935,7 +22043,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_MAX_STEELSPIKE] =
{
.name = COMPOUND_STRING("Max Steelspike"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"Steel Dynamax attack.\n"
"Boosts ally Defense stats."),
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_STEEL,
@ -21955,7 +22065,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_VINE_LASH] =
{
.name = COMPOUND_STRING("G-Max Vine Lash"),
.description = sNullDescription, //ANIM TODO
.description = COMPOUND_STRING(
"G-max Venusaur attack.\n"
"Damages for 4 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@ -21975,7 +22087,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_WILDFIRE] =
{
.name = COMPOUND_STRING("G-Max Wildfire"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Charizard attack.\n"
"Damages for 4 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FIRE,
@ -21995,7 +22109,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_CANNONADE] =
{
.name = COMPOUND_STRING("G-Max Cannonade"),
.description = sNullDescription, //ANIM TODO
.description = COMPOUND_STRING(
"G-max Blastoise attack.\n"
"Damages for 4 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
@ -22015,7 +22131,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_BEFUDDLE] =
{
.name = COMPOUND_STRING("G-Max Befuddle"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Butterfree attack.\n"
"Poison, paralysis, or sleep."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_BUG,
@ -22035,7 +22153,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_VOLT_CRASH] =
{
.name = COMPOUND_STRING("G-Max Volt Crash"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Pikachu attack.\n"
"Paralyzes opponents."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_ELECTRIC,
@ -22055,7 +22175,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_GOLD_RUSH] =
{
.name = COMPOUND_STRING("G-Max Gold Rush"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Meowth attack.\n"
"Confuses and earns money."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_NORMAL,
@ -22075,7 +22197,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_CHI_STRIKE] =
{
.name = COMPOUND_STRING("G-Max Chi Strike"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Machamp attack.\n"
"Boosts critical-hit ratio."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FIGHTING,
@ -22095,7 +22219,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_TERROR] =
{
.name = COMPOUND_STRING("G-Max Terror"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Gengar attack.\n"
"Prevents foes from escaping."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GHOST,
@ -22115,7 +22241,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_FOAM_BURST] =
{
.name = COMPOUND_STRING("G-Max Foam Burst"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Kingler attack.\n"
"Harshly lowers foe's Speed."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
@ -22135,7 +22263,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_RESONANCE] =
{
.name = COMPOUND_STRING("G-Max Resonance"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Lapras attack.\n"
"Reduces damage for 5 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_ICE,
@ -22155,7 +22285,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_CUDDLE] =
{
.name = COMPOUND_STRING("G-Max Cuddle"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Eevee attack.\n"
"Infatuates opponents."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_NORMAL,
@ -22175,7 +22307,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_REPLENISH] =
{
.name = COMPOUND_STRING("G-Max Replenish"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Snorlax attack.\n"
"Restores eaten Berries."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_NORMAL,
@ -22195,7 +22329,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_MALODOR] =
{
.name = COMPOUND_STRING("G-Max Malodor"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Garbodor attack.\n"
"Poisons opponents."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_POISON,
@ -22215,7 +22351,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_MELTDOWN] =
{
.name = COMPOUND_STRING("G-Max Meltdown"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Melmetal attack.\n"
"Prevents repeat move use."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_STEEL,
@ -22235,7 +22373,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_DRUM_SOLO] =
{
.name = COMPOUND_STRING("G-Max Drum Solo"),
.description = sNullDescription, //ANIM TODO
.description = COMPOUND_STRING(
"G-max Rillaboom attack.\n"
"Ignores target's abilities."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@ -22256,7 +22396,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_FIREBALL] =
{
.name = COMPOUND_STRING("G-Max Fireball"),
.description = sNullDescription, //ANIM TODO
.description = COMPOUND_STRING(
"G-max Cinderace attack.\n"
"Ignores target's abilities."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FIRE,
@ -22277,7 +22419,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_HYDROSNIPE] =
{
.name = COMPOUND_STRING("G-Max Hydrosnipe"),
.description = sNullDescription, //ANIM TODO
.description = COMPOUND_STRING(
"G-max Inteleon attack.\n"
"Ignores target's abilities."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
@ -22298,7 +22442,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_WIND_RAGE] =
{
.name = COMPOUND_STRING("G-Max Wind Rage"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Corviknight attack.\n"
"Removes opponent screens."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FLYING,
@ -22318,7 +22464,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_GRAVITAS] =
{
.name = COMPOUND_STRING("G-Max Gravitas"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Orbeetle attack.\n"
"Changes gravity for 5 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_PSYCHIC,
@ -22338,7 +22486,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_STONESURGE] =
{
.name = COMPOUND_STRING("G-Max Stonesurge"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Drednaw attack.\n"
"Scatters sharp rocks."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,
@ -22358,7 +22508,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_VOLCALITH] =
{
.name = COMPOUND_STRING("G-Max Volcalith"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Coalossal attack.\n"
"Damages for 4 turns."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_ROCK,
@ -22378,7 +22530,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_TARTNESS] =
{
.name = COMPOUND_STRING("G-Max Tartness"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Flapple attack.\n"
"Lowers foe's evasiveness."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@ -22398,7 +22552,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_SWEETNESS] =
{
.name = COMPOUND_STRING("G-Max Sweetness"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Appletun attack.\n"
"Heals ally status conditions."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GRASS,
@ -22418,7 +22574,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_SANDBLAST] =
{
.name = COMPOUND_STRING("G-Max Sandblast"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Sandaconda attack.\n"
"Traps foes in a sandstorm."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_GROUND,
@ -22438,7 +22596,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_STUN_SHOCK] =
{
.name = COMPOUND_STRING("G-Max Stun Shock"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Toxtricity attack.\n"
"Poisons or paralyzes foes."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_ELECTRIC,
@ -22458,7 +22618,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_CENTIFERNO] =
{
.name = COMPOUND_STRING("G-Max Centiferno"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Toxtricity attack.\n"
"Traps foes in flames."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FIRE,
@ -22478,7 +22640,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_SMITE] =
{
.name = COMPOUND_STRING("G-Max Smite"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Hatterene attack.\n"
"Confuses opponents."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FAIRY,
@ -22499,7 +22663,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_SNOOZE] =
{
.name = COMPOUND_STRING("G-Max Snooze"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Grimmsnarl attack.\n"
"Lulls foes into sleep."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_DARK,
@ -22519,7 +22685,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_FINALE] =
{
.name = COMPOUND_STRING("G-Max Finale"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Alcremie attack.\n"
"Heals ally HP."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_FAIRY,
@ -22539,7 +22707,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_STEELSURGE] =
{
.name = COMPOUND_STRING("G-Max Steelsurge"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Copperajah attack.\n"
"Scatters sharp spikes."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_STEEL,
@ -22559,7 +22729,9 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_DEPLETION] =
{
.name = COMPOUND_STRING("G-Max Depletion"),
.description = sNullDescription,
.description = COMPOUND_STRING(
"G-max Duraludon attack.\n"
"Reduces target's PP."), //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_DRAGON,
@ -22579,7 +22751,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_ONE_BLOW] =
{
.name = COMPOUND_STRING("G-Max One Blow"),
.description = sNullDescription,
.description = sGMaxOneBlowDescription, //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_DARK,
@ -22595,7 +22767,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
[MOVE_G_MAX_RAPID_FLOW] =
{
.name = COMPOUND_STRING("G-Max Rapid Flow"),
.description = sNullDescription,
.description = sGMaxOneBlowDescription, //ANIM TODO
.effect = EFFECT_MAX_MOVE,
.power = 10,
.type = TYPE_WATER,

View File

@ -2,7 +2,7 @@
#include "test/battle.h"
// Also checks that non-sleeping enemy is not affected.
SINGLE_BATTLE_TEST("Bad Dreams causes the sleeping enemy Pokemon to lose 1/8 of hp")
SINGLE_BATTLE_TEST("Bad Dreams causes the sleeping enemy Pokemon to lose 1/8 of HP")
{
u32 status;
PARAMETRIZE { status = STATUS1_NONE; }

View File

@ -0,0 +1,7 @@
#include "global.h"
#include "test/battle.h"
TO_DO_BATTLE_TEST("Ball Fetch causes the Pokémon to pick up the last failed Ball at the end of the turn");
TO_DO_BATTLE_TEST("Ball Fetch doesn't trigger if the Pokémon is already holding an item");
TO_DO_BATTLE_TEST("Ball Fetch only picks up the first failed ball, once per battle"); // Bestow can help test this
TO_DO_BATTLE_TEST("Ball Fetch doesn't trigger in Max Raid Battles");

View File

@ -0,0 +1,5 @@
#include "global.h"
#include "test/battle.h"
TO_DO_BATTLE_TEST("Battery increases Sp. Attack damage of allies by ~30%"); // 5325/4096
TO_DO_BATTLE_TEST("Battery does not increase its own Sp. Attack damage");

View File

@ -73,3 +73,5 @@ SINGLE_BATTLE_TEST("Beads of Ruin's message displays correctly after all battler
MESSAGE("The opposing Chi-Yu's Beads of Ruin weakened the Sp. Def of all surrounding Pokémon!");
}
}
TO_DO_BATTLE_TEST("Beads of Ruin reduce Defense if Wonder Room is active");

View File

@ -56,3 +56,16 @@ SINGLE_BATTLE_TEST("Beast Boost doesn't trigger if user is fainted")
MESSAGE("2 sent out Wobbuffet!");
}
}
TO_DO_BATTLE_TEST("Beast Boost boosts Attack 1st in case of a stat tie");
TO_DO_BATTLE_TEST("Beast Boost boosts Defense 2nd in case of a stat tie");
TO_DO_BATTLE_TEST("Beast Boost boosts Special Attack 3rd in case of a stat tie");
TO_DO_BATTLE_TEST("Beast Boost boosts Special Defense 4th in case of a stat tie");
TO_DO_BATTLE_TEST("Beast Boost considers Power Split");
TO_DO_BATTLE_TEST("Beast Boost considers Guard Split");
TO_DO_BATTLE_TEST("Beast Boost considers Power Trick");
TO_DO_BATTLE_TEST("Beast Boost considers Wonder Room");
TO_DO_BATTLE_TEST("Beast Boost considers Speed Swap");
TO_DO_BATTLE_TEST("Beast Boost doesn't consider stat stages");
TO_DO_BATTLE_TEST("Beast Boost doesn't consider held items");
TO_DO_BATTLE_TEST("Beast Boost doesn't consider status condition reductions");

View File

@ -1,7 +1,7 @@
#include "global.h"
#include "test/battle.h"
SINGLE_BATTLE_TEST("Berserk activates only if the target had more than 50% of its hp")
SINGLE_BATTLE_TEST("Berserk activates only if the target had more than 50% of its HP")
{
bool32 activates = FALSE;
u16 maxHp = 500, hp = 0;

View File

@ -0,0 +1,4 @@
#include "global.h"
#include "test/battle.h"
TO_DO_BATTLE_TEST("Bulletproof makes ballistic moves fail against the ability user");

View File

@ -87,19 +87,3 @@ SINGLE_BATTLE_TEST("Gem is consumed if the move type is changed")
ANIMATION(ANIM_TYPE_MOVE, MOVE_FEINT_ATTACK, player);
}
}
SINGLE_BATTLE_TEST("Gem is not consumed if a no type damage move is used") //ie. Counter, Psywave, Super Fang. All these moves have 1 base power.
{
ASSUME(GetMovePower(MOVE_PSYWAVE) == 1);
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PSYCHIC_GEM); };
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_PSYWAVE); }
} SCENE {
NONE_OF {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
MESSAGE("The Psychic Gem strengthened Wobbuffet's power!");
}
}
}

View File

@ -93,7 +93,7 @@ TEST("Move descriptions fit on Pokemon Summary Screen")
u32 i;
const u32 fontId = FONT_NORMAL, widthPx = 152;
u32 move = MOVE_NONE;
for (i = 1; i < MOVES_COUNT; i++)
for (i = 1; i < MOVES_COUNT_ALL; i++)
{
PARAMETRIZE_LABEL("%S", GetMoveDescription(i)) { move = i; }
}