mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-19 20:18:34 +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_GRISEOUS_ORB 96
|
||||||
#define HOLD_EFFECT_GRACIDEA 97
|
#define HOLD_EFFECT_GRACIDEA 97
|
||||||
#define HOLD_EFFECT_RESIST_BERRY 98
|
#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
|
#define HOLD_EFFECT_RESTORE_PCT_HP 100
|
||||||
|
|
||||||
// Gen5 hold effects
|
// Gen5 hold effects
|
||||||
|
@ -4242,7 +4242,7 @@ u32 GetBattlerTotalSpeedStat(u8 battlerId)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// item effects
|
// 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;
|
speed /= 2;
|
||||||
else if (holdEffect == HOLD_EFFECT_IRON_BALL)
|
else if (holdEffect == HOLD_EFFECT_IRON_BALL)
|
||||||
speed /= 2;
|
speed /= 2;
|
||||||
|
@ -5560,6 +5560,24 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
|||||||
u16 heldItem;
|
u16 heldItem;
|
||||||
u8 holdEffect;
|
u8 holdEffect;
|
||||||
int i, multiplier;
|
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++)
|
for (i = 0; i < NUM_STATS; i++)
|
||||||
{
|
{
|
||||||
@ -5580,36 +5598,41 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
|
|||||||
switch (i)
|
switch (i)
|
||||||
{
|
{
|
||||||
case STAT_HP:
|
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;
|
break;
|
||||||
case STAT_ATK:
|
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;
|
break;
|
||||||
case STAT_DEF:
|
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;
|
break;
|
||||||
case STAT_SPEED:
|
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;
|
break;
|
||||||
case STAT_SPATK:
|
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;
|
break;
|
||||||
case STAT_SPDEF:
|
case STAT_SPDEF:
|
||||||
evIncrease = gBaseStats[defeatedSpecies].evYield_SpDefense * multiplier;
|
if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_SPDEF)
|
||||||
break;
|
evIncrease = (gBaseStats[defeatedSpecies].evYield_SpDefense + bonus) * multiplier;
|
||||||
}
|
|
||||||
|
|
||||||
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
|
|
||||||
if (heldItem == ITEM_ENIGMA_BERRY)
|
|
||||||
{
|
|
||||||
if (gMain.inBattle)
|
|
||||||
holdEffect = gEnigmaBerries[0].holdEffect;
|
|
||||||
else
|
else
|
||||||
holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
|
evIncrease = gBaseStats[defeatedSpecies].evYield_SpDefense * multiplier;
|
||||||
}
|
break;
|
||||||
else
|
|
||||||
{
|
|
||||||
holdEffect = ItemId_GetHoldEffect(heldItem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
|
if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user