From cd08f11fa47d83161eaada559e18e3486322facd Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:29:35 +0100 Subject: [PATCH] Sepia City Gym & badge infrastructure Nihon badges now count and Sepia City has its Gym Leader. All fully functional. I've also distributed the transfer-exclusive Kanto Pokemon items to their relevant owners, plus the Polkadot Bow. --- README.md | 2 + constants/engine_flags.asm | 9 + constants/event_flags.asm | 3 +- constants/map_constants.asm | 1 + constants/trainer_constants.asm | 1 + constants/wram_constants.asm | 15 +- data/events/engine_flags.asm | 9 + data/maps/attributes.asm | 1 + data/maps/blocks.asm | 3 + data/maps/maps.asm | 1 + data/maps/scripts.asm | 4 +- data/pokemon/base_stats/chansey.asm | 2 +- data/pokemon/base_stats/ditto.asm | 2 +- data/pokemon/base_stats/kadabra.asm | 2 +- data/pokemon/base_stats/mimmeo.asm | 2 +- data/pokemon/base_stats/pikachu.asm | 2 +- data/pokemon/base_stats/snubbull.asm | 2 +- data/tilesets/tower_attributes.bin | Bin 1024 -> 1280 bytes data/tilesets/tower_collision.asm | 20 +- data/tilesets/tower_metatiles.bin | 4 +- data/trainers/parties.asm | 15 +- data/types/badge_type_boosts.asm | 11 + engine/menus/intro_menu.asm | 3 +- engine/pokegear/radio.asm | 2 +- gfx/tilesets.asm | 27 ++- gfx/tilesets/tower.png | Bin 1491 -> 4169 bytes maps/DebugRoom.asm | 5 + maps/OldCity.asm | 4 +- maps/OldCityGym.ablk | 2 + maps/OldCityGym.asm | 345 +++++++++++++++++++++++++++ ram/wram.asm | 1 + 31 files changed, 462 insertions(+), 38 deletions(-) create mode 100644 maps/OldCityGym.ablk create mode 100644 maps/OldCityGym.asm diff --git a/README.md b/README.md index c6c71ad..d8a124b 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ Mega Evolutions, Gigantamax forms, etc, are not in active consideration. - Gen 6 Experience System! - Poke Balls now all have unique palettes. - The high friendship evolution threshold is now 170, making Friend Balls sufficient for instant evolution and hatching from Eggs takes minimal effort. +- Items previously only obtainable via the Time Capsule are now distributed to specific Pokemon (5%: Polkadot Bow Snubbull, TwistedSpoon Kadabra, Metal Powder Ditto/Mimmeo, Light Ball Pikachu; 50%: Lucky Punch Chansey) ## Map Changes Numerous new maps are available, featuring new locations, the iconic Sevii Islands, and the Nihon region! @@ -108,6 +109,7 @@ JEP-affiliated spriters require sprites to be used with direct credit for non-co - Shawesome: Alolan Geodude - EyeDonutz: Walking Wake - Plague von Karma: Overworld Arbok, Koffing, Voltorb, Gengar, Diglett, and Cat sprites, adapted from the slot machine's sprites (originally made for KEP). +- LadyMisticus: Sprite edits of Imposter Oak, Archer, Ariana, Prof.Blue, Giovanni (both), Green; Cal (original) ### Unaffiliated - nuuk: Azurill, Electivire, Farigiraf, Glaceon, Honchkrow, Leafeon, Magmortar, Magnezone, Porygon-Z, Sylveon, Togekiss, Wyrdeer, Clodsire (back) diff --git a/constants/engine_flags.asm b/constants/engine_flags.asm index 300b5bb..e671d92 100644 --- a/constants/engine_flags.asm +++ b/constants/engine_flags.asm @@ -53,6 +53,15 @@ const ENGINE_MARSHBADGE const ENGINE_VOLCANOBADGE const ENGINE_EARTHBADGE +; wNihonBadges + const ENGINE_BADGE1 + const ENGINE_BADGE2 + const ENGINE_BADGE3 + const ENGINE_BADGE4 + const ENGINE_BADGE5 + const ENGINE_BADGE6 + const ENGINE_BADGE7 + const ENGINE_BADGE8 ; wUnlockedUnowns const ENGINE_UNLOCKED_UNOWNS_A_TO_K const ENGINE_UNLOCKED_UNOWNS_L_TO_R diff --git a/constants/event_flags.asm b/constants/event_flags.asm index 7d5d99a..b61fe1b 100644 --- a/constants/event_flags.asm +++ b/constants/event_flags.asm @@ -1109,7 +1109,8 @@ const EVENT_BEAT_ARCHER2 const EVENT_BEAT_ARCHER3 const EVENT_BEAT_PROFBLUE -; Unused: next 85 events + const EVENT_GOT_TM47_STEEL_WING2 +; Unused: next 86 events const_next 1600 ; Sprite visibility flags diff --git a/constants/map_constants.asm b/constants/map_constants.asm index 269f7cf..54f94a4 100644 --- a/constants/map_constants.asm +++ b/constants/map_constants.asm @@ -643,6 +643,7 @@ ENDM map_const OLD_CITY_EARLS_HOUSE, 4, 4 ; 5 map_const OLD_CITY_FAMILY_HOUSE, 4, 4 ; 6 map_const SEPIA_SCHOOL, 4, 8 ; 7 + map_const OLD_CITY_GYM, 6, 10 ; 8 endgroup newgroup BLUE_FOREST ; 37 diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm index f8635a5..e7c7a42 100644 --- a/constants/trainer_constants.asm +++ b/constants/trainer_constants.asm @@ -177,6 +177,7 @@ DEF KRIS EQU __trainer_class__ const MATT const SHAW const FREDERICK + const NORIKAGE trainerclass LASS ; 19 const CARRIE diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm index 355a612..26f3c48 100644 --- a/constants/wram_constants.asm +++ b/constants/wram_constants.asm @@ -238,7 +238,20 @@ DEF NUM_JOHTO_BADGES EQU const_value const VOLCANOBADGE const EARTHBADGE DEF NUM_KANTO_BADGES EQU const_value -DEF NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES + +; wNihonBadges:: + const_def + const BADGE1 + const BADGE2 + const BADGE3 + const BADGE4 + const BADGE5 + const BADGE6 + const BADGE7 + const BADGE8 +DEF NUM_NIHON_BADGES EQU const_value + +DEF NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES + NUM_NIHON_BADGES ; wPokegearFlags:: const_def diff --git a/data/events/engine_flags.asm b/data/events/engine_flags.asm index 317edd8..0626af8 100644 --- a/data/events/engine_flags.asm +++ b/data/events/engine_flags.asm @@ -61,6 +61,15 @@ EngineFlags: engine_flag wKantoBadges, MARSHBADGE engine_flag wKantoBadges, VOLCANOBADGE engine_flag wKantoBadges, EARTHBADGE + + engine_flag wNihonBadges, BADGE1 + engine_flag wNihonBadges, BADGE2 + engine_flag wNihonBadges, BADGE3 + engine_flag wNihonBadges, BADGE4 + engine_flag wNihonBadges, BADGE5 + engine_flag wNihonBadges, BADGE6 + engine_flag wNihonBadges, BADGE7 + engine_flag wNihonBadges, BADGE8 ; unown sets (see data/wild/unlocked_unowns.asm) engine_flag wUnlockedUnowns, UNLOCKED_UNOWNS_A_TO_K_F diff --git a/data/maps/attributes.asm b/data/maps/attributes.asm index aedc158..bc80d4c 100644 --- a/data/maps/attributes.asm +++ b/data/maps/attributes.asm @@ -832,6 +832,7 @@ ENDM map_attributes OldCityEarlsHouse, OLD_CITY_EARLS_HOUSE, $00, 0 map_attributes OldCityFamilyHouse, OLD_CITY_FAMILY_HOUSE, $00, 0 map_attributes SepiaSchool, SEPIA_SCHOOL, $00, 0 + map_attributes OldCityGym, OLD_CITY_GYM, $00, 0 map_attributes BlueForest, BLUE_FOREST, $00, 0 ; this is on its own for now. add connections later. diff --git a/data/maps/blocks.asm b/data/maps/blocks.asm index 6cc2686..860998f 100644 --- a/data/maps/blocks.asm +++ b/data/maps/blocks.asm @@ -1240,3 +1240,6 @@ WhiteCity_Blocks: Route66WhiteCityGate_Blocks: INCBIN "maps/NihonGateEastWest.ablk" + +OldCityGym_Blocks: + INCBIN "maps/OldCityGym.ablk" diff --git a/data/maps/maps.asm b/data/maps/maps.asm index 0d843b8..26e5772 100644 --- a/data/maps/maps.asm +++ b/data/maps/maps.asm @@ -703,6 +703,7 @@ MapGroup_OldCity: map OldCityEarlsHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_OLD_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_NONE map OldCityFamilyHouse, TILESET_TRADITIONAL_HOUSE, INDOOR, LANDMARK_OLD_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_NONE map SepiaSchool, TILESET_LAB, INDOOR, LANDMARK_OLD_CITY, MUSIC_VIOLET_CITY, FALSE, PALETTE_DAY, FISHGROUP_NONE + map OldCityGym, TILESET_TOWER, INDOOR, LANDMARK_OLD_CITY, MUSIC_GYM, FALSE, PALETTE_DAY, FISHGROUP_NONE assert_table_length NUM_OLD_CITY_MAPS MapGroup_BlueForest: diff --git a/data/maps/scripts.asm b/data/maps/scripts.asm index 1f20e82..665b2c6 100644 --- a/data/maps/scripts.asm +++ b/data/maps/scripts.asm @@ -588,8 +588,10 @@ INCLUDE "maps/SepiaSchool.asm" INCLUDE "maps/WhiteCity.asm" INCLUDE "maps/Route66WhiteCityGate.asm" +SECTION "Map Scripts 30", ROMX +INCLUDE "maps/OldCityGym.asm" -SECTION "Map Scripts 30", ROMX ; spillover +SECTION "Map Scripts 31", ROMX ; spillover INCLUDE "maps/TanobyRuins.asm" INCLUDE "maps/TanobyChambers.asm" INCLUDE "maps/NavalRockExterior.asm" diff --git a/data/pokemon/base_stats/chansey.asm b/data/pokemon/base_stats/chansey.asm index 65762d9..aa84867 100644 --- a/data/pokemon/base_stats/chansey.asm +++ b/data/pokemon/base_stats/chansey.asm @@ -6,7 +6,7 @@ db NORMAL, NORMAL ; type db 30 ; catch rate db 255 ; base exp - db NO_ITEM, LUCKY_EGG ; items + db LUCKY_PUNCH, LUCKY_EGG ; items db GENDER_F100 ; gender ratio db 100 ; unknown 1 db 40 ; step cycles to hatch diff --git a/data/pokemon/base_stats/ditto.asm b/data/pokemon/base_stats/ditto.asm index 9744613..0912f40 100644 --- a/data/pokemon/base_stats/ditto.asm +++ b/data/pokemon/base_stats/ditto.asm @@ -6,7 +6,7 @@ db NORMAL, NORMAL ; type db 35 ; catch rate db 61 ; base exp - db NO_ITEM, NO_ITEM ; items + db NO_ITEM, METAL_POWDER ; items db GENDER_UNKNOWN ; gender ratio db 100 ; unknown 1 db 20 ; step cycles to hatch diff --git a/data/pokemon/base_stats/kadabra.asm b/data/pokemon/base_stats/kadabra.asm index 23f11a6..b378278 100644 --- a/data/pokemon/base_stats/kadabra.asm +++ b/data/pokemon/base_stats/kadabra.asm @@ -6,7 +6,7 @@ db PSYCHIC_TYPE, PSYCHIC_TYPE ; type db 100 ; catch rate db 145 ; base exp - db NO_ITEM, NO_ITEM ; items + db NO_ITEM, TWISTEDSPOON ; items db GENDER_F25 ; gender ratio db 100 ; unknown 1 db 20 ; step cycles to hatch diff --git a/data/pokemon/base_stats/mimmeo.asm b/data/pokemon/base_stats/mimmeo.asm index 81e17ce..00f5ed8 100644 --- a/data/pokemon/base_stats/mimmeo.asm +++ b/data/pokemon/base_stats/mimmeo.asm @@ -6,7 +6,7 @@ db STEEL, STEEL ; type db 35 ; catch rate db 161 ; base exp - db NO_ITEM, NO_ITEM ; items + db NO_ITEM, METAL_POWDER ; items db GENDER_UNKNOWN ; gender ratio db 100 ; unknown 1 db 20 ; step cycles to hatch diff --git a/data/pokemon/base_stats/pikachu.asm b/data/pokemon/base_stats/pikachu.asm index 2a533a3..4782c73 100644 --- a/data/pokemon/base_stats/pikachu.asm +++ b/data/pokemon/base_stats/pikachu.asm @@ -6,7 +6,7 @@ db ELECTRIC, ELECTRIC ; type db 190 ; catch rate db 82 ; base exp - db NO_ITEM, BERRY ; items + db NO_ITEM, LIGHT_BALL ; items db GENDER_F50 ; gender ratio db 100 ; unknown 1 db 10 ; step cycles to hatch diff --git a/data/pokemon/base_stats/snubbull.asm b/data/pokemon/base_stats/snubbull.asm index c879dbd..e6f0bd2 100644 --- a/data/pokemon/base_stats/snubbull.asm +++ b/data/pokemon/base_stats/snubbull.asm @@ -6,7 +6,7 @@ db NORMAL, NORMAL ; type db 190 ; catch rate db 63 ; base exp - db NO_ITEM, NO_ITEM ; items + db NO_ITEM, POLKADOT_BOW ; items db GENDER_F75 ; gender ratio db 100 ; unknown 1 db 20 ; step cycles to hatch diff --git a/data/tilesets/tower_attributes.bin b/data/tilesets/tower_attributes.bin index 4c0ce3b2aa5e196790ffe899c5898257a25a97ea..49c48769e9bae6ffafb8fa9c3b7c3f5b333cd457 100644 GIT binary patch literal 1280 zcmeHDTMEE12&*4{_9(mm^@fBnQ%eUM{TNITP2#I{|84aHX71sw!GV-n^*`0FeVkAk zD)Y$8p(>hpWVUXrOs>D1Z-eFD$a{z9Y^-^U;{|HUD2mF;X#e*S|2-m18KR@;V0P=g HYF9h~kxLr! delta 52 ecmZqRYT($=z@)%I08C``nJmXFwD}(s6C(hrqXxeK diff --git a/data/tilesets/tower_collision.asm b/data/tilesets/tower_collision.asm index 30e74a5..d0da62e 100644 --- a/data/tilesets/tower_collision.asm +++ b/data/tilesets/tower_collision.asm @@ -38,8 +38,8 @@ tilecoll WALL, WALL, PIT, FLOOR ; 25 tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 26 tilecoll WARP_CARPET_UP, WARP_CARPET_UP, FLOOR, FLOOR ; 27 - tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 28 - tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29 + tilecoll FLOOR, FLOOR, WALL, FLOOR ; 28 + tilecoll FLOOR, WALL, FLOOR, FLOOR ; 29 tilecoll WALL, WALL, WALL, WALL ; 2a tilecoll WALL, HOP_LEFT, WALL, WALL ; 2b tilecoll HOP_RIGHT, WALL, WALL, WALL ; 2c @@ -62,3 +62,19 @@ tilecoll WALL, HOP_DOWN, WALL, WALL ; 3d tilecoll HOP_DOWN, WALL, WALL, WALL ; 3e tilecoll HOP_DOWN_RIGHT, WALL, WALL, WALL ; 3f + tilecoll WALL, WALL, FLOOR, FLOOR ; 40 + tilecoll WALL, WALL, FLOOR, FLOOR ; 41 + tilecoll WALL, WALL, FLOOR, FLOOR ; 42 + tilecoll WALL, WALL, FLOOR, FLOOR ; 43 + tilecoll WALL, WALL, FLOOR, FLOOR ; 44 + tilecoll WALL, WALL, FLOOR, FLOOR ; 45 + tilecoll WALL, WALL, FLOOR, FLOOR ; 46 + tilecoll WALL, WALL, FLOOR, FLOOR ; 47 + tilecoll WALL, WALL, FLOOR, FLOOR ; 48 + tilecoll WALL, WALL, FLOOR, FLOOR ; 49 + tilecoll WALL, FLOOR, WALL, FLOOR ; 4a + tilecoll FLOOR, WALL, FLOOR, WALL ; 4b + tilecoll FLOOR, WALL, FLOOR, FLOOR ; 4c + tilecoll WALL, FLOOR, FLOOR, FLOOR ; 4d + tilecoll WALL, WALL, FLOOR, WALL ; 4e + tilecoll WALL, WALL, WALL, FLOOR ; 4f diff --git a/data/tilesets/tower_metatiles.bin b/data/tilesets/tower_metatiles.bin index 4e0b9b2..dc59184 100644 --- a/data/tilesets/tower_metatiles.bin +++ b/data/tilesets/tower_metatiles.bin @@ -1,2 +1,4 @@  @ !!A1A1!!!!!!@ A1A1 - A1A1A1A1A1A1A1A1A1A1!!!!!!!!A1A1!!!! -.=><>MN./>?,NO()89*+:;()89*+:;MN]^NO^_A1A1@ !!A1A1!!@ !!!!^^^^"#23&'67"#23&'67PQPQPQPQPQPQPQPQ$$$$  "#23!!67"#!!2367%545%545%545%545 ^^  FV GW PQPQRSRSBCHZ[!XL\67IBCY!Z[L\67JKZ[L\67JKZ[L\67DETU!!!!PPPPPPPPFV   GW  \ No newline at end of file + A1A1A1A1A1A1A1A1A1A1!!!!!!!!A1A1!!!! -.=><>MN./>?,NO()89*+:;()89*+:;MN]^NO^_A1A1@ !!A1A1!!@ !!!!^^^^"#23&'67"#23&'67PQPQPQPQPQPQPQPQ$$$$  "#23!!67"#!!2367%545%545%545%545 ^^   + GHWX + GHWXFV GW PQPQRSRSBCHZ[!XL\67IBCY!Z[L\67JKZ[L\67JKZ[L\67DETU!!!!PPPPPPPPFV   GW 0123!!4501!!2345EFUV!!55EF!!UV55IJYZ!!55IJ!!YZ55KL[\!!55KL!![\556789!!5567!!8955!!^^!!^^!!!!!!!!!!!!!!!! \ No newline at end of file diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index a7f4dce..5f9826b 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -1359,20 +1359,17 @@ BirdKeeperGroup: db -1 ; end next_list_item ; BIRD_KEEPER (19) - db "FREDERICK@", TRAINERTYPE_MOVES ; Reference to the Frederick II of Hohenstaufen, one of the earliest knowledgable Falconers in history + db "FRED@", TRAINERTYPE_MOVES ; Reference to the Frederick II of Hohenstaufen, one of the earliest knowledgable Falconers in history db 50 - dw TREBIR - dw PERISH_SONG, ENCORE, SING, WING_ATTACK + dw AERCROW + dw MEGAPHONE, WING_ATTACK, WHIRLWIND, PETAL_DANCE db 50 - dw FEAROW - dw MIRROR_MOVE, DOUBLE_EDGE, STEEL_WING, DRILL_PECK - db 50 - dw HONCHKROW - dw PURSUIT, DRILL_PECK, NIGHT_SHADE, QUICK_ATTACK + dw CARETORKER + dw SOFTBOILED, WHIRLWIND, HEAL_BELL, DRILL_PECK db -1 ; end next_list_item ; BIRD_KEEPER (19) - db "NORIKAGE@", TRAINERTYPE_MOVES ; Asakura Norikage 朝倉 教景 (1476 - 1555), brought Goshawk breeding to Asakura Clan in the 16th Century. + db "KAGE@", TRAINERTYPE_MOVES ; Asakura Norikage 朝倉 教景 (1476 - 1555), brought Goshawk breeding to Asakura Clan in the 16th Century. db 50 dw DELIBIRD dw PRESENT, ICY_WIND, QUICK_ATTACK, THIEF diff --git a/data/types/badge_type_boosts.asm b/data/types/badge_type_boosts.asm index fb353df..89bf0db 100644 --- a/data/types/badge_type_boosts.asm +++ b/data/types/badge_type_boosts.asm @@ -18,4 +18,15 @@ BadgeTypeBoosts: db PSYCHIC_TYPE ; MARSHBADGE db FIRE ; VOLCANOBADGE db GROUND ; EARTHBADGE +; Nihon Badges +; Unsure what to do with these, so let's leave it for now. +; South's will boost Fairy, though. + db CURSE_TYPE + db CURSE_TYPE + db CURSE_TYPE + db CURSE_TYPE + db CURSE_TYPE + db CURSE_TYPE + db CURSE_TYPE + db CURSE_TYPE db -1 ; end diff --git a/engine/menus/intro_menu.asm b/engine/menus/intro_menu.asm index 262490b..3c7f917 100644 --- a/engine/menus/intro_menu.asm +++ b/engine/menus/intro_menu.asm @@ -204,6 +204,7 @@ _ResetWRAM: ld [wJohtoBadges], a ld [wKantoBadges], a + ld [wNihonBadges], a ld [wCoins], a ld [wCoins + 1], a @@ -611,7 +612,7 @@ Continue_UnknownGameTime: Continue_DisplayBadgeCount: push hl ld hl, wJohtoBadges - ld b, 2 + ld b, 3 call CountSetBits pop hl ld de, wNumSetBits diff --git a/engine/pokegear/radio.asm b/engine/pokegear/radio.asm index 720b2d7..26a9e75 100644 --- a/engine/pokegear/radio.asm +++ b/engine/pokegear/radio.asm @@ -1073,7 +1073,7 @@ PeoplePlaces4: ; People bit STATUSFLAGS_HALL_OF_FAME_F, a jr z, .ok ld hl, PnP_HiddenPeople_BeatE4 - ld a, [wKantoBadges] + ld a, [wKantoBadges] ; TODO: See if a Nihon equivalent is warranted. cp %11111111 ; all badges jr nz, .ok ld hl, PnP_HiddenPeople_BeatKanto diff --git a/gfx/tilesets.asm b/gfx/tilesets.asm index efa76b0..a31ab87 100644 --- a/gfx/tilesets.asm +++ b/gfx/tilesets.asm @@ -89,15 +89,6 @@ INCLUDE "data/tilesets/cave_collision.asm" SECTION "Tileset Data 3", ROMX -TilesetTowerGFX:: -INCBIN "gfx/tilesets/tower.2bpp.lz" - -TilesetTowerMeta:: -INCBIN "data/tilesets/tower_metatiles.bin" - -TilesetTowerColl:: -INCLUDE "data/tilesets/tower_collision.asm" - TilesetLabGFX:: INCBIN "gfx/tilesets/lab.2bpp.lz" @@ -426,9 +417,6 @@ INCBIN "data/tilesets/pokecom_center_attributes.bin" TilesetBattleTowerInsideAttr:: INCBIN "data/tilesets/battle_tower_inside_attributes.bin" -TilesetTowerAttr:: -INCBIN "data/tilesets/tower_attributes.bin" - SECTION "Tileset Data 11", ROMX @@ -637,4 +625,17 @@ TilesetNihonWhiteCityMeta:: INCBIN "data/tilesets/nihon_whitecity_metatiles.bin" TilesetNihonWhiteCityColl:: -INCLUDE "data/tilesets/nihon_whitecity_collision.asm" \ No newline at end of file +INCLUDE "data/tilesets/nihon_whitecity_collision.asm" + +; Inclusion of NEW things made it so I had to move it. THE DOMAIN EXPANSION, WAHOO! +TilesetTowerGFX:: +INCBIN "gfx/tilesets/tower.2bpp.lz" + +TilesetTowerMeta:: +INCBIN "data/tilesets/tower_metatiles.bin" + +TilesetTowerColl:: +INCLUDE "data/tilesets/tower_collision.asm" + +TilesetTowerAttr:: +INCBIN "data/tilesets/tower_attributes.bin" diff --git a/gfx/tilesets/tower.png b/gfx/tilesets/tower.png index 71be4f13a3a446cc272df64b421c8a0adaa8329e..6ffbcc0f7adb29a025acfe39a61ca85b518aede4 100644 GIT binary patch literal 4169 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 C4|=Nr delta 1485 zcmV;;1v2`{Akzzw7=Ho)0002FcR#NH00o*!L_t(|+U?fuPg7SI0PyF+y-*6Xy?9Hc zW&~?tSR!NdW#J{IWw!>=buILC3R{E)i1dSdNtW%~V8fR&qeZU-<-;nr3-^#Y7nc~l zizOQxvn(+t?yH%bERoEciu*7Z=-D}KdFz+`1DvM4?d^}}d4JAx&b<@}0l=6(V?i8M zQEG^E06-3=0~lbZ(7q^|mEI$CJm+OuZX)C%|Xb~mp9PnQA4gq%*EYnH0hK%fyF7+(y3Oa4uP zQ3}3#>=#`((|>?t#Q|{30MjC>@5{1%Zl%cbG(8eGq1wJ8_YWG+pfMjXAxLgCI2R9&~L-bg8m}og$WLq7K*25p12P|#W~EhqNCDAGL4QM(fstaxt-8~TwcH1gz4TbG zY`{1imAQ~2rI(wfh|wcWQ2+(XHbpdxViY3_>&G-eE?tMed2FF1fT2537wG!@N5iaL z3bKBf1Yd%s=hL?eo7Zw`x!;SX2phWu`rr5PJG{t9t%3gwXwMCyGi;H8^ zERv+!vcAr+c_{)w7aDr=X|WVkfKAhsJDp$=GJk-ze5}*w69f*?8tC+LpWU5y_KqtV zKsO{D4$7Y{ieL#!4Ad?(6|q^YN)ZX#n-(^?IFxEsttnCDBxDJU(icN;iz(5ffD}B1 z@klK|5reBDM1x!3f8kC)aA*SKW3=VeBOdmo_5BBi2R6ls4_G)P+9rl23QKgOh`cQa#eX_b zuL|mIjL-Vw?0!qzT|4%WdsSO@E19e*&OX;&MxD-D{ak$Z$BOoR;NtbV|g2fX*M4b%FQ z2dzz2p=0xdxZJS%0cT$m+s{;g*D!wF=CnDAf2bW@^L;tYcxCzb%YWAB`p!GY9WQ?K z2(QU70G4*xcw*n!K21Arv*UbxCL7GSWbbXe$E)iT4jbk!G=H6yf`h^Q!GH53`I>g= zS;Ff2@a<4mku&^QO=XYVtn2%Ky*uweFlEV_=2f9x6a3;vj2q(GqO!+)I=c_|yt*05 zZ2|NWzP1<>p*SnW_|-2pw received" + line "XBADGE." + done + +WalkerText_AfterBattle: + text "Hm, you conquered" + line "JOHTO and KANTO," + cont "huh?" + + para "Well, I doubt" + line "you'll get much" + cont "out of my BADGE." + + para "Did you know they" + line "boost the power" + cont "of your moves," + cont "though?" + + para "My son has been" + line "helping your bird" + cont "#MON all along!" + cont "What a MURKROW," + cont "eh?" + + para "Take this and be" + line "on your way." + done + +WalkerText_SteelWingGaffe: + text "TM47 contains" + line "STEEL WING." + + para "Huh? It's a STEEL" + line "move? Sure it is!" + + para "Didn't you see ol'" + line "SKARMORY here so-" + cont "aring with it?" + + para "Lemme have this," + line "pal! C'mon!" + done + +WalkerText_RegularText: + text "There's a tonna" + line "bird #MON out" + cont "there, ." + + para "To get ahead, you" + line "can't just use" + cont "those, though." + + para "They're not too" + line "different to FLY-" + cont "ING #MON, see?" + + para "That's how LANCE" + line "beat me outta the" + cont "ELITE FOUR! That" + cont "larrikin!" ; Ancient slang word meaning "troublemaker", essentially. Came from Cornish/Black Country dialect, persists in Australian English. + done + +TrainerBirdkeeperMatt: + trainer BIRD_KEEPER, MATT, EVENT_BEAT_BIRD_KEEPER_MATT, BirdkeeperMattSeenText, BirdkeeperMattBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext BirdkeeperMattAfterBattleText + waitbutton + closetext + end + +BirdkeeperMattSeenText: + text "Oh! A JOHTO kid!" + para "Let's give you" + line "a welcome you'll" + cont "never forget!" + done + +BirdkeeperMattBeatenText: + text "Kyaaargh!" + done + +BirdkeeperMattAfterBattleText: + text "Bird #MON make" + line "great partners," + cont "huh?" + + para "They grow with" + line "you." + done + +TrainerBirdkeeperShaw: + trainer BIRD_KEEPER, SHAW, EVENT_BEAT_BIRD_KEEPER_SHAW, BirdkeeperShawSeenText, BirdkeeperShawBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext BirdkeeperShawAfterBattleText + waitbutton + closetext + end + +BirdkeeperShawSeenText: + text "It's time for the" + line "TREBIR opera!" + done + +BirdkeeperShawBeatenText: + text "Oh, dear!" + done + +BirdkeeperShawAfterBattleText: + text "Aren't TREBIR's" + line "songs marvelous?" + + para "Huh? What's with" + line "that look on your" + cont "face?" ; It knows Perish song. Shaw is going to die. + done + +TrainerBirdkeeperFrederick: + trainer BIRD_KEEPER, FREDERICK, EVENT_BEAT_BIRD_KEEPER_FREDERICK, BirdkeeperFrederickSeenText, BirdkeeperFrederickBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext BirdkeeperFrederickAfterBattleText + waitbutton + closetext + end + +BirdkeeperFrederickSeenText: + text "Careful, there!" + + para "You almost fell!" + done + +BirdkeeperFrederickBeatenText: + text "Wh-whoa!" + done + +BirdkeeperFrederickAfterBattleText: + text "Seems I'm the" + line "one who needs to" + cont "be careful!" + + para "CARETORKER alm-" + line "ost knocked me" + cont "off!" + done + +TrainerBirdkeeperNorikage: + trainer BIRD_KEEPER, NORIKAGE, EVENT_BEAT_BIRD_KEEPER_NORIKAGE, BirdkeeperNorikageSeenText, BirdkeeperNorikageBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext BirdkeeperNorikageAfterBattleText + waitbutton + closetext + end + +BirdkeeperNorikageSeenText: + text "Falconry is an" + line "art form few can" + cont "appreciate." + + para "Let me show you!" + done + +BirdkeeperNorikageBeatenText: + text "It seems you're" + line "aware!" + done + +BirdkeeperNorikageAfterBattleText: + text "My ancestors" + line "brought falconry" + cont "to NIHON." + + para "I shall conti-" + line "nue their legacy!" + done + +OldGymStatue: + checkflag ENGINE_BADGE1 + iftrue .Beaten + jumpstd GymStatue1Script +.Beaten: + gettrainername STRING_BUFFER_4, WALKER, WALKER1 + jumpstd GymStatue2Script + +OldGymGuideScript: + faceplayer + checkevent EVENT_BEAT_LEADER_WALKER + iftrue .OldGymGuideWinScript + opentext + writetext OldGymGuideText + waitbutton + closetext + end + +.OldGymGuideWinScript: + opentext + writetext OldGymGuideWinText + waitbutton + closetext + end + +OldGymGuideText: + text "Yo, champ! Fancy" + line "seeing you here!" + + para "WALKER is one to-" + line "ugh cookie. Even" + cont "in the NIHON LEA-" + cont "GUE, he's feared!" + + para "Remember FALKNER?" + line "This guy raised" + cont "him!" + + para "Huh? Advice? You" + line "still want it," + cont "after all this" + cont "time?" + + para "Then I'll say this!" + + para "The apple doesn't" + line "fall far from the" + cont "tree!" + done + +OldGymGuideWinText: + text "Woweee, you got" + line "'em!" + + para "Just another re-" + line "gion for you to" + cont "conquer, huh?" + done + +OldCityGym_MapEvents: + db 0, 0 ; filler + + def_warp_events + warp_event 5, 19, OLD_CITY, 5 + warp_event 6, 19, OLD_CITY, 6 + + def_coord_events + + def_bg_events + bg_event 4, 17, BGEVENT_READ, OldGymStatue + bg_event 7, 17, BGEVENT_READ, OldGymStatue + + def_object_events + object_event 5, 2, SPRITE_WALKER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, OldGymWalkerScript, -1 + object_event 10, 13, SPRITE_ROCKER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 2, TrainerBirdkeeperMatt, -1 + object_event 1, 13, SPRITE_ROCKER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 2, TrainerBirdkeeperShaw, -1 + object_event 2, 8, SPRITE_ROCKER, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 2, TrainerBirdkeeperFrederick, -1 + object_event 9, 8, SPRITE_ROCKER, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 2, TrainerBirdkeeperNorikage, -1 + object_event 7, 18, SPRITE_GYM_GUIDE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, OldGymGuideScript, -1 diff --git a/ram/wram.asm b/ram/wram.asm index f98f982..bc452d4 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -2989,6 +2989,7 @@ wCoins:: dw wBadges:: wJohtoBadges:: flag_array NUM_JOHTO_BADGES wKantoBadges:: flag_array NUM_KANTO_BADGES +wNihonBadges:: flag_array NUM_NIHON_BADGES wTMsHMs:: ds NUM_TMS + NUM_HMS