From 5c9b80e1a862ac9ffa949bef0c52a2345ade46f8 Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Fri, 20 Oct 2023 19:02:50 +0100 Subject: [PATCH] Add Fairy-type and Fairy Feather This adds the Fairy type and the Fairy Feather. Neither are obtainable yet, but will be with time. --- constants/item_constants.asm | 2 +- constants/item_data_constants.asm | 1 + constants/type_constants.asm | 1 + data/items/attributes.asm | 4 ++-- data/items/catch_rate_items.asm | 2 +- data/items/descriptions.asm | 6 +++++- data/items/names.asm | 2 +- data/types/names.asm | 2 ++ data/types/search_strings.asm | 1 + data/types/search_types.asm | 1 + data/types/type_boost_items.asm | 1 + data/types/type_matchups.asm | 12 ++++++++++++ engine/items/item_effects.asm | 31 ++++++++++++++++++------------- 13 files changed, 47 insertions(+), 19 deletions(-) diff --git a/constants/item_constants.asm b/constants/item_constants.asm index fd8407d..7839f0d 100644 --- a/constants/item_constants.asm +++ b/constants/item_constants.asm @@ -30,7 +30,7 @@ const FIRE_STONE ; 16 const THUNDERSTONE ; 17 const WATER_STONE ; 18 - const ITEM_19 ; 19 + const FAIRY_FEATHER; 19 const HP_UP ; 1a const PROTEIN ; 1b const IRON ; 1c diff --git a/constants/item_data_constants.asm b/constants/item_data_constants.asm index faf201d..302bab1 100644 --- a/constants/item_data_constants.asm +++ b/constants/item_data_constants.asm @@ -130,6 +130,7 @@ DEF MAIL_STRUCT_LENGTH_JP EQU $2a ; mailmsg_jp struct const HELD_DRAGON_BOOST const HELD_DARK_BOOST const HELD_STEEL_BOOST + const HELD_FAIRY_BOOST const_next 70 const HELD_CATCH_CHANCE diff --git a/constants/type_constants.asm b/constants/type_constants.asm index 49fa661..262997e 100644 --- a/constants/type_constants.asm +++ b/constants/type_constants.asm @@ -32,6 +32,7 @@ DEF SPECIAL EQU const_value const ICE const DRAGON const DARK + const FAIRY DEF TYPES_END EQU const_value DEF NUM_TYPES EQU TYPES_END + UNUSED_TYPES - UNUSED_TYPES_END - 1 ; discount BIRD diff --git a/data/items/attributes.asm b/data/items/attributes.asm index 08a5e9f..bbf7a2c 100644 --- a/data/items/attributes.asm +++ b/data/items/attributes.asm @@ -56,8 +56,8 @@ ItemAttributes: item_attribute 2100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE ; WATER_STONE item_attribute 2100, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE -; ITEM_19 - item_attribute $9999, HELD_NONE, 0, NO_LIMITS, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE +; FAIRY_FEATHER + item_attribute 1450, HELD_FAIRY_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE ; HP_UP item_attribute 9800, HELD_NONE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE ; PROTEIN diff --git a/data/items/catch_rate_items.asm b/data/items/catch_rate_items.asm index 9c39afa..bdeeaf6 100644 --- a/data/items/catch_rate_items.asm +++ b/data/items/catch_rate_items.asm @@ -3,7 +3,7 @@ ; item associated with the table entry is used instead. TimeCapsule_CatchRateItems: - db ITEM_19, LEFTOVERS + db FAIRY_FEATHER, LEFTOVERS db ITEM_2D, BITTER_BERRY db ITEM_32, GOLD_BERRY db ITEM_5A, BERRY diff --git a/data/items/descriptions.asm b/data/items/descriptions.asm index 550d3b8..68a1898 100644 --- a/data/items/descriptions.asm +++ b/data/items/descriptions.asm @@ -25,7 +25,7 @@ ItemDescriptions: dw FireStoneDesc dw ThunderStoneDesc dw WaterStoneDesc - dw QuestionMarkDesc + dw FairyFeatherDesc dw HPUpDesc dw ProteinDesc dw IronDesc @@ -915,3 +915,7 @@ MusicMailDesc: MirageMailDesc: db "MEW-print MAIL." next "(HOLD)@" + +FairyFeatherDesc: + db "Powers up fairy-" + next "type moves. (HOLD)@" diff --git a/data/items/names.asm b/data/items/names.asm index b820b77..cf97390 100644 --- a/data/items/names.asm +++ b/data/items/names.asm @@ -24,7 +24,7 @@ ItemNames:: li "FIRE STONE" li "THUNDERSTONE" li "WATER STONE" - li "TERU-SAMA" + li "FAIRYFEATHER" li "HP UP" li "PROTEIN" li "IRON" diff --git a/data/types/names.asm b/data/types/names.asm index 94fe67e..b7f0e90 100644 --- a/data/types/names.asm +++ b/data/types/names.asm @@ -31,6 +31,7 @@ TypeNames: dw Ice dw Dragon dw Dark + dw Fairy assert_table_length TYPES_END Normal: db "NORMAL@" @@ -52,3 +53,4 @@ Ghost: db "GHOST@" Steel: db "STEEL@" Dragon: db "DRAGON@" Dark: db "DARK@" +Fairy: db "FAIRY@" diff --git a/data/types/search_strings.asm b/data/types/search_strings.asm index 1345c27..39e021b 100644 --- a/data/types/search_strings.asm +++ b/data/types/search_strings.asm @@ -19,4 +19,5 @@ PokedexTypeSearchStrings: db " DRAGON @" db " DARK @" db " STEEL @" + db " FAIRY @" assert_table_length NUM_TYPES + 1 diff --git a/data/types/search_types.asm b/data/types/search_types.asm index dd9ea56..6f0a454 100644 --- a/data/types/search_types.asm +++ b/data/types/search_types.asm @@ -18,4 +18,5 @@ PokedexTypeSearchConversionTable: db DRAGON db DARK db STEEL + db FAIRY assert_table_length NUM_TYPES diff --git a/data/types/type_boost_items.asm b/data/types/type_boost_items.asm index 85a58db..507b184 100644 --- a/data/types/type_boost_items.asm +++ b/data/types/type_boost_items.asm @@ -16,4 +16,5 @@ TypeBoostItems: db HELD_DRAGON_BOOST, DRAGON ; DRAGON_SCALE db HELD_DARK_BOOST, DARK ; BLACKGLASSES db HELD_STEEL_BOOST, STEEL ; METAL_COAT + db HELD_FAIRY_BOOST, FAIRY ; FAIRY_FEATHER db -1 diff --git a/data/types/type_matchups.asm b/data/types/type_matchups.asm index 81906b0..afc280a 100644 --- a/data/types/type_matchups.asm +++ b/data/types/type_matchups.asm @@ -49,12 +49,14 @@ TypeMatchups: db FIGHTING, ROCK, SUPER_EFFECTIVE db FIGHTING, DARK, SUPER_EFFECTIVE db FIGHTING, STEEL, SUPER_EFFECTIVE + db FIGHTING, FAIRY, NOT_VERY_EFFECTIVE db POISON, GRASS, SUPER_EFFECTIVE db POISON, POISON, NOT_VERY_EFFECTIVE db POISON, GROUND, NOT_VERY_EFFECTIVE db POISON, ROCK, NOT_VERY_EFFECTIVE db POISON, GHOST, NOT_VERY_EFFECTIVE db POISON, STEEL, NO_EFFECT + db POISON, FAIRY, SUPER_EFFECTIVE db GROUND, FIRE, SUPER_EFFECTIVE db GROUND, ELECTRIC, SUPER_EFFECTIVE db GROUND, GRASS, NOT_VERY_EFFECTIVE @@ -83,6 +85,7 @@ TypeMatchups: db BUG, GHOST, NOT_VERY_EFFECTIVE db BUG, DARK, SUPER_EFFECTIVE db BUG, STEEL, NOT_VERY_EFFECTIVE + db BUG, FAIRY, NOT_VERY_EFFECTIVE db ROCK, FIRE, SUPER_EFFECTIVE db ROCK, ICE, SUPER_EFFECTIVE db ROCK, FIGHTING, NOT_VERY_EFFECTIVE @@ -97,17 +100,26 @@ TypeMatchups: db GHOST, GHOST, SUPER_EFFECTIVE db DRAGON, DRAGON, SUPER_EFFECTIVE db DRAGON, STEEL, NOT_VERY_EFFECTIVE + db DRAGON, FAIRY, NO_EFFECT db DARK, FIGHTING, NOT_VERY_EFFECTIVE db DARK, PSYCHIC_TYPE, SUPER_EFFECTIVE db DARK, GHOST, SUPER_EFFECTIVE db DARK, DARK, NOT_VERY_EFFECTIVE db DARK, STEEL, NOT_VERY_EFFECTIVE + db DARK, FAIRY, NOT_VERY_EFFECTIVE db STEEL, FIRE, NOT_VERY_EFFECTIVE db STEEL, WATER, NOT_VERY_EFFECTIVE db STEEL, ELECTRIC, NOT_VERY_EFFECTIVE db STEEL, ICE, SUPER_EFFECTIVE db STEEL, ROCK, SUPER_EFFECTIVE db STEEL, STEEL, NOT_VERY_EFFECTIVE + db STEEL, FAIRY, SUPER_EFFECTIVE + db FAIRY, FIRE, NOT_VERY_EFFECTIVE + db FAIRY, FIGHTING, SUPER_EFFECTIVE + db FAIRY, POISON, NOT_VERY_EFFECTIVE + db FAIRY, DRAGON, SUPER_EFFECTIVE + db FAIRY, DARK, SUPER_EFFECTIVE + db FAIRY, STEEL, NOT_VERY_EFFECTIVE db -2 ; end (with Foresight) diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm index 3d4be93..8c0f0a4 100644 --- a/engine/items/item_effects.asm +++ b/engine/items/item_effects.asm @@ -38,7 +38,7 @@ ItemEffects: dw EvoStoneEffect ; FIRE_STONE dw EvoStoneEffect ; THUNDERSTONE dw EvoStoneEffect ; WATER_STONE - dw NoEffect ; ITEM_19 + dw NoEffect ; FAIRY_FEATHER dw VitaminEffect ; HP_UP dw VitaminEffect ; PROTEIN dw VitaminEffect ; IRON @@ -193,22 +193,27 @@ ItemEffects: dw PokeBallEffect ; PARK_BALL dw NoEffect ; RAINBOW_WING dw NoEffect ; ITEM_B3 - assert_table_length ITEM_B3 + dw NoEffect ; BRICK_PIECE + dw NoEffect ; SURF_MAIL + dw NoEffect ; LITEBLUEMAIL + dw NoEffect ; PORTRAITMAIL + dw NoEffect ; LOVELY_MAIL + dw NoEffect ; EON_MAIL + dw NoEffect ; MORPH_MAIL + dw NoEffect ; BLUESKY_MAIL + dw NoEffect ; MUSIC_MAIL + dw NoEffect ; MIRAGE_MAIL + dw NoEffect ; ITEM_BE + dw NoEffect ; ITEM_DC + dw NoEffect ; ITEM_C3 + dw NoEffect ; ITEM_FA + assert_table_length NUM_ITEMS ; The items past ITEM_B3 do not have effect entries: -; BRICK_PIECE -; SURF_MAIL -; LITEBLUEMAIL -; PORTRAITMAIL -; LOVELY_MAIL -; EON_MAIL -; MORPH_MAIL -; BLUESKY_MAIL -; MUSIC_MAIL -; MIRAGE_MAIL -; ITEM_BE ; They all have the ITEMMENU_NOUSE attribute so they can't be used anyway. ; NoEffect would be appropriate, with the table then being NUM_ITEMS long. +; This has been amended for architectural purposes, and because we have a shitload of SW97 items to add. + PokeBallEffect: ; BUG: The Dude's catching tutorial may crash if his Poké Ball can't be used (see docs/bugs_and_glitches.md) ld a, [wBattleMode]