Fix EV wings

This commit is contained in:
DizzyEggg 2019-06-03 11:05:03 +02:00
parent 832c452f0b
commit c81d06b712
5 changed files with 709 additions and 632 deletions

View File

@ -134,9 +134,6 @@
#define HOLD_EFFECT_ADRENALINE_ORB 152
#define HOLD_EFFECT_MEMORY 153
// Unordered
#define HOLD_EFFECT_RAISE_EV 154
#define HOLD_EFFECT_CHOICE(holdEffect)((holdEffect == HOLD_EFFECT_CHOICE_BAND || holdEffect == HOLD_EFFECT_CHOICE_SCARF || holdEffect == HOLD_EFFECT_CHOICE_SPECS))
#endif // GUARD_HOLD_EFFECTS_H

File diff suppressed because it is too large Load Diff

View File

@ -7289,7 +7289,7 @@ const struct Item gItems[] =
.name = _("Health Wing"),
.itemId = ITEM_HEALTH_WING,
.price = 300,
.holdEffect = HOLD_EFFECT_RAISE_EV,
.holdEffect = 0,
.holdEffectParam = 4,
.description = sHealthWingDesc,
.pocket = POCKET_ITEMS,
@ -7303,7 +7303,7 @@ const struct Item gItems[] =
.name = _("Muscle Wing"),
.itemId = ITEM_MUSCLE_WING,
.price = 300,
.holdEffect = HOLD_EFFECT_RAISE_EV,
.holdEffect = 0,
.holdEffectParam = 4,
.description = sMuscleWingDesc,
.pocket = POCKET_ITEMS,
@ -7317,7 +7317,7 @@ const struct Item gItems[] =
.name = _("Resist Wing"),
.itemId = ITEM_RESIST_WING,
.price = 300,
.holdEffect = HOLD_EFFECT_RAISE_EV,
.holdEffect = 0,
.holdEffectParam = 4,
.description = sResistWingDesc,
.pocket = POCKET_ITEMS,
@ -7331,7 +7331,7 @@ const struct Item gItems[] =
.name = _("Genius Wing"),
.itemId = ITEM_GENIUS_WING,
.price = 300,
.holdEffect = HOLD_EFFECT_RAISE_EV,
.holdEffect = 0,
.holdEffectParam = 4,
.description = sGeniusWingDesc,
.pocket = POCKET_ITEMS,
@ -7345,7 +7345,7 @@ const struct Item gItems[] =
.name = _("Clever Wing"),
.itemId = ITEM_CLEVER_WING,
.price = 300,
.holdEffect = HOLD_EFFECT_RAISE_EV,
.holdEffect = 0,
.holdEffectParam = 4,
.description = sCleverWingDesc,
.pocket = POCKET_ITEMS,
@ -7359,7 +7359,7 @@ const struct Item gItems[] =
.name = _("Swift Wing"),
.itemId = ITEM_SWIFT_WING,
.price = 300,
.holdEffect = HOLD_EFFECT_RAISE_EV,
.holdEffect = 0,
.holdEffectParam = 4,
.description = sSwiftWingDesc,
.pocket = POCKET_ITEMS,

View File

