Combines Super Fang and Guardian of Alola effects (#7048)
This commit is contained in:
parent
52b1b877ec
commit
177fa2f096
@ -1697,10 +1697,6 @@
|
||||
callnative BS_ApplyTerastallization
|
||||
.endm
|
||||
|
||||
.macro damagetoquartertargethp
|
||||
callnative BS_DamageToQuarterTargetHP
|
||||
.endm
|
||||
|
||||
.macro jumpifsleepclause jumpInstr:req
|
||||
callnative BS_JumpIfSleepClause
|
||||
.4byte \jumpInstr
|
||||
|
||||
@ -20,16 +20,6 @@
|
||||
|
||||
.section script_data, "aw", %progbits
|
||||
|
||||
BattleScript_DamageToQuarterTargetHP::
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
attackstring
|
||||
ppreduce
|
||||
typecalc
|
||||
clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
|
||||
damagetoquartertargethp
|
||||
goto BattleScript_HitFromAtkAnimation
|
||||
|
||||
BattleScript_EffectFickleBeam::
|
||||
attackcanceler
|
||||
attackstring
|
||||
|
||||
@ -863,7 +863,6 @@ extern const u8 BattleScript_EffectShedTail[];
|
||||
extern const u8 BattleScript_EffectUpperHand[];
|
||||
extern const u8 BattleScript_EffectTidyUp[];
|
||||
extern const u8 BattleScript_EffectSpicyExtract[];
|
||||
extern const u8 BattleScript_DamageToQuarterTargetHP[];
|
||||
extern const u8 BattleScript_EffectFickleBeam[];
|
||||
extern const u8 BattleScript_FickleBeamDoubled[];
|
||||
extern const u8 BattleScript_QuestionForfeitBattle[];
|
||||
|
||||
@ -35,8 +35,8 @@ enum BattleMoveEffects
|
||||
EFFECT_REST,
|
||||
EFFECT_OHKO,
|
||||
EFFECT_FUSION_COMBO,
|
||||
EFFECT_SUPER_FANG,
|
||||
EFFECT_FIXED_DAMAGE_ARG,
|
||||
EFFECT_FIXED_PERCENT_DAMAGE,
|
||||
EFFECT_FIXED_HP_DAMAGE,
|
||||
EFFECT_HEAL_BLOCK,
|
||||
EFFECT_RECOIL_IF_MISS,
|
||||
EFFECT_MIST,
|
||||
@ -341,7 +341,6 @@ enum BattleMoveEffects
|
||||
EFFECT_TERA_BLAST,
|
||||
EFFECT_TERA_STARSTORM,
|
||||
EFFECT_DRAGON_DARTS,
|
||||
EFFECT_GUARDIAN_OF_ALOLA,
|
||||
EFFECT_SHELL_SIDE_ARM,
|
||||
EFFECT_ORDER_UP,
|
||||
EFFECT_RAPID_SPIN,
|
||||
|
||||
@ -147,6 +147,7 @@ struct MoveInfo
|
||||
u32 holdEffect;
|
||||
u32 type;
|
||||
u32 fixedDamage;
|
||||
u32 damagePercentage;
|
||||
u32 absorbPercentage;
|
||||
u32 recoilPercentage;
|
||||
u32 nonVolatileStatus;
|
||||
@ -518,7 +519,7 @@ static inline u32 GetMoveArgType(u32 moveId)
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].argument.type;
|
||||
}
|
||||
|
||||
static inline u32 GetMoveFixedDamage(u32 moveId)
|
||||
static inline u32 GetMoveFixedHPDamage(u32 moveId)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].argument.fixedDamage;
|
||||
}
|
||||
@ -550,6 +551,11 @@ static inline u32 GetMoveNonVolatileStatus(u32 move)
|
||||
}
|
||||
}
|
||||
|
||||
static inline u32 GetMoveDamagePercentage(u32 move)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(move)].argument.damagePercentage;
|
||||
}
|
||||
|
||||
static inline const struct AdditionalEffect *GetMoveAdditionalEffectById(u32 moveId, u32 effect)
|
||||
{
|
||||
return &gMovesInfo[SanitizeMoveId(moveId)].additionalEffects[effect];
|
||||
|
||||
@ -399,14 +399,14 @@ void ComputeBattlerDecisions(u32 battler)
|
||||
}
|
||||
}
|
||||
|
||||
void ReconsiderGimmick(u32 battlerAtk, u32 battlerDef, u16 move)
|
||||
void ReconsiderGimmick(u32 battlerAtk, u32 battlerDef, u16 move)
|
||||
{
|
||||
// After choosing a move for battlerAtk assuming that a gimmick will be used, reconsider whether the gimmick is necessary.
|
||||
|
||||
if (gBattleStruct->gimmick.usableGimmick[battlerAtk] == GIMMICK_Z_MOVE && !ShouldUseZMove(battlerAtk, battlerDef, move))
|
||||
if (gBattleStruct->gimmick.usableGimmick[battlerAtk] == GIMMICK_Z_MOVE && !ShouldUseZMove(battlerAtk, battlerDef, move))
|
||||
SetAIUsingGimmick(battlerAtk, NO_GIMMICK);
|
||||
|
||||
if (gBattleStruct->gimmick.usableGimmick[battlerAtk] == GIMMICK_TERA && GetMoveEffect(move) == EFFECT_PROTECT)
|
||||
if (gBattleStruct->gimmick.usableGimmick[battlerAtk] == GIMMICK_TERA && GetMoveEffect(move) == EFFECT_PROTECT)
|
||||
SetAIUsingGimmick(battlerAtk, NO_GIMMICK);
|
||||
}
|
||||
|
||||
@ -416,18 +416,18 @@ u32 BattleAI_ChooseMoveIndex(u32 battler)
|
||||
|
||||
SetAIUsingGimmick(battler, USE_GIMMICK);
|
||||
|
||||
if (gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_TERA && (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_SMART_TERA))
|
||||
if (gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_TERA && (gAiThinkingStruct->aiFlags[battler] & AI_FLAG_SMART_TERA))
|
||||
DecideTerastal(battler);
|
||||
|
||||
|
||||
|
||||
if (!IsDoubleBattle())
|
||||
chosenMoveIndex = ChooseMoveOrAction_Singles(battler);
|
||||
else
|
||||
chosenMoveIndex = ChooseMoveOrAction_Doubles(battler);
|
||||
|
||||
if (gBattleStruct->gimmick.usableGimmick[battler] != GIMMICK_NONE)
|
||||
if (gBattleStruct->gimmick.usableGimmick[battler] != GIMMICK_NONE)
|
||||
ReconsiderGimmick(battler, gBattlerTarget, gBattleMons[battler].moves[chosenMoveIndex]);
|
||||
|
||||
|
||||
|
||||
// Clear protect structures, some flags may be set during AI calcs
|
||||
// e.g. pranksterElevated from GetBattleMovePriority
|
||||
@ -1081,18 +1081,17 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
{
|
||||
switch (moveEffect)
|
||||
{
|
||||
case EFFECT_FIXED_DAMAGE_ARG:
|
||||
case EFFECT_FIXED_HP_DAMAGE:
|
||||
case EFFECT_LEVEL_DAMAGE:
|
||||
case EFFECT_PSYWAVE:
|
||||
case EFFECT_OHKO:
|
||||
case EFFECT_BIDE:
|
||||
case EFFECT_SUPER_FANG:
|
||||
case EFFECT_FIXED_PERCENT_DAMAGE:
|
||||
case EFFECT_ENDEAVOR:
|
||||
case EFFECT_COUNTER:
|
||||
case EFFECT_MIRROR_COAT:
|
||||
case EFFECT_METAL_BURST:
|
||||
case EFFECT_FINAL_GAMBIT:
|
||||
case EFFECT_GUARDIAN_OF_ALOLA:
|
||||
break;
|
||||
default:
|
||||
RETURN_SCORE_MINUS(10);
|
||||
@ -1624,7 +1623,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
}
|
||||
break;
|
||||
case EFFECT_PRESENT:
|
||||
case EFFECT_FIXED_DAMAGE_ARG:
|
||||
case EFFECT_FIXED_HP_DAMAGE:
|
||||
case EFFECT_FOCUS_PUNCH:
|
||||
// AI_CBM_HighRiskForDamage
|
||||
if (aiData->abilities[battlerDef] == ABILITY_WONDER_GUARD && effectiveness < UQ_4_12(2.0))
|
||||
|
||||
@ -387,7 +387,7 @@ static u32 GetMaxPowerTier(u32 move)
|
||||
switch (GetMoveEffect(move))
|
||||
{
|
||||
case EFFECT_BIDE:
|
||||
case EFFECT_SUPER_FANG:
|
||||
case EFFECT_FIXED_PERCENT_DAMAGE:
|
||||
case EFFECT_LEVEL_DAMAGE:
|
||||
case EFFECT_PSYWAVE:
|
||||
case EFFECT_COUNTER:
|
||||
@ -400,7 +400,7 @@ static u32 GetMaxPowerTier(u32 move)
|
||||
case EFFECT_TERRAIN_PULSE:
|
||||
case EFFECT_PUNISHMENT:
|
||||
case EFFECT_TRUMP_CARD:
|
||||
case EFFECT_FIXED_DAMAGE_ARG:
|
||||
case EFFECT_FIXED_HP_DAMAGE:
|
||||
case EFFECT_SPIT_UP:
|
||||
case EFFECT_NATURAL_GIFT:
|
||||
case EFFECT_MIRROR_COAT:
|
||||
|
||||
@ -17865,16 +17865,6 @@ void BS_ApplyTerastallization(void)
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
void BS_DamageToQuarterTargetHP(void)
|
||||
{
|
||||
NATIVE_ARGS();
|
||||
gBattleStruct->moveDamage[gBattlerTarget] = (3 * GetNonDynamaxHP(gBattlerTarget)) / 4;
|
||||
if (gBattleStruct->moveDamage[gBattlerTarget] == 0)
|
||||
gBattleStruct->moveDamage[gBattlerTarget] = 1;
|
||||
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
void BS_JumpIfSleepClause(void)
|
||||
{
|
||||
NATIVE_ARGS(const u8 *jumpInstr);
|
||||
|
||||
@ -760,8 +760,8 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
|
||||
// Changes depending on the effect
|
||||
switch (effect)
|
||||
{
|
||||
case EFFECT_FIXED_DAMAGE_ARG:
|
||||
baseFromEffect *= (GetMoveFixedDamage(move) / 20);
|
||||
case EFFECT_FIXED_HP_DAMAGE:
|
||||
baseFromEffect *= (GetMoveFixedHPDamage(move) / 20);
|
||||
break;
|
||||
case EFFECT_TWO_TURNS_ATTACK:
|
||||
for (i = 0; i < GetMoveAdditionalEffectCount(move); i++)
|
||||
|
||||
@ -9322,11 +9322,11 @@ static inline s32 DoFixedDamageMoveCalc(struct DamageCalculationData *damageCalc
|
||||
randDamage = B_PSYWAVE_DMG >= GEN_6 ? (Random() % 101) : ((Random() % 11) * 10);
|
||||
dmg = gBattleMons[damageCalcData->battlerAtk].level * (randDamage + 50) / 100;
|
||||
break;
|
||||
case EFFECT_FIXED_DAMAGE_ARG:
|
||||
dmg = GetMoveFixedDamage(damageCalcData->move);
|
||||
case EFFECT_FIXED_HP_DAMAGE:
|
||||
dmg = GetMoveFixedHPDamage(damageCalcData->move);
|
||||
break;
|
||||
case EFFECT_SUPER_FANG:
|
||||
dmg = GetNonDynamaxHP(damageCalcData->battlerDef) / 2;
|
||||
case EFFECT_FIXED_PERCENT_DAMAGE:
|
||||
dmg = GetNonDynamaxHP(damageCalcData->battlerDef) * GetMoveDamagePercentage(damageCalcData->move) / 100;
|
||||
break;
|
||||
case EFFECT_FINAL_GAMBIT:
|
||||
dmg = GetNonDynamaxHP(damageCalcData->battlerAtk);
|
||||
|
||||
@ -209,14 +209,14 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
|
||||
.battleTvScore = 0, // TODO: Assign points
|
||||
},
|
||||
|
||||
[EFFECT_SUPER_FANG] =
|
||||
[EFFECT_FIXED_PERCENT_DAMAGE] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectHit,
|
||||
.battleTvScore = 5,
|
||||
.encourageEncore = TRUE,
|
||||
},
|
||||
|
||||
[EFFECT_FIXED_DAMAGE_ARG] =
|
||||
[EFFECT_FIXED_HP_DAMAGE] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectHit,
|
||||
.battleTvScore = 1,
|
||||
@ -2171,12 +2171,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
|
||||
.battleTvScore = 0, // TODO: Assign points
|
||||
},
|
||||
|
||||
[EFFECT_GUARDIAN_OF_ALOLA] =
|
||||
{
|
||||
.battleScript = BattleScript_DamageToQuarterTargetHP,
|
||||
.battleTvScore = 0, // TODO: Assign points
|
||||
},
|
||||
|
||||
[EFFECT_SHELL_SIDE_ARM] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectHit,
|
||||
|
||||
@ -1364,7 +1364,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.description = COMPOUND_STRING(
|
||||
"Launches shock waves that\n"
|
||||
"always inflict 20 HP damage."),
|
||||
.effect = EFFECT_FIXED_DAMAGE_ARG,
|
||||
.effect = EFFECT_FIXED_HP_DAMAGE,
|
||||
.power = 1,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 90,
|
||||
@ -2220,7 +2220,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.description = COMPOUND_STRING(
|
||||
"Launches shock waves that\n"
|
||||
"always inflict 40 HP damage."),
|
||||
.effect = EFFECT_FIXED_DAMAGE_ARG,
|
||||
.effect = EFFECT_FIXED_HP_DAMAGE,
|
||||
.power = 1,
|
||||
.type = TYPE_DRAGON,
|
||||
.accuracy = 100,
|
||||
@ -2866,7 +2866,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
"Minimizes the user's size to\n"
|
||||
#if B_MINIMIZE_EVASION >= GEN_5
|
||||
"sharply raise evasiveness."),
|
||||
#else
|
||||
#else
|
||||
"raise evasiveness."),
|
||||
#endif
|
||||
.effect = EFFECT_MINIMIZE,
|
||||
@ -3704,7 +3704,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.description = COMPOUND_STRING(
|
||||
#if B_UPDATED_MOVE_DATA >= GEN_5
|
||||
"Envelops the foes in a toxic\n"
|
||||
#else
|
||||
#else
|
||||
"Envelops the foe in a toxic\n"
|
||||
#endif
|
||||
"gas that may poison."),
|
||||
@ -4308,7 +4308,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.description = COMPOUND_STRING(
|
||||
"Attacks with sharp fangs\n"
|
||||
"and cuts half the foe's HP."),
|
||||
.effect = EFFECT_SUPER_FANG,
|
||||
.effect = EFFECT_FIXED_PERCENT_DAMAGE,
|
||||
.power = 1,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 90,
|
||||
@ -4316,6 +4316,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.category = DAMAGE_CATEGORY_PHYSICAL,
|
||||
.argument = { .damagePercentage = 50 },
|
||||
.makesContact = TRUE,
|
||||
.ignoresKingsRock = (B_UPDATED_MOVE_FLAGS == GEN_3 || B_UPDATED_MOVE_FLAGS == GEN_4),
|
||||
.contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS,
|
||||
@ -6053,7 +6054,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
"Spins attack that removes\n"
|
||||
#if B_SPEED_BUFFING_RAPID_SPIN >= GEN_8
|
||||
"some effects and ups speed."),
|
||||
#else
|
||||
#else
|
||||
"certain effects."),
|
||||
#endif
|
||||
.effect = EFFECT_RAPID_SPIN,
|
||||
@ -6280,7 +6281,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
#else
|
||||
"The type and effectiveness\n"
|
||||
"vary with the user."),
|
||||
#endif
|
||||
#endif
|
||||
.power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1,
|
||||
.effect = EFFECT_HIDDEN_POWER,
|
||||
.type = TYPE_NORMAL,
|
||||
@ -9621,7 +9622,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
"Whips up a breeze, doubling\n"
|
||||
#if B_TAILWIND_TURNS >= GEN_5
|
||||
"ally Speed for 4 turns."),
|
||||
#else
|
||||
#else
|
||||
"ally Speed for 3 turns."),
|
||||
#endif
|
||||
.effect = EFFECT_TAILWIND,
|
||||
@ -17089,7 +17090,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.description = COMPOUND_STRING(
|
||||
"Halves the foe's HP with\n"
|
||||
"the power of nature."),
|
||||
.effect = EFFECT_SUPER_FANG,
|
||||
.effect = EFFECT_FIXED_PERCENT_DAMAGE,
|
||||
.power = 1,
|
||||
.type = TYPE_FAIRY,
|
||||
.accuracy = 90,
|
||||
@ -20174,7 +20175,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.description = COMPOUND_STRING(
|
||||
"Summons a ruinous disaster\n"
|
||||
"and cuts half the foe's HP."),
|
||||
.effect = EFFECT_SUPER_FANG,
|
||||
.effect = EFFECT_FIXED_PERCENT_DAMAGE,
|
||||
.power = 1,
|
||||
.type = TYPE_DARK,
|
||||
.accuracy = 90,
|
||||
@ -21641,7 +21642,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.description = COMPOUND_STRING(
|
||||
"The Land Spirit Pokémon\n"
|
||||
"greatly reduces the foe's HP."),
|
||||
.effect = EFFECT_GUARDIAN_OF_ALOLA,
|
||||
.effect = EFFECT_FIXED_PERCENT_DAMAGE,
|
||||
.power = 1,
|
||||
.type = TYPE_FAIRY,
|
||||
.accuracy = 0,
|
||||
@ -21649,6 +21650,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.category = DAMAGE_CATEGORY_SPECIAL,
|
||||
.argument = { .damagePercentage = 75 },
|
||||
.battleAnimScript = gBattleAnimMove_GuardianOfAlola,
|
||||
},
|
||||
[MOVE_SEARING_SUNRAZE_SMASH] =
|
||||
|
||||
@ -28,8 +28,8 @@ SINGLE_BATTLE_TEST("Cud Chew will activate Oran Berry effect again on the next t
|
||||
GIVEN {
|
||||
ASSUME(gItemsInfo[ITEM_ORAN_BERRY].holdEffect == HOLD_EFFECT_RESTORE_HP);
|
||||
ASSUME(gItemsInfo[ITEM_ORAN_BERRY].holdEffectParam == 10);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_TAUROS_PALDEA_COMBAT) { MaxHP(60); HP(60); Ability(ABILITY_CUD_CHEW); Item(ITEM_ORAN_BERRY); }
|
||||
} WHEN {
|
||||
|
||||
@ -630,7 +630,7 @@ SINGLE_BATTLE_TEST("Dynamax: Super Fang uses a Pokemon's non-Dynamax HP", s16 da
|
||||
PARAMETRIZE { dynamax = GIMMICK_NONE; }
|
||||
PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_SUPER_FANG) == EFFECT_SUPER_FANG);
|
||||
ASSUME(GetMoveEffect(MOVE_SUPER_FANG) == EFFECT_FIXED_PERCENT_DAMAGE);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }
|
||||
} WHEN {
|
||||
|
||||
@ -630,10 +630,10 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Clangorous Soulblaze boosts all the user's stats by
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("(Z-MOVE) Guardian of Alola deals 75\% of the target's current HP")
|
||||
SINGLE_BATTLE_TEST("(Z-MOVE) Guardian of Alola deals 75% of the target's current HP")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_GUARDIAN_OF_ALOLA) == EFFECT_GUARDIAN_OF_ALOLA);
|
||||
ASSUME(GetMoveEffect(MOVE_GUARDIAN_OF_ALOLA) == EFFECT_FIXED_PERCENT_DAMAGE);
|
||||
PLAYER(SPECIES_TAPU_FINI) { Item(ITEM_TAPUNIUM_Z); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gItemsInfo[ITEM_LIECHI_BERRY].holdEffect == HOLD_EFFECT_ATTACK_UP);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Liechi Berry raises the holder's Attack by one stage when HP drops to 1/4 or below")
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gItemsInfo[ITEM_LANSAT_BERRY].holdEffect == HOLD_EFFECT_CRITICAL_UP);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two stages when HP drops to 1/4 or below")
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gItemsInfo[ITEM_GANLON_BERRY].holdEffect == HOLD_EFFECT_DEFENSE_UP);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Ganlon Berry raises the holder's Defense by one stage when HP drops to 1/4 or below")
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gItemsInfo[ITEM_MICLE_BERRY].holdEffect == HOLD_EFFECT_MICLE_BERRY);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Micle Berry raises the holder's accuracy by 1.2 when HP drops to 1/4 or below")
|
||||
|
||||
@ -252,8 +252,8 @@ SINGLE_BATTLE_TEST("Shell Bell restores 1/8 HP at move end, one strike")
|
||||
hpGainActual = min(maxHp - hp, hpGainFromDamage);
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
PLAYER(SPECIES_WOBBUFFET) { MaxHP(maxHp); HP(hp); Item(ITEM_SHELL_BELL); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { MaxHP(maxHp); HP(opponentHp); }
|
||||
} WHEN {
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gItemsInfo[ITEM_PETAYA_BERRY].holdEffect == HOLD_EFFECT_SP_ATTACK_UP);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Petaya Berry raises the holder's Sp. Atk by one stage when HP drops to 1/4 or below")
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gItemsInfo[ITEM_APICOT_BERRY].holdEffect == HOLD_EFFECT_SP_DEFENSE_UP);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Apicot Berry raises the holder's Sp. Def by one stage when HP drops to 1/4 or below")
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gItemsInfo[ITEM_SALAC_BERRY].holdEffect == HOLD_EFFECT_SPEED_UP);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Salac Berry raises the holder's Speed by one stage when HP drops to 1/4 or below")
|
||||
|
||||
@ -89,7 +89,7 @@ DOUBLE_BATTLE_TEST("Turn order is determined randomly if priority and Speed tie
|
||||
ASSUME(GetMoveEffect(MOVE_ENDEAVOR) == EFFECT_ENDEAVOR);
|
||||
ASSUME(GetMoveEffect(MOVE_LIFE_DEW) == EFFECT_JUNGLE_HEALING);
|
||||
ASSUME(GetMoveEffect(MOVE_CRUSH_GRIP) == EFFECT_POWER_BASED_ON_TARGET_HP);
|
||||
ASSUME(GetMoveEffect(MOVE_SUPER_FANG) == EFFECT_SUPER_FANG);
|
||||
ASSUME(GetMoveEffect(MOVE_SUPER_FANG) == EFFECT_FIXED_PERCENT_DAMAGE);
|
||||
PLAYER(SPECIES_WOBBUFFET) { MaxHP(480); HP(360); Defense(100); Speed(1); }
|
||||
PLAYER(SPECIES_WYNAUT) { Speed(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Attack(100); Speed(1); }
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_SONIC_BOOM) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveEffect(MOVE_SONIC_BOOM) == EFFECT_FIXED_HP_DAMAGE);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Sonic Boom deals fixed damage", s16 damage)
|
||||
@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Sonic Boom deals fixed damage", s16 damage)
|
||||
PARAMETRIZE { mon = SPECIES_ARON; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveFixedDamage(MOVE_SONIC_BOOM) == 20);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_SONIC_BOOM) == 20);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(mon);
|
||||
} WHEN {
|
||||
|
||||
@ -10,8 +10,8 @@ DOUBLE_BATTLE_TEST("Magic Room prevents item hold effects")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gItemsInfo[ITEM_BERRY_JUICE].holdEffect == HOLD_EFFECT_RESTORE_HP);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
|
||||
PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(60); Item(ITEM_BERRY_JUICE); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(60); Item(ITEM_BERRY_JUICE); }
|
||||
|
||||
@ -110,8 +110,8 @@ SINGLE_BATTLE_TEST("Shed Tail creates a Substitute with 1/4 of user maximum heal
|
||||
PARAMETRIZE { hp = 164; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveFixedDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_DAMAGE_ARG);
|
||||
ASSUME(GetMoveFixedHPDamage(MOVE_DRAGON_RAGE) == 40);
|
||||
ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
|
||||
PLAYER(SPECIES_BULBASAUR) { MaxHP(hp); }
|
||||
PLAYER(SPECIES_BULBASAUR);
|
||||
OPPONENT(SPECIES_CHARMANDER);
|
||||
|
||||
@ -141,7 +141,7 @@ SINGLE_BATTLE_TEST("Trainer Slide: Last Half Hp")
|
||||
{
|
||||
gBattleTestRunnerState->data.recordedBattle.opponentA = TRAINER_SLIDE_LAST_HALF_HP;
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_SUPER_FANG) == EFFECT_SUPER_FANG);
|
||||
ASSUME(GetMoveEffect(MOVE_SUPER_FANG) == EFFECT_FIXED_PERCENT_DAMAGE);
|
||||
ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].baseHP == 190);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user