mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-03-21 18:04:50 -05:00
Fix Eviolite to use original species after Transform (#9285)
This commit is contained in:
parent
d2ae1175c4
commit
8334c68422
|
|
@ -61,6 +61,7 @@ struct DisableStruct
|
|||
{
|
||||
u32 transformedMonPersonality;
|
||||
bool8 transformedMonShininess;
|
||||
u16 transformedMonSpecies;
|
||||
u16 disabledMove;
|
||||
u16 encoredMove;
|
||||
u8 protectUses:4;
|
||||
|
|
|
|||
|
|
@ -11310,6 +11310,7 @@ static void Cmd_transformdataexecution(void)
|
|||
gBattleMons[gBattlerAttacker].volatiles.transformed = TRUE;
|
||||
gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE;
|
||||
gDisableStructs[gBattlerAttacker].disableTimer = 0;
|
||||
gDisableStructs[gBattlerAttacker].transformedMonSpecies = gBattleMons[gBattlerAttacker].species;
|
||||
gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality;
|
||||
if (B_TRANSFORM_SHINY >= GEN_4)
|
||||
gDisableStructs[gBattlerAttacker].transformedMonShininess = gBattleMons[gBattlerTarget].isShiny;
|
||||
|
|
|
|||
|
|
@ -8145,8 +8145,13 @@ static inline u32 CalcDefenseStat(struct DamageContext *ctx)
|
|||
modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(2.0));
|
||||
break;
|
||||
case HOLD_EFFECT_EVIOLITE:
|
||||
if (CanEvolve(gBattleMons[battlerDef].species))
|
||||
modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5));
|
||||
{
|
||||
u16 species = gBattleMons[battlerDef].species;
|
||||
if (gBattleMons[battlerDef].volatiles.transformed && gDisableStructs[battlerDef].transformedMonSpecies != SPECIES_NONE)
|
||||
species = gDisableStructs[battlerDef].transformedMonSpecies;
|
||||
if (CanEvolve(species))
|
||||
modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5));
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_ASSAULT_VEST:
|
||||
if (!usesDefStat)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,82 @@
|
|||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
TO_DO_BATTLE_TEST("TODO: Write Eviolite (Hold Effect) test titles")
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gItemsInfo[ITEM_EVIOLITE].holdEffect == HOLD_EFFECT_EVIOLITE);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Eviolite boosts Defense and Sp. Def for unevolved Pokemon", s16 damage)
|
||||
{
|
||||
u16 move;
|
||||
u32 item;
|
||||
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; item = ITEM_EVIOLITE; }
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; item = ITEM_NONE; }
|
||||
PARAMETRIZE { move = MOVE_WATER_GUN; item = ITEM_EVIOLITE; }
|
||||
PARAMETRIZE { move = MOVE_WATER_GUN; item = ITEM_NONE; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL);
|
||||
ASSUME(GetMoveCategory(MOVE_WATER_GUN) == DAMAGE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_PIKACHU) { Item(item); }
|
||||
OPPONENT(SPECIES_MAGIKARP) { Moves(MOVE_SCRATCH, MOVE_WATER_GUN); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
HP_BAR(player, captureDamage: &results[i].damage);
|
||||
} FINALLY {
|
||||
EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage);
|
||||
EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.5), results[3].damage);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Eviolite does not boost Defense or Sp. Def for evolved Pokemon", s16 damage)
|
||||
{
|
||||
u16 move;
|
||||
u32 item;
|
||||
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; item = ITEM_EVIOLITE; }
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; item = ITEM_NONE; }
|
||||
PARAMETRIZE { move = MOVE_WATER_GUN; item = ITEM_EVIOLITE; }
|
||||
PARAMETRIZE { move = MOVE_WATER_GUN; item = ITEM_NONE; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL);
|
||||
ASSUME(GetMoveCategory(MOVE_WATER_GUN) == DAMAGE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_RAICHU) { Item(item); }
|
||||
OPPONENT(SPECIES_MAGIKARP) { Moves(MOVE_SCRATCH, MOVE_WATER_GUN); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
HP_BAR(player, captureDamage: &results[i].damage);
|
||||
} FINALLY {
|
||||
EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.0), results[1].damage);
|
||||
EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.0), results[3].damage);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Eviolite uses original species after Transform", s16 damage)
|
||||
{
|
||||
u32 item;
|
||||
|
||||
PARAMETRIZE { item = ITEM_EVIOLITE; }
|
||||
PARAMETRIZE { item = ITEM_NONE; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TRANSFORM) == EFFECT_TRANSFORM);
|
||||
PLAYER(SPECIES_PIKACHU) { Item(item); Moves(MOVE_TRANSFORM, MOVE_CELEBRATE); }
|
||||
OPPONENT(SPECIES_GYARADOS) { Moves(MOVE_SCRATCH, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_TRANSFORM); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TRANSFORM, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
||||
HP_BAR(player, captureDamage: &results[i].damage);
|
||||
} FINALLY {
|
||||
EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user