diff --git a/graphics/items/icon_palettes/clever_wing.pal b/graphics/items/icon_palettes/clever_wing.pal new file mode 100755 index 000000000..1ddaa990e --- /dev/null +++ b/graphics/items/icon_palettes/clever_wing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 128 +90 90 90 +206 239 255 +239 255 255 +49 49 49 +156 214 231 +156 99 156 +231 148 239 +214 99 214 +140 165 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/genius_wing.pal b/graphics/items/icon_palettes/genius_wing.pal new file mode 100755 index 000000000..dbfdb5e88 --- /dev/null +++ b/graphics/items/icon_palettes/genius_wing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 128 +90 90 90 +206 239 255 +239 255 255 +49 49 49 +156 214 231 +148 189 198 +140 247 255 +90 231 239 +140 165 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/health_wing.pal b/graphics/items/icon_palettes/health_wing.pal new file mode 100755 index 000000000..357d6950b --- /dev/null +++ b/graphics/items/icon_palettes/health_wing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 128 +90 90 90 +206 239 255 +239 255 255 +49 49 49 +156 214 231 +181 165 132 +255 231 132 +255 206 24 +140 165 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/muscle_wing.pal b/graphics/items/icon_palettes/muscle_wing.pal new file mode 100755 index 000000000..e5fd0123c --- /dev/null +++ b/graphics/items/icon_palettes/muscle_wing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 128 +90 90 90 +206 239 255 +239 255 255 +49 49 49 +156 214 231 +173 140 148 +255 123 132 +247 57 66 +140 165 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/pretty_wing.pal b/graphics/items/icon_palettes/pretty_wing.pal new file mode 100755 index 000000000..e2e1b3ed7 --- /dev/null +++ b/graphics/items/icon_palettes/pretty_wing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 128 +90 90 90 +206 239 255 +239 255 255 +49 49 49 +156 214 231 +140 165 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/resist_wing.pal b/graphics/items/icon_palettes/resist_wing.pal new file mode 100755 index 000000000..c29df3793 --- /dev/null +++ b/graphics/items/icon_palettes/resist_wing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 128 +90 90 90 +206 239 255 +239 255 255 +49 49 49 +156 214 231 +49 99 181 +123 165 247 +82 132 231 +140 165 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icon_palettes/swift_wing.pal b/graphics/items/icon_palettes/swift_wing.pal new file mode 100755 index 000000000..359140d2c --- /dev/null +++ b/graphics/items/icon_palettes/swift_wing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 128 +90 90 90 +206 239 255 +239 255 255 +49 49 49 +156 214 231 +82 156 66 +165 239 132 +82 198 66 +140 165 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/items/icons/clever_wing.png b/graphics/items/icons/clever_wing.png new file mode 100755 index 000000000..3cc0a3d5f Binary files /dev/null and b/graphics/items/icons/clever_wing.png differ diff --git a/graphics/items/icons/genius_wing.png b/graphics/items/icons/genius_wing.png new file mode 100755 index 000000000..5b27a029e Binary files /dev/null and b/graphics/items/icons/genius_wing.png differ diff --git a/graphics/items/icons/health_wing.png b/graphics/items/icons/health_wing.png new file mode 100755 index 000000000..584cc4f13 Binary files /dev/null and b/graphics/items/icons/health_wing.png differ diff --git a/graphics/items/icons/muscle_wing.png b/graphics/items/icons/muscle_wing.png new file mode 100755 index 000000000..5ebf263b2 Binary files /dev/null and b/graphics/items/icons/muscle_wing.png differ diff --git a/graphics/items/icons/pretty_wing.png b/graphics/items/icons/pretty_wing.png new file mode 100755 index 000000000..69c66306d Binary files /dev/null and b/graphics/items/icons/pretty_wing.png differ diff --git a/graphics/items/icons/resist_wing.png b/graphics/items/icons/resist_wing.png new file mode 100755 index 000000000..d71715162 Binary files /dev/null and b/graphics/items/icons/resist_wing.png differ diff --git a/graphics/items/icons/swift_wing.png b/graphics/items/icons/swift_wing.png new file mode 100755 index 000000000..75af06017 Binary files /dev/null and b/graphics/items/icons/swift_wing.png differ diff --git a/include/constants/hold_effects.h b/include/constants/hold_effects.h index 9d4089101..0562bc469 100644 --- a/include/constants/hold_effects.h +++ b/include/constants/hold_effects.h @@ -134,6 +134,9 @@ #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 diff --git a/include/constants/items.h b/include/constants/items.h index 6177c38b9..71e7bf995 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -691,8 +691,16 @@ // Emerald #define ITEM_MAGMA_EMBLEM 607 #define ITEM_OLD_SEA_MAP 608 +// Wings +#define ITEM_HEALTH_WING 609 +#define ITEM_MUSCLE_WING 610 +#define ITEM_RESIST_WING 611 +#define ITEM_GENIUS_WING 612 +#define ITEM_CLEVER_WING 613 +#define ITEM_SWIFT_WING 614 +#define ITEM_PRETTY_WING 615 -#define ITEMS_COUNT 609 +#define ITEMS_COUNT 616 #define ITEM_FIELD_ARROW ITEMS_COUNT #define FIRST_BERRY_INDEX ITEM_CHERI_BERRY diff --git a/include/graphics.h b/include/graphics.h index 5da1aaebd..8fa1fafe0 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4380,6 +4380,20 @@ extern const u32 gItemIcon_JawFossil[]; extern const u32 gItemIconPalette_JawFossil[]; extern const u32 gItemIcon_SailFossil[]; extern const u32 gItemIconPalette_SailFossil[]; +extern const u32 gItemIcon_HealthWing[]; +extern const u32 gItemIconPalette_HealthWing[]; +extern const u32 gItemIcon_MuscleWing[]; +extern const u32 gItemIconPalette_MuscleWing[]; +extern const u32 gItemIcon_ResistWing[]; +extern const u32 gItemIconPalette_ResistWing[]; +extern const u32 gItemIcon_GeniusWing[]; +extern const u32 gItemIconPalette_GeniusWing[]; +extern const u32 gItemIcon_CleverWing[]; +extern const u32 gItemIconPalette_CleverWing[]; +extern const u32 gItemIcon_SwiftWing[]; +extern const u32 gItemIconPalette_SwiftWing[]; +extern const u32 gItemIcon_PrettyWing[]; +extern const u32 gItemIconPalette_PrettyWing[]; extern const u32 gItemIcon_ReturnToFieldArrow[]; extern const u32 gItemIconPalette_ReturnToFieldArrow[]; diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h index 61c9a4e7d..701e23e4a 100644 --- a/src/data/graphics/items.h +++ b/src/data/graphics/items.h @@ -1493,3 +1493,24 @@ const u32 gItemIconPalette_JawFossil[] = INCBIN_U32("graphics/items/icon_palette const u32 gItemIcon_SailFossil[] = INCBIN_U32("graphics/items/icons/sail_fossil.4bpp.lz"); const u32 gItemIconPalette_SailFossil[] = INCBIN_U32("graphics/items/icon_palettes/sail_fossil.gbapal.lz"); + +const u32 gItemIcon_HealthWing[] = INCBIN_U32("graphics/items/icons/health_wing.4bpp.lz"); +const u32 gItemIconPalette_HealthWing[] = INCBIN_U32("graphics/items/icon_palettes/health_wing.gbapal.lz"); + +const u32 gItemIcon_MuscleWing[] = INCBIN_U32("graphics/items/icons/muscle_wing.4bpp.lz"); +const u32 gItemIconPalette_MuscleWing[] = INCBIN_U32("graphics/items/icon_palettes/muscle_wing.gbapal.lz"); + +const u32 gItemIcon_ResistWing[] = INCBIN_U32("graphics/items/icons/resist_wing.4bpp.lz"); +const u32 gItemIconPalette_ResistWing[] = INCBIN_U32("graphics/items/icon_palettes/resist_wing.gbapal.lz"); + +const u32 gItemIcon_GeniusWing[] = INCBIN_U32("graphics/items/icons/genius_wing.4bpp.lz"); +const u32 gItemIconPalette_GeniusWing[] = INCBIN_U32("graphics/items/icon_palettes/genius_wing.gbapal.lz"); + +const u32 gItemIcon_CleverWing[] = INCBIN_U32("graphics/items/icons/clever_wing.4bpp.lz"); +const u32 gItemIconPalette_CleverWing[] = INCBIN_U32("graphics/items/icon_palettes/clever_wing.gbapal.lz"); + +const u32 gItemIcon_SwiftWing[] = INCBIN_U32("graphics/items/icons/swift_wing.4bpp.lz"); +const u32 gItemIconPalette_SwiftWing[] = INCBIN_U32("graphics/items/icon_palettes/swift_wing.gbapal.lz"); + +const u32 gItemIcon_PrettyWing[] = INCBIN_U32("graphics/items/icons/pretty_wing.4bpp.lz"); +const u32 gItemIconPalette_PrettyWing[] = INCBIN_U32("graphics/items/icon_palettes/pretty_wing.gbapal.lz"); diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h index 7e7b44b16..a5d3afd33 100644 --- a/src/data/item_icon_table.h +++ b/src/data/item_icon_table.h @@ -582,4 +582,11 @@ const u32 *const gItemIconTable[][2] = [ITEM_PLUME_FOSSIL] = {gItemIcon_PlumeFossil, gItemIconPalette_PlumeFossil}, [ITEM_JAW_FOSSIL] = {gItemIcon_JawFossil, gItemIconPalette_JawFossil}, [ITEM_SAIL_FOSSIL] = {gItemIcon_SailFossil, gItemIconPalette_SailFossil}, + [ITEM_HEALTH_WING] = {gItemIcon_HealthWing, gItemIconPalette_HealthWing}, + [ITEM_MUSCLE_WING] = {gItemIcon_MuscleWing, gItemIconPalette_MuscleWing}, + [ITEM_RESIST_WING] = {gItemIcon_ResistWing, gItemIconPalette_ResistWing}, + [ITEM_GENIUS_WING] = {gItemIcon_GeniusWing, gItemIconPalette_GeniusWing}, + [ITEM_CLEVER_WING] = {gItemIcon_CleverWing, gItemIconPalette_CleverWing}, + [ITEM_SWIFT_WING] = {gItemIcon_SwiftWing, gItemIconPalette_SwiftWing}, + [ITEM_PRETTY_WING] = {gItemIcon_PrettyWing, gItemIconPalette_PrettyWing}, }; diff --git a/src/data/items.h b/src/data/items.h index cf5ffefa6..8460fd9d0 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -7282,5 +7282,101 @@ const struct Item gItems[] = .type = 4, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = 0, + }, + + [ITEM_HEALTH_WING] = + { + .name = _("Health Wing"), + .itemId = ITEM_HEALTH_WING, + .price = 300, + .holdEffect = HOLD_EFFECT_RAISE_EV, + .holdEffectParam = 4, + .description = sHealthWingDesc, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = STAT_HP, + }, + + [ITEM_MUSCLE_WING] = + { + .name = _("Muscle Wing"), + .itemId = ITEM_MUSCLE_WING, + .price = 300, + .holdEffect = HOLD_EFFECT_RAISE_EV, + .holdEffectParam = 4, + .description = sMuscleWingDesc, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = STAT_ATK, + }, + + [ITEM_RESIST_WING] = + { + .name = _("Resist Wing"), + .itemId = ITEM_RESIST_WING, + .price = 300, + .holdEffect = HOLD_EFFECT_RAISE_EV, + .holdEffectParam = 4, + .description = sResistWingDesc, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = STAT_DEF, + }, + + [ITEM_GENIUS_WING] = + { + .name = _("Genius Wing"), + .itemId = ITEM_GENIUS_WING, + .price = 300, + .holdEffect = HOLD_EFFECT_RAISE_EV, + .holdEffectParam = 4, + .description = sGeniusWingDesc, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = STAT_SPATK, + }, + + [ITEM_CLEVER_WING] = + { + .name = _("Clever Wing"), + .itemId = ITEM_CLEVER_WING, + .price = 300, + .holdEffect = HOLD_EFFECT_RAISE_EV, + .holdEffectParam = 4, + .description = sCleverWingDesc, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = STAT_SPDEF, + }, + + [ITEM_SWIFT_WING] = + { + .name = _("Swift Wing"), + .itemId = ITEM_SWIFT_WING, + .price = 300, + .holdEffect = HOLD_EFFECT_RAISE_EV, + .holdEffectParam = 4, + .description = sSwiftWingDesc, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = STAT_SPEED, + }, + + [ITEM_PRETTY_WING] = + { + .name = _("Pretty Wing"), + .itemId = ITEM_PRETTY_WING, + .price = 1000, + .description = sPrettyWingDesc, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = 0, } }; diff --git a/src/data/text/item_descriptions.h b/src/data/text/item_descriptions.h index 40a0c2f0b..74ae60e2e 100644 --- a/src/data/text/item_descriptions.h +++ b/src/data/text/item_descriptions.h @@ -2730,3 +2730,38 @@ static const u8 sHoneyDesc[] = _( "A sweet honey that\n" "attracts wild Pokémon\n" "in grass or on trees."); + +static const u8 sHealthWingDesc[] = _( + "An item that raises\n" + "the base HP of\n" + "a POKéMON."); + +static const u8 sMuscleWingDesc[] = _( + "An item that raises\n" + "the base ATTACK of\n" + "a POKéMON."); + +static const u8 sResistWingDesc[] = _( + "An item that raises\n" + "the base DEFENSE\n" + "of a POKéMON."); + +static const u8 sGeniusWingDesc[] = _( + "An item that raises\n" + "the base SP. ATK.\n" + "of a POKéMON."); + +static const u8 sCleverWingDesc[] = _( + "An item that raises\n" + "the base SP. DEF.\n" + "of a POKéMON."); + +static const u8 sSwiftWingDesc[] = _( + "An item that raises\n" + "the base SPEED of\n" + "a POKéMON."); + +static const u8 sPrettyWingDesc[] = _( + "A beautiful yet\n" + "plain feather that\n" + "does nothing.");