summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIIMarckus <iimarckus@gmail.com>2018-10-03 16:44:02 -0600
committerIIMarckus <iimarckus@gmail.com>2018-10-03 16:44:02 -0600
commit3568763828fcb25e13e6057d35bdefc4bc14bf5b (patch)
tree87e39fa7feca6739ec3c83734a94497400641b1d
parentb5cc9d4f4cda83d80190b39cf139d6cb1539f7c9 (diff)
Add map objects from bank 4D.
-rw-r--r--constants/event_flags.asm18
-rw-r--r--constants/map_constants.asm4
-rw-r--r--main.asm13
-rw-r--r--maps/PewterCity.asm192
-rw-r--r--maps/Route2.asm175
-rw-r--r--maps/Route43.asm447
-rw-r--r--maps/Route44.asm428
-rw-r--r--maps/Route45.asm424
-rw-r--r--maps/Route46.asm214
9 files changed, 1897 insertions, 18 deletions
diff --git a/constants/event_flags.asm b/constants/event_flags.asm
index 341298a4..ad423568 100644
--- a/constants/event_flags.asm
+++ b/constants/event_flags.asm
@@ -668,19 +668,19 @@
const EVENT_TULLY_ASKED_FOR_PHONE_NUMBER
const EVENT_290 ; 290
const EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
- const EVENT_292
+ const EVENT_BRENT_READY_FOR_REMATCH
const EVENT_TIFFANY_ASKED_FOR_PHONE_NUMBER
- const EVENT_294
+ const EVENT_TIFFANY_READY_FOR_REMATCH
const EVENT_VANCE_ASKED_FOR_PHONE_NUMBER
- const EVENT_296
+ const EVENT_VANCE_READY_FOR_REMATCH
const EVENT_WILTON_ASKED_FOR_PHONE_NUMBER
- const EVENT_298
+ const EVENT_WILTON_READY_FOR_REMATCH
const EVENT_KENJI_ASKED_FOR_PHONE_NUMBER
- const EVENT_29A
+ const EVENT_KENJI_READY_FOR_REMATCH
const EVENT_PARRY_ASKED_FOR_PHONE_NUMBER
- const EVENT_29C
+ const EVENT_PARRY_READY_FOR_REMATCH
const EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
- const EVENT_BUENA_OFFERED_HER_PHONE_NUMBER_NO_BLUE_CARD
+ const EVENT_ERIN_READY_FOR_REMATCH
const EVENT_29F
; Ruins Of Alph puzzles
const EVENT_SOLVED_HO_OH_PUZZLE ; 2a0
@@ -1787,11 +1787,11 @@
const EVENT_ROUTE_43_MAX_ETHER
const EVENT_ROUTE_44_MAX_REVIVE
const EVENT_ROUTE_44_ULTRA_BALL
- const EVENT_ROUTE_45_NUGGET
+ const EVENT_ROUTE_45_X_SPECIAL
const EVENT_ROUTE_45_REVIVE
const EVENT_ROUTE_45_ELIXER
const EVENT_ROUTE_45_MAX_POTION
- const EVENT_ROUTE_46_X_SPEED
+ const EVENT_ROUTE_46_DIRE_HIT
; Johto people
const EVENT_RIVAL_NEW_BARK_TOWN
const EVENT_RIVAL_CHERRYGROVE_CITY
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index bd120e94..d9bd0ed0 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -422,7 +422,7 @@ ENDM
map_const VIRIDIAN_MART, 4, 6 ; 8
map_const VIRIDIAN_POKECENTER_1F, 4, 5 ; 9
map_const VIRIDIAN_POKECENTER_2F_BETA, 4, 8 ; 10
- map_const ROUTE_2_NUGGET_SPEECH_HOUSE, 4, 4 ; 11
+ map_const ROUTE_2_NUGGET_HOUSE, 4, 4 ; 11
map_const ROUTE_2_GATE, 4, 5 ; 12
map_const VICTORY_ROAD_GATE, 9, 10 ; 13
@@ -440,7 +440,7 @@ ENDM
map_const ROUTE_26_HEAL_SPEECH_HOUSE, 4, 4 ; 10
map_const ROUTE_26_DAY_OF_WEEK_SIBLINGS_HOUSE, 4, 4 ; 11
map_const ROUTE_27_SANDSTORM_HOUSE, 4, 4 ; 12
- map_const ROUTE_29_46_GATE, 4, 5 ; 13
+ map_const ROUTE_29_ROUTE_46_GATE, 4, 5 ; 13
newgroup ; 25
diff --git a/main.asm b/main.asm
index 8dd66443..4cfef6e8 100644
--- a/main.asm
+++ b/main.asm
@@ -1664,13 +1664,12 @@ SECTION "bank4c", ROMX, BANK[$4c]
dr $130000, $134000
SECTION "bank4d", ROMX, BANK[$4d]
-;INCLUDE "maps/Route43.asm"
-;INCLUDE "maps/Route44.asm"
-;INCLUDE "maps/Route45.asm"
-;INCLUDE "maps/Route46.asm"
-;INCLUDE "maps/PewterCity.asm"
-;INCLUDE "maps/Route2.asm"
- dr $134000, $138000
+INCLUDE "maps/Route43.asm"
+INCLUDE "maps/Route44.asm"
+INCLUDE "maps/Route45.asm"
+INCLUDE "maps/Route46.asm"
+INCLUDE "maps/PewterCity.asm"
+INCLUDE "maps/Route2.asm"
SECTION "bank4e", ROMX, BANK[$4e]
INCLUDE "maps/ViridianCity.asm"
diff --git a/maps/PewterCity.asm b/maps/PewterCity.asm
new file mode 100644
index 00000000..8c28e9d6
--- /dev/null
+++ b/maps/PewterCity.asm
@@ -0,0 +1,192 @@
+ const_def 2 ; object constants
+ const PEWTERCITY_COOLTRAINER_F
+ const PEWTERCITY_BUG_CATCHER
+ const PEWTERCITY_GRAMPS
+ const PEWTERCITY_FRUIT_TREE1
+ const PEWTERCITY_FRUIT_TREE2
+
+PewterCity_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .FlyPoint
+
+.FlyPoint:
+ setflag ENGINE_FLYPOINT_PEWTER
+ return
+
+PewterCityCooltrainerFScript:
+ jumptextfaceplayer PewterCityCooltrainerFText
+
+PewterCityBugCatcherScript:
+ jumptextfaceplayer PewterCityBugCatcherText
+
+PewterCityGrampsScript:
+ faceplayer
+ opentext
+ checkver
+ iftrue .RainbowWing
+ checkevent EVENT_GOT_SILVER_WING
+ iftrue .GotSilverWing
+ writetext PewterCityGrampsText
+ buttonsound
+ verbosegiveitem SILVER_WING
+ setevent EVENT_GOT_SILVER_WING
+ closetext
+ end
+
+.GotSilverWing:
+ writetext PewterCityGrampsText_GotSilverWing
+ waitbutton
+ closetext
+ end
+
+.RainbowWing:
+ checkevent EVENT_GOT_RAINBOW_WING
+ iftrue .GotSilverWing
+ writetext PewterCityGrampsText
+ buttonsound
+ verbosegiveitem RAINBOW_WING
+ setevent EVENT_GOT_RAINBOW_WING
+ setevent EVENT_TEAM_ROCKET_DISBANDED
+ closetext
+ end
+
+PewterCitySign:
+ jumptext PewterCitySignText
+
+PewterGymSign:
+ jumptext PewterGymSignText
+
+PewterMuseumSign:
+ jumptext PewterMuseumSignText
+
+PewterCityMtMoonGiftShopSign:
+ jumptext PewterCityMtMoonGiftShopSignText
+
+PewterCityWelcomeSign:
+ jumptext PewterCityWelcomeSignText
+
+PewterCityPokecenterSign:
+ jumpstd pokecentersign
+
+PewterCityMartSign:
+ jumpstd martsign
+
+PewterCityFruitTree1:
+ fruittree FRUITTREE_PEWTER_CITY_1
+
+PewterCityFruitTree2:
+ fruittree FRUITTREE_PEWTER_CITY_2
+
+PewterCityCooltrainerFText:
+ text "Have you visited"
+ line "PEWTER GYM?"
+
+ para "The LEADER uses"
+ line "rock-type #MON."
+ done
+
+PewterCityBugCatcherText:
+ text "At night, CLEFAIRY"
+ line "come out to play"
+ cont "at MT.MOON."
+
+ para "But not every"
+ line "night."
+ done
+
+PewterCityGrampsText:
+ text "Ah, you came all"
+ line "the way out here"
+ cont "from JOHTO?"
+
+ para "That brings back"
+ line "memories. When I"
+
+ para "was young, I went"
+ line "to JOHTO to train."
+
+ para "You remind me so"
+ line "much of what I was"
+
+ para "like as a young"
+ line "man."
+
+ para "Here. I want you"
+ line "to have this item"
+ cont "I found in JOHTO."
+ done
+
+PewterCityGrampsText_GotSilverWing:
+ text "Going to new, un-"
+ line "known places and"
+ cont "seeing new people…"
+
+ para "Those are the joys"
+ line "of travel."
+ done
+
+PewterCitySignText:
+ text "PEWTER CITY"
+ line "A Stone Gray City"
+ done
+
+PewterGymSignText:
+ text "PEWTER CITY"
+ line "#MON GYM"
+ cont "LEADER: BROCK"
+
+ para "The Rock Solid"
+ line "#MON Trainer"
+ done
+
+PewterMuseumSignText:
+ text "There's a notice"
+ line "here…"
+
+ para "PEWTER MUSEUM OF"
+ line "SCIENCE is closed"
+ cont "for renovations…"
+ done
+
+PewterCityMtMoonGiftShopSignText:
+ text "There's a notice"
+ line "here…"
+
+ para "MT.MOON GIFT SHOP"
+ line "now open!"
+ done
+
+PewterCityWelcomeSignText:
+ text "Welcome to"
+ line "PEWTER CITY!"
+ done
+
+PewterCity_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 29, 13, PEWTER_NIDORAN_SPEECH_HOUSE, 1
+ warp_event 16, 17, PEWTER_GYM, 1
+ warp_event 23, 17, PEWTER_MART, 2
+ warp_event 13, 25, PEWTER_POKECENTER_1F, 1
+ warp_event 7, 29, PEWTER_SNOOZE_SPEECH_HOUSE, 1
+
+ db 0 ; coord events
+
+ db 7 ; bg events
+ bg_event 25, 23, BGEVENT_READ, PewterCitySign
+ bg_event 11, 17, BGEVENT_READ, PewterGymSign
+ bg_event 15, 9, BGEVENT_READ, PewterMuseumSign
+ bg_event 33, 19, BGEVENT_READ, PewterCityMtMoonGiftShopSign
+ bg_event 19, 29, BGEVENT_READ, PewterCityWelcomeSign
+ bg_event 14, 25, BGEVENT_READ, PewterCityPokecenterSign
+ bg_event 24, 17, BGEVENT_READ, PewterCityMartSign
+
+ db 5 ; object events
+ object_event 19, 11, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, PewterCityCooltrainerFScript, -1
+ object_event 14, 29, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, PewterCityBugCatcherScript, -1
+ object_event 29, 17, SPRITE_GRAMPS, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 2, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, PewterCityGrampsScript, -1
+ object_event 32, 3, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, PewterCityFruitTree1, -1
+ object_event 30, 3, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, PewterCityFruitTree2, -1
diff --git a/maps/Route2.asm b/maps/Route2.asm
new file mode 100644
index 00000000..e31035af
--- /dev/null
+++ b/maps/Route2.asm
@@ -0,0 +1,175 @@
+ const_def 2 ; object constants
+ const ROUTE2_BUG_CATCHER1
+ const ROUTE2_BUG_CATCHER2
+ const ROUTE2_BUG_CATCHER3
+ const ROUTE2_POKE_BALL1
+ const ROUTE2_POKE_BALL2
+ const ROUTE2_POKE_BALL3
+ const ROUTE2_POKE_BALL4
+ const ROUTE2_FRUIT_TREE
+
+Route2_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+TrainerBugCatcherRob:
+ trainer BUG_CATCHER, ROB, EVENT_BEAT_BUG_CATCHER_ROB, BugCatcherRobSeenText, BugCatcherRobBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BugCatcherRobAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerBugCatcherEd:
+ trainer BUG_CATCHER, ED, EVENT_BEAT_BUG_CATCHER_ED, BugCatcherEdSeenText, BugCatcherEdBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BugCatcherEdAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerBugCatcherDoug:
+ trainer BUG_CATCHER, DOUG, EVENT_BEAT_BUG_CATCHER_DOUG, BugCatcherDougSeenText, BugCatcherDougBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BugCatcherDougAfterBattleText
+ waitbutton
+ closetext
+ end
+
+Route2Sign:
+ jumptext Route2SignText
+
+Route2DiglettsCaveSign:
+ jumptext Route2DiglettsCaveSignText
+
+Route2DireHit:
+ itemball DIRE_HIT
+
+Route2MaxPotion:
+ itemball MAX_POTION
+
+Route2Carbos:
+ itemball CARBOS
+
+Route2Elixer:
+ itemball ELIXER
+
+Route2FruitTree:
+ fruittree FRUITTREE_ROUTE_2
+
+Route2HiddenMaxEther:
+ hiddenitem MAX_ETHER, EVENT_ROUTE_2_HIDDEN_MAX_ETHER
+
+Route2HiddenFullHeal:
+ hiddenitem FULL_HEAL, EVENT_ROUTE_2_HIDDEN_FULL_HEAL
+
+Route2HiddenFullRestore:
+ hiddenitem FULL_RESTORE, EVENT_ROUTE_2_HIDDEN_FULL_RESTORE
+
+Route2HiddenRevive:
+ hiddenitem REVIVE, EVENT_ROUTE_2_HIDDEN_REVIVE
+
+BugCatcherRobSeenText:
+ text "My bug #MON are"
+ line "tough. Prepare to"
+ cont "lose!"
+ done
+
+BugCatcherRobBeatenText:
+ text "I was whipped…"
+ done
+
+BugCatcherRobAfterBattleText:
+ text "I'm going to look"
+ line "for stronger bug"
+ cont "#MON."
+ done
+
+BugCatcherEdSeenText:
+ text "If you walk in"
+ line "tall grass wearing"
+
+ para "shorts, do you get"
+ line "nicks and cuts?"
+ done
+
+BugCatcherEdBeatenText:
+ text "Ouch, ouch, ouch!"
+ done
+
+BugCatcherEdAfterBattleText:
+ text "They'll really"
+ line "sting when you"
+ cont "take a bath."
+ done
+
+BugCatcherDougSeenText:
+ text "Why don't girls"
+ line "like bug #MON?"
+ done
+
+BugCatcherDougBeatenText:
+ text "No good!"
+ done
+
+BugCatcherDougAfterBattleText:
+ text "Bug #MON squish"
+ line "like plush toys"
+
+ para "when you squeeze"
+ line "their bellies."
+
+ para "I love how they"
+ line "feel!"
+ done
+
+Route2SignText:
+ text "ROUTE 2"
+
+ para "VIRIDIAN CITY -"
+ line "PEWTER CITY"
+ done
+
+Route2DiglettsCaveSignText:
+ text "DIGLETT'S CAVE"
+ done
+
+Route2_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 15, 15, ROUTE_2_NUGGET_HOUSE, 1
+ warp_event 15, 31, ROUTE_2_GATE, 3
+ warp_event 16, 27, ROUTE_2_GATE, 1
+ warp_event 17, 27, ROUTE_2_GATE, 2
+ warp_event 12, 7, DIGLETTS_CAVE, 3
+
+ db 0 ; coord events
+
+ db 6 ; bg events
+ bg_event 7, 51, BGEVENT_READ, Route2Sign
+ bg_event 11, 9, BGEVENT_READ, Route2DiglettsCaveSign
+ bg_event 7, 23, BGEVENT_ITEM, Route2HiddenMaxEther
+ bg_event 4, 14, BGEVENT_ITEM, Route2HiddenFullHeal
+ bg_event 4, 27, BGEVENT_ITEM, Route2HiddenFullRestore
+ bg_event 11, 30, BGEVENT_ITEM, Route2HiddenRevive
+
+ db 8 ; object events
+ object_event 10, 45, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 5, TrainerBugCatcherRob, -1
+ object_event 5, 5, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_STANDING_RIGHT, 1, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 4, TrainerBugCatcherEd, -1
+ object_event 4, 43, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_STANDING_UP, 1, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 5, TrainerBugCatcherDoug, -1
+ object_event 0, 29, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route2DireHit, EVENT_ROUTE_2_DIRE_HIT
+ object_event 2, 23, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route2MaxPotion, EVENT_ROUTE_2_MAX_POTION
+ object_event 19, 2, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route2Carbos, EVENT_ROUTE_2_CARBOS
+ object_event 14, 50, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route2Elixer, EVENT_ROUTE_2_ELIXER
+ object_event 10, 14, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, Route2FruitTree, -1
diff --git a/maps/Route43.asm b/maps/Route43.asm
new file mode 100644
index 00000000..9fc3d56e
--- /dev/null
+++ b/maps/Route43.asm
@@ -0,0 +1,447 @@
+ const_def 2 ; object constants
+ const ROUTE43_SUPER_NERD1
+ const ROUTE43_SUPER_NERD2
+ const ROUTE43_SUPER_NERD3
+ const ROUTE43_FISHER
+ const ROUTE43_LASS
+ const ROUTE43_YOUNGSTER
+ const ROUTE43_FRUIT_TREE
+ const ROUTE43_POKE_BALL
+
+Route43_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .CheckIfRockets
+
+.CheckIfRockets:
+ checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+ iftrue .NoRockets
+ setmapscene ROUTE_43_GATE, SCENE_DEFAULT
+ return
+
+.NoRockets:
+ setmapscene ROUTE_43_GATE, SCENE_FINISHED
+ return
+
+TrainerCamperSpencer:
+ trainer CAMPER, SPENCER, EVENT_BEAT_CAMPER_SPENCER, CamperSpencerSeenText, CamperSpencerBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CamperSpencerAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPokemaniacBen:
+ trainer POKEMANIAC, BEN, EVENT_BEAT_POKEMANIAC_BEN, PokemaniacBenSeenText, PokemaniacBenBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PokemaniacBenAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPokemaniacBrent:
+ trainer POKEMANIAC, BRENT1, EVENT_BEAT_POKEMANIAC_BRENT, PokemaniacBrentSeenText, PokemaniacBrentBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ checkevent EVENT_BRENT_READY_FOR_REMATCH
+ iftrue .WantsBattle
+ checkcellnum PHONE_POKEMANIAC_BRENT
+ iftrue .NumberAccepted
+ checkevent EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
+ iftrue .AskedAlready
+ writetext PokemaniacBrentAfterBattleText
+ buttonsound
+ setevent EVENT_BRENT_ASKED_FOR_PHONE_NUMBER
+ scall .AskNumber1
+ jump .AskForNumber
+
+.AskedAlready:
+ scall .AskNumber2
+.AskForNumber:
+ askforphonenumber PHONE_POKEMANIAC_BRENT
+ ifequal PHONE_CONTACTS_FULL, .PhoneFull
+ ifequal PHONE_CONTACT_REFUSED, .NumberDeclined
+ trainertotext POKEMANIAC, BRENT1, MEM_BUFFER_0
+ scall .RegisteredNumber
+ jump .NumberAccepted
+
+.WantsBattle:
+ scall .Rematch
+ winlosstext PokemaniacBrentBeatenText, 0
+ checkevent EVENT_BEAT_ELITE_FOUR
+ iftrue .LoadFight2
+ checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+ iftrue .LoadFight1
+ loadtrainer POKEMANIAC, BRENT1
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_BRENT_READY_FOR_REMATCH
+ end
+
+.LoadFight1:
+ loadtrainer POKEMANIAC, BRENT2
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_BRENT_READY_FOR_REMATCH
+ end
+
+.LoadFight2:
+ loadtrainer POKEMANIAC, BRENT3
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_BRENT_READY_FOR_REMATCH
+ end
+
+.AskNumber1:
+ jumpstd asknumber1m
+ end
+
+.AskNumber2:
+ jumpstd asknumber2m
+ end
+
+.RegisteredNumber:
+ jumpstd registerednumberm
+ end
+
+.NumberAccepted:
+ jumpstd numberacceptedm
+ end
+
+.NumberDeclined:
+ jumpstd numberdeclinedm
+ end
+
+.PhoneFull:
+ jumpstd phonefullm
+ end
+
+.Rematch:
+ jumpstd rematchm
+ end
+
+TrainerPokemaniacRon:
+ trainer POKEMANIAC, RON, EVENT_BEAT_POKEMANIAC_RON, PokemaniacRonSeenText, PokemaniacRonBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PokemaniacRonAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerFisherMarvin:
+ trainer FISHER, MARVIN, EVENT_BEAT_FISHER_MARVIN, FisherMarvinSeenText, FisherMarvinBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext FisherMarvinAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPicnickerTiffany:
+ trainer PICNICKER, TIFFANY3, EVENT_BEAT_PICNICKER_TIFFANY, PicnickerTiffanySeenText, PicnickerTiffanyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ checkevent EVENT_TIFFANY_READY_FOR_REMATCH
+ iftrue .WantsBattle
+ checkcellnum PHONE_PICNICKER_TIFFANY
+ iftrue .NumberAccepted
+ checkevent EVENT_TIFFANY_ASKED_FOR_PHONE_NUMBER
+ iftrue .AskedAlready
+ writetext PicnickerTiffanyWantsPicnicText
+ buttonsound
+ setevent EVENT_TIFFANY_ASKED_FOR_PHONE_NUMBER
+ scall .AskNumber1
+ jump .AskForNumber
+
+.AskedAlready:
+ scall .AskNumber2
+.AskForNumber:
+ askforphonenumber PHONE_PICNICKER_TIFFANY
+ ifequal PHONE_CONTACTS_FULL, .PhoneFull
+ ifequal PHONE_CONTACT_REFUSED, .NumberDeclined
+ trainertotext PICNICKER, TIFFANY3, MEM_BUFFER_0
+ scall .RegisteredNumber
+ jump .NumberAccepted
+
+.WantsBattle:
+ scall .Rematch
+ winlosstext PicnickerTiffanyBeatenText, 0
+ checkevent EVENT_BEAT_ELITE_FOUR
+ iftrue .LoadFight2
+ checkevent EVENT_CLEARED_RADIO_TOWER
+ iftrue .LoadFight1
+ loadtrainer PICNICKER, TIFFANY3
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_TIFFANY_READY_FOR_REMATCH
+ end
+
+.LoadFight1:
+ loadtrainer PICNICKER, TIFFANY1
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_TIFFANY_READY_FOR_REMATCH
+ end
+
+.LoadFight2:
+ loadtrainer PICNICKER, TIFFANY2
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_TIFFANY_READY_FOR_REMATCH
+ end
+
+.AskNumber1:
+ jumpstd asknumber1f
+ end
+
+.AskNumber2:
+ jumpstd asknumber2f
+ end
+
+.RegisteredNumber:
+ jumpstd registerednumberf
+ end
+
+.NumberAccepted:
+ jumpstd numberacceptedf
+ end
+
+.NumberDeclined:
+ jumpstd numberdeclinedf
+ end
+
+.PhoneFull:
+ jumpstd phonefullf
+ end
+
+.Rematch:
+ jumpstd rematchf
+ end
+
+Route43Sign1:
+ jumptext Route43Sign1Text
+
+Route43Sign2:
+ jumptext Route43Sign2Text
+
+Route43TrainerTips:
+ jumptext Route43TrainerTipsText
+
+Route43FruitTree:
+ fruittree FRUITTREE_ROUTE_43
+
+Route43MaxEther:
+ itemball MAX_ETHER
+
+PokemaniacBenSeenText:
+ text "I love #MON!"
+
+ para "That's why I"
+ line "started--and why"
+
+ para "I'll keep on col-"
+ line "lecting #MON!"
+ done
+
+PokemaniacBenBeatenText:
+ text "How could you do"
+ line "this to me?"
+ done
+
+PokemaniacBenAfterBattleText:
+ text "What else do I"
+ line "like besides"
+ cont "#MON?"
+
+ para "MARY on the radio."
+ line "I bet she's cute!"
+ done
+
+PokemaniacBrentSeenText:
+ text "Hey! Do you have"
+ line "any rare #MON?"
+ done
+
+PokemaniacBrentBeatenText:
+ text "Oh, my poor #-"
+ line "MON! Darlings!"
+ done
+
+PokemaniacBrentAfterBattleText:
+ text "I'd be happy just"
+ line "to own a single"
+ cont "rare #MON."
+ done
+
+PokemaniacRonSeenText:
+ text "Would you get"
+ line "this?"
+
+ para "Some <RIVAL> guy"
+ line "made fun of my"
+ cont "#MON!"
+
+ para "Darn it! My #-"
+ line "MON's great!"
+ done
+
+PokemaniacRonBeatenText:
+ text "My NIDOKING did"
+ line "pretty right on!"
+ done
+
+PokemaniacRonAfterBattleText:
+ text "It's okay for"
+ line "people to like"
+
+ para "different types"
+ line "of #MON."
+
+ para "#MON isn't just"
+ line "about having the"
+ cont "most powerful one."
+ done
+
+FisherMarvinSeenText:
+ text "I'm in a slump."
+
+ para "Maybe it's the"
+ line "gear I'm using."
+
+ para "Let's battle for a"
+ line "change of pace!"
+ done
+
+FisherMarvinBeatenText:
+ text "I lost, but I feel"
+ line "better anyway."
+ done
+
+FisherMarvinAfterBattleText:
+ text "KURT's LURE BALL"
+ line "is the best for"
+
+ para "catching hooked"
+ line "#MON."
+
+ para "It's much more"
+ line "effective than a"
+ cont "ULTRA BALL."
+ done
+
+CamperSpencerSeenText:
+ text "I can do so much"
+ line "with my #MON--"
+ cont "it's super-fun!"
+ done
+
+CamperSpencerBeatenText:
+ text "Losing isn't fun"
+ line "at all…"
+ done
+
+CamperSpencerAfterBattleText:
+ text "What is going on"
+ line "at LAKE OF RAGE?"
+
+ para "We were planning"
+ line "to camp there."
+ done
+
+PicnickerTiffanySeenText:
+ text "Are you going to"
+ line "LAKE OF RAGE too?"
+
+ para "Let's play for a "
+ line "little while!"
+ done
+
+PicnickerTiffanyBeatenText:
+ text "I played too much!"
+ done
+
+PicnickerTiffanyWantsPicnicText:
+ text "I'm having a pic-"
+ line "nic with #MON."
+
+ para "Won't you join us?"
+ done
+
+Route43Sign1Text:
+ text "ROUTE 43"
+
+ para "LAKE OF RAGE -"
+ line "MAHOGANY TOWN"
+ done
+
+Route43Sign2Text:
+ text "ROUTE 43"
+
+ para "LAKE OF RAGE -"
+ line "MAHOGANY TOWN"
+ done
+
+Route43TrainerTipsText:
+ text "TRAINER TIPS"
+
+ para "All #MON have"
+ line "pros and cons"
+
+ para "depending on their"
+ line "types."
+
+ para "If their types"
+ line "differ, a higher-"
+
+ para "level #MON may"
+ line "lose in battle."
+
+ para "Learn which types"
+ line "are strong and"
+
+ para "weak against your"
+ line "#MON's type."
+ done
+
+Route43_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 9, 51, ROUTE_43_MAHOGANY_GATE, 1
+ warp_event 10, 51, ROUTE_43_MAHOGANY_GATE, 2
+ warp_event 17, 35, ROUTE_43_GATE, 3
+ warp_event 17, 31, ROUTE_43_GATE, 1
+ warp_event 18, 31, ROUTE_43_GATE, 2
+
+ db 0 ; coord events
+
+ db 3 ; bg events
+ bg_event 13, 3, BGEVENT_READ, Route43Sign1
+ bg_event 11, 49, BGEVENT_READ, Route43Sign2
+ bg_event 16, 38, BGEVENT_READ, Route43TrainerTips
+
+ db 8 ; object events
+ object_event 14, 6, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerPokemaniacBen, -1
+ object_event 13, 20, SPRITE_SUPER_NERD, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerPokemaniacBrent, -1
+ object_event 13, 7, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 2, TrainerPokemaniacRon, -1
+ object_event 4, 16, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 4, TrainerFisherMarvin, -1
+ object_event 9, 29, SPRITE_LASS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 3, TrainerPicnickerTiffany, -1
+ object_event 15, 43, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 5, TrainerCamperSpencer, -1
+ object_event 1, 26, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, Route43FruitTree, -1
+ object_event 12, 32, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route43MaxEther, EVENT_ROUTE_43_MAX_ETHER
diff --git a/maps/Route44.asm b/maps/Route44.asm
new file mode 100644
index 00000000..1f6f0177
--- /dev/null
+++ b/maps/Route44.asm
@@ -0,0 +1,428 @@
+ const_def 2 ; object constants
+ const ROUTE44_FISHER1
+ const ROUTE44_FISHER2
+ const ROUTE44_YOUNGSTER1
+ const ROUTE44_SUPER_NERD
+ const ROUTE44_YOUNGSTER2
+ const ROUTE44_COOLTRAINER_M
+ const ROUTE44_COOLTRAINER_F
+ const ROUTE44_FRUIT_TREE
+ const ROUTE44_POKE_BALL1
+ const ROUTE44_POKE_BALL2
+ const ROUTE44_POKE_BALL3
+
+Route44_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+TrainerBirdKeeperVance1:
+ trainer BIRD_KEEPER, VANCE1, EVENT_BEAT_BIRD_KEEPER_VANCE, BirdKeeperVance1SeenText, BirdKeeperVance1BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ checkevent EVENT_VANCE_READY_FOR_REMATCH
+ iftrue .WantsBattle
+ checkcellnum PHONE_BIRDKEEPER_VANCE
+ iftrue Route44NumberAcceptedM
+ checkevent EVENT_VANCE_ASKED_FOR_PHONE_NUMBER
+ iftrue .AskedAlready
+ writetext BirdKeeperVanceLegendaryBirdsText
+ buttonsound
+ setevent EVENT_VANCE_ASKED_FOR_PHONE_NUMBER
+ scall Route44AskNumber1M
+ jump .AskForNumber
+
+.AskedAlready:
+ scall Route44AskNumber2M
+.AskForNumber:
+ askforphonenumber PHONE_BIRDKEEPER_VANCE
+ ifequal PHONE_CONTACTS_FULL, Route44PhoneFullM
+ ifequal PHONE_CONTACT_REFUSED, Route44NumberDeclinedM
+ trainertotext BIRD_KEEPER, VANCE1, MEM_BUFFER_0
+ scall Route44RegisteredNumberM
+ jump Route44NumberAcceptedM
+
+.WantsBattle:
+ scall Route44RematchM
+ winlosstext BirdKeeperVance1BeatenText, 0
+ checkevent EVENT_RESTORED_POWER_TO_KANTO
+ iftrue .LoadFight2
+ checkevent EVENT_BEAT_ELITE_FOUR
+ iftrue .LoadFight1
+ loadtrainer BIRD_KEEPER, VANCE1
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_VANCE_READY_FOR_REMATCH
+ end
+
+.LoadFight1:
+ loadtrainer BIRD_KEEPER, VANCE2
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_VANCE_READY_FOR_REMATCH
+ end
+
+.LoadFight2:
+ loadtrainer BIRD_KEEPER, VANCE3
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_VANCE_READY_FOR_REMATCH
+ end
+
+Route44AskNumber1M:
+ jumpstd asknumber1m
+ end
+
+Route44AskNumber2M:
+ jumpstd asknumber2m
+ end
+
+Route44RegisteredNumberM:
+ jumpstd registerednumberm
+ end
+
+Route44NumberAcceptedM:
+ jumpstd numberacceptedm
+ end
+
+Route44NumberDeclinedM:
+ jumpstd numberdeclinedm
+ end
+
+Route44PhoneFullM:
+ jumpstd phonefullm
+ end
+
+Route44RematchM:
+ jumpstd rematchm
+ end
+
+TrainerPsychicPhil:
+ trainer PSYCHIC_T, PHIL, EVENT_BEAT_PSYCHIC_PHIL, PsychicPhilSeenText, PsychicPhilBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PsychicPhilAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerFisherWilton1:
+ trainer FISHER, WILTON1, EVENT_BEAT_FISHER_WILTON, FisherWilton1SeenText, FisherWilton1BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ checkevent EVENT_WILTON_READY_FOR_REMATCH
+ iftrue .WantsBattle
+ checkcellnum PHONE_FISHER_WILTON
+ iftrue Route44NumberAcceptedM
+ checkevent EVENT_WILTON_ASKED_FOR_PHONE_NUMBER
+ iftrue .AskedAlready
+ writetext FisherWiltonHugePoliwagText
+ buttonsound
+ setevent EVENT_WILTON_ASKED_FOR_PHONE_NUMBER
+ scall Route44AskNumber1M
+ jump .AskForNumber
+
+.AskedAlready:
+ scall Route44AskNumber2M
+.AskForNumber:
+ askforphonenumber PHONE_FISHER_WILTON
+ ifequal PHONE_CONTACTS_FULL, Route44PhoneFullM
+ ifequal PHONE_CONTACT_REFUSED, Route44NumberDeclinedM
+ trainertotext FISHER, WILTON1, MEM_BUFFER_0
+ scall Route44RegisteredNumberM
+ jump Route44NumberAcceptedM
+
+.WantsBattle:
+ scall Route44RematchM
+ winlosstext FisherWilton1BeatenText, 0
+ checkevent EVENT_RESTORED_POWER_TO_KANTO
+ iftrue .LoadFight2
+ checkevent EVENT_BEAT_ELITE_FOUR
+ iftrue .LoadFight1
+ loadtrainer FISHER, WILTON1
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_WILTON_READY_FOR_REMATCH
+ end
+
+.LoadFight1:
+ loadtrainer FISHER, WILTON2
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_WILTON_READY_FOR_REMATCH
+ end
+
+.LoadFight2:
+ loadtrainer FISHER, WILTON3
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_WILTON_READY_FOR_REMATCH
+ end
+
+TrainerFisherEdgar:
+ trainer FISHER, EDGAR, EVENT_BEAT_FISHER_EDGAR, FisherEdgarSeenText, FisherEdgarBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext FisherEdgarAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerCooltrainerfCybil:
+ trainer COOLTRAINERF, CYBIL, EVENT_BEAT_COOLTRAINERF_CYBIL, CooltrainerfCybilSeenText, CooltrainerfCybilBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainerfCybilAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPokemaniacZach:
+ trainer POKEMANIAC, ZACH, EVENT_BEAT_POKEMANIAC_ZACH, PokemaniacZachSeenText, PokemaniacZachBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PokemaniacZachAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerCooltrainermAllen:
+ trainer COOLTRAINERM, ALLEN, EVENT_BEAT_COOLTRAINERM_ALLEN, CooltrainermAllenSeenText, CooltrainermAllenBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainermAllenAfterBattleText
+ waitbutton
+ closetext
+ end
+
+Route44Sign1:
+ jumptext Route44Sign1Text
+
+Route44Sign2:
+ jumptext Route44Sign2Text
+
+Route44FruitTree:
+ fruittree FRUITTREE_ROUTE_44
+
+Route44MaxRevive:
+ itemball MAX_REVIVE
+
+Route44UltraBall:
+ itemball ULTRA_BALL
+
+Route44HiddenElixer:
+ hiddenitem ELIXER, EVENT_ROUTE_44_HIDDEN_ELIXER
+
+FisherWilton1SeenText:
+ text "Aack! You made me"
+ line "lose a POLIWAG!"
+
+ para "What are you going"
+ line "to do about it?"
+ done
+
+FisherWilton1BeatenText:
+ text "Just forget about"
+ line "it."
+ done
+
+FisherWiltonHugePoliwagText:
+ text "That POLIWAG that"
+ line "got away…"
+ cont "It was huge."
+
+ para "I swear it must've"
+ line "been 16 feet long!"
+ done
+
+FisherEdgarSeenText:
+ text "I fish until I"
+ line "can't anymore."
+
+ para "I also battle"
+ line "until I drop."
+
+ para "That's my"
+ line "relationship"
+ cont "with my #MON."
+ done
+
+FisherEdgarBeatenText:
+ text "Hmmmm… "
+ line "This isn't right."
+ done
+
+FisherEdgarAfterBattleText:
+ text "That's 100 wins"
+ line "to 101 losses."
+
+ para "I won't battle"
+ line "again for a while."
+ done
+
+BirdKeeperVance1SeenText:
+ text "Do you know about"
+ line "the legendary bird"
+ cont "#MON?"
+ done
+
+BirdKeeperVance1BeatenText:
+ text "Whew! You're hot"
+ line "stuff."
+ done
+
+BirdKeeperVanceLegendaryBirdsText:
+ text "ARTICUNO, ZAPDOS"
+ line "and MOLTRES are"
+
+ para "the three legend-"
+ line "ary bird #MON."
+
+ para "I heard there are"
+ line "other legendary"
+ cont "birds, though."
+ done
+
+PsychicPhilSeenText:
+ text "I'm gonna win,"
+ line "for sure!"
+ done
+
+PsychicPhilBeatenText:
+ text "Arrgh… That's a"
+ line "shocking loss…"
+ done
+
+PsychicPhilAfterBattleText:
+ text "It's important to"
+ line "have conviction"
+ cont "on your side."
+ done
+
+PokemaniacZachSeenText:
+ text "I'll do anything"
+ line "to get my hands on"
+ cont "rare #MON!"
+ done
+
+PokemaniacZachBeatenText:
+ text "Oooh, your #MON"
+ line "are so appealing."
+ done
+
+PokemaniacZachAfterBattleText:
+ text "If a #MON has"
+ line "different colors"
+
+ para "from usual, it's"
+ line "more valuable."
+
+ para "What? You mean"
+ line "that's not true?"
+ done
+
+CooltrainermAllenSeenText:
+ text "I can tell you're"
+ line "a good trainer by"
+ cont "looking at you."
+
+ para "I'm good at #-"
+ line "MON, and I can see"
+ cont "that you are too."
+ done
+
+CooltrainermAllenBeatenText:
+ text "Tch! It's a total"
+ line "loss on my part."
+ done
+
+CooltrainermAllenAfterBattleText:
+ text "Wow. You have a"
+ line "lot of BADGES."
+
+ para "No wonder you're"
+ line "so tough."
+
+ para "I wonder if"
+ line "ECRUTEAK GYM's"
+
+ para "MORTY is still in"
+ line "training?"
+
+ para "He really hammered"
+ line "me."
+ done
+
+CooltrainerfCybilSeenText:
+ text "You look strong."
+
+ para "Good trainers seek"
+ line "tough opponents"
+ cont "instinctively."
+ done
+
+CooltrainerfCybilBeatenText:
+ text "Nope! This won't"
+ line "do at all."
+ done
+
+CooltrainerfCybilAfterBattleText:
+ text "We all get better"
+ line "by experiencing"
+ cont "many battles."
+
+ para "I battled a lot to"
+ line "become what I am"
+ cont "today--an elite."
+ done
+
+Route44Sign1Text:
+ text "ROUTE 44"
+ line "ICE PATH AHEAD"
+ done
+
+Route44Sign2Text:
+ text "ROUTE 44"
+
+ para "MAHOGANY TOWN -"
+ line "BLACKTHORN CITY"
+ done
+
+Route44_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 56, 7, ICE_PATH_1F, 1
+
+ db 0 ; coord events
+
+ db 3 ; bg events
+ bg_event 53, 7, BGEVENT_READ, Route44Sign1
+ bg_event 6, 10, BGEVENT_READ, Route44Sign2
+ bg_event 32, 9, BGEVENT_ITEM, Route44HiddenElixer
+
+ db 10 ; object events
+ object_event 42, 5, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 1, TrainerFisherWilton1, -1
+ object_event 19, 13, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 1, TrainerFisherEdgar, -1
+ object_event 10, 9, SPRITE_YOUNGSTER, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerPsychicPhil, -1
+ object_event 35, 2, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 5, TrainerPokemaniacZach, -1
+ object_event 50, 7, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 3, TrainerBirdKeeperVance1, -1
+ object_event 41, 15, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 5, TrainerCooltrainermAllen, -1
+ object_event 31, 14, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 5, TrainerCooltrainerfCybil, -1
+ object_event 9, 5, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, Route44FruitTree, -1
+ object_event 30, 8, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route44MaxRevive, EVENT_ROUTE_44_MAX_REVIVE
+ object_event 43, 2, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route44UltraBall, EVENT_ROUTE_44_ULTRA_BALL
diff --git a/maps/Route45.asm b/maps/Route45.asm
new file mode 100644
index 00000000..0d84ef4f
--- /dev/null
+++ b/maps/Route45.asm
@@ -0,0 +1,424 @@
+ const_def 2 ; object constants
+ const ROUTE45_POKEFAN_M1
+ const ROUTE45_POKEFAN_M2
+ const ROUTE45_POKEFAN_M3
+ const ROUTE45_POKEFAN_M4
+ const ROUTE45_BLACK_BELT
+ const ROUTE45_COOLTRAINER_M
+ const ROUTE45_COOLTRAINER_F
+ const ROUTE45_FRUIT_TREE
+ const ROUTE45_POKE_BALL1
+ const ROUTE45_POKE_BALL2
+ const ROUTE45_POKE_BALL3
+ const ROUTE45_POKE_BALL4
+ const ROUTE45_YOUNGSTER
+
+Route45_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+TrainerBlackbeltKenji:
+ trainer BLACKBELT_T, KENJI3, EVENT_BEAT_BLACKBELT_KENJI, BlackbeltKenjiSeenText, BlackbeltKenjiBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ checkevent EVENT_KENJI_READY_FOR_REMATCH
+ iftrue .WantsBattle
+ checkcellnum PHONE_BLACKBELT_KENJI
+ iftrue Route45NumberAcceptedM
+ checkevent EVENT_KENJI_ASKED_FOR_PHONE_NUMBER
+ iftrue .AskedAlready
+ writetext BlackbeltKenjiAfterBattleText
+ waitbutton
+ setevent EVENT_KENJI_ASKED_FOR_PHONE_NUMBER
+ scall Route45AskNumber1M
+ jump .AskForNumber
+
+.AskedAlready:
+ scall Route45AskNumber2M
+.AskForNumber:
+ askforphonenumber PHONE_BLACKBELT_KENJI
+ ifequal PHONE_CONTACTS_FULL, Route45PhoneFullM
+ ifequal PHONE_CONTACT_REFUSED, Route45NumberDeclinedM
+ trainertotext BLACKBELT_T, KENJI3, MEM_BUFFER_0
+ scall Route45RegisteredNumberM
+ jump Route45NumberAcceptedM
+
+.WantsBattle:
+ scall Route45RematchM
+ winlosstext BlackbeltKenjiBeatenText, 0
+ checkevent EVENT_RESTORED_POWER_TO_KANTO
+ iftrue .LoadFight2
+ checkevent EVENT_BEAT_ELITE_FOUR
+ iftrue .LoadFight1
+ loadtrainer BLACKBELT_T, KENJI3
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_KENJI_READY_FOR_REMATCH
+ end
+
+.LoadFight1:
+ loadtrainer BLACKBELT_T, KENJI1
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_KENJI_READY_FOR_REMATCH
+ end
+
+.LoadFight2:
+ loadtrainer BLACKBELT_T, KENJI2
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_KENJI_READY_FOR_REMATCH
+ end
+
+Route45AskNumber1M:
+ jumpstd asknumber1m
+ end
+
+Route45AskNumber2M:
+ jumpstd asknumber2m
+ end
+
+Route45RegisteredNumberM:
+ jumpstd registerednumberm
+ end
+
+Route45NumberAcceptedM:
+ jumpstd numberacceptedm
+ end
+
+Route45NumberDeclinedM:
+ jumpstd numberdeclinedm
+ end
+
+Route45PhoneFullM:
+ jumpstd phonefullm
+ end
+
+Route45RematchM:
+ jumpstd rematchm
+ end
+
+TrainerHikerErik:
+ trainer HIKER, ERIK, EVENT_BEAT_HIKER_ERIK, HikerErikSeenText, HikerErikBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext HikerErikAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerHikerMichael:
+ trainer HIKER, MICHAEL, EVENT_BEAT_HIKER_MICHAEL, HikerMichaelSeenText, HikerMichaelBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext HikerMichaelAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerHikerParry:
+ trainer HIKER, PARRY3, EVENT_BEAT_HIKER_PARRY, HikerParry3SeenText, HikerParry3BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ checkevent EVENT_PARRY_READY_FOR_REMATCH
+ iftrue .WantsBattle
+ checkcellnum PHONE_HIKER_PARRY
+ iftrue Route45NumberAcceptedM
+ checkevent EVENT_PARRY_ASKED_FOR_PHONE_NUMBER
+ iftrue .AskedAlready
+ writetext HikerParryAfterBattleText
+ buttonsound
+ setevent EVENT_PARRY_ASKED_FOR_PHONE_NUMBER
+ scall Route45AskNumber1M
+ jump .AskForNumber
+
+.AskedAlready:
+ scall Route45AskNumber2M
+.AskForNumber:
+ askforphonenumber PHONE_HIKER_PARRY
+ ifequal PHONE_CONTACTS_FULL, Route45PhoneFullM
+ ifequal PHONE_CONTACT_REFUSED, Route45NumberDeclinedM
+ trainertotext HIKER, PARRY1, MEM_BUFFER_0
+ scall Route45RegisteredNumberM
+ jump Route45NumberAcceptedM
+
+.WantsBattle:
+ scall Route45RematchM
+ winlosstext HikerParry3BeatenText, 0
+ checkevent EVENT_RESTORED_POWER_TO_KANTO
+ iftrue .LoadFight2
+ checkevent EVENT_BEAT_ELITE_FOUR
+ iftrue .LoadFight1
+ loadtrainer HIKER, PARRY3
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_PARRY_READY_FOR_REMATCH
+ end
+
+.LoadFight1:
+ loadtrainer HIKER, PARRY1
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_PARRY_READY_FOR_REMATCH
+ end
+
+.LoadFight2:
+ loadtrainer HIKER, PARRY2
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_PARRY_READY_FOR_REMATCH
+ end
+
+TrainerHikerTimothy:
+ trainer HIKER, TIMOTHY, EVENT_BEAT_HIKER_TIMOTHY, HikerTimothySeenText, HikerTimothyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext HikerTimothyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerCooltrainermRyan:
+ trainer COOLTRAINERM, RYAN, EVENT_BEAT_COOLTRAINERM_RYAN, CooltrainermRyanSeenText, CooltrainermRyanBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainermRyanAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerCooltrainerfKelly:
+ trainer COOLTRAINERF, KELLY, EVENT_BEAT_COOLTRAINERF_KELLY, CooltrainerfKellySeenText, CooltrainerfKellyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainerfKellyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+Route45Sign:
+ jumptext Route45SignText
+
+Route45FruitTree:
+ fruittree FRUITTREE_ROUTE_45
+
+Route45XSpecial:
+ itemball X_SPECIAL
+
+Route45Revive:
+ itemball REVIVE
+
+Route45Elixer:
+ itemball ELIXER
+
+Route45MaxPotion:
+ itemball MAX_POTION
+
+Route45HiddenPpUp:
+ hiddenitem PP_UP, EVENT_ROUTE_45_HIDDEN_PP_UP
+
+HikerErikSeenText:
+ text "Be prepared for"
+ line "anything!"
+
+ para "Let me see if your"
+ line "#MON have been"
+ cont "raised properly!"
+ done
+
+HikerErikBeatenText:
+ text "Oh, I lost that!"
+ done
+
+HikerErikAfterBattleText:
+ text "I'll head back to"
+ line "BLACKTHORN's ICE"
+
+ para "PATH and train"
+ line "some more."
+ done
+
+HikerMichaelSeenText:
+ text "Yo! You're spunky!"
+ line "But you know what?"
+
+ para "When it comes to"
+ line "sheer spunkiness,"
+ cont "I'm the man!"
+ done
+
+HikerMichaelBeatenText:
+ text "My #MON weren't"
+ line "spunky enough!"
+ done
+
+HikerMichaelAfterBattleText:
+ text "Boy, do I love"
+ line "HP UP! Mmmm, yum!"
+
+ para "I keep drinking my"
+ line "#MON's!"
+
+ para "I can't help it!"
+ done
+
+HikerParry3SeenText:
+ text "My #MON are"
+ line "power packed!"
+ done
+
+HikerParry3BeatenText:
+ text "Wahahah! I'm the"
+ line "big loser!"
+ done
+
+HikerParryAfterBattleText:
+ text "I'm not much good"
+ line "at thinking, see?"
+
+ para "So, I just plow"
+ line "ahead with power!"
+ done
+
+HikerTimothySeenText:
+ text "Why do I climb"
+ line "mountains?"
+
+ para "Because they're"
+ line "there."
+
+ para "Why do I train"
+ line "#MON?"
+
+ para "Because they're"
+ line "there!"
+ done
+
+HikerTimothyBeatenText:
+ text "Losses…"
+ line "They're there too!"
+ done
+
+HikerTimothyAfterBattleText:
+ text "The best thing to"
+ line "ever happen to me"
+
+ para "was discovering"
+ line "#MON."
+ done
+
+BlackbeltKenjiSeenText:
+ text "I was training"
+ line "here alone."
+
+ para "Behold the fruits"
+ line "of my labor!"
+ done
+
+BlackbeltKenjiBeatenText:
+ text "Waaaargh!"
+ done
+
+BlackbeltKenjiAfterBattleText:
+ text "This calls for"
+ line "extreme measures."
+
+ para "I must take to the"
+ line "hills and train in"
+ cont "solitude."
+ done
+
+CooltrainermRyanSeenText:
+ text "What are your"
+ line "thoughts on rais-"
+ cont "ing #MON?"
+ done
+
+CooltrainermRyanBeatenText:
+ text "You've won my"
+ line "respect."
+ done
+
+CooltrainermRyanAfterBattleText:
+ text "I see you're rais-"
+ line "ing your #MON"
+ cont "with care."
+
+ para "The bond you build"
+ line "will save you in"
+ cont "tough situations."
+ done
+
+CooltrainerfKellySeenText:
+ text "What is your"
+ line "battle strategy?"
+
+ para "It is foolish to"
+ line "use strong moves"
+ cont "indiscriminately."
+ done
+
+CooltrainerfKellyBeatenText:
+ text "Fine. I lost."
+ done
+
+CooltrainerfKellyAfterBattleText:
+ text "I'm not in favor"
+ line "of overly power-"
+ cont "ful moves."
+
+ para "I want to win, but"
+ line "I also don't want"
+ cont "to harm #MON."
+ done
+
+Route45DummyText:
+ text "I'm pretty good at"
+ line "#MON too."
+ done
+
+Route45SignText:
+ text "ROUTE 45"
+ line "MOUNTAIN RD. AHEAD"
+ done
+
+Route45_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 2, 5, DARK_CAVE_BLACKTHORN_ENTRANCE, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 10, 4, BGEVENT_READ, Route45Sign
+ bg_event 13, 80, BGEVENT_ITEM, Route45HiddenPpUp
+
+ db 12 ; object events
+ object_event 10, 16, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 1, TrainerHikerErik, -1
+ object_event 15, 64, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerHikerMichael, -1
+ object_event 5, 28, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 3, TrainerHikerParry, -1
+ object_event 9, 64, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 1, TrainerHikerTimothy, -1
+ object_event 11, 50, SPRITE_BLACK_BELT, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerBlackbeltKenji, -1
+ object_event 17, 18, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerCooltrainermRyan, -1
+ object_event 4, 36, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 3, TrainerCooltrainerfKelly, -1
+ object_event 16, 82, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, Route45FruitTree, -1
+ object_event 6, 51, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route45XSpecial, EVENT_ROUTE_45_X_SPECIAL
+ object_event 6, 66, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route45Revive, EVENT_ROUTE_45_REVIVE
+ object_event 4, 21, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route45Elixer, EVENT_ROUTE_45_ELIXER
+ object_event 8, 33, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route45MaxPotion, EVENT_ROUTE_45_MAX_POTION
diff --git a/maps/Route46.asm b/maps/Route46.asm
new file mode 100644
index 00000000..ea36aed9
--- /dev/null
+++ b/maps/Route46.asm
@@ -0,0 +1,214 @@
+ const_def 2 ; object constants
+ const ROUTE46_POKEFAN_M
+ const ROUTE46_YOUNGSTER
+ const ROUTE46_LASS
+ const ROUTE46_FRUIT_TREE1
+ const ROUTE46_FRUIT_TREE2
+ const ROUTE46_POKE_BALL
+
+Route46_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+TrainerCamperTed:
+ trainer CAMPER, TED, EVENT_BEAT_CAMPER_TED, CamperTedSeenText, CamperTedBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CamperTedAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPicnickerErin1:
+ trainer PICNICKER, ERIN1, EVENT_BEAT_PICNICKER_ERIN, PicnickerErin1SeenText, PicnickerErin1BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ checkevent EVENT_ERIN_READY_FOR_REMATCH
+ iftrue .WantsBattle
+ checkcellnum PHONE_PICNICKER_ERIN
+ iftrue Route46NumberAcceptedF
+ checkevent EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
+ iftrue .AskedAlready
+ writetext PicnickerErinAfterBattleText
+ buttonsound
+ setevent EVENT_ERIN_ASKED_FOR_PHONE_NUMBER
+ scall Route46AskNumber1F
+ jump .AskForNumber
+
+.AskedAlready:
+ scall Route46AskNumber2F
+.AskForNumber:
+ askforphonenumber PHONE_PICNICKER_ERIN
+ ifequal PHONE_CONTACTS_FULL, Route46PhoneFullF
+ ifequal PHONE_CONTACT_REFUSED, Route46NumberDeclinedF
+ trainertotext PICNICKER, ERIN1, MEM_BUFFER_0
+ scall Route46RegisteredNumberF
+ jump Route46NumberAcceptedF
+
+.WantsBattle:
+ scall Route46RematchF
+ winlosstext PicnickerErin1BeatenText, 0
+ checkevent EVENT_RESTORED_POWER_TO_KANTO
+ iftrue .LoadFight2
+ checkevent EVENT_BEAT_ELITE_FOUR
+ iftrue .LoadFight1
+ loadtrainer PICNICKER, ERIN1
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_ERIN_READY_FOR_REMATCH
+ end
+
+.LoadFight1:
+ loadtrainer PICNICKER, ERIN2
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_ERIN_READY_FOR_REMATCH
+ end
+
+.LoadFight2:
+ loadtrainer PICNICKER, ERIN3
+ startbattle
+ reloadmapafterbattle
+ clearevent EVENT_ERIN_READY_FOR_REMATCH
+ end
+
+Route46AskNumber1F:
+ jumpstd asknumber1f
+ end
+
+Route46AskNumber2F:
+ jumpstd asknumber2f
+ end
+
+Route46RegisteredNumberF:
+ jumpstd registerednumberf
+ end
+
+Route46NumberAcceptedF:
+ jumpstd numberacceptedf
+ end
+
+Route46NumberDeclinedF:
+ jumpstd numberdeclinedf
+ end
+
+Route46PhoneFullF:
+ jumpstd phonefullf
+ end
+
+Route46RematchF:
+ jumpstd rematchf
+ end
+
+TrainerHikerBailey:
+ trainer HIKER, BAILEY, EVENT_BEAT_HIKER_BAILEY, HikerBaileySeenText, HikerBaileyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext HikerBaileyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+Route46Sign:
+ jumptext Route46SignText
+
+Route46DireHit:
+ itemball DIRE_HIT
+
+Route46FruitTree1:
+ fruittree FRUITTREE_ROUTE_46_1
+
+Route46FruitTree2:
+ fruittree FRUITTREE_ROUTE_46_2
+
+HikerBaileySeenText:
+ text "Awright! I'll show"
+ line "you the power of"
+ cont "mountain #MON!"
+ done
+
+HikerBaileyBeatenText:
+ text "Mercy! You showed"
+ line "me your power!"
+ done
+
+HikerBaileyAfterBattleText:
+ text "It's over. I don't"
+ line "mind. We HIKERS"
+ cont "are like that."
+ done
+
+CamperTedSeenText:
+ text "I'm raising #-"
+ line "MON too!"
+
+ para "Will you battle"
+ line "with me?"
+ done
+
+CamperTedBeatenText:
+ text "Wha…?"
+ done
+
+CamperTedAfterBattleText:
+ text "I did my best but"
+ line "came up short."
+
+ para "No excuses--I"
+ line "admit I lost."
+ done
+
+PicnickerErin1SeenText:
+ text "I raise #MON"
+ line "too!"
+
+ para "Let's battle!"
+ done
+
+PicnickerErin1BeatenText:
+ text "Oh, darn it!"
+ done
+
+PicnickerErinAfterBattleText:
+ text "I've been to many"
+ line "GYMS, but the GYM"
+
+ para "in GOLDENROD is my"
+ line "favorite."
+
+ para "It's filled with"
+ line "pretty flowers!"
+ done
+
+Route46SignText:
+ text "ROUTE 46"
+ line "MOUNTAIN RD. AHEAD"
+ done
+
+Route46_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 7, 33, ROUTE_29_ROUTE_46_GATE, 1
+ warp_event 8, 33, ROUTE_29_ROUTE_46_GATE, 2
+ warp_event 14, 5, DARK_CAVE_VIOLET_ENTRANCE, 3
+
+ db 0 ; coord events
+
+ db 1 ; bg events
+ bg_event 9, 27, BGEVENT_READ, Route46Sign
+
+ db 6 ; object events
+ object_event 12, 18, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerHikerBailey, -1
+ object_event 3, 13, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 4, TrainerCamperTed, -1
+ object_event 1, 15, SPRITE_LASS, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 4, TrainerPicnickerErin1, -1
+ object_event 7, 5, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, Route46FruitTree1, -1
+ object_event 8, 6, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, Route46FruitTree2, -1
+ object_event 0, 12, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, Route46DireHit, EVENT_ROUTE_46_DIRE_HIT