mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-14 01:32:23 +01:00
Merge pull request #21 from LOuroboros/power_items_rhh_be
Implemented the main effect of the Power Items
This commit is contained in:
commit
beb19380ce
@ -102,7 +102,7 @@
|
||||
#define HOLD_EFFECT_GRISEOUS_ORB 96
|
||||
#define HOLD_EFFECT_GRACIDEA 97
|
||||
#define HOLD_EFFECT_RESIST_BERRY 98
|
||||
#define HOLD_EFFECT_EV_BOOST 99
|
||||
#define HOLD_EFFECT_POWER_ITEM 99
|
||||
#define HOLD_EFFECT_RESTORE_PCT_HP 100
|
||||
|
||||
// Gen5 hold effects
|
||||
|
@ -4242,7 +4242,7 @@ u32 GetBattlerTotalSpeedStat(u8 battlerId)
|
||||
}
|
||||
|
||||
// item effects
|
||||
if (GetBattlerHoldEffect(battlerId, FALSE) == HOLD_EFFECT_MACHO_BRACE || GetBattlerHoldEffect(battlerId, FALSE) == HOLD_EFFECT_EV_BOOST)
|
||||
if (GetBattlerHoldEffect(battlerId, FALSE) == HOLD_EFFECT_MACHO_BRACE || GetBattlerHoldEffect(battlerId, FALSE) == HOLD_EFFECT_POWER_ITEM)
|
||||
speed /= 2;
|
||||
else if (holdEffect == HOLD_EFFECT_IRON_BALL)
|
||||
speed /= 2;
|
||||
|
@ -5560,6 +5560,24 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
||||
u16 heldItem;
|
||||
u8 holdEffect;
|
||||
int i, multiplier;
|
||||
u8 stat;
|
||||
u8 bonus;
|
||||
|
||||
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
|
||||
if (heldItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
if (gMain.inBattle)
|
||||
holdEffect = gEnigmaBerries[0].holdEffect;
|
||||
else
|
||||
holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
|
||||
}
|
||||
else
|
||||
{
|
||||
holdEffect = ItemId_GetHoldEffect(heldItem);
|
||||
}
|
||||
|
||||
stat = ItemId_GetSecondaryId(heldItem);
|
||||
bonus = ItemId_GetHoldEffectParam(heldItem);
|
||||
|
||||
for (i = 0; i < NUM_STATS; i++)
|
||||
{
|
||||
@ -5580,36 +5598,41 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
||||
switch (i)
|
||||
{
|
||||
case STAT_HP:
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_HP * multiplier;
|
||||
if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_HP)
|
||||
evIncrease = (gBaseStats[defeatedSpecies].evYield_HP + bonus) * multiplier;
|
||||
else
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_HP * multiplier;
|
||||
break;
|
||||
case STAT_ATK:
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_Attack * multiplier;
|
||||
if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_ATK)
|
||||
evIncrease = (gBaseStats[defeatedSpecies].evYield_Attack + bonus) * multiplier;
|
||||
else
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_Attack * multiplier;
|
||||
break;
|
||||
case STAT_DEF:
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_Defense * multiplier;
|
||||
if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_DEF)
|
||||
evIncrease = (gBaseStats[defeatedSpecies].evYield_Defense + bonus) * multiplier;
|
||||
else
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_Defense * multiplier;
|
||||
break;
|
||||
case STAT_SPEED:
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_Speed * multiplier;
|
||||
if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_SPEED)
|
||||
evIncrease = (gBaseStats[defeatedSpecies].evYield_Speed + bonus) * multiplier;
|
||||
else
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_Speed * multiplier;
|
||||
break;
|
||||
case STAT_SPATK:
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_SpAttack * multiplier;
|
||||
if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_SPATK)
|
||||
evIncrease = (gBaseStats[defeatedSpecies].evYield_SpAttack + bonus) * multiplier;
|
||||
else
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_SpAttack * multiplier;
|
||||
break;
|
||||
case STAT_SPDEF:
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_SpDefense * multiplier;
|
||||
break;
|
||||
}
|
||||
|
||||
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
|
||||
if (heldItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
if (gMain.inBattle)
|
||||
holdEffect = gEnigmaBerries[0].holdEffect;
|
||||
if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_SPDEF)
|
||||
evIncrease = (gBaseStats[defeatedSpecies].evYield_SpDefense + bonus) * multiplier;
|
||||
else
|
||||
holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
|
||||
}
|
||||
else
|
||||
{
|
||||
holdEffect = ItemId_GetHoldEffect(heldItem);
|
||||
evIncrease = gBaseStats[defeatedSpecies].evYield_SpDefense * multiplier;
|
||||
break;
|
||||
}
|
||||
|
||||
if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
|
||||
|
Loading…
x
Reference in New Issue
Block a user