diff --git a/README.md b/README.md index 6829e8f..ed764be 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Numerous new maps are available, featuring new locations, the iconic Sevii Islan Additionally, there have been many wild encounter tweaks. View this document for details. (will link when hack is in a playable state) -- Johto wild encounters have been changed to be more weighted towards Johto Pokemon; eg. Murkrow is available about Ecruteak at night, Misdreavus largely replaces Gastly, etc. +- Johto wild encounters have been changed to be more weighted towards Johto Pokemon; eg. Murkrow is available about Ecruteak at night, Misdreavus largely replaces Gastly, etc. Levels have been adjusted. - Kanto wild encounters have generally higher levels to aid in improving the level curve. - Rock Smash now has variable and larger wild data, featuring rare, location-based Pokemon (eg. Corsola on the shore), and level adjustments to make them more appropriate. - Viridian Forest has been restored. diff --git a/constants/event_flags.asm b/constants/event_flags.asm index 02a77ff..03dfa20 100644 --- a/constants/event_flags.asm +++ b/constants/event_flags.asm @@ -882,6 +882,7 @@ const EVENT_BEAT_LASS_CONNIE3 const EVENT_BEAT_LASS_DANA2 const EVENT_BEAT_LASS_DANA3 + const EVENT_BEAT_LASS_IKUE ; Hiker const EVENT_BEAT_HIKER_ANTHONY2 const EVENT_BEAT_HIKER_RUSSELL diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm index 5da91f2..d8caeef 100644 --- a/constants/trainer_constants.asm +++ b/constants/trainer_constants.asm @@ -192,6 +192,7 @@ DEF KRIS EQU __trainer_class__ const DANA3 const DANA4 const DANA5 + const IKUE ; Name taken from LGPE, referencing Pikachu's voice actor, Ikue Otani. Technically exists in Picnicker Brooke, but it's more convenient to put her in Viridian Forest, so... trainerclass JANINE ; 1a const JANINE1 diff --git a/data/maps/outdoor_sprites.asm b/data/maps/outdoor_sprites.asm index 89e910b..d171cdc 100644 --- a/data/maps/outdoor_sprites.asm +++ b/data/maps/outdoor_sprites.asm @@ -85,7 +85,7 @@ ViridianGroupSprites: db SPRITE_WILL db SPRITE_KAREN db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_LASS db SPRITE_BIG_LAPRAS db SPRITE_BIG_ONIX db SPRITE_SUDOWOODO diff --git a/data/tilesets/forest_kanto_attributes.bin b/data/tilesets/forest_kanto_attributes.bin index 560670a..3042756 100644 Binary files a/data/tilesets/forest_kanto_attributes.bin and b/data/tilesets/forest_kanto_attributes.bin differ diff --git a/data/tilesets/forest_kanto_collision.asm b/data/tilesets/forest_kanto_collision.asm index b17b1f2..f8394eb 100644 --- a/data/tilesets/forest_kanto_collision.asm +++ b/data/tilesets/forest_kanto_collision.asm @@ -64,3 +64,14 @@ tilecoll FLOOR, FLOOR, WALL, WALL ; 3f tilecoll WALL, FLOOR, WALL, FLOOR ; 40 tilecoll FLOOR, WALL, FLOOR, WALL ; 41 + tilecoll WALL, FLOOR, WALL, FLOOR ; 42 + tilecoll FLOOR, WALL, FLOOR, WALL ; 43 + tilecoll HEADBUTT_TREE, TALL_GRASS, HEADBUTT_TREE, TALL_GRASS ; 44 + tilecoll TALL_GRASS, HEADBUTT_TREE, TALL_GRASS, HEADBUTT_TREE ; 45 + tilecoll WALL, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 46 + tilecoll TALL_GRASS, TALL_GRASS, HEADBUTT_TREE, HEADBUTT_TREE ; 47 + tilecoll HEADBUTT_TREE, HEADBUTT_TREE, TALL_GRASS, TALL_GRASS ; 48 + tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 49 + tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 4a + tilecoll TALL_GRASS, TALL_GRASS, TALL_GRASS, TALL_GRASS ; 4b + tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 4c diff --git a/data/tilesets/forest_kanto_metatiles.bin b/data/tilesets/forest_kanto_metatiles.bin index 05ce09a..63bb5e8 100644 Binary files a/data/tilesets/forest_kanto_metatiles.bin and b/data/tilesets/forest_kanto_metatiles.bin differ diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index 0d22624..9673034 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -1310,6 +1310,22 @@ LassGroup: dw GOLDUCK dw DISABLE, SURF, PSYCHIC_M, SCREECH db -1 ; end + + next_list_item ; LASS (2) + db "IKUE@", TRAINERTYPE_ITEM_MOVES + db 43 + dw NIDOQUEEN ; From the Yellow Lass + db NO_ITEM + db BODY_SLAM, SCRATCH, BLIZZARD, THUNDERBOLT + db 43 + dw GOROTORA ; Basically the beta Pikaclone counterpart, right? + db NO_ITEM + db THUNDERBOLT, SCARY_FACE, QUICK_ATTACK, PURSUIT + db 45 + dw PIKACHU ; And a pipe bomb. + db LIGHT_BALL + db THUNDERBOLT, QUICK_ATTACK, DOUBLE_EDGE, AGILITY ; Moves from Johto anime + db -1 ; end end_list_items @@ -2520,6 +2536,56 @@ BugCatcherGroup: db 42 dw BUTTERFREE db -1 ; end + + next_list_item ; BUG_CATCHER (21) + db "DANE@", TRAINERTYPE_NORMAL ; From HGSS, + Carapthor + db 44 + dw BEEDRILL + db 48 + dw BUTTERFREE + db 44 + dw CARAPTHOR + db -1 ; end + + next_list_item ; BUG_CATCHER (21) + db "DION@", TRAINERTYPE_NORMAL ; From HGSS, + Ledian and Barreau + db 44 + dw BARREAU ; Should have screens, making the next two Pokemon...less awful. + db 42 + dw ARIADOS + db 42 + dw LEDIAN + db -1 ; end + + next_list_item ; BUG_CATCHER (21) + db "STACEY@", TRAINERTYPE_NORMAL ; In HGSS, this trainer has 3 Metapod. I have sense, so that won't happen here. Instead, we can have some fun. + db 41 + dw LEDIAN ; At this level, it only knows screens, letting it do useful things instead of 1 damage with Swift. + db 43 + dw SCYTHER + db 43 + dw VENOMOTH + db -1 ; end + + next_list_item ; BUG_CATCHER (21) + db "ELLIS@", TRAINERTYPE_NORMAL ; From HGSS. Fine...may alter later. + db 42 + dw WEEDLE + db 44 + dw KAKUNA + db 53 + dw BEEDRILL + db -1 ; end + + next_list_item ; BUG_CATCHER (21) + db "ABNER@", TRAINERTYPE_NORMAL ; From HGSS + db 42 + dw BUTTERFREE + db 42 + dw BEEDRILL + db 45 + dw PIKACHU + db -1 ; end end_list_items diff --git a/maps/Route2.asm b/maps/Route2.asm index 1115bed..8e3b4a8 100644 --- a/maps/Route2.asm +++ b/maps/Route2.asm @@ -152,7 +152,7 @@ Route2_MapEvents: warp_event 16, 27, ROUTE_2_GATE, 1 warp_event 17, 27, ROUTE_2_GATE, 2 warp_event 12, 7, DIGLETTS_CAVE, 3 - warp_event 5, 33, VIRIDIAN_FOREST_VIRIDIAN_GATE, 1 + warp_event 5, 33, VIRIDIAN_FOREST_VIRIDIAN_GATE, 3 warp_event 2, 11, VIRIDIAN_FOREST_PEWTER_GATE, 3 warp_event 3, 11, VIRIDIAN_FOREST_PEWTER_GATE, 4 diff --git a/maps/ViridianForest.ablk b/maps/ViridianForest.ablk index dbb6dcd..fab4f54 100644 Binary files a/maps/ViridianForest.ablk and b/maps/ViridianForest.ablk differ diff --git a/maps/ViridianForest.asm b/maps/ViridianForest.asm index c02538b..60a64b4 100644 --- a/maps/ViridianForest.asm +++ b/maps/ViridianForest.asm @@ -67,9 +67,33 @@ TrainerBugCatcherAbner: closetext end +; I wanted a trainer to serve as the Lass from Yellow, so I took Ikue (LGPE) and the Yellow Lass trainer, put them together, and put her in the same area. +; Restores a removed reference to Ikue Otani from the Crystal localisation without removing the old name, in a cosmic sort of way. +TrainerLassIkue: + trainer LASS, IKUE, EVENT_BEAT_LASS_IKUE, LassIkueSeenText, LassIkueBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext LassIkueAfterBattleText + waitbutton + closetext + end + +LassIkueSeenText: + text "PIKACHU is so" + line "cute, right?" + done + +LassIkueBeatenText: + text "I wonder if" + line "you recognise" + cont "my voice…" + done + BugCatcherDaneSeenText: text "Welcome to" - line "Viridian Forest." + line "VIRIDIAN FOREST." cont "Enjoy my Bug-type" cont "#MON!" done @@ -88,7 +112,7 @@ BugCatcherDaneAfterBattleText: BugCatcherDionSeenText: text "Shh! Be quiet! The" - line "bug #mon will" + line "bug #MON will" cont "run away!" done @@ -168,14 +192,38 @@ BugCatcherAbnerAfterBattleText: cont "all look cute." done +LassIkueAfterBattleText: + text "My PIKACHU is" + line "really strong," + cont "huh?" + + para "I don't know" + line "why. Did I give" + cont "it something?" + done + +ViridianForestSignScript1: + opentext + writetext ViridianForestSignText1 + waitbutton + closetext + end + ViridianForestSignText1: text "Leaving" line "VIRIDIAN FOREST" cont "PEWTER CITY ahead" done +ViridianForestSignScript2: + opentext + writetext ViridianForestSignText2 + waitbutton + closetext + end + ViridianForestSignText2: - text "Trainer Tips" + text "TRAINER TIPS" para "Hold on to that" line "BIG MUSHROOM!" @@ -185,8 +233,15 @@ ViridianForestSignText2: cont "for useless items!" done +ViridianForestSignScript3: + opentext + writetext ViridianForestSignText3 + waitbutton + closetext + end + ViridianForestSignText3: - text "Trainer Tips" + text "TRAINER TIPS" para "Weaken #MON" line "before trying" @@ -196,20 +251,41 @@ ViridianForestSignText3: line "they may escape!" done +ViridianForestSignScript4: + opentext + writetext ViridianForestSignText4 + waitbutton + closetext + end + ViridianForestSignText4: text "For poison, use" line "ANTIDOTE! Get it" cont "at #MON MARTs!" done +ViridianForestSignScript5: + opentext + writetext ViridianForestSignText5 + waitbutton + closetext + end + ViridianForestSignText5: text "TRAINER TIPS" - para "Poison-type #-" - line "mon can't be poi-" - cont "soned themselves!" + para "Poison and steel" ; tweaked to include info on the "new" steel-type. + line "#MON can't be" + cont "poisoned!" done +ViridianForestSignScript6: + opentext + writetext ViridianForestSignText6 + waitbutton + closetext + end + ViridianForestSignText6: text "TRAINER TIPS" @@ -232,12 +308,12 @@ ViridianForest_MapEvents: def_coord_events def_bg_events - bg_event 4, 6, BGEVENT_READ, ViridianForestSignText1 - bg_event 6, 26, BGEVENT_READ, ViridianForestSignText2 - bg_event 28, 19, BGEVENT_READ, ViridianForestSignText3 - bg_event 18, 34, BGEVENT_READ, ViridianForestSignText4 - bg_event 26, 42, BGEVENT_READ, ViridianForestSignText5 - bg_event 20, 44, BGEVENT_READ, ViridianForestSignText6 + bg_event 4, 6, BGEVENT_READ, ViridianForestSignScript1 + bg_event 6, 26, BGEVENT_READ, ViridianForestSignScript2 + bg_event 29, 19, BGEVENT_READ, ViridianForestSignScript3 + bg_event 18, 34, BGEVENT_READ, ViridianForestSignScript4 + bg_event 26, 42, BGEVENT_READ, ViridianForestSignScript5 + bg_event 20, 44, BGEVENT_READ, ViridianForestSignScript6 bg_event 32, 44, BGEVENT_ITEM + MAX_ETHER, EVENT_VIRIDIAN_FOREST_HIDDEN_MAX_ETHER bg_event 18, 43, BGEVENT_ITEM + FULL_HEAL, EVENT_VIRIDIAN_FOREST_HIDDEN_FULL_HEAL bg_event 4, 43, BGEVENT_ITEM + TINYMUSHROOM, EVENT_VIRIDIAN_FOREST_HIDDEN_TINYMUSHROOM @@ -250,6 +326,7 @@ ViridianForest_MapEvents: object_event 32, 21, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 4, TrainerBugCatcherStacey, -1 object_event 31, 4, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 3, TrainerBugCatcherEllis, -1 object_event 5, 24, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 4, TrainerBugCatcherAbner, -1 + object_event 3, 43, SPRITE_LASS, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 4, TrainerLassIkue, -1 object_event 14, 31, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, DIRE_HIT, 1, EVENT_ROUTE_2_DIRE_HIT object_event 3, 33, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, MAX_POTION, 1, EVENT_ROUTE_2_MAX_POTION diff --git a/maps/ViridianForestPewterGate.asm b/maps/ViridianForestPewterGate.asm index b0adb89..ac76be1 100644 --- a/maps/ViridianForestPewterGate.asm +++ b/maps/ViridianForestPewterGate.asm @@ -11,10 +11,36 @@ ViridianForestPewterGateOfficerScript: ViridianForestPewterGateOfficerText: text "Are you headed" - line "to Pewter City?" + line "to PEWTER CITY?" para "Be sure to check" - line "out the Museum!" + line "out the MUSEUM!" + done + +ViridianForestPewterGateYoungsterScript: + jumptextfaceplayer ViridianForestPewterGateYoungsterText + +ViridianForestPewterGateYoungsterText: + text "Many #MON live" + line "only in forests " + cont "and caves." + + para "You need to look" + line "everywhere to get" + cont "different kinds!" + done + +ViridianForestPewterGateGrampsScript: + jumptextfaceplayer ViridianForestPewterGateGrampsText + +ViridianForestPewterGateGrampsText: + text "Have you noticed" + line "the bushes on the" + cont "roadside?" + + para "They can be cut" + line "down by a special" + cont "#MON move." done ViridianForestPewterGate_MapEvents: @@ -32,3 +58,5 @@ ViridianForestPewterGate_MapEvents: def_object_events object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, ViridianForestPewterGateOfficerScript, -1 + object_event 3, 5, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WANDER, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, ViridianForestPewterGateYoungsterScript, -1 + object_event 6, 3, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, ViridianForestPewterGateGrampsScript, -1 diff --git a/maps/ViridianForestViridianGate.asm b/maps/ViridianForestViridianGate.asm index 3cb067f..2075bfd 100644 --- a/maps/ViridianForestViridianGate.asm +++ b/maps/ViridianForestViridianGate.asm @@ -10,11 +10,20 @@ ViridianForestViridianGateOfficerScript: jumptextfaceplayer ViridianForestViridianGateOfficerText ViridianForestViridianGateOfficerText: - text "Be careful," - line "Viridian Forest" + text "Are you going to" + line "VIRIDIAN FOREST?" + para "Be careful, it's" + line "a natural maze!" + done - para "is a natural" - line "maze!" +ViridianForestYoungsterTextScript: + jumptextfaceplayer ViridianForestYoungsterText + +ViridianForestYoungsterText: + text "RATTATA may be" + line "small, but its" + cont "bite is wicked!" + cont "Do you have one?" done ViridianForestViridianGate_MapEvents: @@ -32,3 +41,4 @@ ViridianForestViridianGate_MapEvents: def_object_events object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, ViridianForestViridianGateOfficerScript, -1 + object_event 6, 3, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WANDER, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, ViridianForestYoungsterTextScript, -1