summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIIMarckus <iimarckus@gmail.com>2018-10-03 02:57:52 -0600
committerIIMarckus <iimarckus@gmail.com>2018-10-03 02:57:52 -0600
commit3ec304aadfb74c9063251fa8411ffae719559449 (patch)
tree857d1c8a39ac67ebda6c8c14db791f14f77cdaff
parent0caa6b151e2126c99e2a044ae3e8c0e203831d22 (diff)
Add map objects from bank 5B.
-rw-r--r--main.asm25
-rw-r--r--maps/FastShip1F.asm315
-rw-r--r--maps/FastShipB1F.asm475
-rw-r--r--maps/FastShipCabins_NNW_NNE_NE.asm289
-rw-r--r--maps/FastShipCabins_SE_SSE_CaptainsCabin.asm474
-rw-r--r--maps/FastShipCabins_SW_SSW_NW.asm224
-rw-r--r--maps/MountMoonGiftShop.asm43
-rw-r--r--maps/MountMoonSquare.asm151
-rw-r--r--maps/OlivinePort.asm405
-rw-r--r--maps/OlivinePortPassage.asm35
-rw-r--r--maps/TinTowerRoof.asm65
-rw-r--r--maps/VermilionPort.asm315
-rw-r--r--maps/VermilionPortPassage.asm34
13 files changed, 2837 insertions, 13 deletions
diff --git a/main.asm b/main.asm
index ac7fffbb..837c2d3f 100644
--- a/main.asm
+++ b/main.asm
@@ -1848,19 +1848,18 @@ INCLUDE "maps/LancesRoom.asm"
INCLUDE "maps/HallOfFame.asm"
SECTION "bank5b", ROMX, BANK[$5b]
-;INCLUDE "maps/OlivinePort.asm"
-;INCLUDE "maps/VermilionPort.asm"
-;INCLUDE "maps/FastShip1F.asm"
-;INCLUDE "maps/FastShipCabins_NNW_NNE_NE.asm"
-;INCLUDE "maps/FastShipCabins_SW_SSW_NW.asm"
-;INCLUDE "maps/FastShipCabins_SE_SSE_CaptainsCabin.asm"
-;INCLUDE "maps/FastShipB1F.asm"
-;INCLUDE "maps/OlivinePortPassage.asm"
-;INCLUDE "maps/VermilionPortPassage.asm"
-;INCLUDE "maps/MountMoonSquare.asm"
-;INCLUDE "maps/MountMoonGiftShop.asm"
-;INCLUDE "maps/TinTowerRoof.asm"
- dr $16c000, $170000
+INCLUDE "maps/OlivinePort.asm"
+INCLUDE "maps/VermilionPort.asm"
+INCLUDE "maps/FastShip1F.asm"
+INCLUDE "maps/FastShipCabins_NNW_NNE_NE.asm"
+INCLUDE "maps/FastShipCabins_SW_SSW_NW.asm"
+INCLUDE "maps/FastShipCabins_SE_SSE_CaptainsCabin.asm"
+INCLUDE "maps/FastShipB1F.asm"
+INCLUDE "maps/OlivinePortPassage.asm"
+INCLUDE "maps/VermilionPortPassage.asm"
+INCLUDE "maps/MountMoonSquare.asm"
+INCLUDE "maps/MountMoonGiftShop.asm"
+INCLUDE "maps/TinTowerRoof.asm"
SECTION "bank5c", ROMX, BANK[$5c]
INCLUDE "maps/FuchsiaMart.asm"
diff --git a/maps/FastShip1F.asm b/maps/FastShip1F.asm
new file mode 100644
index 00000000..a47965cd
--- /dev/null
+++ b/maps/FastShip1F.asm
@@ -0,0 +1,315 @@
+ const_def 2 ; object constants
+ const FASTSHIP1F_SAILOR1
+ const FASTSHIP1F_SAILOR2
+ const FASTSHIP1F_SAILOR3
+ const FASTSHIP1F_GENTLEMAN
+
+FastShip1F_MapScripts:
+ db 3 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_DEFAULT
+ scene_script .EnterFastShip ; SCENE_FASTSHIP1F_ENTER_SHIP
+ scene_script .DummyScene2 ; SCENE_FASTSHIP1F_MEET_GRANDPA
+
+ db 0 ; callbacks
+
+.DummyScene0:
+ end
+
+.EnterFastShip:
+ priorityjump .EnterFastShipScript
+ end
+
+.DummyScene2:
+ end
+
+.EnterFastShipScript:
+ applymovement FASTSHIP1F_SAILOR1, MovementData_0x7520e
+ applymovement PLAYER, MovementData_0x75217
+ applymovement FASTSHIP1F_SAILOR1, MovementData_0x75211
+ pause 30
+ playsound SFX_BOAT
+ earthquake 30
+ blackoutmod FAST_SHIP_CABINS_SW_SSW_NW
+ clearevent EVENT_FAST_SHIP_HAS_ARRIVED
+ checkevent EVENT_FAST_SHIP_FIRST_TIME
+ iftrue .SkipGrandpa
+ setscene SCENE_FASTSHIP1F_MEET_GRANDPA
+ end
+
+.SkipGrandpa:
+ setscene SCENE_DEFAULT
+ end
+
+FastShip1FSailor1Script:
+ faceplayer
+ opentext
+ checkevent EVENT_FAST_SHIP_HAS_ARRIVED
+ iftrue .Arrived
+ checkevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
+ iftrue .Olivine
+ writetext FastShip1FSailor1Text_ToVermilion
+ waitbutton
+ closetext
+ end
+
+.Olivine:
+ writetext FastShip1FSailor1Text_ToOlivine
+ waitbutton
+ closetext
+ end
+
+.Arrived:
+ checkevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
+ iftrue ._Olivine
+ writetext FastShip1FSailor1Text_InVermilion
+ waitbutton
+ closetext
+ scall .LetThePlayerOut
+ playsound SFX_EXIT_BUILDING
+ special FadeOutPalettes
+ waitsfx
+ setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
+ setmapscene VERMILION_PORT, SCENE_VERMILIONPORT_LEAVE_SHIP
+ warp VERMILION_PORT, 7, 17
+ end
+
+._Olivine:
+ writetext FastShip1FSailor1Text_InOlivine
+ waitbutton
+ closetext
+ scall .LetThePlayerOut
+ playsound SFX_EXIT_BUILDING
+ special FadeOutPalettes
+ waitsfx
+ setevent EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
+ setmapscene OLIVINE_PORT, SCENE_OLIVINEPORT_LEAVE_SHIP
+ warp OLIVINE_PORT, 7, 23
+ end
+
+.LetThePlayerOut:
+ checkcode VAR_FACING
+ ifequal RIGHT, .YouAreFacingRight
+ applymovement FASTSHIP1F_SAILOR1, MovementData_0x7520e
+ applymovement PLAYER, MovementData_0x75235
+ end
+
+.YouAreFacingRight:
+ applymovement FASTSHIP1F_SAILOR1, MovementData_0x75214
+ applymovement PLAYER, MovementData_0x75238
+ end
+
+FastShip1FSailor2Script:
+ faceplayer
+ opentext
+ checkevent EVENT_FAST_SHIP_FIRST_TIME
+ iftrue .Vermilion
+ writetext FastShip1FSailor2Text_FirstTime
+ waitbutton
+ closetext
+ end
+
+.Vermilion:
+ writetext FastShip1FSailor2Text
+ waitbutton
+ closetext
+ end
+
+FastShip1FSailor3Script:
+ jumptextfaceplayer FastShip1FSailor3Text
+
+WorriedGrandpaSceneRight:
+ moveobject FASTSHIP1F_GENTLEMAN, 20, 6
+
+WorriedGrandpaSceneLeft:
+ appear FASTSHIP1F_GENTLEMAN
+ applymovement FASTSHIP1F_GENTLEMAN, MovementData_0x7521b
+ playsound SFX_TACKLE
+ applymovement PLAYER, MovementData_0x7522e
+ applymovement FASTSHIP1F_GENTLEMAN, MovementData_0x75220
+ opentext
+ writetext FastShip1FGrandpaText
+ waitbutton
+ closetext
+ turnobject PLAYER, RIGHT
+ applymovement FASTSHIP1F_GENTLEMAN, MovementData_0x75222
+ disappear FASTSHIP1F_GENTLEMAN
+ setscene SCENE_DEFAULT
+ end
+
+MovementData_0x7520e:
+ slow_step LEFT
+ turn_head RIGHT
+ step_end
+
+MovementData_0x75211:
+ slow_step RIGHT
+ turn_head DOWN
+ step_end
+
+MovementData_0x75214:
+ slow_step DOWN
+ turn_head UP
+ step_end
+
+MovementData_0x75217:
+ step DOWN
+ step DOWN
+ turn_head DOWN
+ step_end
+
+MovementData_0x7521b:
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ step_end
+
+MovementData_0x75220:
+ step RIGHT
+ step_end
+
+MovementData_0x75222:
+ big_step DOWN
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ step_end
+
+MovementData_0x7522e:
+ big_step RIGHT
+ turn_head LEFT
+ step_end
+
+MovementData_0x75231:
+ step UP
+ step_end
+
+MovementData_0x75233:
+ step DOWN
+ step_end
+
+MovementData_0x75235:
+ step UP
+ step UP
+ step_end
+
+MovementData_0x75238:
+ step RIGHT
+ step UP
+ step_end
+
+FastShip1FSailor1Text_ToVermilion:
+ text "FAST SHIP S.S.AQUA"
+ line "is en route to"
+ cont "VERMILION CITY."
+
+ para "We will make an"
+ line "announcement when"
+ cont "we arrive."
+ done
+
+FastShip1FSailor1Text_ToOlivine:
+ text "FAST SHIP S.S.AQUA"
+ line "is en route to"
+ cont "OLIVINE CITY."
+
+ para "We will make an"
+ line "announcement when"
+ cont "we arrive."
+ done
+
+FastShip1FSailor2Text_FirstTime:
+ text "Here's your cabin."
+
+ para "If your #MON"
+ line "are hurt, take a"
+ cont "nap in the bed."
+
+ para "That will heal"
+ line "them."
+ done
+
+FastShip1FSailor2Text:
+ text "Here's your cabin."
+
+ para "You can heal your"
+ line "#MON by taking"
+ cont "a nap in the bed."
+
+ para "The ship will"
+ line "arrive while"
+ cont "you're sleeping."
+ done
+
+FastShip1FSailor3Text:
+ text "The passengers are"
+ line "all trainers."
+
+ para "They're all itch-"
+ line "ing to battle in"
+ cont "their cabins."
+ done
+
+FastShip1FGrandpaText:
+ text "Whoa!"
+
+ para "Excuse me, son."
+ line "I was in a hurry!"
+
+ para "My granddaughter"
+ line "is missing!"
+
+ para "She's just a wee"
+ line "girl. If you see"
+
+ para "her, please let me"
+ line "know!"
+ done
+
+FastShip1FSailor1Text_InOlivine:
+ text "FAST SHIP S.S.AQUA"
+ line "has arrived in"
+ cont "OLIVINE CITY."
+ done
+
+FastShip1FSailor1Text_InVermilion:
+ text "FAST SHIP S.S.AQUA"
+ line "has arrived in"
+ cont "VERMILION CITY."
+ done
+
+FastShip1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 12 ; warp events
+ warp_event 25, 1, FAST_SHIP_1F, -1
+ warp_event 27, 8, FAST_SHIP_CABINS_NNW_NNE_NE, 1
+ warp_event 23, 8, FAST_SHIP_CABINS_NNW_NNE_NE, 2
+ warp_event 19, 8, FAST_SHIP_CABINS_NNW_NNE_NE, 3
+ warp_event 15, 8, FAST_SHIP_CABINS_SW_SSW_NW, 1
+ warp_event 15, 15, FAST_SHIP_CABINS_SW_SSW_NW, 2
+ warp_event 19, 15, FAST_SHIP_CABINS_SW_SSW_NW, 4
+ warp_event 23, 15, FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, 1
+ warp_event 27, 15, FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, 3
+ warp_event 3, 13, FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN, 5
+ warp_event 6, 12, FAST_SHIP_B1F, 1
+ warp_event 30, 14, FAST_SHIP_B1F, 2
+
+ db 2 ; coord events
+ coord_event 24, 6, SCENE_FASTSHIP1F_MEET_GRANDPA, WorriedGrandpaSceneLeft
+ coord_event 25, 6, SCENE_FASTSHIP1F_MEET_GRANDPA, WorriedGrandpaSceneRight
+
+ db 0 ; bg events
+
+ db 4 ; object events
+ object_event 25, 2, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, FastShip1FSailor1Script, -1
+ object_event 14, 7, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, FastShip1FSailor2Script, -1
+ object_event 22, 17, SPRITE_SAILOR, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 2, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, FastShip1FSailor3Script, -1
+ object_event 19, 6, SPRITE_GENTLEMAN, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_FAST_SHIP_1F_GENTLEMAN
diff --git a/maps/FastShipB1F.asm b/maps/FastShipB1F.asm
new file mode 100644
index 00000000..f05908e2
--- /dev/null
+++ b/maps/FastShipB1F.asm
@@ -0,0 +1,475 @@
+ const_def 2 ; object constants
+ const FASTSHIPB1F_SAILOR1
+ const FASTSHIPB1F_SAILOR2
+ const FASTSHIPB1F_SAILOR3
+ const FASTSHIPB1F_LASS
+ const FASTSHIPB1F_SUPER_NERD
+ const FASTSHIPB1F_SAILOR4
+ const FASTSHIPB1F_FISHER
+ const FASTSHIPB1F_BLACK_BELT
+ const FASTSHIPB1F_SAILOR5
+ const FASTSHIPB1F_TEACHER
+ const FASTSHIPB1F_YOUNGSTER1
+ const FASTSHIPB1F_YOUNGSTER2
+
+FastShipB1F_MapScripts:
+ db 2 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_DEFAULT
+ scene_script .DummyScene1 ; SCENE_FINISHED
+
+ db 0 ; callbacks
+
+.DummyScene0:
+ end
+
+.DummyScene1:
+ end
+
+FastShipB1FSailorBlocksLeft:
+ checkevent EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
+ iftrue FastShipB1FAlreadyBlocked
+ applymovement FASTSHIPB1F_SAILOR2, FashShipB1FSailorBlocksLeftMovement
+ moveobject FASTSHIPB1F_SAILOR1, 30, 6
+ appear FASTSHIPB1F_SAILOR1
+ pause 5
+ disappear FASTSHIPB1F_SAILOR2
+ end
+
+FastShipB1FSailorBlocksRight:
+ checkevent EVENT_FAST_SHIP_B1F_SAILOR_LEFT
+ iftrue FastShipB1FAlreadyBlocked
+ applymovement FASTSHIPB1F_SAILOR1, FashShipB1FSailorBlocksRightMovement
+ moveobject FASTSHIPB1F_SAILOR2, 31, 6
+ appear FASTSHIPB1F_SAILOR2
+ pause 5
+ disappear FASTSHIPB1F_SAILOR1
+ end
+
+FastShipB1FAlreadyBlocked:
+ end
+
+FastShipB1FSailorScript:
+ faceplayer
+ opentext
+ checkevent EVENT_FAST_SHIP_FIRST_TIME
+ iftrue .FirstTime
+ checkevent EVENT_FAST_SHIP_LAZY_SAILOR
+ iftrue .LazySailor
+ checkevent EVENT_FAST_SHIP_INFORMED_ABOUT_LAZY_SAILOR
+ iftrue .AlreadyInformed
+ writetext FastShipB1FOnDutySailorText
+ waitbutton
+ closetext
+ setevent EVENT_FAST_SHIP_INFORMED_ABOUT_LAZY_SAILOR
+ clearevent EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
+ end
+
+.AlreadyInformed:
+ writetext FastShipB1FOnDutySailorRefusedText
+ waitbutton
+ closetext
+ end
+
+.LazySailor:
+ writetext FastShipB1FOnDutySailorThanksText
+ checkevent EVENT_FAST_SHIP_FOUND_GIRL
+ iffalse .NotFoundGirl
+ waitbutton
+ closetext
+ end
+
+.NotFoundGirl:
+ buttonsound
+ writetext FastShipB1FOnDutySailorSawLittleGirlText
+ waitbutton
+ closetext
+ end
+
+.FirstTime:
+ writetext FastShipB1FOnDutySailorDirectionsText
+ waitbutton
+ closetext
+ end
+
+TrainerSailorJeff:
+ trainer SAILOR, JEFF, EVENT_BEAT_SAILOR_JEFF, SailorJeffSeenText, SailorJeffBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext SailorJeffAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPicnickerDebra:
+ trainer PICNICKER, DEBRA, EVENT_BEAT_PICNICKER_DEBRA, PicnickerDebraSeenText, PicnickerDebraBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PicnickerDebraAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerJugglerFritz:
+ trainer JUGGLER, FRITZ, EVENT_BEAT_JUGGLER_FRITZ, JugglerFritzSeenText, JugglerFritzBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext JugglerFritzAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerSailorGarrett:
+ trainer SAILOR, GARRETT, EVENT_BEAT_SAILOR_GARRETT, SailorGarrettSeenText, SailorGarrettBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext SailorGarrettAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerFisherJonah:
+ trainer FISHER, JONAH, EVENT_BEAT_FISHER_JONAH, FisherJonahSeenText, FisherJonahBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext FisherJonahAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerBlackbeltWai:
+ trainer BLACKBELT_T, WAI, EVENT_BEAT_BLACKBELT_WAI, BlackbeltWaiSeenText, BlackbeltWaiBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BlackbeltWaiAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerSailorKenneth:
+ trainer SAILOR, KENNETH, EVENT_BEAT_SAILOR_KENNETH, SailorKennethSeenText, SailorKennethBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext SailorKennethAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerTeacherShirley:
+ trainer TEACHER, SHIRLEY, EVENT_BEAT_TEACHER_SHIRLEY, TeacherShirleySeenText, TeacherShirleyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext TeacherShirleyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerSchoolboyNate:
+ trainer SCHOOLBOY, NATE, EVENT_BEAT_SCHOOLBOY_NATE, SchoolboyNateSeenText, SchoolboyNateBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext SchoolboyNateAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerSchoolboyRicky:
+ trainer SCHOOLBOY, RICKY, EVENT_BEAT_SCHOOLBOY_RICKY, SchoolboyRickySeenText, SchoolboyRickyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext SchoolboyRickyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+FashShipB1FTrashcan:
+ jumpstd trashcan
+
+FashShipB1FSailorBlocksRightMovement:
+ fix_facing
+ big_step RIGHT
+ remove_fixed_facing
+ turn_head DOWN
+ step_end
+
+FashShipB1FSailorBlocksLeftMovement:
+ fix_facing
+ big_step LEFT
+ remove_fixed_facing
+ turn_head DOWN
+ step_end
+
+FastShipB1FOnDutySailorText:
+ text "Hey, guy. Could I"
+ line "get you to look"
+ cont "for my buddy?"
+
+ para "He's goofing off"
+ line "somewhere, that"
+ cont "lazy bum!"
+
+ para "I want to go find"
+ line "him, but I'm on"
+ cont "duty right now."
+ done
+
+FastShipB1FOnDutySailorRefusedText:
+ text "Oh, gee…"
+
+ para "The CAPTAIN will"
+ line "be furious…"
+ done
+
+FastShipB1FOnDutySailorThanksText:
+ text "Thanks, guy!"
+ line "I chewed him out"
+
+ para "good so he'll quit"
+ line "slacking off!"
+ done
+
+FastShipB1FOnDutySailorSawLittleGirlText:
+ text "A little girl?"
+
+ para "I may have seen"
+ line "her go by here."
+ done
+
+FastShipB1FOnDutySailorDirectionsText:
+ text "The dining room is"
+ line "up ahead."
+
+ para "The stairs at the"
+ line "end lead to the"
+ cont "CAPTAIN's cabin."
+ done
+
+SailorJeffSeenText:
+ text "Nothing beats a"
+ line "battle when I'm"
+ cont "on my break."
+ done
+
+SailorJeffBeatenText:
+ text "Win or lose, my"
+ line "break's over!"
+ done
+
+SailorJeffAfterBattleText:
+ text "I guess I can't"
+ line "win if I don't get"
+ cont "serious."
+ done
+
+PicnickerDebraSeenText:
+ text "I'm so bored."
+ line "Want to battle?"
+ done
+
+PicnickerDebraBeatenText:
+ text "Yow! You're too"
+ line "strong!"
+ done
+
+PicnickerDebraAfterBattleText:
+ text "SAFFRON, CELADON…"
+ line "I hear there are"
+
+ para "many big cities"
+ line "in KANTO."
+ done
+
+JugglerFritzSeenText:
+ text "Urrf…"
+ line "I'm seasick!"
+ done
+
+JugglerFritzBeatenText:
+ text "I can't move any-"
+ line "more…"
+ done
+
+JugglerFritzAfterBattleText:
+ text "No more ships for"
+ line "me. Next time,"
+
+ para "I'm taking the"
+ line "MAGNET TRAIN."
+ done
+
+SailorGarrettSeenText:
+ text "This is where we"
+ line "sailors work!"
+ done
+
+SailorGarrettBeatenText:
+ text "I lost on my home"
+ line "field…"
+ done
+
+SailorGarrettAfterBattleText:
+ text "We get different"
+ line "passengers from"
+
+ para "VERMILION CITY to"
+ line "OLIVINE CITY."
+ done
+
+FisherJonahSeenText:
+ text "Even though we're"
+ line "out on the sea, I"
+ cont "can't fish!"
+
+ para "This is boring!"
+ line "Let's battle!"
+ done
+
+FisherJonahBeatenText:
+ text "I… I'm not bored"
+ line "anymore…"
+ done
+
+FisherJonahAfterBattleText:
+ text "I plan to fish off"
+ line "VERMILION's pier."
+ done
+
+BlackbeltWaiSeenText:
+ text "I'm building up my"
+ line "legs by bracing"
+
+ para "against the ship's"
+ line "rocking!"
+ done
+
+BlackbeltWaiBeatenText:
+ text "Rocked and rolled"
+ line "over!"
+ done
+
+BlackbeltWaiAfterBattleText:
+ text "I couldn't find"
+ line "the KARATE KING in"
+ cont "JOHTO."
+
+ para "He's supposed to"
+ line "be training in a"
+ cont "cave somewhere."
+ done
+
+SailorKennethSeenText:
+ text "I'm a sailor man!"
+
+ para "But I'm training"
+ line "#MON, so I can"
+ cont "become the CHAMP!"
+ done
+
+SailorKennethBeatenText:
+ text "My lack of train-"
+ line "ing is obvious…"
+ done
+
+SailorKennethAfterBattleText:
+ text "Eight BADGES!"
+ line "They must prove"
+
+ para "that you've beaten"
+ line "GYM LEADERS."
+
+ para "No wonder you're"
+ line "so good!"
+ done
+
+TeacherShirleySeenText:
+ text "Don't lay a finger"
+ line "on my students!"
+ done
+
+TeacherShirleyBeatenText:
+ text "Aaack!"
+ done
+
+TeacherShirleyAfterBattleText:
+ text "We're on a field"
+ line "trip to the RUINS"
+ cont "outside VIOLET."
+ done
+
+SchoolboyNateSeenText:
+ text "Do you know the"
+ line "RUINS OF ALPH?"
+ done
+
+SchoolboyNateBeatenText:
+ text "Yaargh!"
+ done
+
+SchoolboyNateAfterBattleText:
+ text "Radios pick up"
+ line "strange signals"
+ cont "inside the RUINS."
+ done
+
+SchoolboyRickySeenText:
+ text "There are some odd"
+ line "stone panels in"
+ cont "the RUINS OF ALPH."
+ done
+
+SchoolboyRickyBeatenText:
+ text "I was done in!"
+ done
+
+SchoolboyRickyAfterBattleText:
+ text "I read that there"
+ line "are four of those"
+ cont "stone panels."
+ done
+
+FastShipB1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 5, 11, FAST_SHIP_1F, 11
+ warp_event 31, 13, FAST_SHIP_1F, 12
+
+ db 2 ; coord events
+ coord_event 30, 7, SCENE_DEFAULT, FastShipB1FSailorBlocksLeft
+ coord_event 31, 7, SCENE_DEFAULT, FastShipB1FSailorBlocksRight
+
+ db 1 ; bg events
+ bg_event 27, 9, BGEVENT_READ, FashShipB1FTrashcan
+
+ db 12 ; object events
+ object_event 30, 6, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, FastShipB1FSailorScript, EVENT_FAST_SHIP_B1F_SAILOR_LEFT
+ object_event 31, 6, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, FastShipB1FSailorScript, EVENT_FAST_SHIP_B1F_SAILOR_RIGHT
+ object_event 9, 11, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerSailorJeff, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ object_event 6, 4, SPRITE_LASS, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 1, TrainerPicnickerDebra, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ object_event 26, 9, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 1, TrainerJugglerFritz, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ object_event 17, 4, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 4, TrainerSailorGarrett, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ object_event 25, 8, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 3, TrainerFisherJonah, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ object_event 15, 11, SPRITE_BLACK_BELT, SPRITEMOVEDATA_SPINCLOCKWISE, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 3, TrainerBlackbeltWai, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ object_event 23, 4, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 4, TrainerSailorKenneth, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ object_event 9, 11, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 3, TrainerTeacherShirley, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ object_event 14, 9, SPRITE_YOUNGSTER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 1, TrainerSchoolboyNate, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ object_event 14, 11, SPRITE_YOUNGSTER, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 1, TrainerSchoolboyRicky, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
diff --git a/maps/FastShipCabins_NNW_NNE_NE.asm b/maps/FastShipCabins_NNW_NNE_NE.asm
new file mode 100644
index 00000000..d1c682d3
--- /dev/null
+++ b/maps/FastShipCabins_NNW_NNE_NE.asm
@@ -0,0 +1,289 @@
+ const_def 2 ; object constants
+ const FASTSHIPCABINS_NNW_NNE_NE_COOLTRAINER_M
+ const FASTSHIPCABINS_NNW_NNE_NE_COOLTRAINER_F
+ const FASTSHIPCABINS_NNW_NNE_NE_SUPER_NERD
+ const FASTSHIPCABINS_NNW_NNE_NE_POKEFAN_M
+ const FASTSHIPCABINS_NNW_NNE_NE_SAILOR
+ const FASTSHIPCABINS_NNW_NNE_NE_GENTLEMAN
+ const FASTSHIPCABINS_NNW_NNE_NE_PHARMACIST
+
+FastShipCabins_NNW_NNE_NE_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+TrainerCooltrainermSean:
+ trainer COOLTRAINERM, SEAN, EVENT_BEAT_COOLTRAINERM_SEAN, CooltrainermSeanSeenText, CooltrainermSeanBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainermSeanAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerCooltrainerfCarol:
+ trainer COOLTRAINERF, CAROL, EVENT_BEAT_COOLTRAINERF_CAROL, CooltrainerfCarolSeenText, CooltrainerfCarolBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainerfCarolAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPokemaniacEthan:
+ trainer POKEMANIAC, ETHAN, EVENT_BEAT_POKEMANIAC_ETHAN, PokemaniacEthanSeenText, PokemaniacEthanBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PokemaniacEthanAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerHikerNoland:
+ trainer HIKER, NOLAND, EVENT_BEAT_HIKER_NOLAND, HikerNolandSeenText, HikerNolandBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext HikerNolandAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerGentlemanEdward:
+ trainer GENTLEMAN, EDWARD, EVENT_BEAT_GENTLEMAN_EDWARD, GentlemanEdwardSeenText, GentlemanEdwardBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext GentlemanEdwardAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerBurglarCorey:
+ trainer BURGLAR, COREY, EVENT_BEAT_BURGLAR_COREY, BurglarCoreySeenText, BurglarCoreyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BurglarCoreyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+FastShipLazySailorScript:
+ playmusic MUSIC_HIKER_ENCOUNTER
+ faceplayer
+ opentext
+ writetext SailorStanlySeenText
+ waitbutton
+ closetext
+ winlosstext SailorStanlyBeatenText, 0
+ loadtrainer SAILOR, STANLY
+ startbattle
+ reloadmap
+ special HealParty
+ setevent EVENT_BEAT_SAILOR_STANLY
+ opentext
+ writetext SailorStanlyAfterBattleText
+ waitbutton
+ closetext
+ setevent EVENT_FAST_SHIP_LAZY_SAILOR
+ setmapscene FAST_SHIP_B1F, SCENE_FINISHED
+ checkcode VAR_FACING
+ ifequal RIGHT, .Movement2
+ applymovement FASTSHIPCABINS_NNW_NNE_NE_SAILOR, FastShipLazySailorLeavesMovement1
+ playsound SFX_EXIT_BUILDING
+ disappear FASTSHIPCABINS_NNW_NNE_NE_SAILOR
+ waitsfx
+ end
+
+.Movement2:
+ applymovement FASTSHIPCABINS_NNW_NNE_NE_SAILOR, FastShipLazySailorLeavesMovement2
+ playsound SFX_EXIT_BUILDING
+ disappear FASTSHIPCABINS_NNW_NNE_NE_SAILOR
+ waitsfx
+ end
+
+FastShipCabins_NNW_NNE_NETrashcan:
+ jumpstd trashcan
+
+FastShipLazySailorLeavesMovement1:
+ step LEFT
+ step LEFT
+ step UP
+ step UP
+ step_end
+
+FastShipLazySailorLeavesMovement2:
+ step DOWN
+ step LEFT
+ step LEFT
+ step UP
+ step UP
+ step UP
+ step_end
+
+CooltrainermSeanSeenText:
+ text "I'm going to KANTO"
+ line "to test my skills."
+ done
+
+CooltrainermSeanBeatenText:
+ text "I wanted to win!"
+ done
+
+CooltrainermSeanAfterBattleText:
+ text "Trainers from"
+ line "JOHTO can battle"
+
+ para "with KANTO GYM"
+ line "LEADERS."
+ done
+
+CooltrainerfCarolSeenText:
+ text "I'm training to"
+ line "become the CHAMP!"
+ done
+
+CooltrainerfCarolBeatenText:
+ text "What's so differ-"
+ line "ent between us?"
+ done
+
+CooltrainerfCarolAfterBattleText:
+ text "I'm going to beat"
+ line "you someday!"
+ done
+
+PokemaniacEthanSeenText:
+ text "Do you know LILY?"
+ line "She's a hot DJ in"
+ cont "KANTO."
+ done
+
+PokemaniacEthanBeatenText:
+ text "Gyaaaah!"
+ done
+
+PokemaniacEthanAfterBattleText:
+ text "LILY's nice, but"
+ line "MARY's the best!"
+
+ para "I want to check"
+ line "out JOHTO's radio"
+ cont "stations!"
+ done
+
+HikerNolandSeenText:
+ text "Are you alone?"
+ line "Then let's battle!"
+ done
+
+HikerNolandBeatenText:
+ text "That's too much to"
+ line "handle!"
+ done
+
+HikerNolandAfterBattleText:
+ text "I wonder if there"
+ line "are any mountains"
+
+ para "worth climbing in"
+ line "KANTO?"
+ done
+
+SailorStanlySeenText:
+ text "Yeah, I'm a sail-"
+ line "or, all right."
+
+ para "I wasn't goofing"
+ line "off!"
+
+ para "This cabin was"
+ line "vacant, so I just"
+ cont "took a quick nap!"
+
+ para "Ah, forget it!"
+ line "Let's battle!"
+ done
+
+SailorStanlyBeatenText:
+ text "Sorry! It's all my"
+ line "fault!"
+ done
+
+SailorStanlyAfterBattleText:
+ text "Being a sailor, I"
+ line "have to do phys-"
+ cont "ical labor. It's"
+ cont "exhausting!"
+ done
+
+GentlemanEdwardSeenText:
+ text "Oh, no. I've lost"
+ line "something that's"
+ cont "very important."
+ done
+
+GentlemanEdwardBeatenText:
+ text "I… I can't find"
+ line "it…"
+ done
+
+GentlemanEdwardAfterBattleText:
+ text "I give up. Son,"
+ line "you don't have to"
+
+ para "look. Just forget"
+ line "about it!"
+ done
+
+BurglarCoreySeenText:
+ text "Yeehaw!"
+ line "Lucky!"
+ done
+
+BurglarCoreyBeatenText:
+ text "How unlucky!"
+ line "I lost!"
+ done
+
+BurglarCoreyAfterBattleText:
+ text "I found a pretty"
+ line "coin here."
+
+ para "Someone must have"
+ line "lost it…"
+ done
+
+FastShipCabins_NNW_NNE_NE_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 2, 0, FAST_SHIP_1F, 2
+ warp_event 2, 12, FAST_SHIP_1F, 3
+ warp_event 2, 24, FAST_SHIP_1F, 4
+
+ db 0 ; coord events
+
+ db 3 ; bg events
+ bg_event 6, 13, BGEVENT_READ, FastShipCabins_NNW_NNE_NETrashcan
+ bg_event 7, 19, BGEVENT_READ, FastShipCabins_NNW_NNE_NETrashcan
+ bg_event 7, 31, BGEVENT_READ, FastShipCabins_NNW_NNE_NETrashcan
+
+ db 7 ; object events
+ object_event 4, 3, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 2, TrainerCooltrainermSean, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ object_event 1, 5, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 3, TrainerCooltrainerfCarol, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ object_event 1, 5, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerPokemaniacEthan, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ object_event 4, 17, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 3, TrainerHikerNoland, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ object_event 4, 26, SPRITE_SAILOR, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, FastShipLazySailorScript, EVENT_FAST_SHIP_CABINS_NNW_NNE_NE_SAILOR
+ object_event 7, 30, SPRITE_GENTLEMAN, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 1, TrainerGentlemanEdward, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ object_event 2, 30, SPRITE_PHARMACIST, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 4, TrainerBurglarCorey, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
diff --git a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
new file mode 100644
index 00000000..43143c01
--- /dev/null
+++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm
@@ -0,0 +1,474 @@
+ const_def 2 ; object constants
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_CAPTAIN
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_POKEFAN_M1
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN3
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN4
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_SUPER_NERD1
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_POKEFAN_M2
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_POKEFAN_F
+ const FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_SUPER_NERD2
+
+FastShipCabins_SE_SSE_CaptainsCabin_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+.UnreferencedDummyScene:
+ end
+
+SSAquaCaptain:
+ faceplayer
+ opentext
+ checkevent EVENT_FAST_SHIP_FIRST_TIME
+ iftrue .LaterTrip
+ writetext SSAquaCaptainExhaustingText
+ waitbutton
+ closetext
+ end
+
+.LaterTrip:
+ writetext SSAquaCaptainHowDoYouLikeText
+ waitbutton
+ closetext
+ end
+
+SSAquaGranddaughterBefore:
+ turnobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2, RIGHT
+ opentext
+ writetext SSAquaGranddaughterCaptainPlayWithMeText
+ waitbutton
+ closetext
+ faceplayer
+ opentext
+ writetext SSAquaGranddaughterHasToFindGrandpaText
+ waitbutton
+ closetext
+ special FadeBlackQuickly
+ special ReloadSpritesNoPalettes
+ disappear FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2
+ applymovement PLAYER, MovementData_0x76004
+ moveobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, 3, 19
+ appear FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1
+ turnobject PLAYER, UP
+ turnobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, UP
+ special FadeInQuickly
+ turnobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, DOWN
+ showemote EMOTE_SHOCK, FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, 15
+ applymovement FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, MovementData_0x7600c
+ turnobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, RIGHT
+ opentext
+ writetext SSAquaGranddaughterWasPlayingMText
+ waitbutton
+ closetext
+ turnobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2, DOWN
+ applymovement FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, MovementData_0x76010
+ opentext
+ writetext SSAquaEntertainedGranddaughterText
+ buttonsound
+ setevent EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
+ setmapscene FAST_SHIP_1F, SCENE_DEFAULT
+ jump SSAquaMetalCoatAndDocking
+
+SSAquaGrandpa:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
+ iftrue SSAquaGotMetalCoat
+ checkevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
+ iftrue SSAquaFoundGranddaughter
+ writetext SSAquaCantFindGranddaughterText
+ waitbutton
+ closetext
+ setmapscene FAST_SHIP_1F, SCENE_DEFAULT
+ end
+
+SSAquaMetalCoatAndDocking:
+ writetext SSAquaGrandpaHaveThisText
+ buttonsound
+ verbosegiveitem METAL_COAT
+ iffalse .NoRoom
+ setevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
+.NoRoom:
+ closetext
+ waitsfx
+ playsound SFX_ELEVATOR_END
+ pause 30
+ opentext
+ writetext SSAquaHasArrivedVermilionText
+ waitbutton
+ setevent EVENT_FAST_SHIP_HAS_ARRIVED
+ setevent EVENT_FAST_SHIP_FOUND_GIRL
+ closetext
+ end
+
+SSAquaFoundGranddaughter:
+ writetext SSAquaGrandpaHaveThisText
+ buttonsound
+ verbosegiveitem METAL_COAT
+ iffalse .NoRoom
+ setevent EVENT_GOT_METAL_COAT_FROM_GRANDPA_ON_SS_AQUA
+.NoRoom:
+ closetext
+ end
+
+SSAquaGotMetalCoat:
+ writetext SSAquaGrandpaTravellingText
+ waitbutton
+ closetext
+ end
+
+SSAquaGranddaughterAfter:
+ faceplayer
+ opentext
+ writetext SSAquaGranddaughterHadFunText
+ waitbutton
+ closetext
+ end
+
+TrainerPokefanmColin:
+ trainer POKEFANM, COLIN, EVENT_BEAT_POKEFANM_COLIN, PokefanmColinSeenText, PokefanmColinBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PokefanmColinAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerTwinsMegandpeg1:
+ trainer TWINS, MEGANDPEG1, EVENT_BEAT_TWINS_MEG_AND_PEG, TwinsMegandpeg1SeenText, TwinsMegandpeg1BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext TwinsMegandpeg1AfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerTwinsMegandpeg2:
+ trainer TWINS, MEGANDPEG2, EVENT_BEAT_TWINS_MEG_AND_PEG, TwinsMegandpeg2SeenText, TwinsMegandpeg2BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext TwinsMegandpeg2AfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPsychicRodney:
+ trainer PSYCHIC_T, RODNEY, EVENT_BEAT_PSYCHIC_RODNEY, PsychicRodneySeenText, PsychicRodneyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PsychicRodneyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPokefanmJeremy:
+ trainer POKEFANM, JEREMY, EVENT_BEAT_POKEFANM_JEREMY, PokefanmJeremySeenText, PokefanmJeremyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PokefanmJeremyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPokefanfGeorgia:
+ trainer POKEFANF, GEORGIA, EVENT_BEAT_POKEFANF_GEORGIA, PokefanfGeorgiaSeenText, PokefanfGeorgiaBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PokefanfGeorgiaAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerSupernerdShawn:
+ trainer SUPER_NERD, SHAWN, EVENT_BEAT_SUPER_NERD_SHAWN, SupernerdShawnSeenText, SupernerdShawnBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext SupernerdShawnAfterBattleText
+ waitbutton
+ closetext
+ end
+
+FastShipCaptainsCabinTrashcan:
+ jumpstd trashcan
+
+MovementData_0x76004:
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ step_end
+
+MovementData_0x7600c:
+ step UP
+ step UP
+ turn_head LEFT
+ step_end
+
+MovementData_0x76010:
+ step DOWN
+ step_end
+
+SSAquaCaptainExhaustingText:
+ text "Whew! Thanks for"
+ line "coming along."
+
+ para "Keeping that lit-"
+ line "tle girl amused"
+ cont "was exhausting."
+ done
+
+SSAquaCaptainHowDoYouLikeText:
+ text "How do you like"
+ line "S.S.AQUA's ride?"
+
+ para "She practically"
+ line "skates across the"
+ cont "waves."
+ done
+
+SSAquaCantFindGranddaughterText:
+ text "Hello, son…"
+ line "I can't find my"
+ cont "granddaughter."
+
+ para "If she's on the"
+ line "ship, that's OK."
+
+ para "But what if she"
+ line "fell overboard?"
+
+ para "She's an energetic"
+ line "child, so she may"
+
+ para "be bugging some-"
+ line "one. I'm worried…"
+ done
+
+SSAquaEntertainedGranddaughterText:
+ text "<PLAYER>, was it? I"
+ line "heard you enter-"
+ cont "tained my grand-"
+ cont "daughter."
+
+ para "I want to thank"
+ line "you for that."
+ done
+
+SSAquaGrandpaHaveThisText:
+ text "I know! I'd like"
+ line "you to have this!"
+ done
+
+SSAquaGrandpaTravellingText:
+ text "We're traveling"
+ line "around the world."
+ done
+
+SSAquaGranddaughterCaptainPlayWithMeText:
+ text "CAPTAIN, play with"
+ line "me, please?"
+
+ para "I'm bored! I want"
+ line "to play more!"
+ done
+
+SSAquaGranddaughterHasToFindGrandpaText:
+ text "Hi! Will you play"
+ line "with me?"
+
+ para "…Oh!"
+
+ para "Grandpa's worried"
+ line "about me?"
+
+ para "I have to go!"
+
+ para "I have to go find"
+ line "Grandpa!"
+ done
+
+SSAquaGranddaughterWasPlayingMText:
+ text "Grandpa, here I"
+ line "am! I was playing"
+
+ para "with the CAPTAIN"
+ line "and this guy!"
+ done
+
+SSAquaGranddaughterHadFunText:
+ text "I had lots of fun"
+ line "playing!"
+ done
+
+PokefanmColinSeenText:
+ text "Hey, son! Want to"
+ line "battle with me?"
+ done
+
+PokefanmColinBeatenText:
+ text "You're strong!"
+ done
+
+PokefanmColinAfterBattleText:
+ text "You're traveling"
+ line "all alone?"
+
+ para "Isn't your mom"
+ line "worried?"
+ done
+
+TwinsMegandpeg1SeenText:
+ text "You think I'm a"
+ line "baby?"
+ cont "That's not fair!"
+ done
+
+TwinsMegandpeg1BeatenText:
+ text "Oh! We lost!"
+ done
+
+TwinsMegandpeg1AfterBattleText:
+ text "Baby is a rude"
+ line "name to call us"
+ cont "girls!"
+ done
+
+TwinsMegandpeg2SeenText:
+ text "I'm not a baby!"
+
+ para "That's not nice to"
+ line "say to a lady!"
+ done
+
+TwinsMegandpeg2BeatenText:
+ text "Oh! We lost!"
+ done
+
+TwinsMegandpeg2AfterBattleText:
+ text "Sometimes, kids"
+ line "are smarter than"
+ cont "grown-ups!"
+ done
+
+PsychicRodneySeenText:
+ text "Ssh! My brain is"
+ line "picking up radio"
+ cont "signals!"
+ done
+
+PsychicRodneyBeatenText:
+ text "…I hear some-"
+ line "thing!"
+ done
+
+PsychicRodneyAfterBattleText:
+ text "I get it. You can"
+ line "hear JOHTO's radio"
+ cont "on the FAST SHIP."
+ done
+
+PokefanmJeremySeenText:
+ text "What do you think?"
+ line "My #MON are"
+ cont "beautiful, yes?"
+ done
+
+PokefanmJeremyBeatenText:
+ text "Oh, no! My beauti-"
+ line "ful #MON!"
+ done
+
+PokefanmJeremyAfterBattleText:
+ text "I must go to the"
+ line "#MON SALON and"
+ cont "fix them up nice!"
+ done
+
+PokefanfGeorgiaSeenText:
+ text "I'm going to shop"
+ line "at the DEPT.STORE"
+ cont "and then…"
+ done
+
+PokefanfGeorgiaBeatenText:
+ text "What was I going"
+ line "to do?"
+ done
+
+PokefanfGeorgiaAfterBattleText:
+ text "Oh, yes! I have to"
+ line "get my #MON out"
+ cont "of DAY-CARE!"
+ done
+
+SupernerdShawnSeenText:
+ text "What kinds of #"
+ line "BALLS do you have"
+ cont "with you?"
+ done
+
+SupernerdShawnBeatenText:
+ text "Wait! Stop! Don't!"
+ line "Please!"
+ done
+
+SupernerdShawnAfterBattleText:
+ text "You should use the"
+ line "right BALLS to fit"
+ cont "the situation."
+ done
+
+SSAquaHasArrivedVermilionText:
+ text "FAST SHIP S.S.AQUA"
+ line "has arrived in"
+ cont "VERMILION CITY."
+ done
+
+FastShipCabins_SE_SSE_CaptainsCabin_MapEvents:
+ db 0, 0 ; filler
+
+ db 6 ; warp events
+ warp_event 2, 7, FAST_SHIP_1F, 8
+ warp_event 3, 7, FAST_SHIP_1F, 8
+ warp_event 2, 19, FAST_SHIP_1F, 9
+ warp_event 3, 19, FAST_SHIP_1F, 9
+ warp_event 2, 33, FAST_SHIP_1F, 10
+ warp_event 3, 33, FAST_SHIP_1F, 10
+
+ db 0 ; coord events
+
+ db 1 ; bg events
+ bg_event 4, 25, BGEVENT_READ, FastShipCaptainsCabinTrashcan
+
+ db 11 ; object events
+ object_event 3, 25, SPRITE_CAPTAIN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, SSAquaCaptain, -1
+ object_event 2, 17, SPRITE_GENTLEMAN, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, SSAquaGrandpa, EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
+ object_event 3, 17, SPRITE_TWIN, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SSAquaGranddaughterAfter, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
+ object_event 2, 25, SPRITE_TWIN, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SSAquaGranddaughterBefore, EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_2
+ object_event 5, 6, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 5, TrainerPokefanmColin, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ object_event 2, 4, SPRITE_TWIN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerTwinsMegandpeg1, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ object_event 3, 4, SPRITE_TWIN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerTwinsMegandpeg2, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ object_event 5, 5, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 5, TrainerPsychicRodney, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ object_event 2, 3, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 3, TrainerPokefanmJeremy, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ object_event 5, 5, SPRITE_POKEFAN_F, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerPokefanfGeorgia, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ object_event 1, 15, SPRITE_SUPER_NERD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerSupernerdShawn, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
diff --git a/maps/FastShipCabins_SW_SSW_NW.asm b/maps/FastShipCabins_SW_SSW_NW.asm
new file mode 100644
index 00000000..fbef49f9
--- /dev/null
+++ b/maps/FastShipCabins_SW_SSW_NW.asm
@@ -0,0 +1,224 @@
+ const_def 2 ; object constants
+ const FASTSHIPCABINS_SW_SSW_NW_FISHER
+ const FASTSHIPCABINS_SW_SSW_NW_BUG_CATCHER
+ const FASTSHIPCABINS_SW_SSW_NW_BUENA
+ const FASTSHIPCABINS_SW_SSW_NW_ROCKER
+
+FastShipCabins_SW_SSW_NW_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+TrainerFirebreatherLyle:
+ trainer FIREBREATHER, LYLE, EVENT_BEAT_FIREBREATHER_LYLE, FirebreatherLyleSeenText, FirebreatherLyleBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext FirebreatherLyleAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerBugCatcherKen:
+ trainer BUG_CATCHER, KEN, EVENT_BEAT_BUG_CATCHER_KEN, BugCatcherKenSeenText, BugCatcherKenBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BugCatcherKenAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerBeautyCassie:
+ trainer BEAUTY, CASSIE, EVENT_BEAT_BEAUTY_CASSIE, BeautyCassieSeenText, BeautyCassieBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BeautyCassieAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerGuitaristClyde:
+ trainer GUITARIST, CLYDE, EVENT_BEAT_GUITARIST_CLYDE, GuitaristClydeSeenText, GuitaristClydeBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext GuitaristClydeAfterBattleText
+ waitbutton
+ closetext
+ end
+
+FastShipBed:
+ opentext
+ writetext FastShipBedText1
+ waitbutton
+ closetext
+ special FadeBlackQuickly
+ special ReloadSpritesNoPalettes
+ special HealParty
+ playmusic MUSIC_HEAL
+ pause 60
+ special RestartMapMusic
+ special FadeInQuickly
+ opentext
+ writetext FastShipBedText2
+ waitbutton
+ closetext
+ checkevent EVENT_FAST_SHIP_HAS_ARRIVED
+ iftrue .AlreadyArrived
+ checkevent EVENT_FAST_SHIP_FOUND_GIRL
+ iftrue .CanArrive
+ checkevent EVENT_FAST_SHIP_FIRST_TIME
+ iftrue .CanArrive
+.AlreadyArrived:
+ end
+
+.CanArrive:
+ playsound SFX_ELEVATOR_END
+ pause 30
+ checkevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
+ iftrue .ArrivedOlivine
+ opentext
+ writetext FastShipArrivedVermilionText
+ waitbutton
+ closetext
+ setevent EVENT_FAST_SHIP_HAS_ARRIVED
+ end
+
+.ArrivedOlivine:
+ opentext
+ writetext FastShipArrivedOlivineText
+ waitbutton
+ closetext
+ setevent EVENT_FAST_SHIP_HAS_ARRIVED
+ end
+
+FastShipCabinsNorthwestCabinTrashcan:
+ jumpstd trashcan
+
+FirebreatherLyleSeenText:
+ text "I'm going to KANTO"
+ line "to put on fire-"
+ cont "breathing shows!"
+ done
+
+FirebreatherLyleBeatenText:
+ text "Fizzle… The"
+ line "flame's tiny…"
+ done
+
+FirebreatherLyleAfterBattleText:
+ text "I guess fire is"
+ line "weak on the sea."
+
+ para "It doesn't matter?"
+ line "Really?"
+ done
+
+BugCatcherKenSeenText:
+ text "I'm visiting my"
+ line "Grandma to catch"
+ cont "me some bugs!"
+ done
+
+BugCatcherKenBeatenText:
+ text "Ooh, wow. You're"
+ line "tough, dude!"
+ done
+
+BugCatcherKenAfterBattleText:
+ text "You can find lots"
+ line "of #MON in the"
+ cont "trees of JOHTO!"
+ done
+
+BeautyCassieSeenText:
+ text "I'm trying to"
+ line "forget my woes."
+ cont "Let's battle!"
+ done
+
+BeautyCassieBeatenText:
+ text "My heart weeps…"
+ done
+
+BeautyCassieAfterBattleText:
+ text "A voyage is best"
+ line "for getting over"
+ cont "a broken heart."
+
+ para "But a FAST SHIP"
+ line "trip is too short"
+ cont "for grieving."
+ done
+
+GuitaristClydeSeenText:
+ text "I'm going to audi-"
+ line "tion my songs at"
+
+ para "GOLDENROD's RADIO"
+ line "STATION."
+ done
+
+GuitaristClydeBeatenText:
+ text "Yowza!"
+ line "Total distortion!"
+ done
+
+GuitaristClydeAfterBattleText:
+ text "Speaking of the"
+ line "RADIO STATION,"
+
+ para "what's this week's"
+ line "lucky number?"
+ done
+
+FastShipBedText1:
+ text "A comfy bed!"
+ line "Time to sleep…"
+ done
+
+FastShipBedText2:
+ text "Ah, refreshed and"
+ line "restored!"
+ done
+
+FastShipArrivedOlivineText:
+ text "FAST SHIP S.S.AQUA"
+ line "has arrived in"
+ cont "OLIVINE CITY."
+ done
+
+FastShipArrivedVermilionText:
+ text "FAST SHIP S.S.AQUA"
+ line "has arrived in"
+ cont "VERMILION CITY."
+ done
+
+FastShipCabins_SW_SSW_NW_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 2, 0, FAST_SHIP_1F, 5
+ warp_event 2, 19, FAST_SHIP_1F, 6
+ warp_event 3, 19, FAST_SHIP_1F, 6
+ warp_event 2, 31, FAST_SHIP_1F, 7
+ warp_event 3, 31, FAST_SHIP_1F, 7
+
+ db 0 ; coord events
+
+ db 3 ; bg events
+ bg_event 7, 1, BGEVENT_READ, FastShipBed
+ bg_event 7, 2, BGEVENT_READ, FastShipBed
+ bg_event 7, 7, BGEVENT_READ, FastShipCabinsNorthwestCabinTrashcan
+
+ db 4 ; object events
+ object_event 1, 15, SPRITE_FISHER, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 2, TrainerFirebreatherLyle, EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ object_event 6, 15, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerBugCatcherKen, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ object_event 1, 26, SPRITE_BUENA, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerBeautyCassie, EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ object_event 3, 28, SPRITE_ROCKER, SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 2, TrainerGuitaristClyde, EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
diff --git a/maps/MountMoonGiftShop.asm b/maps/MountMoonGiftShop.asm
new file mode 100644
index 00000000..54616ea1
--- /dev/null
+++ b/maps/MountMoonGiftShop.asm
@@ -0,0 +1,43 @@
+ const_def 2 ; object constants
+ const MOUNTMOONGIFTSHOP_GRAMPS1 ; morning only
+ const MOUNTMOONGIFTSHOP_GRAMPS2 ; day only
+ const MOUNTMOONGIFTSHOP_LASS1 ; morning only
+ const MOUNTMOONGIFTSHOP_LASS2 ; day only
+
+MountMoonGiftShop_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+MountMoonGiftShopClerkScript:
+ faceplayer
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_MT_MOON
+ closetext
+ end
+
+MountMoonGiftShopLassScript:
+ jumptextfaceplayer MountMoonGiftShopLassText
+
+MountMoonGiftShopLassText:
+ text "When the sun goes"
+ line "down, CLEFAIRY"
+ cont "come out to play."
+ done
+
+MountMoonGiftShop_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 3, 7, MOUNT_MOON_SQUARE, 3
+ warp_event 4, 7, MOUNT_MOON_SQUARE, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 4 ; object events
+ object_event 4, 3, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, MORN, 0, OBJECTTYPE_SCRIPT, 0, MountMoonGiftShopClerkScript, -1
+ object_event 1, 2, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, DAY, 0, OBJECTTYPE_SCRIPT, 0, MountMoonGiftShopClerkScript, -1
+ object_event 1, 6, SPRITE_LASS, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, MORN, 0, OBJECTTYPE_SCRIPT, 0, MountMoonGiftShopLassScript, -1
+ object_event 5, 4, SPRITE_LASS, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, DAY, 0, OBJECTTYPE_SCRIPT, 0, MountMoonGiftShopLassScript, -1
diff --git a/maps/MountMoonSquare.asm b/maps/MountMoonSquare.asm
new file mode 100644
index 00000000..b972a6f8
--- /dev/null
+++ b/maps/MountMoonSquare.asm
@@ -0,0 +1,151 @@
+ const_def 2 ; object constants
+ const MOUNTMOONSQUARE_FAIRY1
+ const MOUNTMOONSQUARE_FAIRY2
+ const MOUNTMOONSQUARE_ROCK
+
+MountMoonSquare_MapScripts:
+ db 1 ; scene scripts
+ scene_script .DummyScene ; SCENE_DEFAULT
+
+ db 2 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .DisappearMoonStone
+ callback MAPCALLBACK_OBJECTS, .DisappearRock
+
+.DummyScene:
+ end
+
+.DisappearMoonStone:
+ setevent EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE
+ return
+
+.DisappearRock:
+ disappear MOUNTMOONSQUARE_ROCK
+ return
+
+ClefairyDance:
+ checkflag ENGINE_MT_MOON_SQUARE_CLEFAIRY
+ iftrue .NoDancing
+ checkcode VAR_WEEKDAY
+ ifnotequal MONDAY, .NoDancing
+ checktime NITE
+ iffalse .NoDancing
+ appear MOUNTMOONSQUARE_FAIRY1
+ appear MOUNTMOONSQUARE_FAIRY2
+ applymovement PLAYER, PlayerWalksUpToDancingClefairies
+ pause 15
+ appear MOUNTMOONSQUARE_ROCK
+ turnobject MOUNTMOONSQUARE_FAIRY1, RIGHT
+ cry CLEFAIRY
+ waitsfx
+ pause 30
+ follow MOUNTMOONSQUARE_FAIRY1, MOUNTMOONSQUARE_FAIRY2
+ cry CLEFAIRY
+ applymovement MOUNTMOONSQUARE_FAIRY1, ClefairyDanceStep1
+ cry CLEFAIRY
+ applymovement MOUNTMOONSQUARE_FAIRY1, ClefairyDanceStep2
+ cry CLEFAIRY
+ applymovement MOUNTMOONSQUARE_FAIRY1, ClefairyDanceStep3
+ cry CLEFAIRY
+ applymovement MOUNTMOONSQUARE_FAIRY1, ClefairyDanceStep4
+ cry CLEFAIRY
+ applymovement MOUNTMOONSQUARE_FAIRY1, ClefairyDanceStep5
+ stopfollow
+ applymovement MOUNTMOONSQUARE_FAIRY2, ClefairyDanceStep6
+ follow MOUNTMOONSQUARE_FAIRY1, MOUNTMOONSQUARE_FAIRY2
+ applymovement MOUNTMOONSQUARE_FAIRY1, ClefairyDanceStep7
+ stopfollow
+ turnobject MOUNTMOONSQUARE_FAIRY1, DOWN
+ pause 10
+ showemote EMOTE_SHOCK, MOUNTMOONSQUARE_FAIRY1, 15
+ turnobject MOUNTMOONSQUARE_FAIRY1, DOWN
+ cry CLEFAIRY
+ pause 15
+ follow MOUNTMOONSQUARE_FAIRY1, MOUNTMOONSQUARE_FAIRY2
+ applymovement MOUNTMOONSQUARE_FAIRY1, ClefairyFleeMovement
+ disappear MOUNTMOONSQUARE_FAIRY1
+ disappear MOUNTMOONSQUARE_FAIRY2
+ stopfollow
+ clearevent EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE
+ setflag ENGINE_MT_MOON_SQUARE_CLEFAIRY
+ end
+
+.NoDancing:
+ end
+
+MountMoonSquareHiddenMoonStone:
+ hiddenitem MOON_STONE, EVENT_MOUNT_MOON_SQUARE_HIDDEN_MOON_STONE
+
+DontLitterSign:
+ jumptext DontLitterSignText
+
+MtMoonSquareRock:
+ jumpstd smashrock
+
+PlayerWalksUpToDancingClefairies:
+ step UP
+ step_end
+
+ClefairyDanceStep1:
+ slow_step DOWN
+ slow_jump_step DOWN
+ step_end
+
+ClefairyDanceStep2:
+ slow_jump_step RIGHT
+ step_end
+
+ClefairyDanceStep3:
+ slow_step UP
+ slow_jump_step UP
+ step_end
+
+ClefairyDanceStep4:
+ slow_jump_step LEFT
+ step_end
+
+ClefairyDanceStep5:
+ slow_step DOWN
+ slow_jump_step DOWN
+ step_end
+
+ClefairyDanceStep6:
+ slow_step DOWN
+ step_end
+
+ClefairyDanceStep7:
+ slow_step RIGHT
+ step_end
+
+ClefairyFleeMovement:
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ jump_step RIGHT
+ step RIGHT
+ step RIGHT
+ step_end
+
+DontLitterSignText:
+ text "MT.MOON SQUARE"
+ line "Don't Litter"
+ done
+
+MountMoonSquare_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 20, 5, MOUNT_MOON, 5
+ warp_event 22, 11, MOUNT_MOON, 6
+ warp_event 13, 7, MOUNT_MOON_GIFT_SHOP, 1
+
+ db 1 ; coord events
+ coord_event 7, 11, SCENE_DEFAULT, ClefairyDance
+
+ db 2 ; bg events
+ bg_event 7, 7, BGEVENT_ITEM, MountMoonSquareHiddenMoonStone
+ bg_event 17, 7, BGEVENT_READ, DontLitterSign
+
+ db 3 ; object events
+ object_event 6, 6, SPRITE_FAIRY, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_MT_MOON_SQUARE_CLEFAIRY
+ object_event 7, 6, SPRITE_FAIRY, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_MT_MOON_SQUARE_CLEFAIRY
+ object_event 7, 7, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, MtMoonSquareRock, EVENT_MT_MOON_SQUARE_ROCK
diff --git a/maps/OlivinePort.asm b/maps/OlivinePort.asm
new file mode 100644
index 00000000..1b101984
--- /dev/null
+++ b/maps/OlivinePort.asm
@@ -0,0 +1,405 @@
+ const_def 2 ; object constants
+ const OLIVINEPORT_SAILOR1
+ const OLIVINEPORT_SAILOR2
+ const OLIVINEPORT_SAILOR3
+ const OLIVINEPORT_FISHING_GURU1
+ const OLIVINEPORT_FISHING_GURU2
+ const OLIVINEPORT_YOUNGSTER
+ const OLIVINEPORT_COOLTRAINER_F
+
+OlivinePort_MapScripts:
+ db 2 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_DEFAULT
+ scene_script .LeaveFastShip ; SCENE_OLIVINEPORT_LEAVE_SHIP
+
+ db 0 ; callbacks
+
+.DummyScene0:
+ end
+
+.LeaveFastShip:
+ priorityjump .LeaveFastShipScript
+ end
+
+.LeaveFastShipScript:
+ applymovement PLAYER, MovementData_0x74a32
+ appear OLIVINEPORT_SAILOR1
+ setscene SCENE_DEFAULT
+ setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ blackoutmod OLIVINE_CITY
+ end
+
+OlivinePortSailorAtGangwayScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iftrue OlivinePortAlreadyRodeScript
+ writetext UnknownText_0x74a55
+ waitbutton
+ closetext
+ turnobject OLIVINEPORT_SAILOR1, DOWN
+ pause 10
+ playsound SFX_EXIT_BUILDING
+ disappear OLIVINEPORT_SAILOR1
+ waitsfx
+ applymovement PLAYER, MovementData_0x74a30
+ playsound SFX_EXIT_BUILDING
+ special FadeOutPalettes
+ waitsfx
+ checkevent EVENT_FAST_SHIP_FIRST_TIME
+ iffalse .FirstTime
+ clearevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ setevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ clearevent EVENT_BEAT_COOLTRAINERM_SEAN
+ clearevent EVENT_BEAT_COOLTRAINERF_CAROL
+ clearevent EVENT_BEAT_GENTLEMAN_EDWARD
+ clearevent EVENT_BEAT_BEAUTY_CASSIE
+ clearevent EVENT_BEAT_PSYCHIC_RODNEY
+ clearevent EVENT_BEAT_SUPER_NERD_SHAWN
+ clearevent EVENT_BEAT_SAILOR_GARRETT
+ clearevent EVENT_BEAT_FISHER_JONAH
+ clearevent EVENT_BEAT_BLACKBELT_WAI
+.FirstTime:
+ clearevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
+ appear OLIVINEPORT_SAILOR1
+ setmapscene FAST_SHIP_1F, SCENE_FASTSHIP1F_ENTER_SHIP
+ warp FAST_SHIP_1F, 25, 1
+ end
+
+OlivinePortAlreadyRodeScript:
+ writetext UnknownText_0x74a80
+ waitbutton
+ closetext
+ end
+
+OlivinePortWalkUpToShipScript:
+ turnobject OLIVINEPORT_SAILOR3, RIGHT
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iftrue .skip
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_2
+ iftrue .skip
+ turnobject PLAYER, LEFT
+ opentext
+ checkevent EVENT_FAST_SHIP_FIRST_TIME
+ iffalse .FirstTime
+ checkcode VAR_WEEKDAY
+ ifequal SUNDAY, .NextShipMonday
+ ifequal SATURDAY, .NextShipMonday
+ ifequal TUESDAY, .NextShipFriday
+ ifequal WEDNESDAY, .NextShipFriday
+ ifequal THURSDAY, .NextShipFriday
+.FirstTime:
+ writetext UnknownText_0x74a9c
+ yesorno
+ iffalse OlivinePortNotRidingMoveAwayScript
+ writetext UnknownText_0x74ada
+ buttonsound
+ checkitem S_S_TICKET
+ iffalse .NoTicket
+ writetext UnknownText_0x74b11
+ waitbutton
+ closetext
+ setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_2
+ applymovement PLAYER, MovementData_0x74a37
+ jump OlivinePortSailorAtGangwayScript
+
+.NoTicket:
+ writetext UnknownText_0x74b41
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x74a34
+ end
+
+.NextShipMonday:
+ writetext UnknownText_0x74ba8
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x74a34
+ end
+
+.NextShipFriday:
+ writetext UnknownText_0x74bce
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x74a34
+ end
+
+.skip:
+ end
+
+OlivinePortNotRidingScript:
+ writetext UnknownText_0x74af6
+ waitbutton
+ closetext
+ end
+
+OlivinePortNotRidingMoveAwayScript:
+ writetext UnknownText_0x74af6
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x74a34
+ end
+
+OlivinePortSailorAfterHOFScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iftrue OlivinePortAlreadyRodeScript
+ checkevent EVENT_FAST_SHIP_FIRST_TIME
+ iffalse .FirstTime
+ checkcode VAR_WEEKDAY
+ ifequal SUNDAY, .NextShipMonday
+ ifequal SATURDAY, .NextShipMonday
+ ifequal TUESDAY, .NextShipFriday
+ ifequal WEDNESDAY, .NextShipFriday
+ ifequal THURSDAY, .NextShipFriday
+.FirstTime:
+ writetext UnknownText_0x74a9c
+ yesorno
+ iffalse OlivinePortNotRidingScript
+ writetext UnknownText_0x74ada
+ buttonsound
+ checkitem S_S_TICKET
+ iffalse .NoTicket
+ writetext UnknownText_0x74b11
+ waitbutton
+ closetext
+ setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_2
+ checkcode VAR_FACING
+ ifequal RIGHT, .Right
+ applymovement PLAYER, MovementData_0x74a3f
+ jump OlivinePortSailorAtGangwayScript
+
+.Right:
+ applymovement PLAYER, MovementData_0x74a49
+ jump OlivinePortSailorAtGangwayScript
+
+.NoTicket:
+ writetext UnknownText_0x74b41
+ waitbutton
+ closetext
+ end
+
+.NextShipMonday:
+ writetext UnknownText_0x74ba8
+ waitbutton
+ closetext
+ end
+
+.NextShipFriday:
+ writetext UnknownText_0x74bce
+ waitbutton
+ closetext
+ end
+
+OlivinePortSailorBeforeHOFScript:
+ jumptextfaceplayer OlivinePortSailorBeforeHOFText
+
+OlivinePortFishingGuru1Script:
+ faceplayer
+ opentext
+ writetext OlivinePortFishingGuru1Text
+ waitbutton
+ closetext
+ turnobject OLIVINEPORT_FISHING_GURU1, UP
+ end
+
+OlivinePortFishingGuru2Script:
+ faceplayer
+ opentext
+ writetext OlivinePortFishingGuru2Text
+ waitbutton
+ closetext
+ turnobject OLIVINEPORT_FISHING_GURU2, UP
+ end
+
+OlivinePortYoungsterScript:
+ faceplayer
+ opentext
+ writetext OlivinePortYoungsterText
+ waitbutton
+ closetext
+ turnobject OLIVINEPORT_YOUNGSTER, DOWN
+ end
+
+OlivinePortCooltrainerFScript:
+ faceplayer
+ opentext
+ writetext OlivinePortCooltrainerFText
+ waitbutton
+ closetext
+ turnobject OLIVINEPORT_COOLTRAINER_F, DOWN
+ end
+
+OlivinePortHiddenProtein:
+ hiddenitem PROTEIN, EVENT_OLIVINE_PORT_HIDDEN_PROTEIN
+
+MovementData_0x74a30:
+ step DOWN
+ step_end
+
+MovementData_0x74a32:
+ step UP
+ step_end
+
+MovementData_0x74a34:
+ step RIGHT
+ turn_head LEFT
+ step_end
+
+MovementData_0x74a37:
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+MovementData_0x74a3f:
+ step RIGHT
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+MovementData_0x74a49:
+ step UP
+ step RIGHT
+ step RIGHT
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+UnknownText_0x74a55:
+ text "We're departing"
+ line "soon. Please get"
+ cont "on board."
+ done
+
+UnknownText_0x74a80:
+ text "Sorry. You can't"
+ line "board now."
+ done
+
+UnknownText_0x74a9c:
+ text "Welcome to FAST"
+ line "SHIP S.S.AQUA."
+
+ para "Will you be board-"
+ line "ing today?"
+ done
+
+UnknownText_0x74ada:
+ text "May I see your"
+ line "S.S.TICKET, sir?"
+ done
+
+UnknownText_0x74af6:
+ text "We hope to see you"
+ line "again!"
+ done
+
+UnknownText_0x74b11:
+ text "<PLAYER> flashed"
+ line "the S.S.TICKET."
+
+ para "That's it."
+ line "Thank you, sir!"
+ done
+
+UnknownText_0x74b41:
+ text "<PLAYER> tried to"
+ line "show the S.S."
+ cont "TICKET…"
+
+ para "…But no TICKET!"
+
+ para "Sorry!"
+ line "You may board only"
+
+ para "if you have an"
+ line "S.S.TICKET."
+ done
+
+UnknownText_0x74ba8:
+ text "The FAST SHIP will"
+ line "sail next Monday."
+ done
+
+UnknownText_0x74bce:
+ text "The FAST SHIP will"
+ line "sail next Friday."
+ done
+
+OlivinePortFishingGuru1Text:
+ text "SHELLDER are easy"
+ line "to catch here."
+
+ para "They're kind of"
+ line "rare elsewhere."
+ done
+
+OlivinePortFishingGuru2Text:
+ text "How many RODS do"
+ line "you have?"
+
+ para "Different RODS"
+ line "catch different"
+ cont "#MON."
+ done
+
+OlivinePortYoungsterText:
+ text "S.S.AQUA uses jets"
+ line "to skim over the"
+ cont "waves!"
+ done
+
+OlivinePortCooltrainerFText:
+ text "There are lots of"
+ line "#MON in KANTO."
+
+ para "I wish I could go…"
+ done
+
+OlivinePortSailorBeforeHOFText:
+ text "We don't want you"
+ line "to fall into the"
+
+ para "sea, so you're not"
+ line "allowed in."
+ done
+
+OlivinePort_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 11, 7, OLIVINE_PORT_PASSAGE, 5
+ warp_event 7, 23, FAST_SHIP_1F, 1
+
+ db 1 ; coord events
+ coord_event 7, 15, SCENE_DEFAULT, OlivinePortWalkUpToShipScript
+
+ db 1 ; bg events
+ bg_event 1, 22, BGEVENT_ITEM, OlivinePortHiddenProtein
+
+ db 7 ; object events
+ object_event 7, 23, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OlivinePortSailorAtGangwayScript, EVENT_OLIVINE_PORT_SAILOR_AT_GANGWAY
+ object_event 7, 15, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OlivinePortSailorBeforeHOFScript, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+ object_event 6, 15, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OlivinePortSailorAfterHOFScript, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+ object_event 4, 14, SPRITE_FISHING_GURU, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OlivinePortFishingGuru1Script, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+ object_event 13, 14, SPRITE_FISHING_GURU, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OlivinePortFishingGuru2Script, EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+ object_event 4, 15, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OlivinePortYoungsterScript, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+ object_event 11, 15, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OlivinePortCooltrainerFScript, EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
diff --git a/maps/OlivinePortPassage.asm b/maps/OlivinePortPassage.asm
new file mode 100644
index 00000000..98040307
--- /dev/null
+++ b/maps/OlivinePortPassage.asm
@@ -0,0 +1,35 @@
+ const_def 2 ; object constants
+ const OLIVINEPORTPASSAGE_POKEFAN_M
+
+OlivinePortPassage_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+OlivinePortPassagePokefanMScript:
+ jumptextfaceplayer OlivinePortPassagePokefanMText
+
+OlivinePortPassagePokefanMText:
+ text "FAST SHIP S.S.AQUA"
+ line "sails to KANTO on"
+
+ para "Mondays and Fri-"
+ line "days."
+ done
+
+OlivinePortPassage_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 15, 0, OLIVINE_CITY, 10
+ warp_event 16, 0, OLIVINE_CITY, 11
+ warp_event 15, 4, OLIVINE_PORT_PASSAGE, 4
+ warp_event 3, 2, OLIVINE_PORT_PASSAGE, 3
+ warp_event 3, 14, OLIVINE_PORT, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 17, 1, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, OlivinePortPassagePokefanMScript, EVENT_OLIVINE_PORT_PASSAGE_POKEFAN_M
diff --git a/maps/TinTowerRoof.asm b/maps/TinTowerRoof.asm
new file mode 100644
index 00000000..8a10e88a
--- /dev/null
+++ b/maps/TinTowerRoof.asm
@@ -0,0 +1,65 @@
+ const_def 2 ; object constants
+ const TINTOWERROOF_HO_OH
+
+TinTowerRoof_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_OBJECTS, .HoOh
+
+.HoOh:
+ checkevent EVENT_FOUGHT_HO_OH
+ iftrue .NoAppear
+ checkitem RAINBOW_WING
+ iftrue .Appear
+ jump .NoAppear
+
+.Appear:
+ appear TINTOWERROOF_HO_OH
+ return
+
+.NoAppear:
+ disappear TINTOWERROOF_HO_OH
+ return
+
+TinTowerHoOh:
+ faceplayer
+ opentext
+ writetext HoOhText
+ cry HO_OH
+ pause 15
+ closetext
+ setevent EVENT_FOUGHT_HO_OH
+ checkver
+ iftrue .Silver
+ writecode VAR_BATTLETYPE, BATTLETYPE_FORCEITEM
+ loadwildmon HO_OH, 40
+ startbattle
+ disappear TINTOWERROOF_HO_OH
+ reloadmapafterbattle
+ end
+
+.Silver:
+ writecode VAR_BATTLETYPE, BATTLETYPE_FORCEITEM
+ loadwildmon HO_OH, 70
+ startbattle
+ disappear TINTOWERROOF_HO_OH
+ reloadmapafterbattle
+ end
+
+HoOhText:
+ text "Shaoooh!"
+ done
+
+TinTowerRoof_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 9, 13, TIN_TOWER_9F, 4
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 9, 5, SPRITE_HO_OH, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, TinTowerHoOh, EVENT_TIN_TOWER_ROOF_HO_OH
diff --git a/maps/VermilionPort.asm b/maps/VermilionPort.asm
new file mode 100644
index 00000000..9bd49f0b
--- /dev/null
+++ b/maps/VermilionPort.asm
@@ -0,0 +1,315 @@
+ const_def 2 ; object constants
+ const VERMILIONPORT_SAILOR1
+ const VERMILIONPORT_SAILOR2
+ const VERMILIONPORT_SUPER_NERD
+
+VermilionPort_MapScripts:
+ db 2 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_DEFAULT
+ scene_script .LeaveFastShip ; SCENE_VERMILIONPORT_LEAVE_SHIP
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .FlyPoint
+
+.DummyScene0:
+ end
+
+.LeaveFastShip:
+ priorityjump .LeaveFastShipScript
+ end
+
+.FlyPoint:
+ setflag ENGINE_FLYPOINT_VERMILION
+ return
+
+.LeaveFastShipScript:
+ applymovement PLAYER, MovementData_0x74ef3
+ appear VERMILIONPORT_SAILOR1
+ setscene SCENE_DEFAULT
+ setevent EVENT_FAST_SHIP_CABINS_SE_SSE_CAPTAINS_CABIN_TWIN_1
+ setevent EVENT_FAST_SHIP_CABINS_SE_SSE_GENTLEMAN
+ setevent EVENT_FAST_SHIP_PASSENGERS_FIRST_TRIP
+ clearevent EVENT_OLIVINE_PORT_PASSAGE_POKEFAN_M
+ setevent EVENT_FAST_SHIP_FIRST_TIME
+ setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ blackoutmod VERMILION_CITY
+ end
+
+VermilionPortSailorAtGangwayScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iftrue VermilionPortAlreadyRodeScript
+ writetext UnknownText_0x74f06
+ waitbutton
+ closetext
+ turnobject VERMILIONPORT_SAILOR1, DOWN
+ pause 10
+ playsound SFX_EXIT_BUILDING
+ disappear VERMILIONPORT_SAILOR1
+ waitsfx
+ applymovement PLAYER, MovementData_0x74ef1
+ playsound SFX_EXIT_BUILDING
+ special FadeOutPalettes
+ waitsfx
+ setevent EVENT_FAST_SHIP_PASSENGERS_EASTBOUND
+ clearevent EVENT_FAST_SHIP_PASSENGERS_WESTBOUND
+ clearevent EVENT_BEAT_POKEMANIAC_ETHAN
+ clearevent EVENT_BEAT_BURGLAR_COREY
+ clearevent EVENT_BEAT_BUG_CATCHER_KEN
+ clearevent EVENT_BEAT_GUITARIST_CLYDE
+ clearevent EVENT_BEAT_POKEFANM_JEREMY
+ clearevent EVENT_BEAT_POKEFANF_GEORGIA
+ clearevent EVENT_BEAT_SAILOR_KENNETH
+ clearevent EVENT_BEAT_TEACHER_SHIRLEY
+ clearevent EVENT_BEAT_SCHOOLBOY_NATE
+ clearevent EVENT_BEAT_SCHOOLBOY_RICKY
+ setevent EVENT_FAST_SHIP_DESTINATION_OLIVINE
+ appear VERMILIONPORT_SAILOR1
+ setmapscene FAST_SHIP_1F, SCENE_FASTSHIP1F_ENTER_SHIP
+ warp FAST_SHIP_1F, 25, 1
+ end
+
+VermilionPortAlreadyRodeScript:
+ writetext UnknownText_0x74f31
+ waitbutton
+ closetext
+ end
+
+VermilionPortWalkUpToShipScript:
+ turnobject VERMILIONPORT_SAILOR2, RIGHT
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iftrue .skip
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_2
+ iftrue .skip
+ turnobject PLAYER, LEFT
+ opentext
+ checkcode VAR_WEEKDAY
+ ifequal MONDAY, .NextShipWednesday
+ ifequal TUESDAY, .NextShipWednesday
+ ifequal THURSDAY, .NextShipSunday
+ ifequal FRIDAY, .NextShipSunday
+ ifequal SATURDAY, .NextShipSunday
+ writetext UnknownText_0x74f4d
+ yesorno
+ iffalse VermilionPortNotRidingMoveAwayScript
+ writetext UnknownText_0x74f8b
+ buttonsound
+ checkitem S_S_TICKET
+ iffalse .NoTicket
+ writetext VermilionPortSSTicketText
+ waitbutton
+ closetext
+ setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_2
+ applymovement PLAYER, MovementData_0x74ef8
+ jump VermilionPortSailorAtGangwayScript
+
+.NoTicket:
+ writetext UnknownText_0x74ff2
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x74ef5
+ end
+
+.NextShipWednesday:
+ writetext UnknownText_0x75059
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x74ef5
+ end
+
+.NextShipSunday:
+ writetext UnknownText_0x75080
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x74ef5
+ end
+
+.skip:
+ end
+
+VermilionPortNotRidingScript:
+ writetext UnknownText_0x74fa7
+ waitbutton
+ closetext
+ end
+
+VermilionPortNotRidingMoveAwayScript:
+ writetext UnknownText_0x74fa7
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x74ef5
+ end
+
+VermilionPortSailorScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iftrue VermilionPortAlreadyRodeScript
+ checkcode VAR_WEEKDAY
+ ifequal MONDAY, .NextShipWednesday
+ ifequal TUESDAY, .NextShipWednesday
+ ifequal THURSDAY, .NextShipSunday
+ ifequal FRIDAY, .NextShipSunday
+ ifequal SATURDAY, .NextShipSunday
+ writetext UnknownText_0x74f4d
+ yesorno
+ iffalse VermilionPortNotRidingScript
+ writetext UnknownText_0x74f8b
+ buttonsound
+ checkitem S_S_TICKET
+ iffalse .NoTicket
+ writetext VermilionPortSSTicketText
+ waitbutton
+ closetext
+ setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_2
+ applymovement PLAYER, MovementData_0x74efe
+ jump VermilionPortSailorAtGangwayScript
+
+.NoTicket:
+ writetext UnknownText_0x74ff2
+ waitbutton
+ closetext
+ end
+
+.NextShipWednesday:
+ writetext UnknownText_0x75059
+ waitbutton
+ closetext
+ end
+
+.NextShipSunday:
+ writetext UnknownText_0x75080
+ waitbutton
+ closetext
+ end
+
+VermilionPortSuperNerdScript:
+ faceplayer
+ opentext
+ writetext UnknownText_0x750a6
+ waitbutton
+ closetext
+ end
+
+VermilionPortHiddenIron:
+ hiddenitem IRON, EVENT_VERMILION_PORT_HIDDEN_IRON
+
+MovementData_0x74ef1:
+ step DOWN
+ step_end
+
+MovementData_0x74ef3:
+ step UP
+ step_end
+
+MovementData_0x74ef5:
+ step RIGHT
+ turn_head LEFT
+ step_end
+
+MovementData_0x74ef8:
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+MovementData_0x74efe:
+ step RIGHT
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+UnknownText_0x74f06:
+ text "We're departing"
+ line "soon. Please get"
+ cont "on board."
+ done
+
+UnknownText_0x74f31:
+ text "Sorry. You can't"
+ line "board now."
+ done
+
+UnknownText_0x74f4d:
+ text "Welcome to FAST"
+ line "SHIP S.S.AQUA."
+
+ para "Will you be board-"
+ line "ing today?"
+ done
+
+UnknownText_0x74f8b:
+ text "May I see your"
+ line "S.S.TICKET, sir?"
+ done
+
+UnknownText_0x74fa7:
+ text "We hope to see you"
+ line "again!"
+ done
+
+VermilionPortSSTicketText:
+ text "<PLAYER> flashed"
+ line "the S.S.TICKET."
+
+ para "That's it."
+ line "Thank you, sir!"
+ done
+
+UnknownText_0x74ff2:
+ text "<PLAYER> tried to"
+ line "show the S.S."
+ cont "TICKET…"
+
+ para "…But no TICKET!"
+
+ para "Sorry!"
+ line "You may board only"
+
+ para "if you have an"
+ line "S.S.TICKET."
+ done
+
+UnknownText_0x75059:
+ text "The FAST SHIP will"
+ line "sail on Wednesday."
+ done
+
+UnknownText_0x75080:
+ text "The FAST SHIP will"
+ line "sail next Sunday."
+ done
+
+UnknownText_0x750a6:
+ text "You came from"
+ line "JOHTO?"
+
+ para "I hear many rare"
+ line "#MON live over"
+ cont "there."
+ done
+
+VermilionPort_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 9, 5, VERMILION_PORT_PASSAGE, 5
+ warp_event 7, 17, FAST_SHIP_1F, 1
+
+ db 1 ; coord events
+ coord_event 7, 11, SCENE_DEFAULT, VermilionPortWalkUpToShipScript
+
+ db 1 ; bg events
+ bg_event 16, 13, BGEVENT_ITEM, VermilionPortHiddenIron
+
+ db 3 ; object events
+ object_event 7, 17, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VermilionPortSailorAtGangwayScript, EVENT_VERMILION_PORT_SAILOR_AT_GANGWAY
+ object_event 6, 11, SPRITE_SAILOR, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VermilionPortSailorScript, -1
+ object_event 11, 11, SPRITE_SUPER_NERD, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 2, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VermilionPortSuperNerdScript, -1
diff --git a/maps/VermilionPortPassage.asm b/maps/VermilionPortPassage.asm
new file mode 100644
index 00000000..1ea12457
--- /dev/null
+++ b/maps/VermilionPortPassage.asm
@@ -0,0 +1,34 @@
+ const_def 2 ; object constants
+ const VERMILIONPORTPASSAGE_TEACHER
+
+VermilionPortPassage_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+VermilionPortPassageTeacherScript:
+ jumptextfaceplayer VermilionPortPassageTeacherText
+
+VermilionPortPassageTeacherText:
+ text "The FAST SHIP"
+ line "sails on Wednes-"
+ cont "days and Sundays"
+ cont "every week."
+ done
+
+VermilionPortPassage_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 15, 0, VERMILION_CITY, 8
+ warp_event 16, 0, VERMILION_CITY, 9
+ warp_event 15, 4, VERMILION_PORT_PASSAGE, 4
+ warp_event 3, 2, VERMILION_PORT_PASSAGE, 3
+ warp_event 3, 14, VERMILION_PORT, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 17, 1, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VermilionPortPassageTeacherScript, -1