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/maps/landmarks.asm b/data/maps/landmarks.asm index 5a4cdbb..4d5a4f1 100644 --- a/data/maps/landmarks.asm +++ b/data/maps/landmarks.asm @@ -210,4 +210,4 @@ TohjoFallsName: db "TOHJO FALLS@" UndergroundName: db "UNDERGROUND@" BattleTowerName: db "BATTLE¯TOWER@" SpecialMapName: db "SPECIAL@" -SilentHillsName: db "SILENT HILLS@" +SilentHillsName: db "SILENT¯HILLS@" 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] diff --git a/engine/pokegear/pokegear.asm b/engine/pokegear/pokegear.asm index 5cc11be..22dec4b 100644 --- a/engine/pokegear/pokegear.asm +++ b/engine/pokegear/pokegear.asm @@ -540,12 +540,12 @@ Pokegear_UpdateClock: PokegearMap_CheckRegion: ld a, [wPokegearMapPlayerIconLandmark] - cp NIHON_LANDMARK - jr z, .nihon cp LANDMARK_FAST_SHIP jr z, .johto cp KANTO_LANDMARK jr nc, .kanto + cp NIHON_LANDMARK + jr c, .nihon .johto ld a, POKEGEARSTATE_JOHTOMAPINIT jr .done @@ -2059,10 +2059,17 @@ PokegearMap: ret .kanto + cp NIHON_LANDMARK + jr c, .nihon call LoadTownMapGFX call FillKantoMap ret +.nihon + call LoadTownMapGFX + call FillNihonMap + ret + _FlyMap: call ClearBGPalettes call ClearTilemap @@ -2305,10 +2312,10 @@ FlyMap: call GetWorldMapLocation .CheckRegion: ; The first 46 locations are part of Johto. The rest are in Kanto. - cp KANTO_LANDMARK - jr nc, .KantoFlyMap cp NIHON_LANDMARK jr nc, .NihonFlyMap + cp KANTO_LANDMARK + jr nc, .KantoFlyMap ; Johto fly map ; Note that .NoKanto should be modified in tandem with this branch push af @@ -2341,7 +2348,7 @@ FlyMap: ; Kanto's map is only loaded if we've visited Indigo Plateau ld a, KANTO_FLYPOINT ; first Kanto flypoint ld [wStartFlypoint], a - ld a, NUM_FLYPOINTS - 1 ; last Kanto flypoint + ld a, NIHON_FLYPOINT - 1 ; last Kanto flypoint ld [wEndFlypoint], a ld [wTownMapPlayerIconLandmark], a ; last one is default (Indigo Plateau) ; Fill out the map @@ -2366,9 +2373,9 @@ FlyMap: and a jr z, .NoKanto ; Kanto's map is only loaded if we've visited Indigo Plateau - ld a, NIHON_FLYPOINT ; first Kanto flypoint + ld a, NIHON_FLYPOINT ; first Nihon flypoint ld [wStartFlypoint], a - ld a, NUM_FLYPOINTS - 1 ; last Kanto flypoint + ld a, NUM_FLYPOINTS - 1 ; last Nihon flypoint ld [wEndFlypoint], a ld [wTownMapPlayerIconLandmark], a ; last one is default (Indigo Plateau) ; Fill out the map @@ -2985,11 +2992,19 @@ EntireFlyMap: ; unreferenced ld a, [wTownMapPlayerIconLandmark] cp KANTO_FLYPOINT jr c, .InJohto + cp NIHON_FLYPOINT + jr nc, .InNihon call FillKantoMap xor a ld b, HIGH(vBGMap1) jr .Finally +.InNihon: + call FillNihonMap + ld a, SCREEN_HEIGHT_PX + ld b, HIGH(vBGMap0) + jr .Finally + .InJohto: call FillJohtoMap ld a, SCREEN_HEIGHT_PX diff --git a/gfx/pokegear/nihon.bin b/gfx/pokegear/nihon.bin index b2281b7..65954ed 100644 Binary files a/gfx/pokegear/nihon.bin and b/gfx/pokegear/nihon.bin differ diff --git a/maps/SilentHills.asm b/maps/SilentHills.asm index d96def4..c7b8778 100644 --- a/maps/SilentHills.asm +++ b/maps/SilentHills.asm @@ -15,7 +15,7 @@ SilentHills_MapEvents: db 0, 0 ; filler def_warp_events - ;warp_event 8, 13, GLOBAL_TERMINAL_1F, 1 + warp_event 11, 5, PLAYERS_HOUSE_1F, 1 def_coord_events