Combined type-enhancing hold effects (#6846)
This commit is contained in:
parent
face37e8f3
commit
3ef61e6451
@ -2322,9 +2322,10 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpiflastuseditemholdeffect battler:req, holdEffect:req, jumpInstr:req
|
||||
various \battler, VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT
|
||||
.macro jumpiflastuseditemholdeffect holdEffect:req, secondaryId:req, jumpInstr:req
|
||||
callnative BS_JumpIfLastUsedItemHoldEffect
|
||||
.byte \holdEffect
|
||||
.2byte \secondaryId
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
|
||||
@ -774,13 +774,13 @@ BattleScript_EffectFling::
|
||||
waitmessage B_WAIT_TIME_MED
|
||||
jumpiflastuseditemberry BattleScript_EffectFlingConsumeBerry
|
||||
jumpifability BS_TARGET, ABILITY_SHIELD_DUST, BattleScript_FlingBlockedByShieldDust
|
||||
jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_FLAME_ORB, BattleScript_FlingFlameOrb
|
||||
jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_FLINCH, BattleScript_FlingFlinch
|
||||
jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_LIGHT_BALL, BattleScript_FlingLightBall
|
||||
jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_MENTAL_HERB, BattleScript_FlingMentalHerb
|
||||
jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_POISON_POWER, BattleScript_FlingPoisonBarb
|
||||
jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_TOXIC_ORB, BattleScript_FlingToxicOrb
|
||||
jumpiflastuseditemholdeffect BS_ATTACKER, HOLD_EFFECT_WHITE_HERB, BattleScript_FlingWhiteHerb
|
||||
jumpiflastuseditemholdeffect HOLD_EFFECT_FLAME_ORB, 0, BattleScript_FlingFlameOrb
|
||||
jumpiflastuseditemholdeffect HOLD_EFFECT_FLINCH, 0, BattleScript_FlingFlinch
|
||||
jumpiflastuseditemholdeffect HOLD_EFFECT_LIGHT_BALL, 0, BattleScript_FlingLightBall
|
||||
jumpiflastuseditemholdeffect HOLD_EFFECT_MENTAL_HERB, 0, BattleScript_FlingMentalHerb
|
||||
jumpiflastuseditemholdeffect HOLD_EFFECT_TYPE_POWER, TYPE_POISON, BattleScript_FlingPoisonBarb
|
||||
jumpiflastuseditemholdeffect HOLD_EFFECT_TOXIC_ORB, 0, BattleScript_FlingToxicOrb
|
||||
jumpiflastuseditemholdeffect HOLD_EFFECT_WHITE_HERB, 0, BattleScript_FlingWhiteHerb
|
||||
goto BattleScript_FlingEnd
|
||||
BattleScript_EffectFlingConsumeBerry:
|
||||
savebattleritem BS_TARGET
|
||||
|
||||
@ -203,7 +203,6 @@ enum CmdVarious
|
||||
VARIOUS_CURE_CERTAIN_STATUSES,
|
||||
VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES,
|
||||
VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY,
|
||||
VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT,
|
||||
VARIOUS_SAVE_BATTLER_ITEM,
|
||||
VARIOUS_RESTORE_BATTLER_ITEM,
|
||||
VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM,
|
||||
|
||||
@ -34,7 +34,6 @@ enum ItemHoldEffect
|
||||
HOLD_EFFECT_MENTAL_HERB,
|
||||
HOLD_EFFECT_CHOICE_BAND,
|
||||
HOLD_EFFECT_FLINCH,
|
||||
HOLD_EFFECT_BUG_POWER,
|
||||
HOLD_EFFECT_DOUBLE_PRIZE,
|
||||
HOLD_EFFECT_REPEL,
|
||||
HOLD_EFFECT_SOUL_DEW,
|
||||
@ -45,25 +44,10 @@ enum ItemHoldEffect
|
||||
HOLD_EFFECT_FOCUS_BAND,
|
||||
HOLD_EFFECT_LUCKY_EGG,
|
||||
HOLD_EFFECT_SCOPE_LENS,
|
||||
HOLD_EFFECT_STEEL_POWER,
|
||||
HOLD_EFFECT_LEFTOVERS,
|
||||
HOLD_EFFECT_DRAGON_SCALE,
|
||||
HOLD_EFFECT_LIGHT_BALL,
|
||||
HOLD_EFFECT_GROUND_POWER,
|
||||
HOLD_EFFECT_ROCK_POWER,
|
||||
HOLD_EFFECT_GRASS_POWER,
|
||||
HOLD_EFFECT_DARK_POWER,
|
||||
HOLD_EFFECT_FIGHTING_POWER,
|
||||
HOLD_EFFECT_ELECTRIC_POWER,
|
||||
HOLD_EFFECT_WATER_POWER,
|
||||
HOLD_EFFECT_FLYING_POWER,
|
||||
HOLD_EFFECT_POISON_POWER,
|
||||
HOLD_EFFECT_ICE_POWER,
|
||||
HOLD_EFFECT_GHOST_POWER,
|
||||
HOLD_EFFECT_PSYCHIC_POWER,
|
||||
HOLD_EFFECT_FIRE_POWER,
|
||||
HOLD_EFFECT_DRAGON_POWER,
|
||||
HOLD_EFFECT_NORMAL_POWER,
|
||||
HOLD_EFFECT_TYPE_POWER,
|
||||
HOLD_EFFECT_UPGRADE,
|
||||
HOLD_EFFECT_SHELL_BELL,
|
||||
HOLD_EFFECT_LUCKY_PUNCH,
|
||||
@ -127,7 +111,6 @@ enum ItemHoldEffect
|
||||
HOLD_EFFECT_ABSORB_BULB,
|
||||
HOLD_EFFECT_CELL_BATTERY,
|
||||
// Gen6 hold effects
|
||||
HOLD_EFFECT_FAIRY_POWER,
|
||||
HOLD_EFFECT_MEGA_STONE,
|
||||
HOLD_EFFECT_SAFETY_GOGGLES,
|
||||
HOLD_EFFECT_LUMINOUS_MOSS,
|
||||
|
||||
@ -2339,7 +2339,6 @@ static const u8 sText_HoldEffectFriendshipUp[] = _("Friendship Up");
|
||||
static const u8 sText_HoldEffectMentalHerb[] = _("Mental Herb");
|
||||
static const u8 sText_HoldEffectChoiceBand[] = _("Choice Band");
|
||||
static const u8 sText_HoldEffectFlinch[] = _("Flinch");
|
||||
static const u8 sText_HoldEffectBugPower[] = _("Bug Power");
|
||||
static const u8 sText_HoldEffectDoublePrize[] = _("Double Prize");
|
||||
static const u8 sText_HoldEffectRepel[] = _("Repel");
|
||||
static const u8 sText_HoldEffectSoulDew[] = _("Soul Dew");
|
||||
@ -2350,25 +2349,10 @@ static const u8 sText_HoldEffectPreventEvolve[] = _("Prevent Evolve");
|
||||
static const u8 sText_HoldEffectFocusBand[] = _("Focus Band");
|
||||
static const u8 sText_HoldEffectLuckyEgg[] = _("Lucky Egg");
|
||||
static const u8 sText_HoldEffectScopeLens[] = _("Scope Lens");
|
||||
static const u8 sText_HoldEffectSteelPower[] = _("Steel Power");
|
||||
static const u8 sText_HoldEffectLeftovers[] = _("Leftovers");
|
||||
static const u8 sText_HoldEffectDragonScale[] = _("Dragon Scale");
|
||||
static const u8 sText_HoldEffectLightBall[] = _("Light Ball");
|
||||
static const u8 sText_HoldEffectGroundPower[] = _("Ground Power");
|
||||
static const u8 sText_HoldEffectRockPower[] = _("Rock Power");
|
||||
static const u8 sText_HoldEffectGrassPower[] = _("Grass Power");
|
||||
static const u8 sText_HoldEffectDarkPower[] = _("Dark Power");
|
||||
static const u8 sText_HoldEffectFightingPower[] = _("Fighting Power");
|
||||
static const u8 sText_HoldEffectElectricPower[] = _("Electric Power");
|
||||
static const u8 sText_HoldEffectWaterPower[] = _("Water Power");
|
||||
static const u8 sText_HoldEffectFlyingPower[] = _("Flying Power");
|
||||
static const u8 sText_HoldEffectPoisonPower[] = _("Poison Power");
|
||||
static const u8 sText_HoldEffectIcePower[] = _("Ice Power");
|
||||
static const u8 sText_HoldEffectGhostPower[] = _("Ghost Power");
|
||||
static const u8 sText_HoldEffectPsychicPower[] = _("Psychic Power");
|
||||
static const u8 sText_HoldEffectFirePower[] = _("Fire Power");
|
||||
static const u8 sText_HoldEffectDragonPower[] = _("Dragon Power");
|
||||
static const u8 sText_HoldEffectNormalPower[] = _("Normal Power");
|
||||
static const u8 sText_HoldEffectTypePower[] = _("Type Power");
|
||||
static const u8 sText_HoldEffectUpgrade[] = _("Upgrade");
|
||||
static const u8 sText_HoldEffectShellBell[] = _("Shell Bell");
|
||||
static const u8 sText_HoldEffectLuckyPunch[] = _("Lucky Punch");
|
||||
@ -2428,7 +2412,6 @@ static const u8 sText_HoldEffectBindingBand[] = _("Binding Band");
|
||||
static const u8 sText_HoldEffectEjectButton[] = _("Eject Button");
|
||||
static const u8 sText_HoldEffectAbsorbBulb[] = _("Absorb Bulb");
|
||||
static const u8 sText_HoldEffectCellBattery[] = _("Cell Battery");
|
||||
static const u8 sText_HoldEffectFairyPower[] = _("Fairy Power");
|
||||
static const u8 sText_HoldEffectMegaStone[] = _("Mega Stone");
|
||||
static const u8 sText_HoldEffectSafetyGoggles[] = _("Safety Goggles");
|
||||
static const u8 sText_HoldEffectLuminousMoss[] = _("Luminous Moss");
|
||||
@ -2490,7 +2473,6 @@ static const u8 *const sHoldEffectNames[] =
|
||||
[HOLD_EFFECT_MENTAL_HERB] = sText_HoldEffectMentalHerb,
|
||||
[HOLD_EFFECT_CHOICE_BAND] = sText_HoldEffectChoiceBand,
|
||||
[HOLD_EFFECT_FLINCH] = sText_HoldEffectFlinch,
|
||||
[HOLD_EFFECT_BUG_POWER] = sText_HoldEffectBugPower,
|
||||
[HOLD_EFFECT_DOUBLE_PRIZE] = sText_HoldEffectDoublePrize,
|
||||
[HOLD_EFFECT_REPEL] = sText_HoldEffectRepel,
|
||||
[HOLD_EFFECT_SOUL_DEW] = sText_HoldEffectSoulDew,
|
||||
@ -2501,25 +2483,10 @@ static const u8 *const sHoldEffectNames[] =
|
||||
[HOLD_EFFECT_FOCUS_BAND] = sText_HoldEffectFocusBand,
|
||||
[HOLD_EFFECT_LUCKY_EGG] = sText_HoldEffectLuckyEgg,
|
||||
[HOLD_EFFECT_SCOPE_LENS] = sText_HoldEffectScopeLens,
|
||||
[HOLD_EFFECT_STEEL_POWER] = sText_HoldEffectSteelPower,
|
||||
[HOLD_EFFECT_LEFTOVERS] = sText_HoldEffectLeftovers,
|
||||
[HOLD_EFFECT_DRAGON_SCALE] = sText_HoldEffectDragonScale,
|
||||
[HOLD_EFFECT_LIGHT_BALL] = sText_HoldEffectLightBall,
|
||||
[HOLD_EFFECT_GROUND_POWER] = sText_HoldEffectGroundPower,
|
||||
[HOLD_EFFECT_ROCK_POWER] = sText_HoldEffectRockPower,
|
||||
[HOLD_EFFECT_GRASS_POWER] = sText_HoldEffectGrassPower,
|
||||
[HOLD_EFFECT_DARK_POWER] = sText_HoldEffectDarkPower,
|
||||
[HOLD_EFFECT_FIGHTING_POWER] = sText_HoldEffectFightingPower,
|
||||
[HOLD_EFFECT_ELECTRIC_POWER] = sText_HoldEffectElectricPower,
|
||||
[HOLD_EFFECT_WATER_POWER] = sText_HoldEffectWaterPower,
|
||||
[HOLD_EFFECT_FLYING_POWER] = sText_HoldEffectFlyingPower,
|
||||
[HOLD_EFFECT_POISON_POWER] = sText_HoldEffectPoisonPower,
|
||||
[HOLD_EFFECT_ICE_POWER] = sText_HoldEffectIcePower,
|
||||
[HOLD_EFFECT_GHOST_POWER] = sText_HoldEffectGhostPower,
|
||||
[HOLD_EFFECT_PSYCHIC_POWER] = sText_HoldEffectPsychicPower,
|
||||
[HOLD_EFFECT_FIRE_POWER] = sText_HoldEffectFirePower,
|
||||
[HOLD_EFFECT_DRAGON_POWER] = sText_HoldEffectDragonPower,
|
||||
[HOLD_EFFECT_NORMAL_POWER] = sText_HoldEffectNormalPower,
|
||||
[HOLD_EFFECT_TYPE_POWER] = sText_HoldEffectTypePower,
|
||||
[HOLD_EFFECT_UPGRADE] = sText_HoldEffectUpgrade,
|
||||
[HOLD_EFFECT_SHELL_BELL] = sText_HoldEffectShellBell,
|
||||
[HOLD_EFFECT_LUCKY_PUNCH] = sText_HoldEffectLuckyPunch,
|
||||
@ -2580,7 +2547,6 @@ static const u8 *const sHoldEffectNames[] =
|
||||
[HOLD_EFFECT_EJECT_BUTTON] = sText_HoldEffectEjectButton,
|
||||
[HOLD_EFFECT_ABSORB_BULB] = sText_HoldEffectAbsorbBulb,
|
||||
[HOLD_EFFECT_CELL_BATTERY] = sText_HoldEffectCellBattery,
|
||||
[HOLD_EFFECT_FAIRY_POWER] = sText_HoldEffectFairyPower,
|
||||
[HOLD_EFFECT_MEGA_STONE] = sText_HoldEffectMegaStone,
|
||||
[HOLD_EFFECT_SAFETY_GOGGLES] = sText_HoldEffectSafetyGoggles,
|
||||
[HOLD_EFFECT_LUMINOUS_MOSS] = sText_HoldEffectLuminousMoss,
|
||||
|
||||
@ -11586,15 +11586,6 @@ static void Cmd_various(void)
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
return;
|
||||
}
|
||||
case VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT:
|
||||
{
|
||||
VARIOUS_ARGS(u8 holdEffect, const u8 *jumpInstr);
|
||||
if (ItemId_GetHoldEffect(gLastUsedItem) == cmd->holdEffect)
|
||||
gBattlescriptCurrInstr = cmd->jumpInstr;
|
||||
else
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
return;
|
||||
}
|
||||
case VARIOUS_SAVE_BATTLER_ITEM:
|
||||
{
|
||||
VARIOUS_ARGS();
|
||||
@ -18683,3 +18674,13 @@ void BS_JumpIfCanGigantamax(void)
|
||||
else
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
void BS_JumpIfLastUsedItemHoldEffect(void)
|
||||
{
|
||||
NATIVE_ARGS(u8 holdEffect, u16 secondaryId, const u8 *jumpInstr);
|
||||
if (ItemId_GetHoldEffect(gLastUsedItem) == cmd->holdEffect
|
||||
&& (cmd->secondaryId == 0 || ItemId_GetSecondaryId(gLastUsedItem) == cmd->secondaryId))
|
||||
gBattlescriptCurrInstr = cmd->jumpInstr;
|
||||
else
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
@ -917,28 +917,6 @@ void HandleAction_ActionFinished(void)
|
||||
}
|
||||
}
|
||||
|
||||
static const u8 sHoldEffectToType[][2] =
|
||||
{
|
||||
{HOLD_EFFECT_BUG_POWER, TYPE_BUG},
|
||||
{HOLD_EFFECT_STEEL_POWER, TYPE_STEEL},
|
||||
{HOLD_EFFECT_GROUND_POWER, TYPE_GROUND},
|
||||
{HOLD_EFFECT_ROCK_POWER, TYPE_ROCK},
|
||||
{HOLD_EFFECT_GRASS_POWER, TYPE_GRASS},
|
||||
{HOLD_EFFECT_DARK_POWER, TYPE_DARK},
|
||||
{HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING},
|
||||
{HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC},
|
||||
{HOLD_EFFECT_WATER_POWER, TYPE_WATER},
|
||||
{HOLD_EFFECT_FLYING_POWER, TYPE_FLYING},
|
||||
{HOLD_EFFECT_POISON_POWER, TYPE_POISON},
|
||||
{HOLD_EFFECT_ICE_POWER, TYPE_ICE},
|
||||
{HOLD_EFFECT_GHOST_POWER, TYPE_GHOST},
|
||||
{HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC},
|
||||
{HOLD_EFFECT_FIRE_POWER, TYPE_FIRE},
|
||||
{HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON},
|
||||
{HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL},
|
||||
{HOLD_EFFECT_FAIRY_POWER, TYPE_FAIRY},
|
||||
};
|
||||
|
||||
// code
|
||||
|
||||
ARM_FUNC NOINLINE static uq4_12_t PercentToUQ4_12(u32 percent)
|
||||
@ -8320,7 +8298,6 @@ static inline u32 CalcMoveBasePower(struct DamageCalculationData *damageCalcData
|
||||
|
||||
static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData *damageCalcData, u32 atkAbility, u32 defAbility, enum ItemHoldEffect holdEffectAtk, u32 weather)
|
||||
{
|
||||
u32 i;
|
||||
u32 holdEffectParamAtk;
|
||||
u32 basePower = CalcMoveBasePower(damageCalcData, defAbility, weather);
|
||||
u32 battlerAtk = damageCalcData->battlerAtk;
|
||||
@ -8595,34 +8572,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageCalculationData *
|
||||
|| (B_SOUL_DEW_BOOST < GEN_7 && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && IsBattleMoveSpecial(move))))
|
||||
modifier = uq4_12_multiply(modifier, holdEffectModifier);
|
||||
break;
|
||||
case HOLD_EFFECT_BUG_POWER:
|
||||
case HOLD_EFFECT_STEEL_POWER:
|
||||
case HOLD_EFFECT_GROUND_POWER:
|
||||
case HOLD_EFFECT_ROCK_POWER:
|
||||
case HOLD_EFFECT_GRASS_POWER:
|
||||
case HOLD_EFFECT_DARK_POWER:
|
||||
case HOLD_EFFECT_FIGHTING_POWER:
|
||||
case HOLD_EFFECT_ELECTRIC_POWER:
|
||||
case HOLD_EFFECT_WATER_POWER:
|
||||
case HOLD_EFFECT_FLYING_POWER:
|
||||
case HOLD_EFFECT_POISON_POWER:
|
||||
case HOLD_EFFECT_ICE_POWER:
|
||||
case HOLD_EFFECT_GHOST_POWER:
|
||||
case HOLD_EFFECT_PSYCHIC_POWER:
|
||||
case HOLD_EFFECT_FIRE_POWER:
|
||||
case HOLD_EFFECT_DRAGON_POWER:
|
||||
case HOLD_EFFECT_NORMAL_POWER:
|
||||
case HOLD_EFFECT_FAIRY_POWER:
|
||||
for (i = 0; i < ARRAY_COUNT(sHoldEffectToType); i++)
|
||||
{
|
||||
if (holdEffectAtk == sHoldEffectToType[i][0])
|
||||
{
|
||||
if (moveType == sHoldEffectToType[i][1])
|
||||
modifier = uq4_12_multiply(modifier, holdEffectModifier);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_TYPE_POWER:
|
||||
case HOLD_EFFECT_PLATE:
|
||||
if (moveType == ItemId_GetSecondaryId(gBattleMons[battlerAtk].item))
|
||||
modifier = uq4_12_multiply(modifier, holdEffectModifier);
|
||||
|
||||
@ -7200,12 +7200,13 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Sea Incense"),
|
||||
.price = (I_PRICE >= GEN_7) ? 2000 : 9600,
|
||||
.holdEffect = HOLD_EFFECT_WATER_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = 20,
|
||||
.description = sSeaIncenseDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_WATER,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_SeaIncense,
|
||||
.iconPalette = gItemIconPalette_SeaIncense,
|
||||
@ -7233,12 +7234,13 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Odd Incense"),
|
||||
.price = (I_PRICE >= GEN_7) ? 2000 : 9600,
|
||||
.holdEffect = HOLD_EFFECT_PSYCHIC_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = 20,
|
||||
.description = sOddIncenseDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_PSYCHIC,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_OddIncense,
|
||||
.iconPalette = gItemIconPalette_OddIncense,
|
||||
@ -7248,12 +7250,13 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Rock Incense"),
|
||||
.price = (I_PRICE >= GEN_7) ? 2000 : 9600,
|
||||
.holdEffect = HOLD_EFFECT_ROCK_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = 20,
|
||||
.description = sRockIncenseDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_ROCK,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_RockIncense,
|
||||
.iconPalette = gItemIconPalette_RockIncense,
|
||||
@ -7278,12 +7281,13 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Wave Incense"),
|
||||
.price = (I_PRICE >= GEN_7) ? 2000 : 9600,
|
||||
.holdEffect = HOLD_EFFECT_WATER_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = 20,
|
||||
.description = sSeaIncenseDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_WATER,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_WaveIncense,
|
||||
.iconPalette = gItemIconPalette_WaveIncense,
|
||||
@ -7293,12 +7297,13 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Rose Incense"),
|
||||
.price = (I_PRICE >= GEN_7) ? 2000 : 9600,
|
||||
.holdEffect = HOLD_EFFECT_GRASS_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = 20,
|
||||
.description = sRoseIncenseDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_GRASS,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_RoseIncense,
|
||||
.iconPalette = gItemIconPalette_RoseIncense,
|
||||
@ -7560,7 +7565,7 @@ const struct Item gItemsInfo[] =
|
||||
.name = _("Silk Scarf"),
|
||||
.pluralName = _("Silk Scarves"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_NORMAL_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7569,6 +7574,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_NORMAL,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_SilkScarf,
|
||||
.iconPalette = gItemIconPalette_SilkScarf,
|
||||
@ -7578,7 +7584,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Charcoal"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 9800),
|
||||
.holdEffect = HOLD_EFFECT_FIRE_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7587,6 +7593,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_FIRE,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_Charcoal,
|
||||
.iconPalette = gItemIconPalette_Charcoal,
|
||||
@ -7597,7 +7604,7 @@ const struct Item gItemsInfo[] =
|
||||
.name = _("Mystic Water"),
|
||||
.pluralName = _("Mystic Water"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_WATER_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7606,6 +7613,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_WATER,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_MysticWater,
|
||||
.iconPalette = gItemIconPalette_MysticWater,
|
||||
@ -7615,7 +7623,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Magnet"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_ELECTRIC_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7624,6 +7632,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_ELECTRIC,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_Magnet,
|
||||
.iconPalette = gItemIconPalette_Magnet,
|
||||
@ -7633,12 +7642,13 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Miracle Seed"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_GRASS_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = sRoseIncenseDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_GRASS,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_MiracleSeed,
|
||||
.iconPalette = gItemIconPalette_MiracleSeed,
|
||||
@ -7649,7 +7659,7 @@ const struct Item gItemsInfo[] =
|
||||
.name = _("Never-Melt Ice"),
|
||||
.pluralName = _("Never-Melt Ice"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_ICE_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7658,6 +7668,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_ICE,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_NeverMeltIce,
|
||||
.iconPalette = gItemIconPalette_NeverMeltIce,
|
||||
@ -7667,7 +7678,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Black Belt"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_FIGHTING_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7676,6 +7687,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_FIGHTING,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_BlackBelt,
|
||||
.iconPalette = gItemIconPalette_BlackTypeEnhancingItem,
|
||||
@ -7685,7 +7697,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Poison Barb"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_POISON_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7694,6 +7706,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_POISON,
|
||||
.flingPower = 70,
|
||||
.iconPic = gItemIcon_PoisonBarb,
|
||||
.iconPalette = gItemIconPalette_PoisonBarb,
|
||||
@ -7704,7 +7717,7 @@ const struct Item gItemsInfo[] =
|
||||
.name = _("Soft Sand"),
|
||||
.pluralName = _("Soft Sand"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_GROUND_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7713,6 +7726,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_GROUND,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_SoftSand,
|
||||
.iconPalette = gItemIconPalette_SoftSand,
|
||||
@ -7722,7 +7736,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Sharp Beak"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_FLYING_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7731,6 +7745,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_FLYING,
|
||||
.flingPower = 50,
|
||||
.iconPic = gItemIcon_SharpBeak,
|
||||
.iconPalette = gItemIconPalette_SharpBeak,
|
||||
@ -7740,12 +7755,13 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Twisted Spoon"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_PSYCHIC_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = sOddIncenseDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_PSYCHIC,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_TwistedSpoon,
|
||||
.iconPalette = gItemIconPalette_TwistedSpoon,
|
||||
@ -7756,7 +7772,7 @@ const struct Item gItemsInfo[] =
|
||||
.name = _("Silver Powder"),
|
||||
.pluralName = _("Silver Powder"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_BUG_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7765,6 +7781,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_BUG,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_SilverPowder,
|
||||
.iconPalette = gItemIconPalette_SilverPowder,
|
||||
@ -7774,12 +7791,13 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Hard Stone"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_ROCK_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = sRockIncenseDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_ROCK,
|
||||
.flingPower = 100,
|
||||
.iconPic = gItemIcon_HardStone,
|
||||
.iconPalette = gItemIconPalette_HardStone,
|
||||
@ -7789,7 +7807,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Spell Tag"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_GHOST_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7798,6 +7816,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_GHOST,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_SpellTag,
|
||||
.iconPalette = gItemIconPalette_SpellTag,
|
||||
@ -7807,7 +7826,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Dragon Fang"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_DRAGON_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7816,6 +7835,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_DRAGON,
|
||||
.flingPower = 70,
|
||||
.iconPic = gItemIcon_DragonFang,
|
||||
.iconPalette = gItemIconPalette_DragonFang,
|
||||
@ -7826,7 +7846,7 @@ const struct Item gItemsInfo[] =
|
||||
.name = _("Black Glasses"),
|
||||
.pluralName = _("Black Glasses"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_DARK_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7835,6 +7855,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_DARK,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_BlackGlasses,
|
||||
.iconPalette = gItemIconPalette_BlackTypeEnhancingItem,
|
||||
@ -7844,7 +7865,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Metal Coat"),
|
||||
.price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 2000 : 100),
|
||||
.holdEffect = HOLD_EFFECT_STEEL_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -7854,6 +7875,7 @@ const struct Item gItemsInfo[] =
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.effect = gItemEffect_EvoItem,
|
||||
.secondaryId = TYPE_STEEL,
|
||||
.flingPower = 30,
|
||||
.iconPic = gItemIcon_MetalCoat,
|
||||
.iconPalette = gItemIconPalette_MetalCoat,
|
||||
@ -13631,7 +13653,7 @@ const struct Item gItemsInfo[] =
|
||||
{
|
||||
.name = _("Fairy Feather"),
|
||||
.price = 1000,
|
||||
.holdEffect = HOLD_EFFECT_FAIRY_POWER,
|
||||
.holdEffect = HOLD_EFFECT_TYPE_POWER,
|
||||
.holdEffectParam = TYPE_BOOST_PARAM,
|
||||
.description = COMPOUND_STRING(
|
||||
"A hold item that\n"
|
||||
@ -13640,6 +13662,7 @@ const struct Item gItemsInfo[] =
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.secondaryId = TYPE_FAIRY,
|
||||
.flingPower = 10,
|
||||
.iconPic = gItemIcon_FairyFeather,
|
||||
.iconPalette = gItemIconPalette_FairyFeather,
|
||||
|
||||
@ -73,7 +73,8 @@ SINGLE_BATTLE_TEST("Corrosion can poison Poison- and Steel-type targets if it us
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_FLING) == EFFECT_FLING);
|
||||
ASSUME(gItemsInfo[ITEM_POISON_BARB].holdEffect == HOLD_EFFECT_POISON_POWER);
|
||||
ASSUME(gItemsInfo[ITEM_POISON_BARB].holdEffect == HOLD_EFFECT_TYPE_POWER);
|
||||
ASSUME(gItemsInfo[ITEM_POISON_BARB].secondaryId == TYPE_POISON);
|
||||
ASSUME(gItemsInfo[ITEM_TOXIC_ORB].holdEffect == HOLD_EFFECT_TOXIC_ORB);
|
||||
PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); Item(heldItem); }
|
||||
OPPONENT(SPECIES_ODDISH);
|
||||
|
||||
55
test/battle/hold_effect/type_power.c
Normal file
55
test/battle/hold_effect/type_power.c
Normal file
@ -0,0 +1,55 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
static const u16 sMoveItemTable[][18] =
|
||||
{
|
||||
{ TYPE_NORMAL, MOVE_SCRATCH, ITEM_SILK_SCARF },
|
||||
{ TYPE_FIGHTING, MOVE_KARATE_CHOP, ITEM_BLACK_BELT },
|
||||
{ TYPE_FLYING, MOVE_WING_ATTACK, ITEM_SHARP_BEAK },
|
||||
{ TYPE_POISON, MOVE_POISON_STING, ITEM_POISON_BARB },
|
||||
{ TYPE_GROUND, MOVE_MUD_SHOT, ITEM_SOFT_SAND },
|
||||
{ TYPE_ROCK, MOVE_ROCK_THROW, ITEM_HARD_STONE },
|
||||
{ TYPE_BUG, MOVE_BUG_BITE, ITEM_SILVER_POWDER },
|
||||
{ TYPE_GHOST, MOVE_SHADOW_PUNCH, ITEM_SPELL_TAG },
|
||||
{ TYPE_STEEL, MOVE_METAL_CLAW, ITEM_METAL_COAT },
|
||||
{ TYPE_FIRE, MOVE_EMBER, ITEM_CHARCOAL },
|
||||
{ TYPE_WATER, MOVE_WATER_GUN, ITEM_MYSTIC_WATER },
|
||||
{ TYPE_GRASS, MOVE_VINE_WHIP, ITEM_MIRACLE_SEED },
|
||||
{ TYPE_ELECTRIC, MOVE_THUNDER_SHOCK, ITEM_MAGNET },
|
||||
{ TYPE_PSYCHIC, MOVE_CONFUSION, ITEM_TWISTED_SPOON },
|
||||
{ TYPE_ICE, MOVE_AURORA_BEAM, ITEM_NEVER_MELT_ICE },
|
||||
{ TYPE_DRAGON, MOVE_DRAGON_BREATH, ITEM_DRAGON_FANG },
|
||||
{ TYPE_DARK, MOVE_BITE, ITEM_BLACK_GLASSES },
|
||||
{ TYPE_FAIRY, MOVE_DISARMING_VOICE, ITEM_FAIRY_FEATHER },
|
||||
};
|
||||
|
||||
SINGLE_BATTLE_TEST("Type-enhancing items increase the base power of moves by 20%", s16 damage)
|
||||
{
|
||||
u32 move = 0, item = 0, type = 0;
|
||||
|
||||
for (u32 j = 0; j < ARRAY_COUNT(sMoveItemTable); j++) {
|
||||
PARAMETRIZE { type = sMoveItemTable[j][0]; move = sMoveItemTable[j][1]; item = ITEM_NONE; }
|
||||
PARAMETRIZE { type = sMoveItemTable[j][0]; move = sMoveItemTable[j][1]; item = sMoveItemTable[j][2]; }
|
||||
}
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMovePower(move) > 0);
|
||||
if (item != ITEM_NONE) {
|
||||
ASSUME(ItemId_GetHoldEffect(item) == HOLD_EFFECT_TYPE_POWER);
|
||||
ASSUME(ItemId_GetSecondaryId(item) == type);
|
||||
}
|
||||
PLAYER(SPECIES_WOBBUFFET) { Item(item); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
} SCENE {
|
||||
HP_BAR(opponent, captureDamage: &results[i].damage);
|
||||
} FINALLY {
|
||||
for (u32 j = 0; j < ARRAY_COUNT(sMoveItemTable); j++) {
|
||||
if (I_TYPE_BOOST_POWER >= GEN_4)
|
||||
EXPECT_MUL_EQ(results[j*2].damage, Q_4_12(1.2), results[(j*2)+1].damage);
|
||||
else
|
||||
EXPECT_MUL_EQ(results[j*2].damage, Q_4_12(1.1), results[(j*2)+1].damage);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user