summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIIMarckus <iimarckus@gmail.com>2018-10-04 01:23:27 -0600
committerIIMarckus <iimarckus@gmail.com>2018-10-04 01:23:27 -0600
commit48f338fe7a4948826027e3dcb8f94797740fe121 (patch)
treea9a8fa3c8504aaa859424d7a2daa13b4a2b56188
parentd34ed8847fafac0fba47f54db5b8e6ce5e4c927b (diff)
Add map objects from bank 48.
-rw-r--r--constants/engine_flags.asm2
-rw-r--r--constants/map_constants.asm6
-rwxr-xr-xengine/engine_flags.asm2
-rwxr-xr-xengine/specials.asm2
-rw-r--r--main.asm15
-rw-r--r--maps/AzaleaTown.asm437
-rw-r--r--maps/CherrygroveCity.asm572
-rw-r--r--maps/CianwoodCity.asm253
-rw-r--r--maps/GoldenrodCity.asm381
-rw-r--r--maps/NewBarkTown.asm316
-rw-r--r--maps/VioletCity.asm312
11 files changed, 2284 insertions, 14 deletions
diff --git a/constants/engine_flags.asm b/constants/engine_flags.asm
index f4da580e..c4730b50 100644
--- a/constants/engine_flags.asm
+++ b/constants/engine_flags.asm
@@ -26,7 +26,7 @@
engine_flag_def ENGINE_ROCKETS_IN_RADIO_TOWER, wStatusFlags2, 0 ; rockets in radio tower
engine_flag_def ENGINE_BIKE_SHOP_CALL_ENABLED, wStatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd)
engine_flag_def ENGINE_GIVE_POKERUS, wStatusFlags2, 5 ; give pokerus
- engine_flag_def ENGINE_FLORIA, wStatusFlags2, 6 ; berry -> berry juice when trading?
+ engine_flag_def ENGINE_REACHED_GOLDENROD, wStatusFlags2, 6 ; berry -> berry juice when trading?
engine_flag_def ENGINE_ROCKETS_IN_MAHOGANY, wStatusFlags2, 7 ; rockets in mahogany
engine_flag_def ENGINE_STRENGTH_ACTIVE, wBikeFlags, 0 ; strength active
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index ea2ff37d..62915e7c 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -227,7 +227,7 @@ ENDM
map_const EARLS_POKEMON_ACADEMY, 8, 4 ; 8
map_const VIOLET_NICKNAME_SPEECH_HOUSE, 4, 4 ; 9
map_const VIOLET_POKECENTER_1F, 4, 5 ; 10
- map_const VIOLET_ONIX_TRADE_HOUSE, 4, 4 ; 11
+ map_const VIOLET_KYLES_HOUSE, 4, 4 ; 11
map_const ROUTE_32_RUINS_OF_ALPH_GATE, 4, 5 ; 12
map_const ROUTE_32_POKECENTER_1F, 4, 5 ; 13
map_const ROUTE_35_GOLDENROD_GATE, 4, 5 ; 14
@@ -242,7 +242,7 @@ ENDM
map_const GOLDENROD_GYM, 9, 10 ; 3
map_const GOLDENROD_BIKE_SHOP, 4, 4 ; 4
map_const GOLDENROD_HAPPINESS_RATER, 4, 4 ; 5
- map_const GOLDENROD_BILLS_HOUSE, 4, 4 ; 6
+ map_const BILLS_FAMILYS_HOUSE, 4, 4 ; 6
map_const GOLDENROD_MAGNET_TRAIN_STATION, 9, 10 ; 7
map_const GOLDENROD_FLOWER_SHOP, 4, 4 ; 8
map_const GOLDENROD_POKECENTER_1F, 4, 5 ; 9
@@ -407,7 +407,7 @@ ENDM
map_const CIANWOOD_GYM, 9, 5 ; 5
map_const CIANWOOD_POKECENTER_1F, 4, 5 ; 6
map_const CIANWOOD_PHARMACY, 4, 4 ; 7
- map_const CIANWOOD_CITY_PHOTO_STUDIO, 4, 4 ; 8
+ map_const CIANWOOD_PHOTO_STUDIO, 4, 4 ; 8
map_const CIANWOOD_LUGIA_SPEECH_HOUSE, 4, 4 ; 9
newgroup ; 23
diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm
index 897e55df..9fa5f8c0 100755
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -112,7 +112,7 @@ EngineFlags:
engine_flag ENGINE_ROCKETS_IN_RADIO_TOWER
engine_flag ENGINE_BIKE_SHOP_CALL_ENABLED
engine_flag ENGINE_GIVE_POKERUS
- engine_flag ENGINE_FLORIA
+ engine_flag ENGINE_REACHED_GOLDENROD
engine_flag ENGINE_ROCKETS_IN_MAHOGANY
engine_flag ENGINE_STRENGTH_ACTIVE
diff --git a/engine/specials.asm b/engine/specials.asm
index db0b8ddf..6cd4fa91 100755
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -140,7 +140,7 @@ SpecialsPointers:
add_special PrintDiploma
add_special InitialSetDSTFlag
add_special InitialClearDSTFlag
- add_special Function90a8d
+ add_special MrChrono
add_special SpecialNone
SpecialNone: ; c389
diff --git a/main.asm b/main.asm
index 32383f2a..f0304205 100644
--- a/main.asm
+++ b/main.asm
@@ -1247,7 +1247,7 @@ InitialSetDSTFlag:
dr $90a1b, $90a54
InitialClearDSTFlag:
dr $90a54, $90a8d
-Function90a8d:
+MrChrono:
dr $90a8d, $90b0f
PrintHour:
dr $90b0f, $9188a
@@ -1620,13 +1620,12 @@ INCLUDE "maps/DragonsDenB1F.asm"
INCLUDE "maps/TohjoFalls.asm"
SECTION "bank48", ROMX, BANK[$48]
-;INCLUDE "maps/NewBarkTown.asm"
-;INCLUDE "maps/CherrygroveCity.asm"
-;INCLUDE "maps/VioletCity.asm"
-;INCLUDE "maps/AzaleaTown.asm"
-;INCLUDE "maps/CianwoodCity.asm"
-;INCLUDE "maps/GoldenrodCity.asm"
- dr $120000, $124000
+INCLUDE "maps/NewBarkTown.asm"
+INCLUDE "maps/CherrygroveCity.asm"
+INCLUDE "maps/VioletCity.asm"
+INCLUDE "maps/AzaleaTown.asm"
+INCLUDE "maps/CianwoodCity.asm"
+INCLUDE "maps/GoldenrodCity.asm"
SECTION "bank49", ROMX, BANK[$49]
;INCLUDE "maps/OlivineCity.asm"
diff --git a/maps/AzaleaTown.asm b/maps/AzaleaTown.asm
new file mode 100644
index 00000000..ca609d23
--- /dev/null
+++ b/maps/AzaleaTown.asm
@@ -0,0 +1,437 @@
+ const_def 2 ; object constants
+ const AZALEATOWN_AZALEA_ROCKET1
+ const AZALEATOWN_GRAMPS
+ const AZALEATOWN_TEACHER
+ const AZALEATOWN_YOUNGSTER
+ const AZALEATOWN_SLOWPOKE1
+ const AZALEATOWN_SLOWPOKE2
+ const AZALEATOWN_SLOWPOKE3
+ const AZALEATOWN_SLOWPOKE4
+ const AZALEATOWN_FRUIT_TREE
+ const AZALEATOWN_SILVER
+ const AZALEATOWN_AZALEA_ROCKET3
+
+AzaleaTown_MapScripts:
+ db 2 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_AZALEATOWN_NOTHING
+ scene_script .DummyScene1 ; SCENE_AZALEATOWN_RIVAL_BATTLE
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .Flypoint
+
+.DummyScene0:
+ end
+
+.DummyScene1:
+ end
+
+.Flypoint:
+ setflag ENGINE_FLYPOINT_AZALEA
+ return
+
+AzaleaTownRivalBattleScene1:
+ moveobject AZALEATOWN_SILVER, 11, 11
+ turnobject PLAYER, RIGHT
+ showemote EMOTE_SHOCK, PLAYER, 15
+ special FadeOutMusic
+ pause 15
+ appear AZALEATOWN_SILVER
+ applymovement AZALEATOWN_SILVER, AzaleaTownRivalBattleApproachMovement1
+ turnobject PLAYER, DOWN
+ jump AzaleaTownRivalBattleScript
+
+AzaleaTownRivalBattleScene2:
+ turnobject PLAYER, RIGHT
+ showemote EMOTE_SHOCK, PLAYER, 15
+ special FadeOutMusic
+ pause 15
+ appear AZALEATOWN_SILVER
+ applymovement AZALEATOWN_SILVER, AzaleaTownRivalBattleApproachMovement2
+ turnobject PLAYER, UP
+AzaleaTownRivalBattleScript:
+ playmusic MUSIC_RIVAL_ENCOUNTER
+ opentext
+ writetext AzaleaTownRivalBeforeText
+ waitbutton
+ closetext
+ setevent EVENT_RIVAL_AZALEA_TOWN
+ checkevent EVENT_GOT_TOTODILE_FROM_ELM
+ iftrue .Totodile
+ checkevent EVENT_GOT_CHIKORITA_FROM_ELM
+ iftrue .Chikorita
+ winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
+ setlasttalked AZALEATOWN_SILVER
+ loadtrainer RIVAL1, RIVAL1_2_TOTODILE
+ startbattle
+ dontrestartmapmusic
+ reloadmapafterbattle
+ jump .AfterBattle
+
+.Totodile:
+ winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
+ setlasttalked AZALEATOWN_SILVER
+ loadtrainer RIVAL1, RIVAL1_2_CHIKORITA
+ startbattle
+ dontrestartmapmusic
+ reloadmapafterbattle
+ jump .AfterBattle
+
+.Chikorita:
+ winlosstext AzaleaTownRivalWinText, AzaleaTownRivalLossText
+ setlasttalked AZALEATOWN_SILVER
+ loadtrainer RIVAL1, RIVAL1_2_CYNDAQUIL
+ startbattle
+ dontrestartmapmusic
+ reloadmapafterbattle
+ jump .AfterBattle
+
+.AfterBattle:
+ playmusic MUSIC_RIVAL_AFTER
+ opentext
+ writetext AzaleaTownRivalAfterText
+ waitbutton
+ closetext
+ turnobject PLAYER, LEFT
+ applymovement AZALEATOWN_SILVER, AzaleaTownRivalBattleExitMovement
+ playsound SFX_EXIT_BUILDING
+ disappear AZALEATOWN_SILVER
+ setscene SCENE_AZALEATOWN_NOTHING
+ waitsfx
+ playmapmusic
+ end
+
+AzaleaTownRocket1Script:
+ jumptextfaceplayer AzaleaTownRocket1Text
+
+AzaleaTownRocket2Script:
+ jumptextfaceplayer AzaleaTownRocket2Text
+
+AzaleaTownGrampsScript:
+ faceplayer
+ opentext
+ checkevent EVENT_CLEARED_SLOWPOKE_WELL
+ iftrue .ClearedWell
+ writetext AzaleaTownGrampsTextBefore
+ waitbutton
+ closetext
+ end
+
+.ClearedWell:
+ writetext AzaleaTownGrampsTextAfter
+ waitbutton
+ closetext
+ end
+
+AzaleaTownTeacherScript:
+ jumptextfaceplayer AzaleaTownTeacherText
+
+AzaleaTownYoungsterScript:
+ jumptextfaceplayer AzaleaTownYoungsterText
+
+AzaleaTownSlowpokeScript:
+ opentext
+ writetext AzaleaTownSlowpokeText1
+ pause 60
+ writetext AzaleaTownSlowpokeText2
+ cry SLOWPOKE
+ waitbutton
+ closetext
+ end
+
+UnusedWoosterScript:
+; unused
+ faceplayer
+ opentext
+ writetext WoosterText
+ cry QUAGSIRE
+ waitbutton
+ closetext
+ end
+
+AzaleaTownSign:
+ jumptext AzaleaTownSignText
+
+KurtsHouseSign:
+ jumptext KurtsHouseSignText
+
+AzaleaGymSign:
+ jumptext AzaleaGymSignText
+
+SlowpokeWellSign:
+ jumptext SlowpokeWellSignText
+
+CharcoalKilnSign:
+ jumptext CharcoalKilnSignText
+
+AzaleaTownIlextForestSign:
+ jumptext AzaleaTownIlexForestSignText
+
+AzaleaTownPokecenterSign:
+ jumpstd pokecentersign
+
+AzaleaTownMartSign:
+ jumpstd martsign
+
+WhiteApricornTree:
+ fruittree FRUITTREE_AZALEA_TOWN
+
+AzaleaTownHiddenFullHeal:
+ hiddenitem FULL_HEAL, EVENT_AZALEA_TOWN_HIDDEN_FULL_HEAL
+
+AzaleaTownRivalBattleApproachMovement1:
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ turn_head UP
+ step_end
+
+AzaleaTownRivalBattleApproachMovement2:
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ turn_head DOWN
+ step_end
+
+AzaleaTownRivalBattleExitMovement:
+ step LEFT
+ step LEFT
+ step LEFT
+ step_end
+
+AzaleaTownRivalBeforeText:
+ text "…Tell me some-"
+ line "thing."
+
+ para "Is it true that"
+ line "TEAM ROCKET has"
+ cont "returned?"
+
+ para "What? You beat"
+ line "them? Hah! Quit"
+ cont "lying."
+
+ para "You're not joking?"
+ line "Then let's see how"
+ cont "good you are."
+ done
+
+AzaleaTownRivalWinText:
+ text "… Humph! Useless"
+ line "#MON!"
+
+ para "Listen, you. You"
+ line "only won because"
+
+ para "my #MON were"
+ line "weak."
+ done
+
+AzaleaTownRivalAfterText:
+ text "I hate the weak."
+
+ para "#MON, trainers."
+ line "It doesn't matter"
+ cont "who or what."
+
+ para "I'm going to be"
+ line "strong and wipe"
+ cont "out the weak."
+
+ para "That goes for TEAM"
+ line "ROCKET too."
+
+ para "They act big and"
+ line "tough in a group."
+
+ para "But get them"
+ line "alone, and they're"
+ cont "weak."
+
+ para "I hate them all."
+
+ para "You stay out of my"
+ line "way. A weakling"
+
+ para "like you is only a"
+ line "distraction."
+ done
+
+AzaleaTownRivalLossText:
+ text "…Humph! I knew"
+ line "you were lying."
+ done
+
+AzaleaTownRocket1Text:
+ text "It's unsafe to go"
+ line "in there, so I'm"
+ cont "standing guard."
+
+ para "Aren't I a good"
+ line "Samaritan?"
+ done
+
+AzaleaTownRocket2Text:
+ text "Do you know about"
+ line "SLOWPOKETAIL? I"
+ cont "heard it's tasty!"
+
+ para "Aren't you glad I"
+ line "told you that?"
+ done
+
+AzaleaTownGrampsTextBefore:
+ text "The SLOWPOKE have"
+ line "disappeared from"
+ cont "town…"
+
+ para "I heard their"
+ line "TAILS are being"
+ cont "sold somewhere."
+ done
+
+AzaleaTownGrampsTextAfter:
+ text "The SLOWPOKE have"
+ line "returned."
+
+ para "Knowing them, they"
+ line "could've just been"
+
+ para "goofing off some-"
+ line "where."
+ done
+
+AzaleaTownTeacherText:
+ text "Did you come to"
+ line "get KURT to make"
+ cont "some BALLS?"
+
+ para "A lot of people do"
+ line "just that."
+ done
+
+AzaleaTownYoungsterText:
+ text "Cut through AZALEA"
+ line "and you'll be in"
+ cont "ILEX FOREST."
+
+ para "But these skinny"
+ line "trees make it"
+
+ para "impossible to get"
+ line "through."
+
+ para "The CHARCOAL MAN's"
+ line "#MON can CUT"
+ cont "down trees."
+ done
+
+AzaleaTownSlowpokeText1:
+ text "SLOWPOKE: …"
+
+ para "<……> <……> <……>"
+ done
+
+AzaleaTownSlowpokeText2:
+ text "<……> <……>Yawn?"
+ done
+
+WoosterText:
+ text "WOOSTER: Gugyoo…"
+ done
+
+AzaleaTownSignText:
+ text "AZALEA TOWN"
+ line "Where People and"
+
+ para "#MON Live in"
+ line "Happy Harmony"
+ done
+
+KurtsHouseSignText:
+ text "KURT'S HOUSE"
+ done
+
+AzaleaGymSignText:
+ text "AZALEA TOWN"
+ line "#MON GYM"
+ cont "LEADER: BUGSY"
+
+ para "The Walking"
+ line "Bug #MON"
+ cont "Encyclopedia"
+ done
+
+SlowpokeWellSignText:
+ text "SLOWPOKE WELL"
+
+ para "Also known as the"
+ line "RAINMAKER WELL."
+
+ para "Locals believe"
+ line "that a SLOWPOKE's"
+ cont "yawn summons rain."
+
+ para "Records show that"
+ line "a SLOWPOKE's yawn"
+
+ para "ended a drought"
+ line "400 years ago."
+ done
+
+CharcoalKilnSignText:
+ text "CHARCOAL KILN"
+ done
+
+AzaleaTownIlexForestSignText:
+ text "ILEX FOREST"
+
+ para "Enter through the"
+ line "gate."
+ done
+
+AzaleaTown_MapEvents:
+ db 0, 0 ; filler
+
+ db 8 ; warp events
+ warp_event 15, 9, AZALEA_POKECENTER_1F, 1
+ warp_event 21, 13, CHARCOAL_KILN, 1
+ warp_event 21, 5, AZALEA_MART, 2
+ warp_event 9, 5, KURTS_HOUSE, 1
+ warp_event 10, 15, AZALEA_GYM, 1
+ warp_event 31, 7, SLOWPOKE_WELL_B1F, 1
+ warp_event 2, 10, ILEX_FOREST_AZALEA_GATE, 3
+ warp_event 2, 11, ILEX_FOREST_AZALEA_GATE, 4
+
+ db 2 ; coord events
+ coord_event 5, 10, SCENE_AZALEATOWN_RIVAL_BATTLE, AzaleaTownRivalBattleScene1
+ coord_event 5, 11, SCENE_AZALEATOWN_RIVAL_BATTLE, AzaleaTownRivalBattleScene2
+
+ db 9 ; bg events
+ bg_event 19, 9, BGEVENT_READ, AzaleaTownSign
+ bg_event 10, 9, BGEVENT_READ, KurtsHouseSign
+ bg_event 14, 15, BGEVENT_READ, AzaleaGymSign
+ bg_event 29, 7, BGEVENT_READ, SlowpokeWellSign
+ bg_event 19, 13, BGEVENT_READ, CharcoalKilnSign
+ bg_event 16, 9, BGEVENT_READ, AzaleaTownPokecenterSign
+ bg_event 22, 5, BGEVENT_READ, AzaleaTownMartSign
+ bg_event 3, 9, BGEVENT_READ, AzaleaTownIlextForestSign
+ bg_event 31, 6, BGEVENT_ITEM, AzaleaTownHiddenFullHeal
+
+ db 11 ; object events
+ object_event 31, 9, SPRITE_AZALEA_ROCKET, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, AzaleaTownRocket1Script, EVENT_AZALEA_TOWN_SLOWPOKETAIL_ROCKET
+ object_event 21, 9, SPRITE_GRAMPS, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, AzaleaTownGrampsScript, -1
+ object_event 15, 13, SPRITE_TEACHER, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 2, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, AzaleaTownTeacherScript, -1
+ object_event 7, 9, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, AzaleaTownYoungsterScript, -1
+ object_event 8, 17, SPRITE_SLOWPOKE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
+ object_event 18, 9, SPRITE_SLOWPOKE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
+ object_event 29, 9, SPRITE_SLOWPOKE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
+ object_event 15, 15, SPRITE_SLOWPOKE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, AzaleaTownSlowpokeScript, EVENT_AZALEA_TOWN_SLOWPOKES
+ object_event 8, 2, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, WhiteApricornTree, -1
+ object_event 11, 10, SPRITE_AZALEA_ROCKET, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_AZALEA_TOWN
+ object_event 10, 16, SPRITE_AZALEA_ROCKET, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, AzaleaTownRocket2Script, EVENT_SLOWPOKE_WELL_ROCKETS
diff --git a/maps/CherrygroveCity.asm b/maps/CherrygroveCity.asm
new file mode 100644
index 00000000..85a27b65
--- /dev/null
+++ b/maps/CherrygroveCity.asm
@@ -0,0 +1,572 @@
+ const_def 2 ; object constants
+ const CHERRYGROVECITY_GRAMPS
+ const CHERRYGROVECITY_SILVER
+ const CHERRYGROVECITY_TEACHER
+ const CHERRYGROVECITY_YOUNGSTER
+ const CHERRYGROVECITY_FISHER
+
+CherrygroveCity_MapScripts:
+ db 2 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_CHERRYGROVECITY_NOTHING
+ scene_script .DummyScene1 ; SCENE_CHERRYGROVECITY_MEET_RIVAL
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .FlyPoint
+
+.DummyScene0:
+ end
+
+.DummyScene1:
+ end
+
+.FlyPoint:
+ setflag ENGINE_FLYPOINT_CHERRYGROVE
+ return
+
+CherrygroveCityGuideGent:
+ faceplayer
+ opentext
+ writetext GuideGentIntroText
+ yesorno
+ iffalse .No
+ jump .Yes
+.Yes:
+ writetext GuideGentTourText1
+ waitbutton
+ closetext
+ playmusic MUSIC_SHOW_ME_AROUND
+ follow CHERRYGROVECITY_GRAMPS, PLAYER
+ applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement1
+ opentext
+ writetext GuideGentPokecenterText
+ waitbutton
+ closetext
+ applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement2
+ turnobject PLAYER, UP
+ opentext
+ writetext GuideGentMartText
+ waitbutton
+ closetext
+ applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement3
+ turnobject PLAYER, UP
+ opentext
+ writetext GuideGentRoute30Text
+ waitbutton
+ closetext
+ applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement4
+ turnobject PLAYER, LEFT
+ opentext
+ writetext GuideGentSeaText
+ waitbutton
+ closetext
+ applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement5
+ turnobject PLAYER, UP
+ pause 60
+ turnobject CHERRYGROVECITY_GRAMPS, LEFT
+ turnobject PLAYER, RIGHT
+ opentext
+ writetext GuideGentGiftText
+ buttonsound
+ stringtotext .mapcardname, MEM_BUFFER_1
+ scall .JumpstdReceiveItem
+ setflag ENGINE_MAP_CARD
+ writetext GotMapCardText
+ buttonsound
+ writetext GuideGentPokegearText
+ waitbutton
+ closetext
+ stopfollow
+ special RestartMapMusic
+ turnobject PLAYER, UP
+ applymovement CHERRYGROVECITY_GRAMPS, GuideGentMovement6
+ playsound SFX_ENTER_DOOR
+ disappear CHERRYGROVECITY_GRAMPS
+ clearevent EVENT_GUIDE_GENT_VISIBLE_IN_CHERRYGROVE
+ waitsfx
+ end
+
+.JumpstdReceiveItem:
+ jumpstd receiveitem
+ end
+
+.mapcardname
+ db "MAP CARD@"
+
+.No:
+ writetext GuideGentNoText
+ waitbutton
+ closetext
+ end
+
+CherrygroveSilverSceneSouth:
+ moveobject CHERRYGROVECITY_SILVER, 39, 7
+CherrygroveSilverSceneNorth:
+ turnobject PLAYER, RIGHT
+ showemote EMOTE_SHOCK, PLAYER, 15
+ special FadeOutMusic
+ pause 15
+ appear CHERRYGROVECITY_SILVER
+ applymovement CHERRYGROVECITY_SILVER, CherrygroveCity_RivalWalksToYou
+ turnobject PLAYER, RIGHT
+ playmusic MUSIC_RIVAL_ENCOUNTER
+ opentext
+ writetext CherrygroveRivalText_Seen
+ waitbutton
+ closetext
+ checkevent EVENT_GOT_TOTODILE_FROM_ELM
+ iftrue .Totodile
+ checkevent EVENT_GOT_CHIKORITA_FROM_ELM
+ iftrue .Chikorita
+ winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
+ setlasttalked CHERRYGROVECITY_SILVER
+ loadtrainer RIVAL1, RIVAL1_1_TOTODILE
+ writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
+ startbattle
+ dontrestartmapmusic
+ reloadmap
+ iftrue .AfterVictorious
+ jump .AfterYourDefeat
+
+.Totodile:
+ winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
+ setlasttalked CHERRYGROVECITY_SILVER
+ loadtrainer RIVAL1, RIVAL1_1_CHIKORITA
+ writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
+ startbattle
+ dontrestartmapmusic
+ reloadmap
+ iftrue .AfterVictorious
+ jump .AfterYourDefeat
+
+.Chikorita:
+ winlosstext SilverCherrygroveWinText, SilverCherrygroveLossText
+ setlasttalked CHERRYGROVECITY_SILVER
+ loadtrainer RIVAL1, RIVAL1_1_CYNDAQUIL
+ writecode VAR_BATTLETYPE, BATTLETYPE_CANLOSE
+ startbattle
+ dontrestartmapmusic
+ reloadmap
+ iftrue .AfterVictorious
+ jump .AfterYourDefeat
+
+.AfterVictorious:
+ playmusic MUSIC_RIVAL_AFTER
+ opentext
+ writetext CherrygroveRivalText_YouWon
+ waitbutton
+ closetext
+ jump .FinishRival
+
+.AfterYourDefeat:
+ playmusic MUSIC_RIVAL_AFTER
+ opentext
+ writetext CherrygroveRivalText_YouLost
+ waitbutton
+ closetext
+.FinishRival:
+ playsound SFX_TACKLE
+ applymovement PLAYER, CherrygroveCity_RivalPushesYouOutOfTheWay
+ turnobject PLAYER, LEFT
+ applymovement CHERRYGROVECITY_SILVER, CherrygroveCity_RivalExitsStageLeft
+ disappear CHERRYGROVECITY_SILVER
+ setscene SCENE_CHERRYGROVECITY_NOTHING
+ special HealParty
+ playmapmusic
+ end
+
+CherrygroveTeacherScript:
+ faceplayer
+ opentext
+ checkflag ENGINE_MAP_CARD
+ iftrue .HaveMapCard
+ writetext CherrygroveTeacherText_NoMapCard
+ waitbutton
+ closetext
+ end
+
+.HaveMapCard:
+ writetext CherrygroveTeacherText_HaveMapCard
+ waitbutton
+ closetext
+ end
+
+CherrygroveYoungsterScript:
+ faceplayer
+ opentext
+ checkflag ENGINE_POKEDEX
+ iftrue .HavePokedex
+ writetext CherrygroveYoungsterText_NoPokedex
+ waitbutton
+ closetext
+ end
+
+.HavePokedex:
+ writetext CherrygroveYoungsterText_HavePokedex
+ waitbutton
+ closetext
+ end
+
+MysticWaterGuy:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_MYSTIC_WATER_IN_CHERRYGROVE
+ iftrue .After
+ writetext MysticWaterGuyTextBefore
+ buttonsound
+ verbosegiveitem MYSTIC_WATER
+ iffalse .Exit
+ setevent EVENT_GOT_MYSTIC_WATER_IN_CHERRYGROVE
+.After:
+ writetext MysticWaterGuyTextAfter
+ waitbutton
+.Exit:
+ closetext
+ end
+
+CherrygroveCitySign:
+ jumptext CherrygroveCitySignText
+
+GuideGentsHouseSign:
+ jumptext GuideGentsHouseSignText
+
+CherrygroveCityPokecenterSign:
+ jumpstd pokecentersign
+
+CherrygroveCityMartSign:
+ jumpstd martsign
+
+GuideGentMovement1:
+ step LEFT
+ step LEFT
+ step UP
+ step LEFT
+ turn_head UP
+ step_end
+
+GuideGentMovement2:
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ turn_head UP
+ step_end
+
+GuideGentMovement3:
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ turn_head UP
+ step_end
+
+GuideGentMovement4:
+ step LEFT
+ step LEFT
+ step LEFT
+ step DOWN
+ step LEFT
+ step LEFT
+ step LEFT
+ step DOWN
+ turn_head LEFT
+ step_end
+
+GuideGentMovement5:
+ step DOWN
+ step DOWN
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step DOWN
+ step DOWN
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ turn_head UP
+ step_end
+
+GuideGentMovement6:
+ step UP
+ step UP
+ step_end
+
+CherrygroveCity_RivalWalksToYou:
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step_end
+
+CherrygroveCity_RivalPushesYouOutOfTheWay:
+ big_step DOWN
+ turn_head UP
+ step_end
+
+CherrygroveCity_UnusedMovementData:
+ step LEFT
+ turn_head DOWN
+ step_end
+
+CherrygroveCity_RivalExitsStageLeft:
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+GuideGentIntroText:
+ text "You're a rookie"
+ line "trainer, aren't"
+ cont "you? I can tell!"
+
+ para "That's OK! Every-"
+ line "one is a rookie"
+ cont "at some point!"
+
+ para "If you'd like, I"
+ line "can teach you a"
+ cont "few things."
+ done
+
+GuideGentTourText1:
+ text "OK, then!"
+ line "Follow me!"
+ done
+
+GuideGentPokecenterText:
+ text "This is a #MON"
+ line "CENTER. They heal"
+
+ para "your #MON in no"
+ line "time at all."
+
+ para "You'll be relying"
+ line "on them a lot, so"
+
+ para "you better learn"
+ line "about them."
+ done
+
+GuideGentMartText:
+ text "This is a #MON"
+ line "MART."
+
+ para "They sell BALLS"
+ line "for catching wild"
+
+ para "#MON and other"
+ line "useful items."
+ done
+
+GuideGentRoute30Text:
+ text "ROUTE 30 is out"
+ line "this way."
+
+ para "Trainers will be"
+ line "battling their"
+
+ para "prized #MON"
+ line "there."
+ done
+
+GuideGentSeaText:
+ text "This is the sea,"
+ line "as you can see."
+
+ para "Some #MON are"
+ line "found only in"
+ cont "water."
+ done
+
+GuideGentGiftText:
+ text "Here…"
+
+ para "It's my house!"
+ line "Thanks for your"
+ cont "company."
+
+ para "Let me give you a"
+ line "small gift."
+ done
+
+GotMapCardText:
+ text "<PLAYER>'s #GEAR"
+ line "now has a MAP!"
+ done
+
+GuideGentPokegearText:
+ text "#GEAR becomes"
+ line "more useful as you"
+ cont "add CARDS."
+
+ para "I wish you luck on"
+ line "your journey!"
+ done
+
+GuideGentNoText:
+ text "Oh… It's something"
+ line "I enjoy doing…"
+
+ para "Fine. Come see me"
+ line "when you like."
+ done
+
+CherrygroveRivalText_Seen:
+ text "…"
+
+ para "You got a #MON"
+ line "at the LAB."
+
+ para "What a waste."
+ line "A wimp like you."
+
+ para "…"
+
+ para "Don't you get what"
+ line "I'm saying?"
+
+ para "Well, I too, have"
+ line "a good #MON."
+
+ para "I'll show you"
+ line "what I mean!"
+ done
+
+SilverCherrygroveWinText:
+ text "Humph. Are you"
+ line "happy you won?"
+ done
+
+CherrygroveRivalText_YouLost:
+ text "…"
+
+ para "My name's ???."
+
+ para "I'm going to be"
+ line "the world's great-"
+ cont "est #MON"
+ cont "trainer."
+ done
+
+SilverCherrygroveLossText:
+ text "Humph. That was a"
+ line "waste of time."
+ done
+
+CherrygroveRivalText_YouWon:
+ text "…"
+
+ para "My name's ???."
+
+ para "I'm going to be"
+ line "the world's great-"
+ cont "est #MON"
+ cont "trainer."
+ done
+
+CherrygroveTeacherText_NoMapCard:
+ text "Did you talk to"
+ line "the old man by the"
+ cont "#MON CENTER?"
+
+ para "He'll put a MAP of"
+ line "JOHTO on your"
+ cont "#GEAR."
+ done
+
+CherrygroveTeacherText_HaveMapCard:
+ text "When you're with"
+ line "#MON, going"
+ cont "anywhere is fun."
+ done
+
+CherrygroveYoungsterText_NoPokedex:
+ text "MR.#MON's house"
+ line "is still farther"
+ cont "up ahead."
+ done
+
+CherrygroveYoungsterText_HavePokedex:
+ text "I battled the"
+ line "trainers on the"
+ cont "road."
+
+ para "My #MON lost."
+ line "They're a mess! I"
+
+ para "must take them to"
+ line "a #MON CENTER."
+ done
+
+MysticWaterGuyTextBefore:
+ text "A #MON I caught"
+ line "had an item."
+
+ para "I think it's"
+ line "MYSTIC WATER."
+
+ para "I don't need it,"
+ line "so do you want it?"
+ done
+
+MysticWaterGuyTextAfter:
+ text "Back to fishing"
+ line "for me, then."
+ done
+
+CherrygroveCitySignText:
+ text "CHERRYGROVE CITY"
+
+ para "The City of Cute,"
+ line "Fragrant Flowers"
+ done
+
+GuideGentsHouseSignText:
+ text "GUIDE GENT'S HOUSE"
+ done
+
+CherrygroveCity_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 23, 3, CHERRYGROVE_MART, 2
+ warp_event 29, 3, CHERRYGROVE_POKECENTER_1F, 1
+ warp_event 17, 7, CHERRYGROVE_GYM_SPEECH_HOUSE, 1
+ warp_event 25, 9, GUIDE_GENTS_HOUSE, 1
+ warp_event 31, 11, CHERRYGROVE_EVOLUTION_SPEECH_HOUSE, 1
+
+ db 2 ; coord events
+ coord_event 33, 6, SCENE_CHERRYGROVECITY_MEET_RIVAL, CherrygroveSilverSceneNorth
+ coord_event 33, 7, SCENE_CHERRYGROVECITY_MEET_RIVAL, CherrygroveSilverSceneSouth
+
+ db 4 ; bg events
+ bg_event 30, 8, BGEVENT_READ, CherrygroveCitySign
+ bg_event 23, 9, BGEVENT_READ, GuideGentsHouseSign
+ bg_event 24, 3, BGEVENT_READ, CherrygroveCityMartSign
+ bg_event 30, 3, BGEVENT_READ, CherrygroveCityPokecenterSign
+
+ db 5 ; object events
+ object_event 32, 6, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CherrygroveCityGuideGent, EVENT_GUIDE_GENT_IN_HIS_HOUSE
+ object_event 39, 6, SPRITE_SILVER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_CHERRYGROVE_CITY
+ object_event 27, 12, SPRITE_TEACHER, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CherrygroveTeacherScript, -1
+ object_event 23, 7, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CherrygroveYoungsterScript, -1
+ object_event 7, 12, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, MysticWaterGuy, -1
diff --git a/maps/CianwoodCity.asm b/maps/CianwoodCity.asm
new file mode 100644
index 00000000..30117d47
--- /dev/null
+++ b/maps/CianwoodCity.asm
@@ -0,0 +1,253 @@
+ const_def 2 ; object constants
+ const CIANWOODCITY_STANDING_YOUNGSTER
+ const CIANWOODCITY_POKEFAN_M
+ const CIANWOODCITY_LASS
+ const CIANWOODCITY_ROCK1
+ const CIANWOODCITY_ROCK2
+ const CIANWOODCITY_ROCK3
+ const CIANWOODCITY_ROCK4
+ const CIANWOODCITY_ROCK5
+ const CIANWOODCITY_ROCK6
+ const CIANWOODCITY_POKEFAN_F
+
+CianwoodCity_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .FlyPoint
+
+.FlyPoint:
+ setflag ENGINE_FLYPOINT_CIANWOOD
+ return
+
+CianwoodCityChucksWife:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_HM02_FLY
+ iftrue .GotFly
+ writetext ChucksWifeEasierToFlyText
+ buttonsound
+ checkevent EVENT_BEAT_CHUCK
+ iftrue .BeatChuck
+ writetext ChucksWifeBeatChuckText
+ waitbutton
+ closetext
+ end
+
+.BeatChuck:
+ writetext ChucksWifeGiveHMText
+ buttonsound
+ verbosegiveitem HM_FLY
+ iffalse .Done
+ setevent EVENT_GOT_HM02_FLY
+ writetext ChucksWifeFlySpeechText
+ buttonsound
+.GotFly:
+ writetext ChucksWifeChubbyText
+ waitbutton
+.Done:
+ closetext
+ end
+
+CianwoodCityYoungster:
+ jumptextfaceplayer CianwoodCityYoungsterText
+
+CianwoodCityPokefanM:
+ jumptextfaceplayer CianwoodCityPokefanMText
+
+CianwoodCityLass:
+ jumptextfaceplayer CianwoodCityLassText
+
+CianwoodCityUnusedScript:
+; unreferenced
+ jumptextfaceplayer CianwoodCityUnusedText
+
+CianwoodCitySign:
+ jumptext CianwoodCitySignText
+
+CianwoodGymSign:
+ jumptext CianwoodGymSignText
+
+CianwoodPharmacySign:
+ jumptext CianwoodPharmacySignText
+
+CianwoodPhotoStudioSign:
+ jumptext CianwoodPhotoStudioSignText
+
+CianwoodPokecenterSign:
+ jumpstd pokecentersign
+
+CianwoodCityRock:
+ jumpstd smashrock
+
+CianwoodCityHiddenRevive:
+ hiddenitem REVIVE, EVENT_CIANWOOD_CITY_HIDDEN_REVIVE
+
+CianwoodCityHiddenMaxEther:
+ hiddenitem MAX_ETHER, EVENT_CIANWOOD_CITY_HIDDEN_MAX_ETHER
+
+ChucksWifeEasierToFlyText:
+ text "You crossed the"
+ line "sea to get here?"
+
+ para "That must have"
+ line "been hard."
+
+ para "It would be much"
+ line "easier if your"
+
+ para "#MON knew how"
+ line "to FLY…"
+ done
+
+ChucksWifeBeatChuckText:
+ text "But you can't use"
+ line "FLY without this"
+ cont "city's GYM BADGE."
+
+ para "If you beat the"
+ line "GYM LEADER here,"
+ cont "come see me."
+
+ para "I'll have a nice"
+ line "gift for you."
+ done
+
+ChucksWifeGiveHMText:
+ text "That's CIANWOOD's"
+ line "GYM BADGE!"
+
+ para "Then you should"
+ line "take this HM."
+ done
+
+ChucksWifeFlySpeechText:
+ text "Teach FLY to your"
+ line "#MON."
+
+ para "You will be able"
+ line "to FLY instantly"
+
+ para "to anywhere you "
+ line "have visited."
+ done
+
+ChucksWifeChubbyText:
+ text "My husband lost to"
+ line "you, so he needs"
+ cont "to train harder."
+
+ para "That's good, since"
+ line "he was getting a"
+ cont "little chubby."
+ done
+
+CianwoodCityYoungsterText:
+ text "If you use FLY,"
+ line "you can get back"
+
+ para "to OLIVINE in-"
+ line "stantly."
+ done
+
+CianwoodCityPokefanMText:
+ text "Boulders to the"
+ line "north of town can"
+ cont "be crushed."
+
+ para "They may be hiding"
+ line "something."
+
+ para "Your #MON could"
+ line "use ROCK SMASH to"
+ cont "break them."
+ done
+
+CianwoodCityLassText:
+ text "CHUCK, the GYM"
+ line "LEADER, spars with"
+
+ para "his fighting #-"
+ line "MON."
+ done
+
+CianwoodCityUnusedText:
+; unused
+ text "There are several"
+ line "islands between"
+ cont "here and OLIVINE."
+
+ para "A mythical sea"
+ line "creature supposed-"
+ cont "ly lives there."
+ done
+
+CianwoodCitySignText:
+ text "CIANWOOD CITY"
+
+ para "A Port Surrounded"
+ line "by Rough Seas"
+ done
+
+CianwoodGymSignText:
+ text "CIANWOOD CITY"
+ line "#MON GYM"
+
+ para "LEADER: CHUCK"
+
+ para "His Roaring Fists"
+ line "Do the Talking"
+ done
+
+CianwoodPharmacySignText:
+ text "500 Years of"
+ line "Tradition"
+
+ para "CIANWOOD CITY"
+ line "PHARMACY"
+
+ para "We Await Your"
+ line "Medicinal Queries"
+ done
+
+CianwoodPhotoStudioSignText:
+ text "CIANWOOD CITY"
+ line "PHOTO STUDIO"
+
+ para "Take a Snapshot as"
+ line "a Keepsake!"
+ done
+
+CianwoodCity_MapEvents:
+ db 0, 0 ; filler
+
+ db 6 ; warp events
+ warp_event 17, 41, MANIAS_HOUSE, 1
+ warp_event 8, 43, CIANWOOD_GYM, 1
+ warp_event 23, 43, CIANWOOD_POKECENTER_1F, 1
+ warp_event 15, 47, CIANWOOD_PHARMACY, 1
+ warp_event 9, 31, CIANWOOD_PHOTO_STUDIO, 1
+ warp_event 15, 37, CIANWOOD_LUGIA_SPEECH_HOUSE, 1
+
+ db 0 ; coord events
+
+ db 7 ; bg events
+ bg_event 20, 34, BGEVENT_READ, CianwoodCitySign
+ bg_event 7, 45, BGEVENT_READ, CianwoodGymSign
+ bg_event 24, 43, BGEVENT_READ, CianwoodPokecenterSign
+ bg_event 19, 47, BGEVENT_READ, CianwoodPharmacySign
+ bg_event 8, 32, BGEVENT_READ, CianwoodPhotoStudioSign
+ bg_event 8, 16, BGEVENT_ITEM, CianwoodCityHiddenRevive
+ bg_event 5, 29, BGEVENT_ITEM, CianwoodCityHiddenMaxEther
+
+ db 10 ; object events
+ object_event 21, 37, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CianwoodCityYoungster, -1
+ object_event 17, 31, SPRITE_POKEFAN_M, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityPokefanM, -1
+ object_event 14, 42, SPRITE_LASS, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 2, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityLass, -1
+ object_event 8, 16, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityRock, -1
+ object_event 11, 15, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityRock, -1
+ object_event 6, 24, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityRock, -1
+ object_event 5, 29, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityRock, -1
+ object_event 10, 27, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityRock, -1
+ object_event 7, 17, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityRock, -1
+ object_event 10, 46, SPRITE_POKEFAN_F, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CianwoodCityChucksWife, -1
diff --git a/maps/GoldenrodCity.asm b/maps/GoldenrodCity.asm
new file mode 100644
index 00000000..752f80ad
--- /dev/null
+++ b/maps/GoldenrodCity.asm
@@ -0,0 +1,381 @@
+ const_def 2 ; object constants
+ const GOLDENRODCITY_POKEFAN_M1
+ const GOLDENRODCITY_YOUNGSTER1
+ const GOLDENRODCITY_COOLTRAINER_F1
+ const GOLDENRODCITY_COOLTRAINER_F2
+ const GOLDENRODCITY_YOUNGSTER2
+ const GOLDENRODCITY_LASS
+ const GOLDENRODCITY_GRAMPS
+ const GOLDENRODCITY_ROCKETSCOUT
+ const GOLDENRODCITY_ROCKET1
+ const GOLDENRODCITY_ROCKET2
+ const GOLDENRODCITY_ROCKET3
+ const GOLDENRODCITY_ROCKET4
+ const GOLDENRODCITY_ROCKET5
+ const GOLDENRODCITY_ROCKET6
+
+GoldenrodCity_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .FlyPoint
+
+.FlyPoint:
+ setflag ENGINE_FLYPOINT_GOLDENROD
+ setflag ENGINE_REACHED_GOLDENROD
+ return
+
+GoldenrodCityPokefanMScript:
+ jumptextfaceplayer GoldenrodCityPokefanMText
+
+GoldenrodCityYoungster1Script:
+ jumptextfaceplayer GoldenrodCityYoungster1Text
+
+GoldenrodCityCooltrainerF1Script:
+ faceplayer
+ opentext
+ checkevent EVENT_CLEARED_RADIO_TOWER
+ iftrue .ClearedRadioTower
+ writetext GoldenrodCityCooltrainerF1Text
+ waitbutton
+ closetext
+ end
+
+.ClearedRadioTower:
+ writetext GoldenrodCityCooltrainerF1Text_ClearedRadioTower
+ waitbutton
+ closetext
+ end
+
+GoldenrodCityCooltrainerF2Script:
+ faceplayer
+ opentext
+ checkflag ENGINE_RADIO_CARD
+ iftrue .GotRadioCard
+ writetext GoldenrodCityCooltrainerF2Text
+ waitbutton
+ closetext
+ end
+
+.GotRadioCard:
+ writetext GoldenrodCityCooltrainerF2Text_GotRadioCard
+ waitbutton
+ closetext
+ end
+
+GoldenrodCityYoungster2Script:
+ jumptextfaceplayer GoldenrodCityYoungster2Text
+
+GoldenrodCityLassScript:
+ jumptextfaceplayer GoldenrodCityLassText
+
+GoldenrodCityGrampsScript:
+ jumptextfaceplayer GoldenrodCityGrampsText
+
+GoldenrodCityRocketScoutScript:
+ opentext
+ writetext GoldenrodCityRocketScoutText1
+ buttonsound
+ faceplayer
+ writetext GoldenrodCityRocketScoutText2
+ waitbutton
+ closetext
+ turnobject GOLDENRODCITY_ROCKETSCOUT, UP
+ end
+
+GoldenrodCityRocket1Script:
+ jumptextfaceplayer GoldenrodCityRocket1Text
+
+GoldenrodCityRocket2Script:
+ jumptextfaceplayer GoldenrodCityRocket2Text
+
+GoldenrodCityRocket3Script:
+ jumptextfaceplayer GoldenrodCityRocket3Text
+
+GoldenrodCityRocket4Script:
+ jumptextfaceplayer GoldenrodCityRocket4Text
+
+GoldenrodCityRocket5Script:
+ jumptextfaceplayer GoldenrodCityRocket5Text
+
+GoldenrodCityRocket6Script:
+ jumptextfaceplayer GoldenrodCityRocket6Text
+
+GoldenrodCityStationSign:
+ jumptext GoldenrodCityStationSignText
+
+GoldenrodCityRadioTowerSign:
+ jumptext GoldenrodCityRadioTowerSignText
+
+GoldenrodDeptStoreSign:
+ jumptext GoldenrodDeptStoreSignText
+
+GoldenrodGymSign:
+ jumptext GoldenrodGymSignText
+
+GoldenrodCitySign:
+ jumptext GoldenrodCitySignText
+
+GoldenrodCityBikeShopSign:
+ jumptext GoldenrodCityBikeShopSignText
+
+GoldenrodCityGameCornerSign:
+ jumptext GoldenrodCityGameCornerSignText
+
+GoldenrodCityNameRaterSign:
+ jumptext GoldenrodCityNameRaterSignText
+
+GoldenrodCityUndergroundSignNorth:
+ jumptext GoldenrodCityUndergroundSignNorthText
+
+GoldenrodCityUndergroundSignSouth:
+ jumptext GoldenrodCityUndergroundSignSouthText
+
+GoldenrodCityPokecenterSign:
+ jumpstd pokecentersign
+
+GoldenrodCityPokefanMText:
+ text "They built the new"
+ line "RADIO TOWER to"
+
+ para "replace the old,"
+ line "creaky one."
+ done
+
+GoldenrodCityYoungster1Text:
+ text "I know there's a"
+ line "new BIKE SHOP, but"
+
+ para "I can't find it"
+ line "anywhere."
+ done
+
+GoldenrodCityCooltrainerF1Text:
+ text "Is that man in"
+ line "black dressed up"
+
+ para "like a TEAM ROCKET"
+ line "member? How silly!"
+ done
+
+GoldenrodCityCooltrainerF1Text_ClearedRadioTower:
+ text "Was that man in"
+ line "black really part"
+
+ para "of TEAM ROCKET? I"
+ line "can't believe it!"
+ done
+
+GoldenrodCityCooltrainerF2Text:
+ text "The RADIO TOWER in"
+ line "GOLDENROD CITY is"
+ cont "a landmark."
+
+ para "They're running a"
+ line "promotional cam- "
+ cont "paign right now."
+
+ para "They'll modify"
+ line "your #GEAR,"
+
+ para "so it can also"
+ line "serve as a radio."
+ done
+
+GoldenrodCityCooltrainerF2Text_GotRadioCard:
+ text "Oh, your #GEAR"
+ line "works as a radio!"
+ done
+
+GoldenrodCityYoungster2Text:
+ text "E-he-he-he…"
+
+ para "I got in trouble"
+ line "for playing in the"
+
+ para "basement of the"
+ line "DEPT.STORE."
+ done
+
+GoldenrodCityLassText:
+ text "The man at that"
+ line "house rates your"
+ cont "#MON names."
+
+ para "He can even rename"
+ line "your #MON."
+ done
+
+GoldenrodCityGrampsText:
+ text "Whew! This is one"
+ line "big town. I don't"
+
+ para "know where any-"
+ line "thing is."
+ done
+
+GoldenrodCityRocketScoutText1:
+ text "So this is the"
+ line "RADIO TOWER…"
+ done
+
+GoldenrodCityRocketScoutText2:
+ text "What do you want,"
+ line "you pest? Scram!"
+ done
+
+GoldenrodCityRocket1Text:
+ text "Stay out of the"
+ line "way! Beat it!"
+ done
+
+GoldenrodCityRocket2Text:
+ text "Take over the"
+ line "RADIO TOWER…"
+
+ para "What? It's none of"
+ line "your business!"
+ done
+
+GoldenrodCityRocket3Text:
+ text "#MON? They're"
+ line "nothing more than"
+
+ para "tools for making"
+ line "money!"
+ done
+
+GoldenrodCityRocket4Text:
+ text "Our dream will"
+ line "soon come true…"
+
+ para "It was such a long"
+ line "struggle…"
+ done
+
+GoldenrodCityRocket5Text:
+ text "Hey, brat! You"
+ line "don't belong here!"
+ cont "Get lost!"
+ done
+
+GoldenrodCityRocket6Text:
+ text "Come taste the"
+ line "true terror of"
+ cont "TEAM ROCKET!"
+ done
+
+GoldenrodCityStationSignText:
+ text "GOLDENROD CITY"
+ line "STATION"
+ done
+
+GoldenrodCityRadioTowerSignText:
+ text "GOLDENROD CITY"
+ line "RADIO TOWER"
+ done
+
+GoldenrodDeptStoreSignText:
+ text "Full Selection of"
+ line "#MON Goods!"
+
+ para "GOLDENROD CITY"
+ line "DEPT.STORE"
+ done
+
+GoldenrodGymSignText:
+ text "GOLDENROD CITY"
+ line "#MON GYM"
+ cont "LEADER: WHITNEY"
+
+ para "The Incredibly"
+ line "Pretty Girl!"
+ done
+
+GoldenrodCitySignText:
+ text "GOLDENROD CITY"
+
+ para "The Festive City"
+ line "of Opulent Charm"
+ done
+
+GoldenrodCityBikeShopSignText:
+ text "The World is a"
+ line "Cycle Path!"
+ cont "BIKE SHOP"
+ done
+
+GoldenrodCityGameCornerSignText:
+ text "Your Playground!"
+
+ para "GOLDENROD CITY"
+ line "GAME CORNER"
+ done
+
+GoldenrodCityNameRaterSignText:
+ text "NAME RATER"
+
+ para "Get Your #MON"
+ line "Nicknames Rated"
+ done
+
+GoldenrodCityUndergroundSignNorthText:
+ text "UNDERGROUND"
+ line "ENTRANCE"
+ done
+
+GoldenrodCityUndergroundSignSouthText:
+ text "UNDERGROUND"
+ line "ENTRANCE"
+ done
+
+GoldenrodCity_MapEvents:
+ db 0, 0 ; filler
+
+ db 15 ; warp events
+ warp_event 24, 7, GOLDENROD_GYM, 1
+ warp_event 29, 29, GOLDENROD_BIKE_SHOP, 1
+ warp_event 31, 21, GOLDENROD_HAPPINESS_RATER, 1
+ warp_event 5, 25, BILLS_FAMILYS_HOUSE, 1
+ warp_event 9, 13, GOLDENROD_MAGNET_TRAIN_STATION, 2
+ warp_event 33, 5, GOLDENROD_FLOWER_SHOP, 1
+ warp_event 15, 27, GOLDENROD_POKECENTER_1F, 1
+ warp_event 33, 9, GOLDENROD_PP_SPEECH_HOUSE, 1
+ warp_event 15, 7, GOLDENROD_NAME_RATER, 1
+ warp_event 24, 27, GOLDENROD_DEPT_STORE_1F, 1
+ warp_event 14, 21, GOLDENROD_GAME_CORNER, 1
+ warp_event 5, 15, RADIO_TOWER_1F, 1
+ warp_event 19, 1, ROUTE_35_GOLDENROD_GATE, 3
+ warp_event 9, 5, GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES, 8
+ warp_event 11, 29, GOLDENROD_UNDERGROUND_SWITCH_ROOM_ENTRANCES, 5
+
+ db 0 ; coord events
+
+ db 11 ; bg events
+ bg_event 10, 14, BGEVENT_READ, GoldenrodCityStationSign
+ bg_event 4, 17, BGEVENT_READ, GoldenrodCityRadioTowerSign
+ bg_event 26, 27, BGEVENT_READ, GoldenrodDeptStoreSign
+ bg_event 26, 9, BGEVENT_READ, GoldenrodGymSign
+ bg_event 22, 18, BGEVENT_READ, GoldenrodCitySign
+ bg_event 28, 30, BGEVENT_READ, GoldenrodCityBikeShopSign
+ bg_event 16, 22, BGEVENT_READ, GoldenrodCityGameCornerSign
+ bg_event 12, 7, BGEVENT_READ, GoldenrodCityNameRaterSign
+ bg_event 8, 6, BGEVENT_READ, GoldenrodCityUndergroundSignNorth
+ bg_event 12, 30, BGEVENT_READ, GoldenrodCityUndergroundSignSouth
+ bg_event 16, 27, BGEVENT_READ, GoldenrodCityPokecenterSign
+
+ db 14 ; object events
+ object_event 7, 18, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityPokefanMScript, EVENT_GOLDENROD_CITY_CIVILIANS
+ object_event 30, 17, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityYoungster1Script, EVENT_GOLDENROD_CITY_CIVILIANS
+ object_event 12, 16, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, GoldenrodCityCooltrainerF1Script, EVENT_GOLDENROD_CITY_CIVILIANS
+ object_event 20, 26, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityCooltrainerF2Script, EVENT_GOLDENROD_CITY_CIVILIANS
+ object_event 19, 17, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, GoldenrodCityYoungster2Script, EVENT_GOLDENROD_CITY_CIVILIANS
+ object_event 17, 10, SPRITE_LASS, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 2, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, GoldenrodCityLassScript, EVENT_GOLDENROD_CITY_CIVILIANS
+ object_event 11, 27, SPRITE_GRAMPS, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityGrampsScript, EVENT_GOLDENROD_CITY_CIVILIANS
+ object_event 4, 16, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityRocketScoutScript, EVENT_GOLDENROD_CITY_ROCKET_SCOUT
+ object_event 28, 20, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityRocket1Script, EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+ object_event 8, 15, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityRocket2Script, EVENT_GOLDENROD_CITY_ROCKET_TAKEOVER
+ object_event 16, 23, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityRocket3Script, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+ object_event 29, 20, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityRocket4Script, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+ object_event 29, 7, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityRocket5Script, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
+ object_event 30, 10, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, GoldenrodCityRocket6Script, EVENT_RADIO_TOWER_ROCKET_TAKEOVER
diff --git a/maps/NewBarkTown.asm b/maps/NewBarkTown.asm
new file mode 100644
index 00000000..432e97e8
--- /dev/null
+++ b/maps/NewBarkTown.asm
@@ -0,0 +1,316 @@
+ const_def 2 ; object constants
+ const NEWBARKTOWN_TEACHER
+ const NEWBARKTOWN_FISHER
+ const NEWBARKTOWN_SILVER
+
+NewBarkTown_MapScripts:
+ db 2 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_DEFAULT
+ scene_script .DummyScene1 ; SCENE_FINISHED
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .FlyPoint
+
+.DummyScene0:
+ end
+
+.DummyScene1:
+ end
+
+.FlyPoint:
+ setflag ENGINE_FLYPOINT_NEW_BARK
+ clearevent EVENT_FIRST_TIME_BANKING_WITH_MOM
+ return
+
+NewBarkTown_TeacherStopsYouScene1:
+ playmusic MUSIC_MOM
+ turnobject NEWBARKTOWN_TEACHER, LEFT
+ opentext
+ writetext Text_WaitPlayer
+ waitbutton
+ closetext
+ turnobject PLAYER, RIGHT
+ applymovement NEWBARKTOWN_TEACHER, Movement_TeacherRunsToYou1_NBT
+ opentext
+ writetext Text_WhatDoYouThinkYoureDoing
+ waitbutton
+ closetext
+ follow NEWBARKTOWN_TEACHER, PLAYER
+ applymovement NEWBARKTOWN_TEACHER, Movement_TeacherBringsYouBack1_NBT
+ stopfollow
+ opentext
+ writetext Text_ItsDangerousToGoAlone
+ waitbutton
+ closetext
+ special RestartMapMusic
+ end
+
+NewBarkTown_TeacherStopsYouScene2:
+ playmusic MUSIC_MOM
+ turnobject NEWBARKTOWN_TEACHER, LEFT
+ opentext
+ writetext Text_WaitPlayer
+ waitbutton
+ closetext
+ turnobject PLAYER, RIGHT
+ applymovement NEWBARKTOWN_TEACHER, Movement_TeacherRunsToYou2_NBT
+ turnobject PLAYER, UP
+ opentext
+ writetext Text_WhatDoYouThinkYoureDoing
+ waitbutton
+ closetext
+ follow NEWBARKTOWN_TEACHER, PLAYER
+ applymovement NEWBARKTOWN_TEACHER, Movement_TeacherBringsYouBack2_NBT
+ stopfollow
+ opentext
+ writetext Text_ItsDangerousToGoAlone
+ waitbutton
+ closetext
+ special RestartMapMusic
+ end
+
+NewBarkTownTeacherScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TALKED_TO_MOM_AFTER_MYSTERY_EGG_QUEST
+ iftrue .CallMom
+ checkevent EVENT_GAVE_MYSTERY_EGG_TO_ELM
+ iftrue .TellMomYoureLeaving
+ checkevent EVENT_GOT_A_POKEMON_FROM_ELM
+ iftrue .MonIsAdorable
+ writetext Text_GearIsImpressive
+ waitbutton
+ closetext
+ end
+
+.MonIsAdorable:
+ writetext Text_YourMonIsAdorable
+ waitbutton
+ closetext
+ end
+
+.TellMomYoureLeaving:
+ writetext Text_TellMomIfLeaving
+ waitbutton
+ closetext
+ end
+
+.CallMom:
+ writetext Text_CallMomOnGear
+ waitbutton
+ closetext
+ end
+
+NewBarkTownFisherScript:
+ jumptextfaceplayer Text_ElmDiscoveredNewMon
+
+NewBarkTownSilverScript:
+ opentext
+ writetext NewBarkTownRivalText1
+ waitbutton
+ closetext
+ turnobject NEWBARKTOWN_SILVER, LEFT
+ opentext
+ writetext NewBarkTownRivalText2
+ waitbutton
+ closetext
+ follow PLAYER, NEWBARKTOWN_SILVER
+ applymovement PLAYER, Movement_SilverPushesYouAway_NBT
+ stopfollow
+ pause 5
+ turnobject NEWBARKTOWN_SILVER, DOWN
+ pause 5
+ playsound SFX_TACKLE
+ applymovement PLAYER, Movement_SilverShovesYouOut_NBT
+ applymovement NEWBARKTOWN_SILVER, Movement_SilverReturnsToTheShadows_NBT
+ end
+
+NewBarkTownSign:
+ jumptext NewBarkTownSignText
+
+NewBarkTownPlayersHouseSign:
+ jumptext NewBarkTownPlayersHouseSignText
+
+NewBarkTownElmsLabSign:
+ jumptext NewBarkTownElmsLabSignText
+
+NewBarkTownElmsHouseSign:
+ jumptext NewBarkTownElmsHouseSignText
+
+MrChronoScript:
+ faceplayer
+ opentext
+ writetext MrChronoText
+ special MrChrono
+ closetext
+ end
+
+Movement_TeacherRunsToYou1_NBT:
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step_end
+
+Movement_TeacherRunsToYou2_NBT:
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ turn_head DOWN
+ step_end
+
+Movement_TeacherBringsYouBack1_NBT:
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ turn_head LEFT
+ step_end
+
+Movement_TeacherBringsYouBack2_NBT:
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ turn_head LEFT
+ step_end
+
+Movement_SilverPushesYouAway_NBT:
+ turn_head UP
+ step DOWN
+ step_end
+
+Movement_SilverShovesYouOut_NBT:
+ turn_head UP
+ fix_facing
+ jump_step DOWN
+ remove_fixed_facing
+ step_end
+
+Movement_SilverReturnsToTheShadows_NBT:
+ step RIGHT
+ step_end
+
+Text_GearIsImpressive:
+ text "Wow, your #GEAR"
+ line "is impressive!"
+
+ para "Did your mom get"
+ line "it for you?"
+ done
+
+Text_WaitPlayer:
+ text "Wait, <PLAYER>!"
+ done
+
+Text_WhatDoYouThinkYoureDoing:
+ text "What do you think"
+ line "you're doing?"
+ done
+
+Text_ItsDangerousToGoAlone:
+ text "It's dangerous to"
+ line "go out without a"
+ cont "#MON!"
+
+ para "Wild #MON"
+ line "jump out of the"
+
+ para "grass on the way"
+ line "to the next town."
+ done
+
+Text_YourMonIsAdorable:
+ text "Oh! Your #MON"
+ line "is adorable!"
+ cont "I wish I had one!"
+ done
+
+Text_TellMomIfLeaving:
+ text "Hi, <PLAYER>!"
+ line "Leaving again?"
+
+ para "You should tell"
+ line "your mom if you"
+ cont "are leaving."
+ done
+
+Text_CallMomOnGear:
+ text "Call your mom on"
+ line "your #GEAR to"
+
+ para "let her know how"
+ line "you're doing."
+ done
+
+Text_ElmDiscoveredNewMon:
+ text "Yo, <PLAYER>!"
+
+ para "I hear PROF.ELM"
+ line "discovered some"
+ cont "new #MON."
+ done
+
+NewBarkTownRivalText1:
+ text "<……>"
+
+ para "So this is the"
+ line "famous ELM #MON"
+ cont "LAB…"
+ done
+
+NewBarkTownRivalText2:
+ text "…What are you"
+ line "staring at?"
+ done
+
+NewBarkTownSignText:
+ text "NEW BARK TOWN"
+
+ para "The Town Where the"
+ line "Winds of a New"
+ cont "Beginning Blow"
+ done
+
+NewBarkTownPlayersHouseSignText:
+ text "<PLAYER>'s House"
+ done
+
+NewBarkTownElmsLabSignText:
+ text "ELM #MON LAB"
+ done
+
+NewBarkTownElmsHouseSignText:
+ text "ELM'S HOUSE"
+ done
+
+MrChronoText:
+ text "I'm MR.CHRONO."
+ prompt
+
+NewBarkTown_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 6, 3, ELMS_LAB, 1
+ warp_event 13, 5, PLAYERS_HOUSE_1F, 1
+ warp_event 3, 11, PLAYERS_NEIGHBORS_HOUSE, 1
+ warp_event 11, 13, ELMS_HOUSE, 1
+
+ db 2 ; coord events
+ coord_event 1, 8, SCENE_DEFAULT, NewBarkTown_TeacherStopsYouScene1
+ coord_event 1, 9, SCENE_DEFAULT, NewBarkTown_TeacherStopsYouScene2
+
+ db 4 ; bg events
+ bg_event 8, 8, BGEVENT_READ, NewBarkTownSign
+ bg_event 11, 5, BGEVENT_READ, NewBarkTownPlayersHouseSign
+ bg_event 3, 3, BGEVENT_READ, NewBarkTownElmsLabSign
+ bg_event 9, 13, BGEVENT_READ, NewBarkTownElmsHouseSign
+
+ db 3 ; object events
+ object_event 6, 8, SPRITE_TEACHER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 1, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, NewBarkTownTeacherScript, -1
+ object_event 12, 9, SPRITE_FISHER, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, NewBarkTownFisherScript, -1
+ object_event 3, 2, SPRITE_SILVER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, NewBarkTownSilverScript, EVENT_RIVAL_NEW_BARK_TOWN
diff --git a/maps/VioletCity.asm b/maps/VioletCity.asm
new file mode 100644
index 00000000..966d1f4a
--- /dev/null
+++ b/maps/VioletCity.asm
@@ -0,0 +1,312 @@
+ const_def 2 ; object constants
+ const VIOLETCITY_EARL
+ const VIOLETCITY_LASS
+ const VIOLETCITY_SUPER_NERD
+ const VIOLETCITY_GRAMPS
+ const VIOLETCITY_YOUNGSTER
+ const VIOLETCITY_FRUIT_TREE
+ const VIOLETCITY_POKE_BALL1
+ const VIOLETCITY_POKE_BALL2
+
+VioletCity_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .FlyPoint
+
+.FlyPoint:
+ setflag ENGINE_FLYPOINT_VIOLET
+ return
+
+VioletCityEarlScript:
+ applymovement VIOLETCITY_EARL, VioletCitySpinningEarl_MovementData
+ faceplayer
+ opentext
+ writetext Text_EarlAsksIfYouBeatFalkner
+ yesorno
+ iffalse .FollowEarl
+ jump .PointlessJump
+
+.PointlessJump:
+ writetext Text_VeryNiceIndeed
+ waitbutton
+ closetext
+ end
+
+.FollowEarl:
+ writetext Text_FollowEarl
+ waitbutton
+ closetext
+ playmusic MUSIC_SHOW_ME_AROUND
+ follow VIOLETCITY_EARL, PLAYER
+ applymovement VIOLETCITY_EARL, VioletCityFollowEarl_MovementData
+ turnobject PLAYER, UP
+ applymovement VIOLETCITY_EARL, VioletCitySpinningEarl_MovementData
+ stopfollow
+ special RestartMapMusic
+ opentext
+ writetext Text_HereTeacherIAm
+ waitbutton
+ closetext
+ applymovement VIOLETCITY_EARL, VioletCitySpinningEarl_MovementData
+ applymovement VIOLETCITY_EARL, VioletCityFinishFollowEarl_MovementData
+ playsound SFX_ENTER_DOOR
+ disappear VIOLETCITY_EARL
+ clearevent EVENT_EARLS_ACADEMY_EARL
+ waitsfx
+ end
+
+VioletCityLassScript:
+ jumptextfaceplayer VioletCityLassText
+
+VioletCitySuperNerdScript:
+ jumptextfaceplayer VioletCitySuperNerdText
+
+VioletCityGrampsScript:
+ jumptextfaceplayer VioletCityGrampsText
+
+VioletCityYoungsterScript:
+ jumptextfaceplayer VioletCityYoungsterText
+
+VioletCitySign:
+ jumptext VioletCitySignText
+
+VioletGymSign:
+ jumptext VioletGymSignText
+
+SproutTowerSign:
+ jumptext SproutTowerSignText
+
+EarlsPokemonAcademySign:
+ jumptext EarlsPokemonAcademySignText
+
+VioletCityPokecenterSign:
+ jumpstd pokecentersign
+
+VioletCityMartSign:
+ jumpstd martsign
+
+VioletCityPPUp:
+ itemball PP_UP
+
+VioletCityRareCandy:
+ itemball RARE_CANDY
+
+VioletCityFruitTree:
+ fruittree FRUITTREE_VIOLET_CITY
+
+VioletCityHiddenHyperPotion:
+ hiddenitem HYPER_POTION, EVENT_VIOLET_CITY_HIDDEN_HYPER_POTION
+
+VioletCityFollowEarl_MovementData:
+ big_step DOWN
+ big_step DOWN
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ big_step DOWN
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ big_step UP
+ turn_head DOWN
+ step_end
+
+VioletCityFinishFollowEarl_MovementData:
+ step UP
+ step_end
+
+VioletCitySpinningEarl_MovementData:
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ step_end
+
+Text_EarlAsksIfYouBeatFalkner:
+ text "Hello!"
+ line "You are trainer?"
+
+ para "Battle GYM LEADER,"
+ line "win you did?"
+ done
+
+Text_VeryNiceIndeed:
+ text "Ooh, la la!"
+ line "Very indeed nice!"
+ done
+
+Text_FollowEarl:
+ text "Is that so? Then"
+ line "study shall you!"
+ cont "Follow me!"
+ done
+
+Text_HereTeacherIAm:
+ text "Here, teacher I"
+ line "am. Good it is"
+ cont "you study here!"
+ done
+
+VioletCityLassText:
+ text "Ghosts are rumored"
+ line "to appear in"
+ cont "SPROUT TOWER."
+
+ para "They said normal-"
+ line "type #MON moves"
+
+ para "had no effect on"
+ line "ghosts."
+ done
+
+VioletCitySuperNerdText:
+ text "Hey, you're a"
+ line "#MON trainer?"
+
+ para "If you beat the"
+ line "GYM LEADER here,"
+
+ para "you'll be ready"
+ line "for prime time!"
+ done
+
+VioletCityGrampsText:
+ text "FALKNER, from the"
+ line "VIOLET #MON"
+
+ para "GYM, is a fine"
+ line "trainer!"
+
+ para "He inherited his"
+ line "father's gym and"
+
+ para "has done a great"
+ line "job with it."
+ done
+
+VioletCityYoungsterText:
+ text "I saw a wiggly"
+ line "tree up ahead!"
+
+ para "If you touch it,"
+ line "it squirms and"
+ cont "dances! Cool!"
+ done
+
+VioletCitySignText:
+ text "VIOLET CITY"
+
+ para "The City of"
+ line "Nostalgic Scents"
+ done
+
+VioletGymSignText:
+ text "VIOLET CITY"
+ line "#MON GYM"
+ cont "LEADER: FALKNER"
+
+ para "The Elegant Master"
+ line "of Flying #MON"
+ done
+
+SproutTowerSignText:
+ text "SPROUT TOWER"
+
+ para "Experience the"
+ line "Way of #MON"
+ done
+
+EarlsPokemonAcademySignText:
+ text "EARL'S #MON"
+ line "ACADEMY"
+ done
+
+VioletCity_MapEvents:
+ db 0, 0 ; filler
+
+ db 9 ; warp events
+ warp_event 9, 17, VIOLET_MART, 2
+ warp_event 18, 17, VIOLET_GYM, 1
+ warp_event 30, 17, EARLS_POKEMON_ACADEMY, 1
+ warp_event 3, 15, VIOLET_NICKNAME_SPEECH_HOUSE, 1
+ warp_event 31, 25, VIOLET_POKECENTER_1F, 1
+ warp_event 21, 29, VIOLET_KYLES_HOUSE, 1
+ warp_event 23, 5, SPROUT_TOWER_1F, 1
+ warp_event 39, 24, ROUTE_31_VIOLET_GATE, 1
+ warp_event 39, 25, ROUTE_31_VIOLET_GATE, 2
+
+ db 0 ; coord events
+
+ db 7 ; bg events
+ bg_event 24, 20, BGEVENT_READ, VioletCitySign
+ bg_event 15, 17, BGEVENT_READ, VioletGymSign
+ bg_event 24, 8, BGEVENT_READ, SproutTowerSign
+ bg_event 27, 17, BGEVENT_READ, EarlsPokemonAcademySign
+ bg_event 32, 25, BGEVENT_READ, VioletCityPokecenterSign
+ bg_event 10, 17, BGEVENT_READ, VioletCityMartSign
+ bg_event 37, 14, BGEVENT_ITEM, VioletCityHiddenHyperPotion
+
+ db 8 ; object events
+ object_event 13, 16, SPRITE_FISHER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, VioletCityEarlScript, EVENT_VIOLET_CITY_EARL
+ object_event 28, 28, SPRITE_LASS, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, VioletCityLassScript, -1
+ object_event 24, 14, SPRITE_SUPER_NERD, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, VioletCitySuperNerdScript, -1
+ object_event 17, 20, SPRITE_GRAMPS, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VioletCityGrampsScript, -1
+ object_event 5, 18, SPRITE_YOUNGSTER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, VioletCityYoungsterScript, -1
+ object_event 14, 29, SPRITE_FRUIT_TREE, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VioletCityFruitTree, -1
+ object_event 4, 1, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, VioletCityPPUp, EVENT_VIOLET_CITY_PP_UP
+ object_event 35, 5, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, VioletCityRareCandy, EVENT_VIOLET_CITY_RARE_CANDY