summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIIMarckus <iimarckus@gmail.com>2018-09-24 02:49:16 -0600
committerIIMarckus <iimarckus@gmail.com>2018-09-24 02:49:16 -0600
commit08e3c31b101ddc62b190be85df7c5328f4cf464f (patch)
tree97b332745d9482e1d272ba6cc041cd9c6eee404d
parent31d813f323d30580733fa4a8ad02e6127c34687d (diff)
Add map objects from bank 5A.
-rw-r--r--main.asm27
-rw-r--r--maps/BrunosRoom.asm139
-rw-r--r--maps/HallOfFame.asm123
-rw-r--r--maps/IndigoPlateauPokecenter1F.asm324
-rw-r--r--maps/KarensRoom.asm147
-rw-r--r--maps/KogasRoom.asm144
-rw-r--r--maps/LancesRoom.asm360
-rw-r--r--maps/PewterGym.asm225
-rw-r--r--maps/PewterMart.asm60
-rw-r--r--maps/PewterNidoranSpeechHouse.asm42
-rw-r--r--maps/PewterPokecenter1F.asm85
-rw-r--r--maps/PewterPokecenter2FBeta.asm16
-rw-r--r--maps/PewterSnoozeSpeechHouse.asm35
-rw-r--r--maps/WillsRoom.asm142
14 files changed, 1855 insertions, 14 deletions
diff --git a/main.asm b/main.asm
index 36c155b7..e78dd834 100644
--- a/main.asm
+++ b/main.asm
@@ -1838,20 +1838,19 @@ INCLUDE "maps/BluesHouse.asm"
INCLUDE "maps/OaksLab.asm"
SECTION "bank5a", ROMX, BANK[$5a]
-;INCLUDE "maps/PewterNidoranSpeechHouse.asm"
-;INCLUDE "maps/PewterGym.asm"
-;INCLUDE "maps/PewterMart.asm"
-;INCLUDE "maps/PewterPokecenter1F.asm"
-;INCLUDE "maps/PewterPokecenter2FBeta.asm"
-;INCLUDE "maps/PewterSnoozeSpeechHouse.asm"
-;INCLUDE "maps/IndigoPlateauPokecenter1F.asm"
-;INCLUDE "maps/WillsRoom.asm"
-;INCLUDE "maps/KogasRoom.asm"
-;INCLUDE "maps/BrunosRoom.asm"
-;INCLUDE "maps/KarensRoom.asm"
-;INCLUDE "maps/LancesRoom.asm"
-;INCLUDE "maps/HallOfFame.asm"
- dr $168000, $16c000
+INCLUDE "maps/PewterNidoranSpeechHouse.asm"
+INCLUDE "maps/PewterGym.asm"
+INCLUDE "maps/PewterMart.asm"
+INCLUDE "maps/PewterPokecenter1F.asm"
+INCLUDE "maps/PewterPokecenter2FBeta.asm"
+INCLUDE "maps/PewterSnoozeSpeechHouse.asm"
+INCLUDE "maps/IndigoPlateauPokecenter1F.asm"
+INCLUDE "maps/WillsRoom.asm"
+INCLUDE "maps/KogasRoom.asm"
+INCLUDE "maps/BrunosRoom.asm"
+INCLUDE "maps/KarensRoom.asm"
+INCLUDE "maps/LancesRoom.asm"
+INCLUDE "maps/HallOfFame.asm"
SECTION "bank5b", ROMX, BANK[$5b]
;INCLUDE "maps/OlivinePort.asm"
diff --git a/maps/BrunosRoom.asm b/maps/BrunosRoom.asm
new file mode 100644
index 00000000..4f091d2c
--- /dev/null
+++ b/maps/BrunosRoom.asm
@@ -0,0 +1,139 @@
+ const_def 2 ; object constants
+ const BRUNOSROOM_BRUNO
+
+BrunosRoom_MapScripts:
+ db 2 ; scene scripts
+ scene_script .LockDoor ; SCENE_DEFAULT
+ scene_script .DummyScene ; SCENE_FINISHED
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .BrunosRoomDoors
+
+.LockDoor:
+ priorityjump .BrunosDoorLocksBehindYou
+ end
+
+.DummyScene:
+ end
+
+.BrunosRoomDoors:
+ checkevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
+ iffalse .KeepEntranceOpen
+ changeblock 4, 14, $2a ; wall
+.KeepEntranceOpen:
+ checkevent EVENT_BRUNOS_ROOM_EXIT_OPEN
+ iffalse .KeepExitClosed
+ changeblock 4, 2, $16 ; open door
+.KeepExitClosed:
+ return
+
+.BrunosDoorLocksBehindYou:
+ applymovement PLAYER, BrunosRoom_EnterMovement
+ refreshscreen $85
+ playsound SFX_STRENGTH
+ earthquake 80
+ changeblock 4, 14, $2a ; wall
+ reloadmappart
+ closetext
+ setscene SCENE_FINISHED
+ setevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
+ waitsfx
+ end
+
+BrunoScript_Battle:
+ faceplayer
+ opentext
+ checkevent EVENT_BEAT_ELITE_4_BRUNO
+ iftrue BrunoScript_AfterBattle
+ writetext BrunoScript_BrunoBeforeText
+ waitbutton
+ closetext
+ winlosstext BrunoScript_BrunoBeatenText, 0
+ loadtrainer BRUNO, BRUNO1
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_ELITE_4_BRUNO
+ opentext
+ writetext BrunoScript_BrunoDefeatText
+ waitbutton
+ closetext
+ playsound SFX_ENTER_DOOR
+ changeblock 4, 2, $16 ; open door
+ reloadmappart
+ closetext
+ setevent EVENT_BRUNOS_ROOM_EXIT_OPEN
+ waitsfx
+ end
+
+BrunoScript_AfterBattle:
+ writetext BrunoScript_BrunoDefeatText
+ waitbutton
+ closetext
+ end
+
+BrunosRoom_EnterMovement:
+ step UP
+ step UP
+ step UP
+ step UP
+ step_end
+
+BrunoScript_BrunoBeforeText:
+ text "I am BRUNO of the"
+ line "ELITE FOUR."
+
+ para "I always train to"
+ line "the extreme be-"
+ cont "cause I believe in"
+ cont "our potential."
+
+ para "That is how we"
+ line "became strong."
+
+ para "Can you withstand"
+ line "our power?"
+
+ para "Hm? I see no fear"
+ line "in you. You look"
+
+ para "determined. Per-"
+ line "fect for battle!"
+
+ para "Ready, <PLAYER>?"
+ line "You will bow down"
+
+ para "to our overwhelm-"
+ line "ing power!"
+
+ para "Hoo hah!"
+ done
+
+BrunoScript_BrunoBeatenText:
+ text "Why? How could we"
+ line "lose?"
+ done
+
+BrunoScript_BrunoDefeatText:
+ text "Having lost, I"
+ line "have no right to"
+ cont "say anything…"
+
+ para "Go face your next"
+ line "challenge!"
+ done
+
+BrunosRoom_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 17, KOGAS_ROOM, 3
+ warp_event 5, 17, KOGAS_ROOM, 4
+ warp_event 4, 2, KARENS_ROOM, 1
+ warp_event 5, 2, KARENS_ROOM, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 5, 7, SPRITE_BRUNO, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, BrunoScript_Battle, -1
diff --git a/maps/HallOfFame.asm b/maps/HallOfFame.asm
new file mode 100644
index 00000000..5d0588ba
--- /dev/null
+++ b/maps/HallOfFame.asm
@@ -0,0 +1,123 @@
+ const_def 2 ; object constants
+ const HALLOFFAME_LANCE
+
+HallOfFame_MapScripts:
+ db 2 ; scene scripts
+ scene_script .EnterHallOfFame ; SCENE_DEFAULT
+ scene_script .DummyScene ; SCENE_FINISHED
+
+ db 0 ; callbacks
+
+.EnterHallOfFame:
+ priorityjump .EnterHallOfFameScript
+ end
+
+.DummyScene:
+ end
+
+.EnterHallOfFameScript:
+ follow HALLOFFAME_LANCE, PLAYER
+ applymovement HALLOFFAME_LANCE, HallOfFame_WalkUpWithLance
+ stopfollow
+ turnobject PLAYER, RIGHT
+ opentext
+ writetext HallOfFame_LanceText
+ waitbutton
+ closetext
+ turnobject HALLOFFAME_LANCE, UP
+ applymovement PLAYER, HallOfFame_SlowlyApproachMachine
+ setscene SCENE_FINISHED
+ pause 15
+ writebyte HEALMACHINE_HALL_OF_FAME
+ special HealMachineAnim
+ setevent EVENT_BEAT_ELITE_FOUR
+ setevent EVENT_TELEPORT_GUY
+ setevent EVENT_RIVAL_SPROUT_TOWER
+ clearevent EVENT_RED_IN_MT_SILVER
+ setevent EVENT_OLIVINE_PORT_SPRITES_BEFORE_HALL_OF_FAME
+ clearevent EVENT_OLIVINE_PORT_SPRITES_AFTER_HALL_OF_FAME
+ setmapscene SPROUT_TOWER_3F, SCENE_FINISHED
+ special HealParty
+ checkevent EVENT_GOT_SS_TICKET_FROM_ELM
+ iftrue .SkipPhoneCall
+ specialphonecall SPECIALCALL_SSTICKET
+.SkipPhoneCall:
+ halloffame
+ end
+
+HallOfFame_WalkUpWithLance:
+ step UP
+ step UP
+ step UP
+ step UP
+ step UP
+ step UP
+ step UP
+ step UP
+ step RIGHT
+ turn_head LEFT
+ step_end
+
+HallOfFame_SlowlyApproachMachine:
+ slow_step UP
+ step_end
+
+HallOfFame_LanceText:
+ text "LANCE: It's been a"
+ line "long time since I"
+ cont "last came here."
+
+ para "This is where we"
+ line "honor the LEAGUE"
+
+ para "CHAMPIONS for all"
+ line "eternity."
+
+ para "Their courageous"
+ line "#MON are also"
+ cont "inducted."
+
+ para "Here today, we"
+ line "witnessed the rise"
+
+ para "of a new LEAGUE"
+ line "CHAMPION--a"
+
+ para "trainer who feels"
+ line "compassion for,"
+
+ para "and trust in, his"
+ line "#MON."
+
+ para "A trainer who"
+ line "succeeded through"
+
+ para "perseverance and"
+ line "determination."
+
+ para "The new LEAGUE"
+ line "CHAMPION who has"
+
+ para "all the makings"
+ line "of greatness!"
+
+ para "<PLAYER>, allow me"
+ line "to register you"
+
+ para "and your partners"
+ line "as CHAMPIONS!"
+ done
+
+HallOfFame_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 4, 13, LANCES_ROOM, 3
+ warp_event 5, 13, LANCES_ROOM, 4
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 4, 12, SPRITE_LANCE, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, -1
diff --git a/maps/IndigoPlateauPokecenter1F.asm b/maps/IndigoPlateauPokecenter1F.asm
new file mode 100644
index 00000000..bd3fb351
--- /dev/null
+++ b/maps/IndigoPlateauPokecenter1F.asm
@@ -0,0 +1,324 @@
+ const_def 2 ; object constants
+ const INDIGOPLATEAUPOKECENTER1F_NURSE
+ const INDIGOPLATEAUPOKECENTER1F_CLERK
+ const INDIGOPLATEAUPOKECENTER1F_COOLTRAINER_M
+ const INDIGOPLATEAUPOKECENTER1F_SILVER
+ const INDIGOPLATEAUPOKECENTER1F_GRAMPS
+ const INDIGOPLATEAUPOKECENTER1F_ABRA
+
+IndigoPlateauPokecenter1F_MapScripts:
+ db 1 ; scene scripts
+ scene_script .DummyScene ; SCENE_DEFAULT
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .PrepareElite4
+
+.DummyScene:
+ end
+
+.PrepareElite4:
+ setmapscene WILLS_ROOM, SCENE_DEFAULT
+ setmapscene KOGAS_ROOM, SCENE_DEFAULT
+ setmapscene BRUNOS_ROOM, SCENE_DEFAULT
+ setmapscene KARENS_ROOM, SCENE_DEFAULT
+ setmapscene LANCES_ROOM, SCENE_DEFAULT
+ setmapscene HALL_OF_FAME, SCENE_DEFAULT
+ clearevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
+ clearevent EVENT_WILLS_ROOM_EXIT_OPEN
+ clearevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+ clearevent EVENT_KOGAS_ROOM_EXIT_OPEN
+ clearevent EVENT_BRUNOS_ROOM_ENTRANCE_CLOSED
+ clearevent EVENT_BRUNOS_ROOM_EXIT_OPEN
+ clearevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
+ clearevent EVENT_KARENS_ROOM_EXIT_OPEN
+ clearevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
+ clearevent EVENT_LANCES_ROOM_EXIT_OPEN
+ clearevent EVENT_BEAT_ELITE_4_WILL
+ clearevent EVENT_BEAT_ELITE_4_KOGA
+ clearevent EVENT_BEAT_ELITE_4_BRUNO
+ clearevent EVENT_BEAT_ELITE_4_KAREN
+ clearevent EVENT_BEAT_CHAMPION_LANCE
+ setevent EVENT_LANCES_ROOM_OAK_AND_MARY
+ return
+
+PlateauRivalBattle1:
+ checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
+ iffalse PlateauRivalScriptDone
+ checkflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
+ iftrue PlateauRivalScriptDone
+ checkcode VAR_WEEKDAY
+ ifequal SUNDAY, PlateauRivalScriptDone
+ ifequal TUESDAY, PlateauRivalScriptDone
+ ifequal THURSDAY, PlateauRivalScriptDone
+ ifequal FRIDAY, PlateauRivalScriptDone
+ ifequal SATURDAY, PlateauRivalScriptDone
+ moveobject INDIGOPLATEAUPOKECENTER1F_SILVER, 17, 9
+ appear INDIGOPLATEAUPOKECENTER1F_SILVER
+ turnobject PLAYER, DOWN
+ showemote EMOTE_SHOCK, PLAYER, 15
+ special FadeOutMusic
+ pause 15
+ applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalMovement1
+ playmusic MUSIC_RIVAL_ENCOUNTER
+ turnobject PLAYER, RIGHT
+ jump PlateauRivalBattleCommon
+
+PlateauRivalBattle2:
+ checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
+ iffalse PlateauRivalScriptDone
+ checkflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
+ iftrue PlateauRivalScriptDone
+ checkcode VAR_WEEKDAY
+ ifequal SUNDAY, PlateauRivalScriptDone
+ ifequal TUESDAY, PlateauRivalScriptDone
+ ifequal THURSDAY, PlateauRivalScriptDone
+ ifequal FRIDAY, PlateauRivalScriptDone
+ ifequal SATURDAY, PlateauRivalScriptDone
+ appear INDIGOPLATEAUPOKECENTER1F_SILVER
+ turnobject PLAYER, DOWN
+ showemote EMOTE_SHOCK, PLAYER, 15
+ special FadeOutMusic
+ pause 15
+ applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalMovement2
+ playmusic MUSIC_RIVAL_ENCOUNTER
+ turnobject PLAYER, LEFT
+PlateauRivalBattleCommon:
+ opentext
+ writetext PlateauRivalText1
+ waitbutton
+ closetext
+ setevent EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
+ checkevent EVENT_GOT_TOTODILE_FROM_ELM
+ iftrue .Totodile
+ checkevent EVENT_GOT_CHIKORITA_FROM_ELM
+ iftrue .Chikorita
+ ; Cyndaquil
+ winlosstext PlateauRivalWinText, PlateauRivalLoseText
+ setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
+ loadtrainer RIVAL2, RIVAL2_2_TOTODILE
+ startbattle
+ dontrestartmapmusic
+ reloadmapafterbattle
+ jump PlateauRivalPostBattle
+
+.Totodile:
+ winlosstext PlateauRivalWinText, PlateauRivalLoseText
+ setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
+ loadtrainer RIVAL2, RIVAL2_2_CHIKORITA
+ startbattle
+ dontrestartmapmusic
+ reloadmapafterbattle
+ jump PlateauRivalPostBattle
+
+.Chikorita:
+ winlosstext PlateauRivalWinText, PlateauRivalLoseText
+ setlasttalked INDIGOPLATEAUPOKECENTER1F_SILVER
+ loadtrainer RIVAL2, RIVAL2_2_CYNDAQUIL
+ startbattle
+ dontrestartmapmusic
+ reloadmapafterbattle
+ jump PlateauRivalPostBattle
+
+PlateauRivalPostBattle:
+ playmusic MUSIC_RIVAL_AFTER
+ opentext
+ writetext PlateauRivalText2
+ waitbutton
+ closetext
+ turnobject PLAYER, DOWN
+ applymovement INDIGOPLATEAUPOKECENTER1F_SILVER, PlateauRivalLeavesMovement
+ disappear INDIGOPLATEAUPOKECENTER1F_SILVER
+ setscene SCENE_DEFAULT
+ playmapmusic
+ setflag ENGINE_INDIGO_PLATEAU_RIVAL_FIGHT
+PlateauRivalScriptDone:
+ end
+
+IndigoPlateauPokecenter1FNurseScript:
+ jumpstd pokecenternurse
+
+IndigoPlateauPokecenter1FClerkScript:
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_INDIGO_PLATEAU
+ closetext
+ end
+
+IndigoPlateauPokecenter1FCooltrainerMScript:
+ jumptextfaceplayer IndigoPlateauPokecenter1FCooltrainerMText
+
+TeleportGuyScript:
+ faceplayer
+ opentext
+ writetext TeleportGuyText1
+ yesorno
+ iffalse .No
+ writetext TeleportGuyYesText
+ waitbutton
+ closetext
+ playsound SFX_WARP_TO
+ special FadeOutPalettes
+ waitsfx
+ warp NEW_BARK_TOWN, 13, 6
+ end
+
+.No:
+ writetext TeleportGuyNoText
+ waitbutton
+ closetext
+ end
+
+AbraScript:
+ opentext
+ writetext AbraText
+ cry ABRA
+ waitbutton
+ closetext
+ end
+
+PlateauRivalMovement1:
+ step UP
+ step UP
+ step UP
+ step UP
+ step UP
+ turn_head LEFT
+ step_end
+
+PlateauRivalMovement2:
+ step UP
+ step UP
+ step UP
+ step UP
+ step UP
+ turn_head RIGHT
+ step_end
+
+PlateauRivalLeavesMovement:
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+IndigoPlateauPokecenter1FCooltrainerMText:
+ text "At the #MON"
+ line "LEAGUE, you'll get"
+
+ para "tested by the"
+ line "ELITE FOUR."
+
+ para "You have to beat"
+ line "them all. If you"
+
+ para "lose, you have to"
+ line "start all over!"
+ done
+
+PlateauRivalText1:
+ text "Hold it."
+
+ para "You're going to"
+ line "take the #MON"
+
+ para "LEAGUE challenge"
+ line "now?"
+
+ para "That's not going"
+ line "to happen."
+
+ para "My super-well-"
+ line "trained #MON"
+
+ para "are going to pound"
+ line "you."
+
+ para "<PLAYER>!"
+ line "I challenge you!"
+ done
+
+PlateauRivalWinText:
+ text "…"
+
+ para "OK--I lost…"
+ done
+
+PlateauRivalText2:
+ text "…Darn… I still"
+ line "can't win…"
+
+ para "I… I have to think"
+ line "more about my"
+ cont "#MON…"
+
+ para "Humph! Try not to"
+ line "lose!"
+ done
+
+PlateauRivalLoseText:
+ text "…"
+
+ para "Whew…"
+ line "With my partners,"
+
+ para "I'm going to be"
+ line "the CHAMPION!"
+ done
+
+TeleportGuyText1:
+ text "Ah! You're chal-"
+ line "lenging the ELITE"
+
+ para "FOUR? Are you sure"
+ line "you're ready?"
+
+ para "If you need to"
+ line "train some more,"
+
+ para "my ABRA can help"
+ line "you."
+
+ para "It can TELEPORT"
+ line "you home."
+
+ para "Would you like to"
+ line "go home now?"
+ done
+
+TeleportGuyYesText:
+ text "OK, OK. Picture"
+ line "your house in your"
+ cont "mind…"
+ done
+
+TeleportGuyNoText:
+ text "OK, OK. The best"
+ line "of luck to you!"
+ done
+
+AbraText:
+ text "ABRA: Aabra…"
+ done
+
+IndigoPlateauPokecenter1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 5, 13, ROUTE_23, 1
+ warp_event 6, 13, ROUTE_23, 2
+ warp_event 0, 13, POKECENTER_2F, 1
+ warp_event 14, 3, WILLS_ROOM, 1
+
+ db 2 ; coord events
+ coord_event 16, 4, SCENE_DEFAULT, PlateauRivalBattle1
+ coord_event 17, 4, SCENE_DEFAULT, PlateauRivalBattle2
+
+ db 0 ; bg events
+
+ db 6 ; object events
+ object_event 3, 7, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IndigoPlateauPokecenter1FNurseScript, -1
+ object_event 11, 7, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IndigoPlateauPokecenter1FClerkScript, -1
+ object_event 11, 11, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IndigoPlateauPokecenter1FCooltrainerMScript, -1
+ object_event 16, 9, SPRITE_SILVER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_INDIGO_PLATEAU_POKECENTER_RIVAL
+ object_event 1, 9, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, TeleportGuyScript, EVENT_TELEPORT_GUY
+ object_event 0, 9, SPRITE_JYNX, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, AbraScript, EVENT_TELEPORT_GUY
diff --git a/maps/KarensRoom.asm b/maps/KarensRoom.asm
new file mode 100644
index 00000000..5d41d051
--- /dev/null
+++ b/maps/KarensRoom.asm
@@ -0,0 +1,147 @@
+ const_def 2 ; object constants
+ const KARENSROOM_KAREN
+
+KarensRoom_MapScripts:
+ db 2 ; scene scripts
+ scene_script .LockDoor ; SCENE_DEFAULT
+ scene_script .DummyScene ; SCENE_FINISHED
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .KarensRoomDoors
+
+.LockDoor:
+ priorityjump .KarensDoorLocksBehindYou
+ end
+
+.DummyScene:
+ end
+
+.KarensRoomDoors:
+ checkevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
+ iffalse .KeepEntranceOpen
+ changeblock 4, 14, $2a ; wall
+.KeepEntranceOpen:
+ checkevent EVENT_KARENS_ROOM_EXIT_OPEN
+ iffalse .KeepExitClosed
+ changeblock 4, 2, $16 ; open door
+.KeepExitClosed:
+ return
+
+.KarensDoorLocksBehindYou:
+ applymovement PLAYER, KarensRoom_EnterMovement
+ refreshscreen $85
+ playsound SFX_STRENGTH
+ earthquake 80
+ changeblock 4, 14, $2a ; wall
+ reloadmappart
+ closetext
+ setscene SCENE_FINISHED
+ setevent EVENT_KARENS_ROOM_ENTRANCE_CLOSED
+ waitsfx
+ end
+
+KarenScript_Battle:
+ faceplayer
+ opentext
+ checkevent EVENT_BEAT_ELITE_4_KAREN
+ iftrue KarenScript_AfterBattle
+ writetext KarenScript_KarenBeforeText
+ waitbutton
+ closetext
+ winlosstext KarenScript_KarenBeatenText, 0
+ loadtrainer KAREN, KAREN1
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_ELITE_4_KAREN
+ opentext
+ writetext KarenScript_KarenDefeatText
+ waitbutton
+ closetext
+ playsound SFX_ENTER_DOOR
+ changeblock 4, 2, $16 ; open door
+ reloadmappart
+ closetext
+ setevent EVENT_KARENS_ROOM_EXIT_OPEN
+ waitsfx
+ end
+
+KarenScript_AfterBattle:
+ writetext KarenScript_KarenDefeatText
+ waitbutton
+ closetext
+ end
+
+KarensRoom_EnterMovement:
+ step UP
+ step UP
+ step UP
+ step UP
+ step_end
+
+KarenScript_KarenBeforeText:
+ text "I am KAREN of the"
+ line "ELITE FOUR."
+
+ para "You're <PLAYER>?"
+ line "How amusing."
+
+ para "I love dark-type"
+ line "#MON."
+
+ para "I find their wild,"
+ line "tough image to be"
+
+ para "so appealing. And"
+ line "they're so strong."
+
+ para "Think you can take"
+ line "them? Just try to"
+ cont "entertain me."
+
+ para "Let's go."
+ done
+
+KarenScript_KarenBeatenText:
+ text "Well, aren't you"
+ line "good. I like that"
+ cont "in a trainer."
+ done
+
+KarenScript_KarenDefeatText:
+ text "Strong #MON."
+
+ para "Weak #MON."
+
+ para "That is only the"
+ line "selfish perception"
+ cont "of people."
+
+ para "Truly skilled"
+ line "trainers should"
+
+ para "try to win with"
+ line "their favorites."
+
+ para "I like your style."
+ line "You understand"
+ cont "what's important."
+
+ para "Go on--the CHAM-"
+ line "PION is waiting."
+ done
+
+KarensRoom_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 17, BRUNOS_ROOM, 3
+ warp_event 5, 17, BRUNOS_ROOM, 4
+ warp_event 4, 2, LANCES_ROOM, 1
+ warp_event 5, 2, LANCES_ROOM, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 5, 7, SPRITE_KAREN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, KarenScript_Battle, -1
diff --git a/maps/KogasRoom.asm b/maps/KogasRoom.asm
new file mode 100644
index 00000000..030eff6c
--- /dev/null
+++ b/maps/KogasRoom.asm
@@ -0,0 +1,144 @@
+ const_def 2 ; object constants
+ const KOGASROOM_KOGA
+
+KogasRoom_MapScripts:
+ db 2 ; scene scripts
+ scene_script .LockDoor ; SCENE_DEFAULT
+ scene_script .DummyScene ; SCENE_FINISHED
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .KogasRoomDoors
+
+.LockDoor:
+ priorityjump .KogasDoorLocksBehindYou
+ end
+
+.DummyScene:
+ end
+
+.KogasRoomDoors:
+ checkevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+ iffalse .KeepEntranceOpen
+ changeblock 4, 14, $2a ; wall
+.KeepEntranceOpen:
+ checkevent EVENT_KOGAS_ROOM_EXIT_OPEN
+ iffalse .KeepExitClosed
+ changeblock 4, 2, $16 ; open door
+.KeepExitClosed:
+ return
+
+.KogasDoorLocksBehindYou:
+ applymovement PLAYER, KogasRoom_EnterMovement
+ refreshscreen $85
+ playsound SFX_STRENGTH
+ earthquake 80
+ changeblock 4, 14, $2a ; wall
+ reloadmappart
+ closetext
+ setscene SCENE_FINISHED
+ setevent EVENT_KOGAS_ROOM_ENTRANCE_CLOSED
+ waitsfx
+ end
+
+KogaScript_Battle:
+ faceplayer
+ opentext
+ checkevent EVENT_BEAT_ELITE_4_KOGA
+ iftrue KogaScript_AfterBattle
+ writetext KogaScript_KogaBeforeText
+ waitbutton
+ closetext
+ winlosstext KogaScript_KogaBeatenText, 0
+ loadtrainer KOGA, KOGA1
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_ELITE_4_KOGA
+ opentext
+ writetext KogaScript_KogaDefeatText
+ waitbutton
+ closetext
+ playsound SFX_ENTER_DOOR
+ changeblock 4, 2, $16 ; open door
+ reloadmappart
+ closetext
+ setevent EVENT_KOGAS_ROOM_EXIT_OPEN
+ waitsfx
+ end
+
+KogaScript_AfterBattle:
+ writetext KogaScript_KogaDefeatText
+ waitbutton
+ closetext
+ end
+
+KogasRoom_EnterMovement:
+ step UP
+ step UP
+ step UP
+ step UP
+ step_end
+
+KogaScript_KogaBeforeText:
+ text "Fwahahahaha!"
+
+ para "I am KOGA of the"
+ line "ELITE FOUR."
+
+ para "I live in shadows,"
+ line "a ninja!"
+
+ para "My intricate style"
+ line "will confound and"
+ cont "destroy you!"
+
+ para "Confusion, sleep,"
+ line "poison…"
+
+ para "Prepare to be the"
+ line "victim of my sin-"
+ cont "ister technique!"
+
+ para "Fwahahahaha!"
+
+ para "#MON is not"
+ line "merely about brute"
+
+ para "force--you shall"
+ line "see soon enough!"
+ done
+
+KogaScript_KogaBeatenText:
+ text "Ah!"
+ line "You have proven"
+ cont "your worth!"
+ done
+
+KogaScript_KogaDefeatText:
+ text "I subjected you to"
+ line "everything I could"
+ cont "muster."
+
+ para "But my efforts"
+ line "failed. I must"
+ cont "hone my skills."
+
+ para "Go on to the next"
+ line "room, and put your"
+ cont "abilities to test!"
+ done
+
+KogasRoom_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 17, WILLS_ROOM, 2
+ warp_event 5, 17, WILLS_ROOM, 3
+ warp_event 4, 2, BRUNOS_ROOM, 1
+ warp_event 5, 2, BRUNOS_ROOM, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 5, 7, SPRITE_KOGA, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, KogaScript_Battle, -1
diff --git a/maps/LancesRoom.asm b/maps/LancesRoom.asm
new file mode 100644
index 00000000..2c2dc654
--- /dev/null
+++ b/maps/LancesRoom.asm
@@ -0,0 +1,360 @@
+ const_def 2 ; object constants
+ const LANCESROOM_LANCE
+ const LANCESROOM_MARY
+ const LANCESROOM_OAK
+
+LancesRoom_MapScripts:
+ db 2 ; scene scripts
+ scene_script .LockDoor ; SCENE_DEFAULT
+ scene_script .DummyScene ; SCENE_LANCESROOM_APPROACH_LANCE
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .LancesRoomDoors
+
+.LockDoor:
+ priorityjump .LancesDoorLocksBehindYou
+ end
+
+.DummyScene:
+ end
+
+.LancesRoomDoors:
+ checkevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
+ iffalse .KeepEntranceOpen
+ changeblock 4, 22, $34 ; wall
+.KeepEntranceOpen:
+ checkevent EVENT_LANCES_ROOM_EXIT_OPEN
+ iffalse .KeepExitClosed
+ changeblock 4, 0, $0b ; open door
+.KeepExitClosed:
+ return
+
+.LancesDoorLocksBehindYou:
+ applymovement PLAYER, LancesRoom_EnterMovement
+ refreshscreen $85
+ playsound SFX_STRENGTH
+ earthquake 80
+ changeblock 4, 22, $34 ; wall
+ reloadmappart
+ closetext
+ setscene SCENE_LANCESROOM_APPROACH_LANCE
+ setevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
+ end
+
+Script_ApproachLanceFromLeft:
+ special FadeOutMusic
+ applymovement PLAYER, MovementData_ApproachLanceFromLeft
+ jump LancesRoomLanceScript
+
+Script_ApproachLanceFromRight:
+ special FadeOutMusic
+ applymovement PLAYER, MovementData_ApproachLanceFromRight
+LancesRoomLanceScript:
+ turnobject LANCESROOM_LANCE, LEFT
+ opentext
+ writetext LanceBattleIntroText
+ waitbutton
+ closetext
+ winlosstext LanceBattleWinText, 0
+ setlasttalked LANCESROOM_LANCE
+ loadtrainer CHAMPION, LANCE
+ startbattle
+ dontrestartmapmusic
+ reloadmapafterbattle
+ setevent EVENT_BEAT_CHAMPION_LANCE
+ opentext
+ writetext LanceBattleAfterText
+ waitbutton
+ closetext
+ playsound SFX_ENTER_DOOR
+ changeblock 4, 0, $0b ; open door
+ reloadmappart
+ closetext
+ setevent EVENT_LANCES_ROOM_ENTRANCE_CLOSED
+ musicfadeout MUSIC_BEAUTY_ENCOUNTER, 16
+ pause 30
+ showemote EMOTE_SHOCK, LANCESROOM_LANCE, 15
+ turnobject LANCESROOM_LANCE, DOWN
+ pause 10
+ turnobject PLAYER, DOWN
+ appear LANCESROOM_MARY
+ applymovement LANCESROOM_MARY, LancesRoomMovementData_MaryRushesIn
+ opentext
+ writetext UnknownText_0x1811dd
+ waitbutton
+ closetext
+ appear LANCESROOM_OAK
+ applymovement LANCESROOM_OAK, LancesRoomMovementData_OakWalksIn
+ follow LANCESROOM_MARY, LANCESROOM_OAK
+ applymovement LANCESROOM_MARY, LancesRoomMovementData_MaryYieldsToOak
+ stopfollow
+ turnobject LANCESROOM_OAK, UP
+ turnobject LANCESROOM_LANCE, LEFT
+ opentext
+ writetext UnknownText_0x18121b
+ waitbutton
+ closetext
+ applymovement LANCESROOM_MARY, LancesRoomMovementData_MaryInterviewChampion
+ turnobject PLAYER, LEFT
+ opentext
+ writetext UnknownText_0x18134b
+ waitbutton
+ closetext
+ applymovement LANCESROOM_LANCE, LancesRoomMovementData_LancePositionsSelfToGuidePlayerAway
+ turnobject PLAYER, UP
+ opentext
+ writetext UnknownText_0x18137b
+ waitbutton
+ closetext
+ follow LANCESROOM_LANCE, PLAYER
+ turnobject LANCESROOM_MARY, UP
+ turnobject LANCESROOM_OAK, UP
+ applymovement LANCESROOM_LANCE, LancesRoomMovementData_LanceLeadsPlayerToHallOfFame
+ stopfollow
+ playsound SFX_EXIT_BUILDING
+ disappear LANCESROOM_LANCE
+ applymovement PLAYER, LancesRoomMovementData_PlayerExits
+ playsound SFX_EXIT_BUILDING
+ disappear PLAYER
+ applymovement LANCESROOM_MARY, LancesRoomMovementData_MaryTriesToFollow
+ showemote EMOTE_SHOCK, LANCESROOM_MARY, 15
+ opentext
+ writetext UnknownText_0x1813c5
+ pause 30
+ closetext
+ applymovement LANCESROOM_MARY, LancesRoomMovementData_MaryRunsBackAndForth
+ special FadeOutPalettes
+ pause 15
+ warp HALL_OF_FAME, 4, 13
+ end
+
+LancesRoom_EnterMovement:
+ step UP
+ step UP
+ step UP
+ step UP
+ step_end
+
+MovementData_ApproachLanceFromLeft:
+ step UP
+ step UP
+ step UP
+ turn_head RIGHT
+ step_end
+
+MovementData_ApproachLanceFromRight:
+ step UP
+ step LEFT
+ step UP
+ step UP
+ turn_head RIGHT
+ step_end
+
+LancesRoomMovementData_MaryRushesIn:
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ turn_head DOWN
+ step_end
+
+LancesRoomMovementData_OakWalksIn:
+ step UP
+ step UP
+ step UP
+ step_end
+
+LancesRoomMovementData_MaryYieldsToOak:
+ step LEFT
+ turn_head RIGHT
+ step_end
+
+LancesRoomMovementData_MaryInterviewChampion:
+ big_step UP
+ turn_head RIGHT
+ step_end
+
+LancesRoomMovementData_LancePositionsSelfToGuidePlayerAway:
+ step UP
+ step LEFT
+ turn_head DOWN
+ step_end
+
+LancesRoomMovementData_LanceLeadsPlayerToHallOfFame:
+ step UP
+ step_end
+
+LancesRoomMovementData_PlayerExits:
+ step UP
+ step_end
+
+LancesRoomMovementData_MaryTriesToFollow:
+ step UP
+ step RIGHT
+ turn_head UP
+ step_end
+
+LancesRoomMovementData_MaryRunsBackAndForth:
+ big_step RIGHT
+ big_step RIGHT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step LEFT
+ big_step LEFT
+ turn_head UP
+ step_end
+
+LanceBattleIntroText:
+ text "LANCE: I've been"
+ line "waiting for you."
+
+ para "<PLAYER>!"
+
+ para "I knew that you,"
+ line "with your skills,"
+
+ para "would eventually"
+ line "reach me here."
+
+ para "There's no need"
+ line "for words now."
+
+ para "We will battle to"
+ line "determine who is"
+
+ para "the stronger of"
+ line "the two of us."
+
+ para "As the most power-"
+ line "ful trainer and as"
+
+ para "the #MON LEAGUE"
+ line "CHAMPION…"
+
+ para "I, LANCE the drag-"
+ line "on master, accept"
+ cont "your challenge!"
+ done
+
+LanceBattleWinText:
+ text "…It's over."
+
+ para "But it's an odd"
+ line "feeling."
+
+ para "I'm not angry that"
+ line "I lost. In fact, I"
+ cont "feel happy."
+
+ para "Happy that I"
+ line "witnessed the rise"
+
+ para "of a great new"
+ line "CHAMPION!"
+ done
+
+LanceBattleAfterText:
+ text "…Whew."
+
+ para "You have become"
+ line "truly powerful,"
+ cont "<PLAYER>."
+
+ para "Your #MON have"
+ line "responded to your"
+
+ para "strong and up-"
+ line "standing nature."
+
+ para "As a trainer, you"
+ line "will continue to"
+
+ para "grow strong with"
+ line "your #MON."
+ done
+
+UnknownText_0x1811dd:
+ text "MARY: Oh, no!"
+ line "It's all over!"
+
+ para "PROF.OAK, if you"
+ line "weren't so slow…"
+ done
+
+UnknownText_0x18121b:
+ text "PROF.OAK: Ah,"
+ line "<PLAYER>!"
+
+ para "It's been a long"
+ line "while."
+
+ para "You certainly look"
+ line "more mature."
+
+ para "Your conquest of"
+ line "the LEAGUE is just"
+ cont "fantastic!"
+
+ para "Your dedication,"
+ line "trust and love for"
+
+ para "your #MON made"
+ line "this happen."
+
+ para "Your #MON were"
+ line "outstanding too."
+
+ para "Because they be-"
+ line "lieved in you as a"
+
+ para "trainer, they per-"
+ line "severed."
+
+ para "Congratulations,"
+ line "<PLAYER>!"
+ done
+
+UnknownText_0x18134b:
+ text "MARY: Let's inter-"
+ line "view the brand new"
+ cont "CHAMPION!"
+ done
+
+UnknownText_0x18137b:
+ text "LANCE: This is"
+ line "getting to be a"
+ cont "bit too noisy…"
+
+ para "<PLAYER>, could you"
+ line "come with me?"
+ done
+
+UnknownText_0x1813c5:
+ text "MARY: Oh, wait!"
+ line "We haven't done"
+ cont "the interview!"
+ done
+
+LancesRoom_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 23, KARENS_ROOM, 3
+ warp_event 5, 23, KARENS_ROOM, 4
+ warp_event 4, 0, HALL_OF_FAME, 1
+ warp_event 5, 0, HALL_OF_FAME, 2
+
+ db 2 ; coord events
+ coord_event 4, 5, SCENE_LANCESROOM_APPROACH_LANCE, Script_ApproachLanceFromLeft
+ coord_event 5, 5, SCENE_LANCESROOM_APPROACH_LANCE, Script_ApproachLanceFromRight
+
+ db 0 ; bg events
+
+ db 3 ; object events
+ object_event 5, 2, SPRITE_LANCE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, LancesRoomLanceScript, -1
+ object_event 4, 7, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_LANCES_ROOM_OAK_AND_MARY
+ object_event 4, 7, SPRITE_OAK, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_LANCES_ROOM_OAK_AND_MARY
diff --git a/maps/PewterGym.asm b/maps/PewterGym.asm
new file mode 100644
index 00000000..e540b213
--- /dev/null
+++ b/maps/PewterGym.asm
@@ -0,0 +1,225 @@
+ const_def 2 ; object constants
+ const PEWTERGYM_BROCK
+ const PEWTERGYM_YOUNGSTER
+ const PEWTERGYM_GYM_GUY
+
+PewterGym_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+PewterGymBrockScript:
+ faceplayer
+ opentext
+ checkflag ENGINE_BOULDERBADGE
+ iftrue .FightDone
+ writetext BrockIntroText
+ waitbutton
+ closetext
+ winlosstext BrockWinLossText, 0
+ loadtrainer BROCK, BROCK1
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_BROCK
+ setevent EVENT_BEAT_CAMPER_JERRY
+ opentext
+ writetext ReceivedBoulderBadgeText
+ playsound SFX_GET_BADGE
+ waitsfx
+ setflag ENGINE_BOULDERBADGE
+ writetext BrockBoulderBadgeText
+ waitbutton
+ closetext
+ end
+
+.FightDone:
+ writetext BrockFightDoneText
+ waitbutton
+ closetext
+ end
+
+TrainerCamperJerry:
+ trainer CAMPER, JERRY, EVENT_BEAT_CAMPER_JERRY, CamperJerrySeenText, CamperJerryBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CamperJerryAfterBattleText
+ waitbutton
+ closetext
+ end
+
+PewterGymGuyScript:
+ faceplayer
+ opentext
+ checkevent EVENT_BEAT_BROCK
+ iftrue .PewterGymGuyWinScript
+ writetext PewterGymGuyText
+ waitbutton
+ closetext
+ end
+
+.PewterGymGuyWinScript:
+ writetext PewterGymGuyWinText
+ waitbutton
+ closetext
+ end
+
+PewterGymStatue:
+ checkflag ENGINE_BOULDERBADGE
+ iftrue .Beaten
+ jumpstd gymstatue1
+.Beaten:
+ trainertotext BROCK, BROCK1, MEM_BUFFER_1
+ jumpstd gymstatue2
+
+BrockIntroText:
+ text "BROCK: Wow, it's"
+ line "not often that we"
+
+ para "get a challenger"
+ line "from JOHTO."
+
+ para "I'm BROCK, the"
+ line "PEWTER GYM LEADER."
+
+ para "I'm an expert on"
+ line "rock-type #MON."
+
+ para "My #MON are im-"
+ line "pervious to most"
+
+ para "physical attacks."
+ line "You'll have a hard"
+
+ para "time inflicting"
+ line "any damage."
+
+ para "Come on!"
+ done
+
+BrockWinLossText:
+ text "BROCK: Your #-"
+ line "MON's powerful at-"
+ cont "tacks overcame my"
+ cont "rock-hard defense…"
+
+ para "You're stronger"
+ line "than I expected…"
+
+ para "Go ahead--take"
+ line "this BADGE."
+ done
+
+ReceivedBoulderBadgeText:
+ text "<PLAYER> received"
+ line "BOULDERBADGE."
+ done
+
+BrockBoulderBadgeText:
+ text "BROCK: <PLAYER>,"
+ line "thanks. I enjoyed"
+
+ para "battling you, even"
+ line "though I am a bit"
+ cont "upset."
+
+ para "That BOULDERBADGE"
+ line "will make your"
+
+ para "#MON even more"
+ line "powerful."
+ done
+
+BrockFightDoneText:
+ text "BROCK: The world"
+ line "is huge. There are"
+
+ para "still many strong"
+ line "trainers like you."
+
+ para "Just wait and see."
+ line "I'm going to be-"
+ cont "come a lot strong-"
+ cont "er too."
+ done
+
+CamperJerrySeenText:
+ text "The trainers of"
+ line "this GYM use rock-"
+ cont "type #MON."
+
+ para "The rock-type has"
+ line "high DEFENSE."
+
+ para "Battles could end"
+ line "up going a long"
+
+ para "time. Are you"
+ line "ready for this?"
+ done
+
+CamperJerryBeatenText:
+ text "I have to win"
+ line "these battles…"
+ done
+
+CamperJerryAfterBattleText:
+ text "Hey, you! Trainer"
+ line "from JOHTO! BROCK"
+
+ para "is tough. He'll"
+ line "punish you if you"
+
+ para "don't take him"
+ line "seriously."
+ done
+
+PewterGymGuyText:
+ text "Yo! CHAMP in"
+ line "making! You're"
+
+ para "really rocking."
+ line "Are you battling"
+
+ para "the GYM LEADERS of"
+ line "KANTO?"
+
+ para "They're strong and"
+ line "dedicated people,"
+
+ para "just like JOHTO's"
+ line "GYM LEADERS."
+ done
+
+PewterGymGuyWinText:
+ text "Yo! CHAMP in"
+ line "making! That GYM"
+
+ para "didn't give you"
+ line "much trouble."
+
+ para "The way you took"
+ line "charge was really"
+
+ para "inspiring. I mean"
+ line "that seriously."
+ done
+
+PewterGym_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 4, 13, PEWTER_CITY, 2
+ warp_event 5, 13, PEWTER_CITY, 2
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 2, 11, BGEVENT_READ, PewterGymStatue
+ bg_event 7, 11, BGEVENT_READ, PewterGymStatue
+
+ db 3 ; object events
+ object_event 5, 1, SPRITE_BROCK, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, PewterGymBrockScript, -1
+ object_event 2, 5, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 3, TrainerCamperJerry, -1
+ object_event 6, 11, SPRITE_GYM_GUY, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 1, PewterGymGuyScript, -1
diff --git a/maps/PewterMart.asm b/maps/PewterMart.asm
new file mode 100644
index 00000000..ad6df159
--- /dev/null
+++ b/maps/PewterMart.asm
@@ -0,0 +1,60 @@
+ const_def 2 ; object constants
+ const PEWTERMART_CLERK
+ const PEWTERMART_YOUNGSTER
+ const PEWTERMART_SUPER_NERD
+
+PewterMart_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+PewterMartClerkScript:
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_PEWTER
+ closetext
+ end
+
+PewterMartYoungsterScript:
+ jumptextfaceplayer PewterMartYoungsterText
+
+PewterMartSuperNerdScript:
+ jumptextfaceplayer PewterMartSuperNerdText
+
+PewterMartYoungsterText:
+ text "Hi! Check out my"
+ line "GYARADOS!"
+
+ para "I raised it from a"
+ line "MAGIKARP. I can't"
+
+ para "believe how strong"
+ line "it has become."
+ done
+
+PewterMartSuperNerdText:
+ text "There once was a"
+ line "weird old man who"
+ cont "sold MAGIKARP."
+
+ para "He was saying the"
+ line "MAGIKARP from the"
+
+ para "LAKE OF RAGE were"
+ line "excellent."
+ done
+
+PewterMart_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, PEWTER_CITY, 3
+ warp_event 3, 7, PEWTER_CITY, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 3 ; object events
+ object_event 1, 3, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, PewterMartClerkScript, -1
+ object_event 9, 2, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 2, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, PewterMartYoungsterScript, -1
+ object_event 6, 6, SPRITE_SUPER_NERD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, PewterMartSuperNerdScript, -1
diff --git a/maps/PewterNidoranSpeechHouse.asm b/maps/PewterNidoranSpeechHouse.asm
new file mode 100644
index 00000000..cf90488b
--- /dev/null
+++ b/maps/PewterNidoranSpeechHouse.asm
@@ -0,0 +1,42 @@
+ const_def 2 ; object constants
+ const PEWTERNIDORANSPEECHHOUSE_SUPER_NERD
+ const PEWTERNIDORANSPEECHHOUSE_NIDORAN_M
+
+PewterNidoranSpeechHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+PewterNidoranSpeechHouseSuperNerdScript:
+ jumptextfaceplayer PewterNidoranSpeechHouseSuperNerdText
+
+PewterNidoran:
+ opentext
+ writetext PewterNidoranText
+ cry NIDORAN_M
+ waitbutton
+ closetext
+ end
+
+PewterNidoranSpeechHouseSuperNerdText:
+ text "NIDORAN, shake!"
+ done
+
+PewterNidoranText:
+ text "NIDORAN: Gau gau!"
+ done
+
+PewterNidoranSpeechHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, PEWTER_CITY, 1
+ warp_event 3, 7, PEWTER_CITY, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 2 ; object events
+ object_event 3, 5, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, PewterNidoranSpeechHouseSuperNerdScript, -1
+ object_event 4, 5, SPRITE_GROWLITHE, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, PewterNidoran, -1
diff --git a/maps/PewterPokecenter1F.asm b/maps/PewterPokecenter1F.asm
new file mode 100644
index 00000000..3ec7bf91
--- /dev/null
+++ b/maps/PewterPokecenter1F.asm
@@ -0,0 +1,85 @@
+ const_def 2 ; object constants
+ const PEWTERPOKECENTER1F_NURSE
+ const PEWTERPOKECENTER1F_TEACHER
+ const PEWTERPOKECENTER1F_JIGGLYPUFF
+ const PEWTERPOKECENTER1F_BUG_CATCHER
+ const PEWTERPOKECENTER1F_CHRIS
+
+PewterPokecenter1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+PewterPokecenter1FNurseScript:
+ jumpstd pokecenternurse
+
+PewterPokecenter1FTeacherScript:
+ jumptextfaceplayer PewterPokecenter1FTeacherText
+
+PewterJigglypuff:
+ opentext
+ writetext PewterJigglypuffText
+ cry JIGGLYPUFF
+ waitbutton
+ closetext
+ end
+
+PewterPokecenter1FBugCatcherScript:
+ jumptextfaceplayer PewterPokecenter1FBugCatcherText
+
+Chris:
+ faceplayer
+ opentext
+ trade NPC_TRADE_CHRIS
+ waitbutton
+ closetext
+ end
+
+PewterPokecenter1FTeacherText:
+ text "…Yeah, and the"
+ line "GYM in CINNABAR's"
+
+ para "gone. I was really"
+ line "amazed."
+
+ para "…Yes? I'm on the"
+ line "phone. Go away!"
+ done
+
+PewterJigglypuffText:
+ text "JIGGLYPUFF: Puu"
+ line "pupuu."
+ done
+
+PewterPokecenter1FBugCatcherText:
+ text "Most #MON get"
+ line "drowsy if they"
+
+ para "hear a JIGGLYPUFF"
+ line "singing."
+
+ para "There are several"
+ line "moves that can be"
+
+ para "used only while a"
+ line "#MON is asleep."
+ done
+
+PewterPokecenter1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 7, PEWTER_CITY, 4
+ warp_event 4, 7, PEWTER_CITY, 4
+ warp_event 0, 7, POKECENTER_2F, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 5 ; object events
+ object_event 3, 1, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, PewterPokecenter1FNurseScript, -1
+ object_event 8, 6, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, PewterPokecenter1FTeacherScript, -1
+ object_event 1, 3, SPRITE_JIGGLYPUFF, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, PewterJigglypuff, -1
+ object_event 2, 3, SPRITE_BUG_CATCHER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, PewterPokecenter1FBugCatcherScript, -1
+ object_event 7, 2, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Chris, -1
diff --git a/maps/PewterPokecenter2FBeta.asm b/maps/PewterPokecenter2FBeta.asm
new file mode 100644
index 00000000..6e5e6c14
--- /dev/null
+++ b/maps/PewterPokecenter2FBeta.asm
@@ -0,0 +1,16 @@
+PewterPokecenter2FBeta_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+PewterPokecenter2FBeta_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 0, 7, PEWTER_POKECENTER_1F, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 0 ; object events
diff --git a/maps/PewterSnoozeSpeechHouse.asm b/maps/PewterSnoozeSpeechHouse.asm
new file mode 100644
index 00000000..61a96a50
--- /dev/null
+++ b/maps/PewterSnoozeSpeechHouse.asm
@@ -0,0 +1,35 @@
+ const_def 2 ; object constants
+ const PEWTERSNOOZESPEECHHOUSE_GRAMPS
+
+PewterSnoozeSpeechHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+PewterSnoozeSpeechHouseGrampsScript:
+ jumptextfaceplayer PewterSnoozeSpeechHouseGrampsText
+
+PewterSnoozeSpeechHouseBookshelf:
+ jumpstd picturebookshelf
+
+PewterSnoozeSpeechHouseGrampsText:
+ text "I like snoozing"
+ line "with the radio on…"
+ cont "…Zzzz…"
+ done
+
+PewterSnoozeSpeechHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, PEWTER_CITY, 5
+ warp_event 3, 7, PEWTER_CITY, 5
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 0, 1, BGEVENT_READ, PewterSnoozeSpeechHouseBookshelf
+ bg_event 1, 1, BGEVENT_READ, PewterSnoozeSpeechHouseBookshelf
+
+ db 1 ; object events
+ object_event 5, 3, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, PewterSnoozeSpeechHouseGrampsScript, -1
diff --git a/maps/WillsRoom.asm b/maps/WillsRoom.asm
new file mode 100644
index 00000000..48a0b3ad
--- /dev/null
+++ b/maps/WillsRoom.asm
@@ -0,0 +1,142 @@
+ const_def 2 ; object constants
+ const WILLSROOM_WILL
+
+WillsRoom_MapScripts:
+ db 2 ; scene scripts
+ scene_script .LockDoor ; SCENE_DEFAULT
+ scene_script .DummyScene ; SCENE_FINISHED
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .WillsRoomDoors
+
+.LockDoor:
+ priorityjump .WillsDoorLocksBehindYou
+ end
+
+.DummyScene:
+ end
+
+.WillsRoomDoors:
+ checkevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
+ iffalse .KeepEntranceOpen
+ changeblock 4, 14, $2a ; wall
+.KeepEntranceOpen:
+ checkevent EVENT_WILLS_ROOM_EXIT_OPEN
+ iffalse .KeepExitClosed
+ changeblock 4, 2, $16 ; open door
+.KeepExitClosed:
+ return
+
+.WillsDoorLocksBehindYou:
+ applymovement PLAYER, WillsRoom_EnterMovement
+ refreshscreen $85
+ playsound SFX_STRENGTH
+ earthquake 80
+ changeblock 4, 14, $2a ; wall
+ reloadmappart
+ closetext
+ setscene SCENE_FINISHED
+ setevent EVENT_WILLS_ROOM_ENTRANCE_CLOSED
+ waitsfx
+ end
+
+WillScript_Battle:
+ faceplayer
+ opentext
+ checkevent EVENT_BEAT_ELITE_4_WILL
+ iftrue WillScript_AfterBattle
+ writetext WillScript_WillBeforeText
+ waitbutton
+ closetext
+ winlosstext WillScript_WillBeatenText, 0
+ loadtrainer WILL, WILL1
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_ELITE_4_WILL
+ opentext
+ writetext WillScript_WillDefeatText
+ waitbutton
+ closetext
+ playsound SFX_ENTER_DOOR
+ changeblock 4, 2, $16 ; open door
+ reloadmappart
+ closetext
+ setevent EVENT_WILLS_ROOM_EXIT_OPEN
+ waitsfx
+ end
+
+WillScript_AfterBattle:
+ writetext WillScript_WillDefeatText
+ waitbutton
+ closetext
+ end
+
+WillsRoom_EnterMovement:
+ step UP
+ step UP
+ step UP
+ step UP
+ step_end
+
+WillScript_WillBeforeText:
+ text "Welcome to #MON"
+ line "LEAGUE, <PLAYER>."
+
+ para "Allow me to intro-"
+ line "duce myself. I am"
+ cont "WILL."
+
+ para "I have trained all"
+ line "around the world,"
+
+ para "making my psychic"
+ line "#MON powerful."
+
+ para "And, at last, I've"
+ line "been accepted into"
+ cont "the ELITE FOUR."
+
+ para "I can only keep"
+ line "getting better!"
+
+ para "Losing is not an"
+ line "option!"
+ done
+
+WillScript_WillBeatenText:
+ text "I… I can't…"
+ line "believe it…"
+ done
+
+WillScript_WillDefeatText:
+ text "Even though I was"
+ line "defeated, I won't"
+ cont "change my course."
+
+ para "I will continue"
+ line "battling until I"
+
+ para "stand above all"
+ line "trainers!"
+
+ para "Now, <PLAYER>, move"
+ line "on and experience"
+
+ para "the true ferocity"
+ line "of the ELITE FOUR."
+ done
+
+WillsRoom_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 5, 17, INDIGO_PLATEAU_POKECENTER_1F, 4
+ warp_event 4, 2, KOGAS_ROOM, 1
+ warp_event 5, 2, KOGAS_ROOM, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 5, 7, SPRITE_WILL, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, WillScript_Battle, -1