summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIIMarckus <iimarckus@gmail.com>2018-09-24 23:16:35 -0600
committerIIMarckus <iimarckus@gmail.com>2018-09-24 23:16:35 -0600
commit6d2ee745a3d3bf844550d9a38f0d843c06fea238 (patch)
tree95413dd65018d924ebd2608d4c397c19c7ef905b
parent2d2191353cd4e88ea5d66d588369ca5ef7b4a440 (diff)
Add map objects from bank 5E.
-rwxr-xr-xengine/specials.asm4
-rw-r--r--main.asm45
-rw-r--r--maps/CeladonCafe.asm226
-rw-r--r--maps/CeladonDeptStore1F.asm92
-rw-r--r--maps/CeladonDeptStore2F.asm87
-rw-r--r--maps/CeladonDeptStore3F.asm114
-rw-r--r--maps/CeladonDeptStore4F.asm68
-rw-r--r--maps/CeladonDeptStore5F.asm91
-rw-r--r--maps/CeladonDeptStore6F.asm160
-rw-r--r--maps/CeladonDeptStoreElevator.asm40
-rw-r--r--maps/CeladonGameCorner.asm340
-rw-r--r--maps/CeladonGameCornerPrizeRoom.asm279
-rw-r--r--maps/CeladonGym.asm292
-rw-r--r--maps/CeladonMansion1F.asm96
-rw-r--r--maps/CeladonMansion2F.asm66
-rw-r--r--maps/CeladonMansion3F.asm212
-rw-r--r--maps/CeladonMansionRoof.asm28
-rw-r--r--maps/CeladonMansionRoofHouse.asm129
-rw-r--r--maps/CeladonPokecenter1F.asm60
-rw-r--r--maps/CeladonPokecenter2FBeta.asm16
-rw-r--r--maps/Route16FuchsiaSpeechHouse.asm37
-rw-r--r--maps/Route16Gate.asm77
-rw-r--r--maps/Route17Route18Gate.asm68
-rw-r--r--maps/Route7SaffronGate.asm60
24 files changed, 2662 insertions, 25 deletions
diff --git a/engine/specials.asm b/engine/specials.asm
index 15081555..c5fd6b7b 100755
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -136,8 +136,8 @@ SpecialsPointers:
add_special PhotoStudio
add_special InitRoamMons
add_special FadeOutMusic
- add_special Functionc638
- add_special Functionc645
+ add_special Diploma
+ add_special PrintDiploma
add_special Function90a1b
add_special Function90a54
add_special Function90a8d
diff --git a/main.asm b/main.asm
index 02a6644e..788ce84b 100644
--- a/main.asm
+++ b/main.asm
@@ -1901,29 +1901,28 @@ INCLUDE "maps/CianwoodPhotoStudio.asm"
INCLUDE "maps/CianwoodLugiaSpeechHouse.asm"
SECTION "bank5e", ROMX, BANK[$5e]
-;INCLUDE "maps/CeladonDeptStore1F.asm"
-;INCLUDE "maps/CeladonDeptStore2F.asm"
-;INCLUDE "maps/CeladonDeptStore3F.asm"
-;INCLUDE "maps/CeladonDeptStore4F.asm"
-;INCLUDE "maps/CeladonDeptStore5F.asm"
-;INCLUDE "maps/CeladonDeptStore6F.asm"
-;INCLUDE "maps/CeladonDeptStoreElevator.asm"
-;INCLUDE "maps/CeladonMansion1F.asm"
-;INCLUDE "maps/CeladonMansion2F.asm"
-;INCLUDE "maps/CeladonMansion3F.asm"
-;INCLUDE "maps/CeladonMansionRoof.asm"
-;INCLUDE "maps/CeladonMansionRoofHouse.asm"
-;INCLUDE "maps/CeladonPokecenter1F.asm"
-;INCLUDE "maps/CeladonPokecenter2FBeta.asm"
-;INCLUDE "maps/CeladonGameCorner.asm"
-;INCLUDE "maps/CeladonGameCornerPrizeRoom.asm"
-;INCLUDE "maps/CeladonGym.asm"
-;INCLUDE "maps/CeladonCafe.asm"
-;INCLUDE "maps/Route16FuchsiaSpeechHouse.asm"
-;INCLUDE "maps/Route16Gate.asm"
-;INCLUDE "maps/Route7SaffronGate.asm"
-;INCLUDE "maps/Route17Route18Gate.asm"
- dr $178000, $17c000
+INCLUDE "maps/CeladonDeptStore1F.asm"
+INCLUDE "maps/CeladonDeptStore2F.asm"
+INCLUDE "maps/CeladonDeptStore3F.asm"
+INCLUDE "maps/CeladonDeptStore4F.asm"
+INCLUDE "maps/CeladonDeptStore5F.asm"
+INCLUDE "maps/CeladonDeptStore6F.asm"
+INCLUDE "maps/CeladonDeptStoreElevator.asm"
+INCLUDE "maps/CeladonMansion1F.asm"
+INCLUDE "maps/CeladonMansion2F.asm"
+INCLUDE "maps/CeladonMansion3F.asm"
+INCLUDE "maps/CeladonMansionRoof.asm"
+INCLUDE "maps/CeladonMansionRoofHouse.asm"
+INCLUDE "maps/CeladonPokecenter1F.asm"
+INCLUDE "maps/CeladonPokecenter2FBeta.asm"
+INCLUDE "maps/CeladonGameCorner.asm"
+INCLUDE "maps/CeladonGameCornerPrizeRoom.asm"
+INCLUDE "maps/CeladonGym.asm"
+INCLUDE "maps/CeladonCafe.asm"
+INCLUDE "maps/Route16FuchsiaSpeechHouse.asm"
+INCLUDE "maps/Route16Gate.asm"
+INCLUDE "maps/Route7SaffronGate.asm"
+INCLUDE "maps/Route17Route18Gate.asm"
SECTION "bank5f", ROMX, BANK[$5f]
;INCLUDE "maps/ViridianGym.asm"
diff --git a/maps/CeladonCafe.asm b/maps/CeladonCafe.asm
new file mode 100644
index 00000000..90e655d2
--- /dev/null
+++ b/maps/CeladonCafe.asm
@@ -0,0 +1,226 @@
+ const_def 2 ; object constants
+ const CELADONCAFE_SUPER_NERD
+ const CELADONCAFE_FISHER1
+ const CELADONCAFE_FISHER2
+ const CELADONCAFE_FISHER3
+ const CELADONCAFE_TEACHER
+
+CeladonCafe_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonCafeChef:
+ faceplayer
+ opentext
+ writetext ChefText_Eatathon
+ waitbutton
+ closetext
+ end
+
+CeladonCafeFisher1:
+ opentext
+ writetext Fisher1Text_Snarfle
+ waitbutton
+ closetext
+ faceplayer
+ opentext
+ writetext Fisher1Text_Concentration
+ waitbutton
+ closetext
+ turnobject CELADONCAFE_FISHER1, LEFT
+ end
+
+CeladonCafeFisher2:
+ opentext
+ writetext Fisher2Text_GulpChew
+ waitbutton
+ closetext
+ faceplayer
+ opentext
+ writetext Fisher2Text_Quantity
+ waitbutton
+ closetext
+ turnobject CELADONCAFE_FISHER2, RIGHT
+ end
+
+CeladonCafeFisher3:
+ opentext
+ writetext Fisher3Text_MunchMunch
+ waitbutton
+ closetext
+ faceplayer
+ opentext
+ writetext Fisher3Text_GoldenrodIsBest
+ waitbutton
+ closetext
+ turnobject CELADONCAFE_FISHER3, RIGHT
+ end
+
+CeladonCafeTeacher:
+ checkitem COIN_CASE
+ iftrue .HasCoinCase
+ opentext
+ writetext TeacherText_CrunchCrunch
+ waitbutton
+ closetext
+ faceplayer
+ opentext
+ writetext TeacherText_NoCoinCase
+ waitbutton
+ closetext
+ turnobject CELADONCAFE_TEACHER, LEFT
+ end
+
+.HasCoinCase:
+ opentext
+ writetext TeacherText_KeepEating
+ waitbutton
+ closetext
+ turnobject CELADONCAFE_TEACHER, RIGHT
+ opentext
+ writetext TeacherText_MoreChef
+ waitbutton
+ closetext
+ turnobject CELADONCAFE_TEACHER, LEFT
+ end
+
+EatathonContestPoster:
+ jumptext EatathonContestPosterText
+
+CeladonCafeTrashcan:
+ checkevent EVENT_FOUND_LEFTOVERS_IN_CELADON_CAFE
+ iftrue .TrashEmpty
+ giveitem LEFTOVERS
+ iffalse .PackFull
+ opentext
+ itemtotext LEFTOVERS, MEM_BUFFER_0
+ writetext FoundLeftoversText
+ playsound SFX_ITEM
+ waitsfx
+ itemnotify
+ closetext
+ setevent EVENT_FOUND_LEFTOVERS_IN_CELADON_CAFE
+ end
+
+.PackFull:
+ opentext
+ itemtotext LEFTOVERS, MEM_BUFFER_0
+ writetext FoundLeftoversText
+ buttonsound
+ writetext NoRoomForLeftoversText
+ waitbutton
+ closetext
+ end
+
+.TrashEmpty:
+ jumpstd trashcan
+
+ChefText_Eatathon:
+ text "Hi!"
+
+ para "We're holding an"
+ line "eatathon contest."
+
+ para "We can't serve you"
+ line "right now. Sorry."
+ done
+
+Fisher1Text_Snarfle:
+ text "…Snarfle, chew…"
+ done
+
+Fisher1Text_Concentration:
+ text "Don't talk to me!"
+
+ para "You'll break my"
+ line "concentration!"
+ done
+
+Fisher2Text_GulpChew:
+ text "…Gulp… Chew…"
+ done
+
+Fisher2Text_Quantity:
+ text "I take quantity"
+ line "over quality!"
+
+ para "I'm happy when I'm"
+ line "full!"
+ done
+
+Fisher3Text_MunchMunch:
+ text "Munch, munch…"
+ done
+
+Fisher3Text_GoldenrodIsBest:
+ text "The food is good"
+ line "here, but GOLDEN-"
+ cont "ROD has the best"
+ cont "food anywhere."
+ done
+
+TeacherText_CrunchCrunch:
+ text "Crunch… Crunch…"
+ done
+
+TeacherText_NoCoinCase:
+ text "Nobody here will"
+ line "give you a COIN"
+
+ para "CASE. You should"
+ line "look in JOHTO."
+ done
+
+TeacherText_KeepEating:
+ text "Crunch… Crunch…"
+
+ para "I can keep eating!"
+ done
+
+TeacherText_MoreChef:
+ text "More, CHEF!"
+ done
+
+EatathonContestPosterText:
+ text "Eatathon Contest!"
+ line "No time limit!"
+
+ para "A battle without"
+ line "end! The biggest"
+
+ para "muncher gets it"
+ line "all for free!"
+ done
+
+FoundLeftoversText:
+ text "<PLAYER> found a"
+ line "@"
+ text_from_ram wStringBuffer3
+ text "."
+ done
+
+NoRoomForLeftoversText:
+ text "But <PLAYER> can't"
+ line "hold another item…"
+ done
+
+CeladonCafe_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 6, 7, CELADON_CITY, 9
+ warp_event 7, 7, CELADON_CITY, 9
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 5, 0, BGEVENT_READ, EatathonContestPoster
+ bg_event 7, 1, BGEVENT_READ, CeladonCafeTrashcan
+
+ db 5 ; object events
+ object_event 9, 3, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, CeladonCafeChef, -1
+ object_event 4, 6, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonCafeFisher1, -1
+ object_event 1, 7, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonCafeFisher2, -1
+ object_event 1, 2, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonCafeFisher3, -1
+ object_event 4, 3, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonCafeTeacher, -1
diff --git a/maps/CeladonDeptStore1F.asm b/maps/CeladonDeptStore1F.asm
new file mode 100644
index 00000000..ccf7b2e4
--- /dev/null
+++ b/maps/CeladonDeptStore1F.asm
@@ -0,0 +1,92 @@
+ const_def 2 ; object constants
+ const CELADONDEPTSTORE1F_RECEPTIONIST
+ const CELADONDEPTSTORE1F_GENTLEMAN
+ const CELADONDEPTSTORE1F_TEACHER
+
+CeladonDeptStore1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonDeptStore1FReceptionistScript:
+ jumptextfaceplayer CeladonDeptStore1FReceptionistText
+
+CeladonDeptStore1FGentlemanScript:
+ jumptextfaceplayer CeladonDeptStore1FGentlemanText
+
+CeladonDeptStore1FTeacherScript:
+ jumptextfaceplayer CeladonDeptStore1FTeacherText
+
+CeladonDeptStore1FDirectory:
+ jumptext CeladonDeptStore1FDirectoryText
+
+CeladonDeptStore1FElevatorButton:
+ jumpstd elevatorbutton
+
+CeladonDeptStore1FReceptionistText:
+ text "Hello! Welcome to"
+ line "CELADON DEPT."
+ cont "STORE!"
+
+ para "The directory is"
+ line "on the wall."
+ done
+
+CeladonDeptStore1FGentlemanText:
+ text "This DEPT.STORE is"
+ line "part of the same"
+
+ para "chain as the one"
+ line "in GOLDENROD CITY."
+
+ para "They were both"
+ line "renovated at the"
+ cont "same time."
+ done
+
+CeladonDeptStore1FTeacherText:
+ text "This is my first"
+ line "time here."
+
+ para "It's so big…"
+
+ para "I'm afraid I'll"
+ line "get lost."
+ done
+
+CeladonDeptStore1FDirectoryText:
+ text "1F: SERVICE"
+ line " COUNTER"
+
+ para "2F: TRAINER'S"
+ line " MARKET"
+
+ para "3F: TM SHOP"
+
+ para "4F: WISEMAN GIFTS"
+
+ para "5F: DRUG STORE"
+
+ para "6F: VENDING"
+ line " MACHINES"
+ done
+
+CeladonDeptStore1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 7, 7, CELADON_CITY, 1
+ warp_event 8, 7, CELADON_CITY, 1
+ warp_event 15, 0, CELADON_DEPT_STORE_2F, 2
+ warp_event 2, 0, CELADON_DEPT_STORE_ELEVATOR, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 14, 0, BGEVENT_READ, CeladonDeptStore1FDirectory
+ bg_event 3, 0, BGEVENT_READ, CeladonDeptStore1FElevatorButton
+
+ db 3 ; object events
+ object_event 10, 1, SPRITE_RECEPTIONIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore1FReceptionistScript, -1
+ object_event 11, 4, SPRITE_GENTLEMAN, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore1FGentlemanScript, -1
+ object_event 5, 3, SPRITE_TEACHER, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore1FTeacherScript, -1
diff --git a/maps/CeladonDeptStore2F.asm b/maps/CeladonDeptStore2F.asm
new file mode 100644
index 00000000..bf367adf
--- /dev/null
+++ b/maps/CeladonDeptStore2F.asm
@@ -0,0 +1,87 @@
+ const_def 2 ; object constants
+ const CELADONDEPTSTORE2F_CLERK1
+ const CELADONDEPTSTORE2F_CLERK2
+ const CELADONDEPTSTORE2F_POKEFAN_M
+ const CELADONDEPTSTORE2F_YOUNGSTER
+
+CeladonDeptStore2F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonDeptStore2FClerk1Script:
+ faceplayer
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_CELADON_2F_1
+ closetext
+ end
+
+CeladonDeptStore2FClerk2Script:
+ faceplayer
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_CELADON_2F_2
+ closetext
+ end
+
+CeladonDeptStore2FPokefanMScript:
+ jumptextfaceplayer CeladonDeptStore2FPokefanMText
+
+CeladonDeptStore2FYoungsterScript:
+ jumptextfaceplayer CeladonDeptStore2FYoungsterText
+
+CeladonDeptStore2FDirectory:
+ jumptext CeladonDeptStore2FDirectoryText
+
+CeladonDeptStore2FElevatorButton:
+ jumpstd elevatorbutton
+
+CeladonDeptStore2FPokefanMText:
+ text "I just recently"
+ line "became a trainer."
+
+ para "My son encouraged"
+ line "me to do it."
+
+ para "I'm impressed by"
+ line "the selection of"
+ cont "convenient items."
+ done
+
+CeladonDeptStore2FYoungsterText:
+ text "My Dad's having a"
+ line "hard time learning"
+
+ para "the names of items"
+ line "and how they are"
+
+ para "supposed to be"
+ line "used…"
+ done
+
+CeladonDeptStore2FDirectoryText:
+ text "Top Grade Items"
+ line "for Trainers!"
+
+ para "2F: TRAINER'S"
+ line " MARKET"
+ done
+
+CeladonDeptStore2F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 12, 0, CELADON_DEPT_STORE_3F, 1
+ warp_event 15, 0, CELADON_DEPT_STORE_1F, 3
+ warp_event 2, 0, CELADON_DEPT_STORE_ELEVATOR, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 14, 0, BGEVENT_READ, CeladonDeptStore2FDirectory
+ bg_event 3, 0, BGEVENT_READ, CeladonDeptStore2FElevatorButton
+
+ db 4 ; object events
+ object_event 13, 5, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore2FClerk1Script, -1
+ object_event 14, 5, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore2FClerk2Script, -1
+ object_event 5, 2, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore2FPokefanMScript, -1
+ object_event 6, 2, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore2FYoungsterScript, -1
diff --git a/maps/CeladonDeptStore3F.asm b/maps/CeladonDeptStore3F.asm
new file mode 100644
index 00000000..638ff3c3
--- /dev/null
+++ b/maps/CeladonDeptStore3F.asm
@@ -0,0 +1,114 @@
+ const_def 2 ; object constants
+ const CELADONDEPTSTORE3F_CLERK
+ const CELADONDEPTSTORE3F_YOUNGSTER
+ const CELADONDEPTSTORE3F_GAMEBOY_KID1
+ const CELADONDEPTSTORE3F_GAMEBOY_KID2
+ const CELADONDEPTSTORE3F_SUPER_NERD
+
+CeladonDeptStore3F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonDeptStore3FClerkScript:
+ faceplayer
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_CELADON_3F
+ closetext
+ end
+
+CeladonDeptStore3FYoungsterScript:
+ jumptextfaceplayer CeladonDeptStore3FYoungsterText
+
+CeladonDeptStore3FGameboyKid1Script:
+ faceplayer
+ opentext
+ writetext CeladonDeptStore3FGameboyKid1Text
+ waitbutton
+ closetext
+ turnobject CELADONDEPTSTORE3F_GAMEBOY_KID1, DOWN
+ end
+
+CeladonDeptStore3FGameboyKid2Script:
+ faceplayer
+ opentext
+ writetext CeladonDeptStore3FGameboyKid2Text
+ waitbutton
+ closetext
+ turnobject CELADONDEPTSTORE3F_GAMEBOY_KID2, DOWN
+ end
+
+CeladonDeptStore3FSuperNerdScript:
+ jumptextfaceplayer CeladonDeptStore3FSuperNerdText
+
+CeladonDeptStore3FElevatorButton:
+ jumpstd elevatorbutton
+
+CeladonDeptStore3FDirectory:
+ jumptext CeladonDeptStore3FDirectoryText
+
+CeladonDeptStore3FYoungsterText:
+ text "I can't decide"
+ line "which #MON I"
+
+ para "should use this TM"
+ line "on…"
+ done
+
+CeladonDeptStore3FGameboyKid1Text:
+ text "Uh-oh! I traded my"
+ line "#MON without"
+
+ para "removing the UP-"
+ line "GRADE from it."
+ done
+
+CeladonDeptStore3FGameboyKid2Text:
+ text "Yeah! I'm finally"
+ line "getting a PORYGON!"
+
+ para "I'm no good at the"
+ line "slots, so I could"
+
+ para "never get enough"
+ line "coins…"
+
+ para "…Huh?"
+
+ para "The traded PORYGON"
+ line "turned into a dif-"
+ cont "ferent #MON!"
+ done
+
+CeladonDeptStore3FSuperNerdText:
+ text "The TM SHOP sells"
+ line "some rare moves."
+ done
+
+CeladonDeptStore3FDirectoryText:
+ text "3F: TM SHOP"
+
+ para "Make Your #MON"
+ line "Stronger!"
+ done
+
+CeladonDeptStore3F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 12, 0, CELADON_DEPT_STORE_2F, 1
+ warp_event 15, 0, CELADON_DEPT_STORE_4F, 2
+ warp_event 2, 0, CELADON_DEPT_STORE_ELEVATOR, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 14, 0, BGEVENT_READ, CeladonDeptStore3FDirectory
+ bg_event 3, 0, BGEVENT_READ, CeladonDeptStore3FElevatorButton
+
+ db 5 ; object events
+ object_event 7, 1, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore3FClerkScript, -1
+ object_event 6, 4, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore3FYoungsterScript, -1
+ object_event 9, 1, SPRITE_GAMEBOY_KID, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore3FGameboyKid1Script, -1
+ object_event 10, 1, SPRITE_GAMEBOY_KID, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore3FGameboyKid2Script, -1
+ object_event 13, 4, SPRITE_SUPER_NERD, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore3FSuperNerdScript, -1
diff --git a/maps/CeladonDeptStore4F.asm b/maps/CeladonDeptStore4F.asm
new file mode 100644
index 00000000..9e7dddc2
--- /dev/null
+++ b/maps/CeladonDeptStore4F.asm
@@ -0,0 +1,68 @@
+ const_def 2 ; object constants
+ const CELADONDEPTSTORE4F_CLERK
+ const CELADONDEPTSTORE4F_SUPER_NERD
+ const CELADONDEPTSTORE4F_YOUNGSTER
+
+CeladonDeptStore4F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonDeptStore4FClerkScript:
+ faceplayer
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_CELADON_4F
+ closetext
+ end
+
+CeladonDeptStore4FSuperNerdScript:
+ jumptextfaceplayer CeladonDeptStore4FSuperNerdText
+
+CeladonDeptStore4FYoungsterScript:
+ jumptextfaceplayer CeladonDeptStore4FYoungsterText
+
+CeladonDeptStore4FDirectory:
+ jumptext CeladonDeptStore4FDirectoryText
+
+CeladonDeptStore4FElevatorButton:
+ jumpstd elevatorbutton
+
+CeladonDeptStore4FSuperNerdText:
+ text "I'm here to buy"
+ line "SURF MAIL to send"
+ cont "to my girlfriend."
+ done
+
+CeladonDeptStore4FYoungsterText:
+ text "This is the only"
+ line "place where you"
+
+ para "can buy LOVELY"
+ line "MAIL."
+ done
+
+CeladonDeptStore4FDirectoryText:
+ text "Express Yourself"
+ line "With Gifts!"
+
+ para "4F: WISEMAN GIFTS"
+ done
+
+CeladonDeptStore4F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 12, 0, CELADON_DEPT_STORE_5F, 1
+ warp_event 15, 0, CELADON_DEPT_STORE_3F, 2
+ warp_event 2, 0, CELADON_DEPT_STORE_ELEVATOR, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 14, 0, BGEVENT_READ, CeladonDeptStore4FDirectory
+ bg_event 3, 0, BGEVENT_READ, CeladonDeptStore4FElevatorButton
+
+ db 3 ; object events
+ object_event 13, 5, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore4FClerkScript, -1
+ object_event 7, 6, SPRITE_SUPER_NERD, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore4FSuperNerdScript, -1
+ object_event 8, 2, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore4FYoungsterScript, -1
diff --git a/maps/CeladonDeptStore5F.asm b/maps/CeladonDeptStore5F.asm
new file mode 100644
index 00000000..2c5ae22f
--- /dev/null
+++ b/maps/CeladonDeptStore5F.asm
@@ -0,0 +1,91 @@
+ const_def 2 ; object constants
+ const CELADONDEPTSTORE5F_CLERK1
+ const CELADONDEPTSTORE5F_CLERK2
+ const CELADONDEPTSTORE5F_GENTLEMAN
+ const CELADONDEPTSTORE5F_SAILOR
+ const CELADONDEPTSTORE5F_TEACHER
+
+CeladonDeptStore5F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonDeptStore5FClerk1Script:
+ faceplayer
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_CELADON_5F_1
+ closetext
+ end
+
+CeladonDeptStore5FClerk2Script:
+ faceplayer
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_CELADON_5F_2
+ closetext
+ end
+
+CeladonDeptStore5FGentlemanScript:
+ jumptextfaceplayer CeladonDeptStore5FGentlemanText
+
+CeladonDeptStore5FSailorScript:
+ jumptextfaceplayer CeladonDeptStore5FSailorText
+
+CeladonDeptStore5FTeacherScript:
+ jumptextfaceplayer CeladonDeptStore5FTeacherText
+
+CeladonDeptStore5FDirectory:
+ jumptext CeladonDeptStore5FDirectoryText
+
+CeladonDeptStore5FElevatorButton:
+ jumpstd elevatorbutton
+
+CeladonDeptStore5FGentlemanText:
+ text "I want to buy some"
+ line "items that raise"
+
+ para "#MON stats, but"
+ line "I don't have"
+ cont "enough money…"
+ done
+
+CeladonDeptStore5FSailorText:
+ text "I want PP UP, so I"
+ line "can raise the PP"
+
+ para "of moves. But you"
+ line "can't buy it…"
+ done
+
+CeladonDeptStore5FTeacherText:
+ text "Using items on"
+ line "them makes #-"
+ cont "MON happy."
+
+ para "They hate certain"
+ line "items, though…"
+ done
+
+CeladonDeptStore5FDirectoryText:
+ text "5F: DRUG STORE"
+ done
+
+CeladonDeptStore5F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 12, 0, CELADON_DEPT_STORE_4F, 1
+ warp_event 15, 0, CELADON_DEPT_STORE_6F, 1
+ warp_event 2, 0, CELADON_DEPT_STORE_ELEVATOR, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 14, 0, BGEVENT_READ, CeladonDeptStore5FDirectory
+ bg_event 3, 0, BGEVENT_READ, CeladonDeptStore5FElevatorButton
+
+ db 5 ; object events
+ object_event 7, 5, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore5FClerk1Script, -1
+ object_event 8, 5, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore5FClerk2Script, -1
+ object_event 13, 5, SPRITE_GENTLEMAN, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore5FGentlemanScript, -1
+ object_event 3, 4, SPRITE_SAILOR, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore5FSailorScript, -1
+ object_event 1, 7, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore5FTeacherScript, -1
diff --git a/maps/CeladonDeptStore6F.asm b/maps/CeladonDeptStore6F.asm
new file mode 100644
index 00000000..d30f23f1
--- /dev/null
+++ b/maps/CeladonDeptStore6F.asm
@@ -0,0 +1,160 @@
+ const_def 2 ; object constants
+ const CELADONDEPTSTORE6F_SUPER_NERD
+ const CELADONDEPTSTORE6F_YOUNGSTER
+
+CeladonDeptStore6F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonDeptStore6FSuperNerdScript:
+ jumptextfaceplayer CeladonDeptStore6FSuperNerdText
+
+CeladonDeptStore6FYoungsterScript:
+ jumptextfaceplayer CeladonDeptStore6FYoungsterText
+
+CeladonDeptStore6FVendingMachine:
+ opentext
+ writetext CeladonVendingText
+.Start:
+ special PlaceMoneyTopRight
+ loadmenu .MenuHeader
+ verticalmenu
+ closewindow
+ ifequal 1, .FreshWater
+ ifequal 2, .SodaPop
+ ifequal 3, .Lemonade
+ closetext
+ end
+
+.FreshWater:
+ checkmoney YOUR_MONEY, 200
+ ifequal HAVE_LESS, .NotEnoughMoney
+ giveitem FRESH_WATER
+ iffalse .NotEnoughSpace
+ takemoney YOUR_MONEY, 200
+ itemtotext FRESH_WATER, MEM_BUFFER_0
+ jump .VendItem
+
+.SodaPop:
+ checkmoney YOUR_MONEY, 300
+ ifequal HAVE_LESS, .NotEnoughMoney
+ giveitem SODA_POP
+ iffalse .NotEnoughSpace
+ takemoney YOUR_MONEY, 300
+ itemtotext SODA_POP, MEM_BUFFER_0
+ jump .VendItem
+
+.Lemonade:
+ checkmoney YOUR_MONEY, 350
+ ifequal HAVE_LESS, .NotEnoughMoney
+ giveitem LEMONADE
+ iffalse .NotEnoughSpace
+ takemoney YOUR_MONEY, 350
+ itemtotext LEMONADE, MEM_BUFFER_0
+ jump .VendItem
+
+.VendItem:
+ pause 10
+ playsound SFX_ENTER_DOOR
+ writetext CeladonClangText
+ buttonsound
+ itemnotify
+ jump .Start
+
+.NotEnoughMoney:
+ writetext CeladonVendingNoMoneyText
+ waitbutton
+ jump .Start
+
+.NotEnoughSpace:
+ writetext CeladonVendingNoSpaceText
+ waitbutton
+ jump .Start
+
+.MenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 2, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_CURSOR ; flags
+ db 4 ; items
+ db "FRESH WATER ¥200@"
+ db "SODA POP ¥300@"
+ db "LEMONADE ¥350@"
+ db "CANCEL@"
+
+CeladonDeptStore6FDirectory:
+ jumptext CeladonDeptStore6FDirectoryText
+
+; unused
+CeladonDeptStore6FElevatorButton:
+ jumpstd elevatorbutton
+
+CeladonVendingText:
+ text "A vending machine!"
+ line "Here's the menu."
+ done
+
+CeladonClangText:
+ text "Clang!"
+
+ para "@"
+ text_from_ram wStringBuffer3
+ text_start
+ line "popped out."
+ done
+
+CeladonVendingNoMoneyText:
+ text "Oops, not enough"
+ line "money…"
+ done
+
+CeladonVendingNoSpaceText:
+ text "There's no more"
+ line "room for stuff…"
+ done
+
+CeladonDeptStore6FSuperNerdText:
+ text "A vending machine"
+ line "with a prize rou-"
+ cont "lette…"
+
+ para "You never see"
+ line "those anymore."
+ done
+
+CeladonDeptStore6FYoungsterText:
+ text "Aww! There's no"
+ line "games here!"
+
+ para "I wanted to play…"
+ done
+
+CeladonDeptStore6FDirectoryText:
+ text "6F: ROOFTOP SQUARE"
+ line "VENDING MACHINES"
+ done
+
+CeladonDeptStore6F_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 15, 0, CELADON_DEPT_STORE_5F, 2
+ warp_event 2, 0, CELADON_DEPT_STORE_ELEVATOR, 1
+
+ db 0 ; coord events
+
+ db 6 ; bg events
+ bg_event 14, 0, BGEVENT_READ, CeladonDeptStore6FDirectory
+ bg_event 3, 0, BGEVENT_READ, CeladonDeptStore1FElevatorButton
+ bg_event 8, 1, BGEVENT_UP, CeladonDeptStore6FVendingMachine
+ bg_event 9, 1, BGEVENT_UP, CeladonDeptStore6FVendingMachine
+ bg_event 10, 1, BGEVENT_UP, CeladonDeptStore6FVendingMachine
+ bg_event 11, 1, BGEVENT_UP, CeladonDeptStore6FVendingMachine
+
+ db 2 ; object events
+ object_event 9, 2, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore6FSuperNerdScript, -1
+ object_event 12, 5, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WANDER, 2, 1, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonDeptStore6FYoungsterScript, -1
diff --git a/maps/CeladonDeptStoreElevator.asm b/maps/CeladonDeptStoreElevator.asm
new file mode 100644
index 00000000..d89efe8e
--- /dev/null
+++ b/maps/CeladonDeptStoreElevator.asm
@@ -0,0 +1,40 @@
+CeladonDeptStoreElevator_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonDeptStoreElevatorScript:
+ opentext
+ elevator CeladonDeptStoreElevatorData
+ closetext
+ iffalse .Done
+ pause 5
+ playsound SFX_ELEVATOR
+ earthquake 60
+ waitsfx
+.Done:
+ end
+
+CeladonDeptStoreElevatorData:
+ db 6 ; floors
+ elevfloor FLOOR_1F, 4, CELADON_DEPT_STORE_1F
+ elevfloor FLOOR_2F, 3, CELADON_DEPT_STORE_2F
+ elevfloor FLOOR_3F, 3, CELADON_DEPT_STORE_3F
+ elevfloor FLOOR_4F, 3, CELADON_DEPT_STORE_4F
+ elevfloor FLOOR_5F, 3, CELADON_DEPT_STORE_5F
+ elevfloor FLOOR_6F, 2, CELADON_DEPT_STORE_6F
+ db -1 ; end
+
+CeladonDeptStoreElevator_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 1, 3, CELADON_DEPT_STORE_1F, -1
+ warp_event 2, 3, CELADON_DEPT_STORE_1F, -1
+
+ db 0 ; coord events
+
+ db 1 ; bg events
+ bg_event 3, 0, BGEVENT_READ, CeladonDeptStoreElevatorScript
+
+ db 0 ; object events
diff --git a/maps/CeladonGameCorner.asm b/maps/CeladonGameCorner.asm
new file mode 100644
index 00000000..beab8cae
--- /dev/null
+++ b/maps/CeladonGameCorner.asm
@@ -0,0 +1,340 @@
+ const_def 2 ; object constants
+ const CELADONGAMECORNER_CLERK
+ const CELADONGAMECORNER_RECEPTIONIST
+ const CELADONGAMECORNER_POKEFAN_M
+ const CELADONGAMECORNER_TEACHER
+ const CELADONGAMECORNER_FISHING_GURU
+ const CELADONGAMECORNER_FISHER1
+ const CELADONGAMECORNER_FISHER2
+ const CELADONGAMECORNER_GYM_GUY
+ const CELADONGAMECORNER_GRAMPS
+
+CeladonGameCorner_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonGameCornerClerkScript:
+ jumpstd gamecornercoinvendor
+
+CeladonGameCornerReceptionistScript:
+ jumptextfaceplayer CeladonGameCornerReceptionistText
+
+CeladonGameCornerPokefanMScript:
+ faceplayer
+ opentext
+ writetext CeladonGameCornerPokefanMText
+ waitbutton
+ closetext
+ turnobject CELADONGAMECORNER_POKEFAN_M, LEFT
+ end
+
+CeladonGameCornerTeacherScript:
+ faceplayer
+ opentext
+ writetext CeladonGameCornerTeacherText
+ waitbutton
+ closetext
+ turnobject CELADONGAMECORNER_TEACHER, RIGHT
+ end
+
+CeladonGameCornerFishingGuruScript:
+ faceplayer
+ opentext
+ writetext CeladonGameCornerFishingGuruText
+ waitbutton
+ closetext
+ turnobject CELADONGAMECORNER_FISHING_GURU, RIGHT
+ end
+
+CeladonGameCornerFisherScript:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_COINS_FROM_GAMBLER_AT_CELADON
+ iftrue .GotCoins
+ writetext CeladonGameCornerFisherText1
+ buttonsound
+ checkitem COIN_CASE
+ iffalse .NoCoinCase
+ checkcoins MAX_COINS - 1
+ ifequal HAVE_MORE, .FullCoinCase
+ stringtotext .coinname, MEM_BUFFER_1
+ scall .GiveCoins
+ givecoins 18
+ setevent EVENT_GOT_COINS_FROM_GAMBLER_AT_CELADON
+.GotCoins:
+ writetext CeladonGameCornerFisherText2
+ waitbutton
+ closetext
+ turnobject LAST_TALKED, LEFT
+ end
+
+.GiveCoins:
+ jumpstd receiveitem
+ end
+
+.coinname
+ db "COIN@"
+
+.NoCoinCase:
+ writetext CeladonGameCornerFisherNoCoinCaseText
+ waitbutton
+ closetext
+ turnobject LAST_TALKED, LEFT
+ end
+
+.FullCoinCase:
+ writetext CeladonGameCornerFisherFullCoinCaseText
+ waitbutton
+ closetext
+ turnobject LAST_TALKED, LEFT
+ end
+
+CeladonGymGuyScript:
+ jumptextfaceplayer CeladonGymGuyText
+
+CeladonGameCornerGrampsScript:
+ faceplayer
+ opentext
+ writetext CeladonGameCornerGrampsText
+ waitbutton
+ closetext
+ turnobject CELADONGAMECORNER_GRAMPS, LEFT
+ end
+
+CeladonGameCornerPoster1Script:
+ jumptext CeladonGameCornerPoster1Text
+
+CeladonGameCornerPoster2Script:
+ jumptext CeladonGameCornerPoster2Text
+
+CeladonGameCornerLuckySlotMachineScript:
+ random 6
+ ifequal 0, CeladonGameCornerSlotMachineScript
+ refreshscreen
+ writebyte FALSE
+ special SlotMachine
+ closetext
+ end
+
+CeladonGameCornerSlotMachineScript:
+ refreshscreen
+ writebyte TRUE
+ special SlotMachine
+ closetext
+ end
+
+CeladonGameCornerCardFlipScript:
+ refreshscreen
+ special CardFlip
+ closetext
+ end
+
+CeladonGameCornerLighterScript:
+ jumptext CeladonGameCornerLighterText
+
+CeladonGameCornerSodaCanScript:
+ opentext
+ writetext CeladonGameCornerSodaCanText
+ waitbutton
+ special CardFlip
+ closetext
+ end
+
+CeladonGameCornerUnusedMovementData:
+; unreferenced
+ step RIGHT
+ turn_head LEFT
+ step_end
+
+CeladonGameCornerReceptionistText:
+ text "Welcome!"
+
+ para "You may exchange"
+ line "your coins for"
+
+ para "fabulous prizes"
+ line "next door."
+ done
+
+CeladonGameCornerPokefanMText:
+ text "The slot machines"
+ line "are all state of"
+ cont "the art."
+ done
+
+CeladonGameCornerTeacherText:
+ text "It's this machine"
+ line "I want."
+
+ para "It cleaned me out"
+ line "yesterday, so it"
+
+ para "should pay out"
+ line "today."
+ done
+
+CeladonGameCornerFishingGuruText:
+ text "I think this slot"
+ line "machine will pay"
+ cont "out…"
+
+ para "The odds vary"
+ line "among machines."
+ done
+
+CeladonGameCornerFisherText1:
+ text "Gahahaha!"
+
+ para "The coins just"
+ line "keep popping out!"
+
+ para "Hm? What, kid? You"
+ line "want to play?"
+
+ para "I'll share my luck"
+ line "with you!"
+ done
+
+CeladonGameCornerFisherText2:
+ text "Gahahaha!"
+
+ para "It makes me feel"
+ line "good to do nice"
+
+ para "things for other"
+ line "people!"
+ done
+
+CeladonGameCornerFisherNoCoinCaseText:
+ text "Hey, you don't"
+ line "have a COIN CASE."
+
+ para "How am I supposed"
+ line "to give you any"
+ cont "coins, kid?"
+ done
+
+CeladonGameCornerFisherFullCoinCaseText:
+ text "Hey, your COIN"
+ line "CASE is full, kid."
+
+ para "You must be riding"
+ line "a winning streak"
+ cont "too."
+ done
+
+CeladonGymGuyText:
+ text "Hey! CHAMP in"
+ line "making!"
+
+ para "Are you playing"
+ line "the slots too?"
+
+ para "I'm trying to get"
+ line "enough coins for a"
+ cont "prize #MON."
+
+ para "But I don't have"
+ line "enough coins yet…"
+ done
+
+CeladonGameCornerGrampsText:
+ text "Hmmm… The odds are"
+ line "surely better for"
+
+ para "PIKACHU's line,"
+ line "but… What to do?"
+ done
+
+CeladonGameCornerPoster1Text:
+ text "Hey!"
+
+ para "Underneath this"
+ line "poster…"
+
+ para "There's nothing!"
+ done
+
+CeladonGameCornerPoster2Text:
+ text "Hey!"
+
+ para "Underneath this"
+ line "poster…"
+
+ para "There's nothing!"
+ done
+
+CeladonGameCornerLighterText:
+ text "There's a lighter"
+ line "here."
+ done
+
+CeladonGameCornerSodaCanText:
+ text "A can of soda…"
+
+ para "Someone must be"
+ line "coming back…"
+
+ para "Huh? It's empty!"
+ done
+
+CeladonGameCorner_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 14, 13, CELADON_CITY, 6
+ warp_event 15, 13, CELADON_CITY, 6
+
+ db 0 ; coord events
+
+ db 38 ; bg events
+ bg_event 1, 6, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 1, 7, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 1, 8, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 1, 9, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 1, 10, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 1, 11, BGEVENT_LEFT, CeladonGameCornerCardFlipScript
+ bg_event 6, 6, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 6, 7, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 6, 8, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 6, 9, BGEVENT_READ, CeladonGameCornerSodaCanScript
+ bg_event 6, 10, BGEVENT_READ, CeladonGameCornerCardFlipScript
+ bg_event 6, 11, BGEVENT_RIGHT, CeladonGameCornerCardFlipScript
+ bg_event 7, 6, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 7, 7, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 7, 8, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 7, 9, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 7, 10, BGEVENT_READ, CeladonGameCornerSlotMachineScript
+ bg_event 7, 11, BGEVENT_LEFT, CeladonGameCornerLuckySlotMachineScript
+ bg_event 12, 6, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 12, 7, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 12, 8, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 12, 9, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 12, 10, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 12, 11, BGEVENT_RIGHT, CeladonGameCornerLuckySlotMachineScript
+ bg_event 13, 6, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 13, 7, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 13, 8, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 13, 9, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 13, 10, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 13, 11, BGEVENT_LEFT, CeladonGameCornerLuckySlotMachineScript
+ bg_event 18, 6, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 18, 7, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 18, 8, BGEVENT_READ, CeladonGameCornerLighterScript
+ bg_event 18, 9, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 18, 10, BGEVENT_READ, CeladonGameCornerLuckySlotMachineScript
+ bg_event 18, 11, BGEVENT_RIGHT, CeladonGameCornerLuckySlotMachineScript
+ bg_event 15, 0, BGEVENT_READ, CeladonGameCornerPoster1Script
+ bg_event 9, 0, BGEVENT_READ, CeladonGameCornerPoster2Script
+
+ db 9 ; object events
+ object_event 5, 2, SPRITE_CLERK, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerClerkScript, -1
+ object_event 3, 2, SPRITE_RECEPTIONIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerReceptionistScript, -1
+ object_event 14, 10, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerPokefanMScript, -1
+ object_event 17, 7, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerTeacherScript, -1
+ object_event 11, 7, SPRITE_FISHING_GURU, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerFishingGuruScript, -1
+ object_event 8, 10, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, DAY, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerFisherScript, -1
+ object_event 8, 10, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, NITE, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerFisherScript, -1
+ object_event 11, 3, SPRITE_GYM_GUY, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonGymGuyScript, -1
+ object_event 2, 8, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerGrampsScript, -1
diff --git a/maps/CeladonGameCornerPrizeRoom.asm b/maps/CeladonGameCornerPrizeRoom.asm
new file mode 100644
index 00000000..06211668
--- /dev/null
+++ b/maps/CeladonGameCornerPrizeRoom.asm
@@ -0,0 +1,279 @@
+ const_def 2 ; object constants
+ const CELADONGAMECORNERPRIZEROOM_GENTLEMAN
+ const CELADONGAMECORNERPRIZEROOM_PHARMACIST
+
+CeladonGameCornerPrizeRoom_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonGameCornerPrizeRoomGentlemanScript:
+ jumptextfaceplayer CeladonGameCornerPrizeRoomGentlemanText
+
+CeladonGameCornerPrizeRoomPharmacistScript:
+ jumptextfaceplayer CeladonGameCornerPrizeRoomPharmacistText
+
+CeladonGameCornerPrizeRoomTMVendor:
+ faceplayer
+ opentext
+ writetext CeladonPrizeRoom_PrizeVendorIntroText
+ waitbutton
+ checkitem COIN_CASE
+ iffalse CeladonPrizeRoom_NoCoinCase
+ writetext CeladonPrizeRoom_AskWhichPrizeText
+CeladonPrizeRoom_tmcounterloop:
+ special DisplayCoinCaseBalance
+ loadmenu CeladonPrizeRoom_TMMenuHeader
+ verticalmenu
+ closewindow
+ ifequal 1, .doubleteam
+ ifequal 2, .psychic
+ ifequal 3, .hyperbeam
+ jump CeladonPrizeRoom_cancel
+
+.doubleteam
+ checkcoins 1500
+ ifequal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+ itemtotext TM_DOUBLE_TEAM, MEM_BUFFER_0
+ scall CeladonPrizeRoom_askbuy
+ iffalse CeladonPrizeRoom_cancel
+ giveitem TM_DOUBLE_TEAM
+ iffalse CeladonPrizeRoom_notenoughroom
+ takecoins 1500
+ jump CeladonPrizeRoom_purchased
+
+.psychic
+ checkcoins 3500
+ ifequal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+ itemtotext TM_PSYCHIC, MEM_BUFFER_0
+ scall CeladonPrizeRoom_askbuy
+ iffalse CeladonPrizeRoom_cancel
+ giveitem TM_PSYCHIC
+ iffalse CeladonPrizeRoom_notenoughroom
+ takecoins 3500
+ jump CeladonPrizeRoom_purchased
+
+.hyperbeam
+ checkcoins 7500
+ ifequal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+ itemtotext TM_HYPER_BEAM, MEM_BUFFER_0
+ scall CeladonPrizeRoom_askbuy
+ iffalse CeladonPrizeRoom_cancel
+ giveitem TM_HYPER_BEAM
+ iffalse CeladonPrizeRoom_notenoughroom
+ takecoins 7500
+ jump CeladonPrizeRoom_purchased
+
+CeladonPrizeRoom_askbuy:
+ writetext CeladonPrizeRoom_ConfirmPurchaseText
+ yesorno
+ end
+
+CeladonPrizeRoom_purchased:
+ waitsfx
+ playsound SFX_TRANSACTION
+ writetext CeladonPrizeRoom_HereYouGoText
+ waitbutton
+ jump CeladonPrizeRoom_tmcounterloop
+
+CeladonPrizeRoom_notenoughcoins:
+ writetext CeladonPrizeRoom_NotEnoughCoinsText
+ waitbutton
+ closetext
+ end
+
+CeladonPrizeRoom_notenoughroom:
+ writetext CeladonPrizeRoom_NotEnoughRoomText
+ waitbutton
+ closetext
+ end
+
+CeladonPrizeRoom_cancel:
+ writetext CeladonPrizeRoom_ComeAgainText
+ waitbutton
+ closetext
+ end
+
+CeladonPrizeRoom_NoCoinCase:
+ writetext CeladonPrizeRoom_NoCoinCaseText
+ waitbutton
+ closetext
+ end
+
+CeladonPrizeRoom_TMMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 2, 15, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_CURSOR ; flags
+ db 4 ; items
+ db "TM32 1500@"
+ db "TM29 3500@"
+ db "TM15 7500@"
+ db "CANCEL@"
+
+CeladonGameCornerPrizeRoomPokemonVendor:
+ faceplayer
+ opentext
+ writetext CeladonPrizeRoom_PrizeVendorIntroText
+ waitbutton
+ checkitem COIN_CASE
+ iffalse CeladonPrizeRoom_NoCoinCase
+.loop
+ writetext CeladonPrizeRoom_AskWhichPrizeText
+ special DisplayCoinCaseBalance
+ loadmenu .MenuHeader
+ verticalmenu
+ closewindow
+ ifequal 1, .mrmime
+ ifequal 2, .eevee
+ ifequal 3, .porygon
+ jump CeladonPrizeRoom_cancel
+
+.mrmime
+ checkcoins 3333
+ ifequal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+ checkcode VAR_PARTYCOUNT
+ ifequal PARTY_LENGTH, CeladonPrizeRoom_notenoughroom
+ pokenamemem MR__MIME, MEM_BUFFER_0
+ scall CeladonPrizeRoom_askbuy
+ iffalse CeladonPrizeRoom_cancel
+ waitsfx
+ playsound SFX_TRANSACTION
+ writetext CeladonPrizeRoom_HereYouGoText
+ waitbutton
+ writebyte MR__MIME
+ special GameCornerPrizeMonCheckDex
+ givepoke MR__MIME, 15
+ takecoins 3333
+ jump .loop
+
+.eevee
+ checkcoins 6666
+ ifequal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+ checkcode VAR_PARTYCOUNT
+ ifequal PARTY_LENGTH, CeladonPrizeRoom_notenoughroom
+ pokenamemem EEVEE, MEM_BUFFER_0
+ scall CeladonPrizeRoom_askbuy
+ iffalse CeladonPrizeRoom_cancel
+ waitsfx
+ playsound SFX_TRANSACTION
+ writetext CeladonPrizeRoom_HereYouGoText
+ waitbutton
+ writebyte EEVEE
+ special GameCornerPrizeMonCheckDex
+ givepoke EEVEE, 15
+ takecoins 6666
+ jump .loop
+
+.porygon
+ checkcoins 9999
+ ifequal HAVE_LESS, CeladonPrizeRoom_notenoughcoins
+ checkcode VAR_PARTYCOUNT
+ ifequal PARTY_LENGTH, CeladonPrizeRoom_notenoughroom
+ pokenamemem PORYGON, MEM_BUFFER_0
+ scall CeladonPrizeRoom_askbuy
+ iffalse CeladonPrizeRoom_cancel
+ waitsfx
+ playsound SFX_TRANSACTION
+ writetext CeladonPrizeRoom_HereYouGoText
+ waitbutton
+ writebyte PORYGON
+ special GameCornerPrizeMonCheckDex
+ givepoke PORYGON, 20
+ takecoins 9999
+ jump .loop
+
+.MenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 2, 17, TEXTBOX_Y - 1
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_CURSOR ; flags
+ db 4 ; items
+ db "MR.MIME 3333@"
+ db "EEVEE 6666@"
+ db "PORYGON 9999@"
+ db "CANCEL@"
+
+CeladonGameCornerPrizeRoomGentlemanText:
+ text "I wanted MR.MIME,"
+ line "but I was short by"
+ cont "100 coins…"
+ done
+
+CeladonGameCornerPrizeRoomPharmacistText:
+ text "Whew…"
+
+ para "I've got to stay"
+ line "calm and cool…"
+
+ para "I can't lose my"
+ line "cool, or I'll lose"
+ cont "all my money…"
+ done
+
+CeladonPrizeRoom_PrizeVendorIntroText:
+ text "Welcome!"
+
+ para "We exchange your"
+ line "coins for fabulous"
+ cont "prizes!"
+ done
+
+CeladonPrizeRoom_AskWhichPrizeText:
+ text "Which prize would"
+ line "you like?"
+ done
+
+CeladonPrizeRoom_ConfirmPurchaseText:
+ text "OK, so you wanted"
+ line "a @"
+ text_from_ram wStringBuffer3
+ text "?"
+ done
+
+CeladonPrizeRoom_HereYouGoText:
+ text "Here you go!"
+ done
+
+CeladonPrizeRoom_NotEnoughCoinsText:
+ text "You don't have"
+ line "enough coins."
+ done
+
+CeladonPrizeRoom_NotEnoughRoomText:
+ text "You have no room"
+ line "for it."
+ done
+
+CeladonPrizeRoom_ComeAgainText:
+ text "Oh. Please come"
+ line "back with coins!"
+ done
+
+CeladonPrizeRoom_NoCoinCaseText:
+ text "Oh? You don't have"
+ line "a COIN CASE."
+ done
+
+CeladonGameCornerPrizeRoom_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 5, CELADON_CITY, 7
+ warp_event 3, 5, CELADON_CITY, 7
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 2, 1, BGEVENT_READ, CeladonGameCornerPrizeRoomTMVendor
+ bg_event 4, 1, BGEVENT_READ, CeladonGameCornerPrizeRoomPokemonVendor
+
+ db 2 ; object events
+ object_event 0, 2, SPRITE_GENTLEMAN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerPrizeRoomGentlemanScript, -1
+ object_event 4, 4, SPRITE_PHARMACIST, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonGameCornerPrizeRoomPharmacistScript, -1
diff --git a/maps/CeladonGym.asm b/maps/CeladonGym.asm
new file mode 100644
index 00000000..89e8540a
--- /dev/null
+++ b/maps/CeladonGym.asm
@@ -0,0 +1,292 @@
+ const_def 2 ; object constants
+ const CELADONGYM_ERIKA
+ const CELADONGYM_LASS1
+ const CELADONGYM_LASS2
+ const CELADONGYM_BUENA
+ const CELADONGYM_TWIN1
+ const CELADONGYM_TWIN2
+
+CeladonGym_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonGymErikaScript:
+ faceplayer
+ opentext
+ checkflag ENGINE_RAINBOWBADGE
+ iftrue .FightDone
+ writetext ErikaBeforeBattleText
+ waitbutton
+ closetext
+ winlosstext ErikaBeatenText, 0
+ loadtrainer ERIKA, ERIKA1
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_ERIKA
+ setevent EVENT_BEAT_LASS_MICHELLE
+ setevent EVENT_BEAT_PICNICKER_TANYA
+ setevent EVENT_BEAT_BEAUTY_JULIA
+ setevent EVENT_BEAT_TWINS_JO_AND_ZOE
+ opentext
+ writetext PlayerReceivedRainbowBadgeText
+ playsound SFX_GET_BADGE
+ waitsfx
+ setflag ENGINE_RAINBOWBADGE
+.FightDone:
+ checkevent EVENT_GOT_TM19_GIGA_DRAIN
+ iftrue .GotGigaDrain
+ writetext ErikaExplainTMText
+ buttonsound
+ verbosegiveitem TM_GIGA_DRAIN
+ iffalse .GotGigaDrain
+ setevent EVENT_GOT_TM19_GIGA_DRAIN
+.GotGigaDrain:
+ writetext ErikaAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerLassMichelle:
+ trainer LASS, MICHELLE, EVENT_BEAT_LASS_MICHELLE, LassMichelleSeenText, LassMichelleBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext LassMichelleAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerPicnickerTanya:
+ trainer PICNICKER, TANYA, EVENT_BEAT_PICNICKER_TANYA, PicnickerTanyaSeenText, PicnickerTanyaBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext PicnickerTanyaAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerBeautyJulia:
+ trainer BEAUTY, JULIA, EVENT_BEAT_BEAUTY_JULIA, BeautyJuliaSeenText, BeautyJuliaBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BeautyJuliaAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerTwinsJoAndZoe1:
+ trainer TWINS, JOANDZOE1, EVENT_BEAT_TWINS_JO_AND_ZOE, TwinsJoAndZoe1SeenText, TwinsJoAndZoe1BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext TwinsJoAndZoe1AfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerTwinsJoAndZoe2:
+ trainer TWINS, JOANDZOE2, EVENT_BEAT_TWINS_JO_AND_ZOE, TwinsJoAndZoe2SeenText, TwinsJoAndZoe2BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext TwinsJoAndZoe2AfterBattleText
+ waitbutton
+ closetext
+ end
+
+CeladonGymStatue:
+ checkflag ENGINE_RAINBOWBADGE
+ iftrue .Beaten
+ jumpstd gymstatue1
+.Beaten:
+ trainertotext ERIKA, ERIKA1, MEM_BUFFER_1
+ jumpstd gymstatue2
+
+ErikaBeforeBattleText:
+ text "ERIKA: Hello…"
+ line "Lovely weather,"
+
+ para "isn't it?"
+ line "It's so pleasant…"
+
+ para "…I'm afraid I may"
+ line "doze off…"
+
+ para "My name is ERIKA."
+ line "I am the LEADER of"
+ cont "CELADON GYM."
+
+ para "…Oh? All the way"
+ line "from JOHTO, you"
+ cont "say? How nice…"
+
+ para "Oh. I'm sorry, I"
+ line "didn't realize"
+
+ para "that you wished to"
+ line "challenge me."
+
+ para "Very well, but I"
+ line "shall not lose."
+ done
+
+ErikaBeatenText:
+ text "ERIKA: Oh!"
+ line "I concede defeat…"
+
+ para "You are remarkably"
+ line "strong…"
+
+ para "I shall give you"
+ line "RAINBOWBADGE…"
+ done
+
+PlayerReceivedRainbowBadgeText:
+ text "<PLAYER> received"
+ line "RAINBOWBADGE."
+ done
+
+ErikaExplainTMText:
+ text "ERIKA: That was a"
+ line "delightful match."
+
+ para "I felt inspired."
+ line "Please, I wish you"
+ cont "to have this TM."
+
+ para "It is GIGA DRAIN."
+
+ para "It is a wonderful"
+ line "move that drains"
+
+ para "half the damage it"
+ line "inflicts to heal"
+ cont "your #MON."
+
+ para "Please use it if"
+ line "it pleases you…"
+ done
+
+ErikaAfterBattleText:
+ text "ERIKA: Losing"
+ line "leaves a bitter"
+ cont "aftertaste…"
+
+ para "But knowing that"
+ line "there are strong"
+
+ para "trainers spurs me"
+ line "to do better…"
+ done
+
+LassMichelleSeenText:
+ text "Wait! Only girls"
+ line "are allowed here!"
+ done
+
+LassMichelleBeatenText:
+ text "Oh, bleah!"
+ done
+
+LassMichelleAfterBattleText:
+ text "We don't dislike"
+ line "boys or anything."
+
+ para "But there are"
+ line "certain subjects"
+
+ para "that only girls"
+ line "can talk about."
+ done
+
+PicnickerTanyaSeenText:
+ text "Oh, a battle?"
+ line "That's kind of"
+ cont "scary, but OK!"
+ done
+
+PicnickerTanyaBeatenText:
+ text "Oh, that's it?"
+ done
+
+PicnickerTanyaAfterBattleText:
+ text "Oh, look at all"
+ line "your BADGES. No"
+
+ para "wonder I couldn't"
+ line "win!"
+ done
+
+BeautyJuliaSeenText:
+ text "Were you looking"
+ line "at these flowers"
+ cont "or at me?"
+ done
+
+BeautyJuliaBeatenText:
+ text "How annoying!"
+ done
+
+BeautyJuliaAfterBattleText:
+ text "How do I go about"
+ line "becoming ladylike"
+ cont "like ERIKA?"
+ done
+
+TwinsJoAndZoe1SeenText:
+ text "We'll show you"
+ line "#MON moves that"
+ cont "ERIKA taught us!"
+ done
+
+TwinsJoAndZoe1BeatenText:
+ text "Oh… We lost…"
+ done
+
+TwinsJoAndZoe1AfterBattleText:
+ text "ERIKA will get you"
+ line "back for us!"
+ done
+
+TwinsJoAndZoe2SeenText:
+ text "We're going to"
+ line "protect ERIKA!"
+ done
+
+TwinsJoAndZoe2BeatenText:
+ text "We couldn't win…"
+ done
+
+TwinsJoAndZoe2AfterBattleText:
+ text "ERIKA is much,"
+ line "much stronger!"
+ done
+
+CeladonGym_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 4, 17, CELADON_CITY, 8
+ warp_event 5, 17, CELADON_CITY, 8
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 3, 15, BGEVENT_READ, CeladonGymStatue
+ bg_event 6, 15, BGEVENT_READ, CeladonGymStatue
+
+ db 6 ; object events
+ object_event 5, 3, SPRITE_ERIKA, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonGymErikaScript, -1
+ object_event 7, 8, SPRITE_LASS, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 2, TrainerLassMichelle, -1
+ object_event 2, 8, SPRITE_LASS, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 2, TrainerPicnickerTanya, -1
+ object_event 3, 5, SPRITE_BUENA, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 2, TrainerBeautyJulia, -1
+ object_event 4, 10, SPRITE_TWIN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerTwinsJoAndZoe1, -1
+ object_event 5, 10, SPRITE_TWIN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerTwinsJoAndZoe2, -1
diff --git a/maps/CeladonMansion1F.asm b/maps/CeladonMansion1F.asm
new file mode 100644
index 00000000..0494249e
--- /dev/null
+++ b/maps/CeladonMansion1F.asm
@@ -0,0 +1,96 @@
+ const_def 2 ; object constants
+ const CELADONMANSION1F_GRANNY
+ const CELADONMANSION1F_GROWLITHE1
+ const CELADONMANSION1F_CLEFAIRY
+ const CELADONMANSION1F_GROWLITHE2
+
+CeladonMansion1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonMansionManager:
+ jumptextfaceplayer CeladonMansionManagerText
+
+CeladonMansion1FMeowth:
+ opentext
+ writetext CeladonMansion1FMeowthText
+ cry MEOWTH
+ waitbutton
+ closetext
+ end
+
+CeladonMansion1FClefairy:
+ opentext
+ writetext CeladonMansion1FClefairyText
+ cry CLEFAIRY
+ waitbutton
+ closetext
+ end
+
+CeladonMansion1FNidoranF:
+ opentext
+ writetext CeladonMansion1FNidoranFText
+ cry NIDORAN_F
+ waitbutton
+ closetext
+ end
+
+CeladonMansionManagersSuiteSign:
+ jumptext CeladonMansionManagersSuiteSignText
+
+CeladonMansion1FBookshelf:
+ jumpstd picturebookshelf
+
+CeladonMansionManagerText:
+ text "My dear #MON"
+ line "keep me company,"
+
+ para "so I don't ever"
+ line "feel lonely."
+
+ para "MEOWTH even brings"
+ line "money home."
+ done
+
+CeladonMansion1FMeowthText:
+ text "MEOWTH: Meow!"
+ done
+
+CeladonMansion1FClefairyText:
+ text "CLEFAIRY: Clef"
+ line "cleff!"
+ done
+
+CeladonMansion1FNidoranFText:
+ text "NIDORAN: Kya"
+ line "kyaoo!"
+ done
+
+CeladonMansionManagersSuiteSignText:
+ text "CELADON MANSION"
+ line "MANAGER'S SUITE"
+ done
+
+CeladonMansion1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 6, 9, CELADON_CITY, 2
+ warp_event 7, 9, CELADON_CITY, 2
+ warp_event 3, 0, CELADON_CITY, 3
+ warp_event 0, 0, CELADON_MANSION_2F, 1
+ warp_event 7, 0, CELADON_MANSION_2F, 4
+
+ db 0 ; coord events
+
+ db 3 ; bg events
+ bg_event 5, 8, BGEVENT_UP, CeladonMansionManagersSuiteSign
+ bg_event 0, 3, BGEVENT_READ, CeladonMansion1FBookshelf
+ bg_event 2, 3, BGEVENT_READ, CeladonMansion1FBookshelf
+
+ db 4 ; object events
+ object_event 1, 5, SPRITE_GRANNY, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonMansionManager, -1
+ object_event 2, 6, SPRITE_GROWLITHE, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonMansion1FMeowth, -1
+ object_event 3, 4, SPRITE_CLEFAIRY, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonMansion1FClefairy, -1
+ object_event 4, 4, SPRITE_GROWLITHE, SPRITEMOVEDATA_POKEMON, 2, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CeladonMansion1FNidoranF, -1
diff --git a/maps/CeladonMansion2F.asm b/maps/CeladonMansion2F.asm
new file mode 100644
index 00000000..316a16f2
--- /dev/null
+++ b/maps/CeladonMansion2F.asm
@@ -0,0 +1,66 @@
+CeladonMansion2F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonMansion2FComputer:
+ jumptext CeladonMansion2FComputerText
+
+CeladonMansion2FMeetingRoomSign:
+ jumptext CeladonMansion2FMeetingRoomSignText
+
+CeladonMansion2FBookshelf:
+ jumpstd difficultbookshelf
+
+CeladonMansion2FComputerText:
+ text "<PLAYER> turned on"
+ line "the PC."
+
+ para "…"
+
+ para "Someone was in the"
+ line "middle of compos-"
+ cont "ing an e-mail."
+
+ para "…I hope you'll"
+ line "come visit KANTO."
+
+ para "I think you'll be"
+ line "surprised at how"
+
+ para "much things have"
+ line "changed here."
+
+ para "You'll also see"
+ line "many #MON that"
+
+ para "aren't native to"
+ line "JOHTO."
+
+ para "To the PRODUCER"
+
+ para "…"
+ done
+
+CeladonMansion2FMeetingRoomSignText:
+ text "GAME FREAK"
+ line "MEETING ROOM"
+ done
+
+CeladonMansion2F_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 0, 0, CELADON_MANSION_1F, 4
+ warp_event 1, 0, CELADON_MANSION_3F, 2
+ warp_event 6, 0, CELADON_MANSION_3F, 3
+ warp_event 7, 0, CELADON_MANSION_1F, 5
+
+ db 0 ; coord events
+
+ db 3 ; bg events
+ bg_event 0, 3, BGEVENT_READ, CeladonMansion2FComputer
+ bg_event 5, 8, BGEVENT_UP, CeladonMansion2FMeetingRoomSign
+ bg_event 2, 3, BGEVENT_READ, CeladonMansion2FBookshelf
+
+ db 0 ; object events
diff --git a/maps/CeladonMansion3F.asm b/maps/CeladonMansion3F.asm
new file mode 100644
index 00000000..29f04309
--- /dev/null
+++ b/maps/CeladonMansion3F.asm
@@ -0,0 +1,212 @@
+ const_def 2 ; object constants
+ const CELADONMANSION3F_COOLTRAINER_M
+ const CELADONMANSION3F_GYM_GUY
+ const CELADONMANSION3F_SUPER_NERD
+ const CELADONMANSION3F_FISHER
+
+CeladonMansion3F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+GameFreakGameDesignerScript:
+ faceplayer
+ opentext
+ writetext GameFreakGameDesignerText
+ checkcode VAR_DEXCAUGHT
+ ifgreater NUM_POKEMON - 2 - 1, .CompletedPokedex ; ignore Mew and Celebi
+ waitbutton
+ closetext
+ end
+
+.CompletedPokedex:
+ buttonsound
+ writetext GameFreakGameDesignerCompletedPokedexText
+ playsound SFX_DEX_FANFARE_230_PLUS
+ waitsfx
+ writetext GameFreakGameDesignerPauseForDiplomaText
+ buttonsound
+ special Diploma
+ writetext GameFreakGameDesignerAfterDiplomaText
+ waitbutton
+ closetext
+ setevent EVENT_ENABLE_DIPLOMA_PRINTING
+ end
+
+GameFreakGraphicArtistScript:
+ faceplayer
+ opentext
+ checkevent EVENT_ENABLE_DIPLOMA_PRINTING
+ iftrue .CanPrintDiploma
+ writetext GameFreakGraphicArtistText
+ waitbutton
+ closetext
+ end
+
+.CanPrintDiploma:
+ writetext GameFreakGraphicArtistPrintDiplomaText
+ yesorno
+ iffalse .Refused
+ special PrintDiploma
+ closetext
+ end
+
+.Refused:
+ writetext GameFreakGraphicArtistRefusedText
+ waitbutton
+ closetext
+ end
+
+.CancelPrinting:
+; unused
+ writetext GameFreakGraphicArtistErrorText
+ waitbutton
+ closetext
+ end
+
+GameFreakProgrammerScript:
+ jumptextfaceplayer GameFreakProgrammerText
+
+GameFreakCharacterDesignerScript:
+ jumptextfaceplayer GameFreakCharacterDesignerText
+
+CeladonMansion3FDevRoomSign:
+ jumptext CeladonMansion3FDevRoomSignText
+
+CeladonMansion3FDrawing:
+ jumptext CeladonMansion3FDrawingText
+
+CeladonMansion3FGameProgram:
+ jumptext CeladonMansion3FGameProgramText
+
+CeladonMansion3FReferenceMaterial:
+ jumptext CeladonMansion3FReferenceMaterialText
+
+GameFreakGameDesignerText:
+ text "Is that right?"
+
+ para "I'm the GAME"
+ line "DESIGNER!"
+
+ para "Filling up your"
+ line "#DEX is tough,"
+ cont "but don't give up!"
+ done
+
+GameFreakGameDesignerCompletedPokedexText:
+ text "Wow! Excellent!"
+ line "You completed your"
+ cont "#DEX!"
+
+ para "Congratulations!"
+ done
+
+GameFreakGameDesignerPauseForDiplomaText:
+ text "…"
+ done
+
+GameFreakGameDesignerAfterDiplomaText:
+ text "The GRAPHIC ARTIST"
+ line "will print out a"
+ cont "DIPLOMA for you."
+
+ para "You should go show"
+ line "it off."
+ done
+
+GameFreakGraphicArtistText:
+ text "I'm the GRAPHIC"
+ line "ARTIST."
+
+ para "I drew you!"
+ done
+
+GameFreakGraphicArtistPrintDiplomaText:
+ text "I'm the GRAPHIC"
+ line "ARTIST."
+
+ para "Oh, you completed"
+ line "your #DEX?"
+
+ para "Want me to print"
+ line "out your DIPLOMA?"
+ done
+
+GameFreakGraphicArtistRefusedText:
+ text "Give me a shout if"
+ line "you want your"
+ cont "DIPLOMA printed."
+ done
+
+GameFreakGraphicArtistErrorText:
+ text "Something's wrong."
+ line "I'll have to can-"
+ cont "cel printing."
+ done
+
+GameFreakProgrammerText:
+ text "Who, me? I'm the"
+ line "PROGRAMMER."
+
+ para "Play the slot"
+ line "machines!"
+ done
+
+GameFreakCharacterDesignerText:
+ text "Aren't the TWINS"
+ line "adorable?"
+
+ para "JASMINE's pretty"
+ line "too."
+
+ para "Oh, I love them!"
+ done
+
+CeladonMansion3FDevRoomSignText:
+ text "GAME FREAK"
+ line "DEVELOPMENT ROOM"
+ done
+
+CeladonMansion3FDrawingText:
+ text "It's a detailed"
+ line "drawing of a"
+ cont "pretty girl."
+ done
+
+CeladonMansion3FGameProgramText:
+ text "It's the game"
+ line "program. Messing"
+
+ para "with it could put"
+ line "a bug in the game!"
+ done
+
+CeladonMansion3FReferenceMaterialText:
+ text "It's crammed with"
+ line "reference materi-"
+ cont "als. There's even"
+ cont "a # DOLL."
+ done
+
+CeladonMansion3F_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 0, 0, CELADON_MANSION_ROOF, 1
+ warp_event 1, 0, CELADON_MANSION_2F, 2
+ warp_event 6, 0, CELADON_MANSION_2F, 3
+ warp_event 7, 0, CELADON_MANSION_ROOF, 2
+
+ db 0 ; coord events
+
+ db 4 ; bg events
+ bg_event 5, 8, BGEVENT_UP, CeladonMansion3FDevRoomSign
+ bg_event 4, 3, BGEVENT_UP, CeladonMansion3FDrawing
+ bg_event 1, 6, BGEVENT_UP, CeladonMansion3FGameProgram
+ bg_event 1, 3, BGEVENT_UP, CeladonMansion3FReferenceMaterial
+
+ db 4 ; object events
+ object_event 3, 6, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, GameFreakGameDesignerScript, -1
+ object_event 3, 4, SPRITE_GYM_GUY, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, GameFreakGraphicArtistScript, -1
+ object_event 0, 7, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, GameFreakProgrammerScript, -1
+ object_event 0, 4, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_UP, 2, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, GameFreakCharacterDesignerScript, -1
diff --git a/maps/CeladonMansionRoof.asm b/maps/CeladonMansionRoof.asm
new file mode 100644
index 00000000..cd1afe33
--- /dev/null
+++ b/maps/CeladonMansionRoof.asm
@@ -0,0 +1,28 @@
+ const_def 2 ; object constants
+ const CELADONMANSIONROOF_FISHER
+
+CeladonMansionRoof_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonMansionRoofGraffiti:
+ jumptext CeladonMansionRoofGraffitiText
+
+CeladonMansionRoofGraffitiText:
+ text "I KNOW EVERYTHING!"
+ done
+
+CeladonMansionRoof_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 1, 1, CELADON_MANSION_3F, 1
+ warp_event 6, 1, CELADON_MANSION_3F, 4
+ warp_event 2, 5, CELADON_MANSION_ROOF_HOUSE, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 0 ; object events
diff --git a/maps/CeladonMansionRoofHouse.asm b/maps/CeladonMansionRoofHouse.asm
new file mode 100644
index 00000000..31bda62b
--- /dev/null
+++ b/maps/CeladonMansionRoofHouse.asm
@@ -0,0 +1,129 @@
+ const_def 2 ; object constants
+ const CELADONMANSIONROOFHOUSE_PHARMACIST
+
+CeladonMansionRoofHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonMansionRoofHousePharmacistScript:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_TM03_CURSE
+ iftrue .GotCurse
+ writetext CeladonMansionRoofHousePharmacistIntroText
+ buttonsound
+ checktime NITE
+ iftrue .Night
+ writetext CeladonMansionRoofHousePharmacistNotNightText
+ waitbutton
+ closetext
+ end
+
+.Night:
+ writetext CeladonMansionRoofHousePharmacistStoryText
+ buttonsound
+ verbosegiveitem TM_CURSE
+ iffalse .NoRoom
+ setevent EVENT_GOT_TM03_CURSE
+.GotCurse:
+ writetext CeladonMansionRoofHousePharmacistCurseText
+ waitbutton
+.NoRoom:
+ closetext
+ end
+
+CeladonMansionRoofHousePharmacistIntroText:
+ text "Let me recount a"
+ line "terrifying tale…"
+ done
+
+CeladonMansionRoofHousePharmacistNotNightText:
+ text "Then again, it's"
+ line "not as scary while"
+
+ para "it's still light"
+ line "outside."
+
+ para "Come back after"
+ line "sunset, OK?"
+ done
+
+CeladonMansionRoofHousePharmacistStoryText:
+ text "Once upon a time,"
+ line "there was a little"
+
+ para "boy who was given"
+ line "a new BICYCLE…"
+
+ para "He wanted to try"
+ line "it right away…"
+
+ para "He was having so"
+ line "much fun that he"
+
+ para "didn't notice the"
+ line "sun had set…"
+
+ para "While riding home"
+ line "in the pitch-black"
+
+ para "night, the bike"
+ line "suddenly slowed!"
+
+ para "The pedals became"
+ line "heavy!"
+
+ para "When he stopped"
+ line "pedaling, the bike"
+
+ para "began slipping"
+ line "backwards!"
+
+ para "It was as if the"
+ line "bike were cursed"
+
+ para "and trying to drag"
+ line "him into oblivion!"
+
+ para "…"
+
+ para "…"
+
+ para "SHRIEEEEK!"
+
+ para "The boy had been"
+ line "riding uphill on"
+ cont "CYCLING ROAD!"
+
+ para "…"
+ line "Ba-dum ba-dum!"
+
+ para "For listening so"
+ line "patiently, you may"
+ cont "take this--TM03!"
+ done
+
+CeladonMansionRoofHousePharmacistCurseText:
+ text "TM03 is CURSE."
+
+ para "It's a terrifying"
+ line "move that slowly"
+
+ para "whittles down the"
+ line "victim's HP."
+ done
+
+CeladonMansionRoofHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, CELADON_MANSION_ROOF, 3
+ warp_event 3, 7, CELADON_MANSION_ROOF, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 3, 2, SPRITE_PHARMACIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 2, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonMansionRoofHousePharmacistScript, -1
diff --git a/maps/CeladonPokecenter1F.asm b/maps/CeladonPokecenter1F.asm
new file mode 100644
index 00000000..297a4564
--- /dev/null
+++ b/maps/CeladonPokecenter1F.asm
@@ -0,0 +1,60 @@
+ const_def 2 ; object constants
+ const CELADONPOKECENTER1F_NURSE
+ const CELADONPOKECENTER1F_GENTLEMAN
+ const CELADONPOKECENTER1F_PHARMACIST
+ const CELADONPOKECENTER1F_COOLTRAINER_F
+
+CeladonPokecenter1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonPokecenter1FNurseScript:
+ jumpstd pokecenternurse
+
+CeladonPokecenter1FGentlemanScript:
+ jumpstd happinesschecknpc
+
+CeladonPokecenter1FCooltrainerFScript:
+ jumptextfaceplayer CeladonPokecenter1FCooltrainerFText
+
+CeladonPokecenter1FPharmacistScript:
+ jumptextfaceplayer CeladonPokecenter1FPharmacistText
+
+CeladonPokecenter1FCooltrainerFText:
+ text "ERIKA is a master"
+ line "of grass #MON."
+
+ para "She'll make you"
+ line "pay if you don't"
+ cont "watch yourself."
+ done
+
+CeladonPokecenter1FPharmacistText:
+ text "TEAM ROCKET's"
+ line "hideout is in the"
+
+ para "basement of the"
+ line "GAME CORNER."
+
+ para "Oh, wait. That was"
+ line "three years ago."
+ done
+
+CeladonPokecenter1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 7, CELADON_CITY, 5
+ warp_event 4, 7, CELADON_CITY, 5
+ warp_event 0, 7, POKECENTER_2F, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 4 ; object events
+ object_event 3, 1, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonPokecenter1FNurseScript, -1
+ object_event 1, 5, SPRITE_GENTLEMAN, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CeladonPokecenter1FGentlemanScript, -1
+ object_event 6, 1, SPRITE_PHARMACIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CeladonPokecenter1FPharmacistScript, -1
+ object_event 6, 5, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CeladonPokecenter1FCooltrainerFScript, -1
diff --git a/maps/CeladonPokecenter2FBeta.asm b/maps/CeladonPokecenter2FBeta.asm
new file mode 100644
index 00000000..aec47810
--- /dev/null
+++ b/maps/CeladonPokecenter2FBeta.asm
@@ -0,0 +1,16 @@
+CeladonPokecenter2FBeta_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CeladonPokecenter2FBeta_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 0, 7, CELADON_POKECENTER_1F, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 0 ; object events
diff --git a/maps/Route16FuchsiaSpeechHouse.asm b/maps/Route16FuchsiaSpeechHouse.asm
new file mode 100644
index 00000000..53af80d3
--- /dev/null
+++ b/maps/Route16FuchsiaSpeechHouse.asm
@@ -0,0 +1,37 @@
+ const_def 2 ; object constants
+ const ROUTE16FUCHSIASPEECHHOUSE_SUPER_NERD
+
+Route16FuchsiaSpeechHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Route16FuchsiaSpeechHouseSuperNerdScript:
+ jumptextfaceplayer Route16FuchsiaSpeechHouseSuperNerdText
+
+Route16FuchsiaSpeechHouseBookshelf:
+ jumpstd picturebookshelf
+
+Route16FuchsiaSpeechHouseSuperNerdText:
+ text "If you cruise down"
+ line "CYCLING ROAD, you"
+
+ para "will end up in"
+ line "FUCHSIA CITY."
+ done
+
+Route16FuchsiaSpeechHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, ROUTE_16, 1
+ warp_event 3, 7, ROUTE_16, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 0, 1, BGEVENT_READ, Route16FuchsiaSpeechHouseBookshelf
+ bg_event 1, 1, BGEVENT_READ, Route16FuchsiaSpeechHouseBookshelf
+
+ db 1 ; object events
+ object_event 2, 3, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route16FuchsiaSpeechHouseSuperNerdScript, -1
diff --git a/maps/Route16Gate.asm b/maps/Route16Gate.asm
new file mode 100644
index 00000000..fb135e1b
--- /dev/null
+++ b/maps/Route16Gate.asm
@@ -0,0 +1,77 @@
+ const_def 2 ; object constants
+ const ROUTE16GATE_OFFICER
+
+Route16Gate_MapScripts:
+ db 1 ; scene scripts
+ scene_script .DummyScene ; SCENE_DEFAULT
+
+ db 0 ; callbacks
+
+.DummyScene:
+ end
+
+Route16GateOfficerScript:
+ jumptextfaceplayer Route16GateOfficerText
+
+Route16GateBicycleCheck:
+ checkitem BICYCLE
+ iffalse .NoBicycle
+ end
+
+.NoBicycle:
+ showemote EMOTE_SHOCK, ROUTE16GATE_OFFICER, 15
+ turnobject PLAYER, UP
+ opentext
+ writetext Route16GateCannotPassText
+ waitbutton
+ closetext
+ applymovement PLAYER, Route16GateCannotPassMovement
+ end
+
+Route16GateCannotPassMovement:
+ step RIGHT
+ turn_head LEFT
+ step_end
+
+Route16GateOfficerText:
+ text "CYCLING ROAD"
+ line "starts here."
+
+ para "It's all downhill,"
+ line "so it's totally"
+ cont "exhilarating."
+
+ para "It's a great sort"
+ line "of feeling that"
+
+ para "you can't get from"
+ line "a ship or train."
+ done
+
+Route16GateCannotPassText:
+ text "Hey! Whoa! Stop!"
+
+ para "You can't go out"
+ line "on the CYCLING"
+
+ para "ROAD without a"
+ line "BICYCLE."
+ done
+
+Route16Gate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 0, 4, ROUTE_16, 4
+ warp_event 0, 5, ROUTE_16, 5
+ warp_event 9, 4, ROUTE_16, 2
+ warp_event 9, 5, ROUTE_16, 3
+
+ db 2 ; coord events
+ coord_event 5, 4, SCENE_DEFAULT, Route16GateBicycleCheck
+ coord_event 5, 5, SCENE_DEFAULT, Route16GateBicycleCheck
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 5, 2, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route16GateOfficerScript, -1
diff --git a/maps/Route17Route18Gate.asm b/maps/Route17Route18Gate.asm
new file mode 100644
index 00000000..0e434a71
--- /dev/null
+++ b/maps/Route17Route18Gate.asm
@@ -0,0 +1,68 @@
+ const_def 2 ; object constants
+ const ROUTE17ROUTE18GATE_OFFICER
+
+Route17Route18Gate_MapScripts:
+ db 1 ; scene scripts
+ scene_script .DummyScene ; SCENE_DEFAULT
+
+ db 0 ; callbacks
+
+.DummyScene:
+ end
+
+Route17Route18GateOfficerScript:
+ jumptextfaceplayer Route17Route18GateOfficerText
+
+Route17Route18GateBicycleCheck:
+ checkitem BICYCLE
+ iffalse .NoBicycle
+ end
+
+.NoBicycle:
+ showemote EMOTE_SHOCK, ROUTE17ROUTE18GATE_OFFICER, 15
+ turnobject PLAYER, UP
+ opentext
+ writetext Route17Route18GateCannotPassText
+ waitbutton
+ closetext
+ applymovement PLAYER, Route17Route18GateCannotPassMovement
+ end
+
+Route17Route18GateCannotPassMovement:
+ step RIGHT
+ turn_head LEFT
+ step_end
+
+Route17Route18GateOfficerText:
+ text "CYCLING ROAD"
+ line "Uphill Starts Here"
+ done
+
+Route17Route18GateCannotPassText:
+ text "Hang on! Don't you"
+ line "have a BICYCLE?"
+
+ para "The CYCLING ROAD"
+ line "is beyond here."
+
+ para "You have to have a"
+ line "BICYCLE to go on."
+ done
+
+Route17Route18Gate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 0, 4, ROUTE_17, 1
+ warp_event 0, 5, ROUTE_17, 2
+ warp_event 9, 4, ROUTE_18, 1
+ warp_event 9, 5, ROUTE_18, 2
+
+ db 2 ; coord events
+ coord_event 5, 4, SCENE_DEFAULT, Route17Route18GateBicycleCheck
+ coord_event 5, 5, SCENE_DEFAULT, Route17Route18GateBicycleCheck
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 5, 2, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route17Route18GateOfficerScript, -1
diff --git a/maps/Route7SaffronGate.asm b/maps/Route7SaffronGate.asm
new file mode 100644
index 00000000..67a8c681
--- /dev/null
+++ b/maps/Route7SaffronGate.asm
@@ -0,0 +1,60 @@
+ const_def 2 ; object constants
+ const ROUTE7SAFFRONGATE_OFFICER
+
+Route7SaffronGate_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Route7SaffronGuardScript:
+ faceplayer
+ opentext
+ checkevent EVENT_RETURNED_MACHINE_PART
+ iftrue .ReturnedPart
+ writetext Route7SaffronGuardPowerPlantText
+ waitbutton
+ closetext
+ end
+
+.ReturnedPart:
+ writetext Route7SaffronGuardSeriousText
+ waitbutton
+ closetext
+ end
+
+Route7SaffronGuardPowerPlantText:
+ text "Did you hear about"
+ line "the accident at"
+ cont "the POWER PLANT?"
+
+ para "It's located in"
+ line "the East, close to"
+ cont "LAVENDER TOWN."
+ done
+
+Route7SaffronGuardSeriousText:
+ text "I take my GUARD"
+ line "job seriously."
+
+ para "Hey! You have a"
+ line "#DEX."
+
+ para "OK. You can go"
+ line "through."
+ done
+
+Route7SaffronGate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 0, 4, ROUTE_7, 1
+ warp_event 0, 5, ROUTE_7, 2
+ warp_event 9, 4, SAFFRON_CITY, 10
+ warp_event 9, 5, SAFFRON_CITY, 11
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 5, 2, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route7SaffronGuardScript, -1