@ -173,46 +173,116 @@ const u8 gItemEffect_SacredAsh[7] = {
[6] = -1,
};
const u8 gItemEffect_HPUp[10] = {
const u8 gItemEffect_HPUp[11] = {
[4] = ITEM4_EV_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = 10,
[7] = 5,
[8] = 3,
[9] = 2,
[10] = 1,
};
const u8 gItemEffect_Protein[10] = {
const u8 gItemEffect_Protein[11] = {
[4] = ITEM4_EV_ATK,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = 10,
[7] = 5,
[8] = 3,
[9] = 2,
[10] = 1,
};
const u8 gItemEffect_Iron[10] = {
const u8 gItemEffect_Iron[11] = {
[5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
[6] = 10,
[7] = 5,
[8] = 3,
[9] = 2,
[10] = 1,
};
const u8 gItemEffect_Carbos[10] = {
const u8 gItemEffect_Carbos[11] = {
[5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
[6] = 10,
[7] = 5,
[8] = 3,
[9] = 2,
[10] = 1,
};
const u8 gItemEffect_Calcium[10] = {
const u8 gItemEffect_Calcium[11] = {
[5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
[6] = 10,
[7] = 5,
[8] = 3,
[9] = 2,
[10] = 1,
};
const u8 gItemEffect_Zinc[11] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
[6] = 10,
[7] = 5,
[8] = 3,
[9] = 2,
[10] = 1,
};
const u8 gItemEffect_HpWing[11] = {
[4] = ITEM4_EV_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = 1,
[7] = 3,
[8] = 2,
[9] = 1,
[10] = 0,
};
const u8 gItemEffect_AtkWing[11] = {
[4] = ITEM4_EV_ATK,
[5] = ITEM5_FRIENDSHIP_ALL,
[6] = 1,
[7] = 3,
[8] = 2,
[9] = 1,
[10] = 0,
};
const u8 gItemEffect_DefWing[11] = {
[5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
[6] = 1,
[7] = 3,
[8] = 2,
[9] = 1,
[10] = 0,
};
const u8 gItemEffect_SpeedWing[11] = {
[5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
[6] = 1,
[7] = 3,
[8] = 2,
[9] = 1,
[10] = 0,
};
const u8 gItemEffect_SpatkWing[11] = {
[5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
[6] = 1,
[7] = 3,
[8] = 2,
[9] = 1,
[10] = 0,
};
const u8 gItemEffect_SpdefWing[11] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
[6] = 1,
[7] = 3,
[8] = 2,
[9] = 1,
[10] = 0,
};
const u8 gItemEffect_RareCandy[10] = {
@ -233,14 +303,6 @@ const u8 gItemEffect_PPUp[9] = {
[8] = 2,
};
const u8 gItemEffect_Zinc[10] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
[6] = 10,
[7] = 5,
[8] = 3,
[9] = 2,
};
const u8 gItemEffect_PPMax[9] = {
[5] = ITEM5_PP_MAX | ITEM5_FRIENDSHIP_ALL,
[6] = 5,
@ -445,6 +507,12 @@ const u8 *const gItemEffectTable[] =
[ITEM_RARE_CANDY - ITEM_POTION] = gItemEffect_RareCandy,
[ITEM_PP_UP - ITEM_POTION] = gItemEffect_PPUp,
[ITEM_ZINC - ITEM_POTION] = gItemEffect_Zinc,
[ITEM_HEALTH_WING - ITEM_POTION] = gItemEffect_HpWing,
[ITEM_MUSCLE_WING - ITEM_POTION] = gItemEffect_AtkWing,
[ITEM_RESIST_WING - ITEM_POTION] = gItemEffect_DefWing,
[ITEM_GENIUS_WING - ITEM_POTION] = gItemEffect_SpatkWing,
[ITEM_CLEVER_WING - ITEM_POTION] = gItemEffect_SpdefWing,
[ITEM_SWIFT_WING - ITEM_POTION] = gItemEffect_SpeedWing,
[ITEM_PP_MAX - ITEM_POTION] = gItemEffect_PPMax,
[ITEM_GUARD_SPEC - ITEM_POTION] = gItemEffect_GuardSpec,
[ITEM_DIRE_HIT - ITEM_POTION] = gItemEffect_DireHit,

View File

@ -4614,7 +4614,7 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex,
bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e)
{
u32 dataUnsigned;
s32 dataSigned;
s32 dataSigned, evCap;
s32 friendship;
s32 cmdIndex;
bool8 retVal = TRUE;
@ -4822,11 +4822,17 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
if (evCount >= MAX_TOTAL_EVS)
return TRUE;
if (dataSigned >= 100)
if (itemEffect[10])
evCap = 100;
else
evCap = 252;
if (dataSigned >= evCap)
break;
if (dataSigned + r2 > 100)
r5 = 100 - (dataSigned + r2) + r2;
if (dataSigned + r2 > evCap)
r5 = evCap - (dataSigned + r2) + r2;
else
r5 = r2;
@ -5026,11 +5032,17 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
if (evCount >= MAX_TOTAL_EVS)
return TRUE;
if (dataSigned >= 100)
if (itemEffect[10])
evCap = 100;
else
evCap = 252;
if (dataSigned >= evCap)
break;
if (dataSigned + r2 > 100)
r5 = 100 - (dataSigned + r2) + r2;
if (dataSigned + r2 > evCap)
r5 = evCap - (dataSigned + r2) + r2;
else
r5 = r2;