summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xengine/specials.asm16
-rw-r--r--main.asm31
-rw-r--r--maps/BlackthornDragonSpeechHouse.asm54
-rw-r--r--maps/BlackthornEmysHouse.asm34
-rw-r--r--maps/BlackthornGym1F.asm427
-rw-r--r--maps/BlackthornGym2F.asm155
-rw-r--r--maps/BlackthornMart.asm61
-rw-r--r--maps/BlackthornPokecenter1F.asm66
-rw-r--r--maps/CinnabarPokecenter1F.asm50
-rw-r--r--maps/CinnabarPokecenter2FBeta.asm16
-rw-r--r--maps/LakeOfRageHiddenPowerHouse.asm82
-rw-r--r--maps/LakeOfRageMagikarpHouse.asm222
-rw-r--r--maps/MoveDeletersHouse.asm34
-rw-r--r--maps/Route19FuchsiaGate.asm60
-rw-r--r--maps/Route43Gate.asm263
-rw-r--r--maps/Route43MahoganyGate.asm53
-rw-r--r--maps/SeafoamGym.asm170
17 files changed, 1770 insertions, 24 deletions
diff --git a/engine/specials.asm b/engine/specials.asm
index c005455e..100979ff 100755
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -93,10 +93,10 @@ SpecialsPointers:
add_special RestartMapMusic
add_special HealMachineAnim
add_special SurfStartStep
- add_special FindGreaterThanThatLevel
- add_special FindAtLeastThatHappy
- add_special FindThatSpecies
- add_special FindThatSpeciesYourTrainerID
+ add_special FindPartyMonAboveLevel
+ add_special FindPartyMonAtLeastThatHappy
+ add_special FindPartyMonThatSpecies
+ add_special FindPartyMonThatSpeciesYourTrainerID
add_special UnusedCheckUnusedTwoDayTimer
add_special DayCareMon1
add_special DayCareMon2
@@ -167,28 +167,28 @@ UnusedSetSeenMon: ; c3ac
call SetSeenMon
ret
-FindGreaterThanThatLevel: ; c3b4
+FindPartyMonAboveLevel: ; c3b4
ld a, [wScriptVar]
ld b, a
callba PartySearch_MaximumLevel ; same bank
jr z, asm_c3f2
jr asm_c3ec
-FindAtLeastThatHappy: ; c3c2
+FindPartyMonAtLeastThatHappy: ; c3c2
ld a, [wScriptVar]
ld b, a
callba PartySearch_MinimumHappiness ; same bank
jr z, asm_c3f2
jr asm_c3ec
-FindThatSpecies: ; c3d0
+FindPartyMonThatSpecies: ; c3d0
ld a, [wScriptVar]
ld b, a
callba PartySearch_SameSpecies ; same bank
jr z, asm_c3f2
jr asm_c3ec
-FindThatSpeciesYourTrainerID: ; c3de
+FindPartyMonThatSpeciesYourTrainerID: ; c3de
ld a, [wScriptVar]
ld b, a
callba PartySearch_SameSpeciesAndYourID ; same bank
diff --git a/main.asm b/main.asm
index 96428d2a..f8e18fe6 100644
--- a/main.asm
+++ b/main.asm
@@ -1743,22 +1743,21 @@ SECTION "bank52", ROMX, BANK[$52]
dr $148000, $14c000
SECTION "bank53", ROMX, BANK[$53]
-;INCLUDE "maps/BlackthornGym1F.asm"
-;INCLUDE "maps/BlackthornGym2F.asm"
-;INCLUDE "maps/BlackthornDragonSpeechHouse.asm"
-;INCLUDE "maps/BlackthornEmysHouse.asm"
-;INCLUDE "maps/BlackthornMart.asm"
-;INCLUDE "maps/BlackthornPokecenter1F.asm"
-;INCLUDE "maps/MoveDeletersHouse.asm"
-;INCLUDE "maps/CinnabarPokecenter1F.asm"
-;INCLUDE "maps/CinnabarPokecenter2FBeta.asm"
-;INCLUDE "maps/Route19FuchsiaGate.asm"
-;INCLUDE "maps/SeafoamGym.asm"
-;INCLUDE "maps/LakeOfRageHiddenPowerHouse.asm"
-;INCLUDE "maps/LakeOfRageMagikarpHouse.asm"
-;INCLUDE "maps/Route43MahoganyGate.asm"
-;INCLUDE "maps/Route43Gate.asm"
- dr $14c000, $150000
+INCLUDE "maps/BlackthornGym1F.asm"
+INCLUDE "maps/BlackthornGym2F.asm"
+INCLUDE "maps/BlackthornDragonSpeechHouse.asm"
+INCLUDE "maps/BlackthornEmysHouse.asm"
+INCLUDE "maps/BlackthornMart.asm"
+INCLUDE "maps/BlackthornPokecenter1F.asm"
+INCLUDE "maps/MoveDeletersHouse.asm"
+INCLUDE "maps/CinnabarPokecenter1F.asm"
+INCLUDE "maps/CinnabarPokecenter2FBeta.asm"
+INCLUDE "maps/Route19FuchsiaGate.asm"
+INCLUDE "maps/SeafoamGym.asm"
+INCLUDE "maps/LakeOfRageHiddenPowerHouse.asm"
+INCLUDE "maps/LakeOfRageMagikarpHouse.asm"
+INCLUDE "maps/Route43MahoganyGate.asm"
+INCLUDE "maps/Route43Gate.asm"
SECTION "bank54", ROMX, BANK[$54]
INCLUDE "maps/CeruleanGymBadgeSpeechHouse.asm"
diff --git a/maps/BlackthornDragonSpeechHouse.asm b/maps/BlackthornDragonSpeechHouse.asm
new file mode 100644
index 00000000..260a3a3c
--- /dev/null
+++ b/maps/BlackthornDragonSpeechHouse.asm
@@ -0,0 +1,54 @@
+ const_def 2 ; object constants
+ const BLACKTHORNDRAGONSPEECHHOUSE_GRANNY
+ const BLACKTHORNDRAGONSPEECHHOUSE_EKANS
+
+BlackthornDragonSpeechHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+BlackthornDragonSpeechHouseGrannyScript:
+ jumptextfaceplayer BlackthornDragonSpeechHouseGrannyText
+
+BlackthornDragonSpeechHouseDratiniScript:
+ opentext
+ writetext BlackthornDragonSpeechHouseDratiniText
+ cry DRATINI
+ waitbutton
+ closetext
+ end
+
+; unused
+BlackthornDragonSpeechHousePictureBookshelf:
+ jumpstd picturebookshelf
+
+; unused
+BlackthornDragonSpeechHouseMagazineBookshelf:
+ jumpstd magazinebookshelf
+
+BlackthornDragonSpeechHouseGrannyText:
+ text "CLAIR and LANCE"
+ line "trained here to"
+
+ para "hone their skills"
+ line "as trainers."
+ done
+
+BlackthornDragonSpeechHouseDratiniText:
+ text "DRATINI: Draa!"
+ done
+
+BlackthornDragonSpeechHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, BLACKTHORN_CITY, 2
+ warp_event 3, 7, BLACKTHORN_CITY, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 2 ; object events
+ object_event 2, 3, SPRITE_GRANNY, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornDragonSpeechHouseGrannyScript, -1
+ object_event 5, 5, SPRITE_EKANS, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, BlackthornDragonSpeechHouseDratiniScript, -1
diff --git a/maps/BlackthornEmysHouse.asm b/maps/BlackthornEmysHouse.asm
new file mode 100644
index 00000000..01fffb4d
--- /dev/null
+++ b/maps/BlackthornEmysHouse.asm
@@ -0,0 +1,34 @@
+ const_def 2 ; object constants
+ const BLACKTHORNEMYSHOUSE_EMY
+
+BlackthornEmysHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Emy:
+ faceplayer
+ opentext
+ trade NPC_TRADE_EMY
+ waitbutton
+ closetext
+ end
+
+EmysHouseBookshelf:
+ jumpstd magazinebookshelf
+
+BlackthornEmysHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, BLACKTHORN_CITY, 3
+ warp_event 3, 7, BLACKTHORN_CITY, 3
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 0, 1, BGEVENT_READ, EmysHouseBookshelf
+ bg_event 1, 1, BGEVENT_READ, EmysHouseBookshelf
+
+ db 1 ; object events
+ object_event 2, 3, SPRITE_LASS, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Emy, -1
diff --git a/maps/BlackthornGym1F.asm b/maps/BlackthornGym1F.asm
new file mode 100644
index 00000000..d4a3a71a
--- /dev/null
+++ b/maps/BlackthornGym1F.asm
@@ -0,0 +1,427 @@
+ const_def 2 ; object constants
+ const BLACKTHORNGYM1F_CLAIR
+ const BLACKTHORNGYM1F_COOLTRAINER_M1
+ const BLACKTHORNGYM1F_COOLTRAINER_M2
+ const BLACKTHORNGYM1F_COOLTRAINER_F
+ const BLACKTHORNGYM1F_GYM_GUY
+
+BlackthornGym1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .Boulders
+
+.Boulders:
+ checkevent EVENT_BOULDER_IN_BLACKTHORN_GYM_1
+ iffalse .skip1
+ changeblock 8, 2, $3b ; fallen boulder 2
+.skip1
+ checkevent EVENT_BOULDER_IN_BLACKTHORN_GYM_2
+ iffalse .skip2
+ changeblock 2, 4, $3a ; fallen boulder 1
+.skip2
+ checkevent EVENT_BOULDER_IN_BLACKTHORN_GYM_3
+ iffalse .skip3
+ changeblock 8, 6, $3b ; fallen boulder 2
+.skip3
+ return
+
+BlackthornGymClairScript:
+ faceplayer
+ opentext
+ checkflag ENGINE_RISINGBADGE
+ iftrue .AlreadyGotBadge
+ checkevent EVENT_BEAT_CLAIR
+ iftrue .FightDone
+ writetext ClairIntroText
+ waitbutton
+ closetext
+ winlosstext ClairWinText, 0
+ loadtrainer CLAIR, CLAIR1
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_CLAIR
+ opentext
+ writetext ClairText_GoToDragonsDen
+ waitbutton
+ closetext
+ setevent EVENT_BEAT_COOLTRAINERM_PAUL
+ setevent EVENT_BEAT_COOLTRAINERM_CODY
+ setevent EVENT_BEAT_COOLTRAINERM_MIKE
+ setevent EVENT_BEAT_COOLTRAINERF_FRAN
+ setevent EVENT_BEAT_COOLTRAINERF_LOLA
+ clearevent EVENT_MAHOGANY_MART_OWNERS
+ setevent EVENT_BLACKTHORN_CITY_GRAMPS_BLOCKS_DRAGONS_DEN
+ clearevent EVENT_BLACKTHORN_CITY_GRAMPS_NOT_BLOCKING_DRAGONS_DEN
+ end
+
+.FightDone:
+ checkitem DRAGON_FANG
+ iftrue .HasDragonFang
+ writetext ClairText_TooMuchToExpect
+ waitbutton
+ closetext
+ end
+
+.HasDragonFang:
+ writetext BlackthornGymClairText_Cheat
+ waitbutton
+ closetext
+ end
+
+.AlreadyGotBadge:
+ checkevent EVENT_GOT_TM24_DRAGONBREATH
+ iftrue .GotTM24
+ writetext BlackthornGymClairText_YouKeptMeWaiting
+ buttonsound
+ verbosegiveitem TM_DRAGONBREATH
+ iffalse .BagFull
+ setevent EVENT_GOT_TM24_DRAGONBREATH
+ writetext BlackthornGymClairText_DescribeTM24
+ waitbutton
+ closetext
+ end
+
+.GotTM24:
+ writetext BlackthornGymClairText_League
+ waitbutton
+.BagFull:
+ closetext
+ end
+
+TrainerCooltrainermPaul:
+ trainer COOLTRAINERM, PAUL, EVENT_BEAT_COOLTRAINERM_PAUL, CooltrainermPaulSeenText, CooltrainermPaulBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainermPaulAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerCooltrainermMike:
+ trainer COOLTRAINERM, MIKE, EVENT_BEAT_COOLTRAINERM_MIKE, CooltrainermMikeSeenText, CooltrainermMikeBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainermMikeAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerCooltrainerfLola:
+ trainer COOLTRAINERF, LOLA, EVENT_BEAT_COOLTRAINERF_LOLA, CooltrainerfLolaSeenText, CooltrainerfLolaBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainerfLolaAfterBattleText
+ waitbutton
+ closetext
+ end
+
+BlackthornGymGuyScript:
+ faceplayer
+ opentext
+ checkevent EVENT_BEAT_CLAIR
+ iftrue .BlackthornGymGuyWinScript
+ writetext BlackthornGymGuyText
+ waitbutton
+ closetext
+ end
+
+.BlackthornGymGuyWinScript:
+ writetext BlackthornGymGuyWinText
+ waitbutton
+ closetext
+ end
+
+BlackthornGymStatue:
+ checkflag ENGINE_RISINGBADGE
+ iftrue .Beaten
+ jumpstd gymstatue1
+.Beaten:
+ trainertotext CLAIR, CLAIR1, MEM_BUFFER_1
+ jumpstd gymstatue2
+
+ClairIntroText:
+ text "I am CLAIR. I'm"
+ line "the world's best"
+ cont "dragon master."
+
+ para "I can hold my own"
+ line "against even the"
+
+ para "#MON LEAGUE's"
+ line "ELITE FOUR."
+
+ para "Do you still want"
+ line "to take me on?"
+
+ para "…Fine."
+ line "Let's do it!"
+
+ para "As a trainer, I"
+ line "will use my full"
+
+ para "power against any"
+ line "opponent!"
+ done
+
+ClairWinText:
+ text "I lost?"
+
+ para "I don't believe"
+ line "it. There must be"
+ cont "some mistake…"
+ done
+
+ClairText_GoToDragonsDen:
+ text "I won't admit"
+ line "this."
+
+ para "I may have lost,"
+ line "but you're still"
+
+ para "not ready for the"
+ line "#MON LEAGUE."
+
+ para "I know. You should"
+ line "take the dragon"
+ cont "user challenge."
+
+ para "Behind this GYM is"
+ line "a place called"
+ cont "DRAGON'S DEN."
+
+ para "Go and bring me"
+ line "the DRAGON FANG"
+
+ para "from deep inside"
+ line "the DEN."
+
+ para "That is the test"
+ line "to be accepted as"
+
+ para "a true dragon"
+ line "user."
+
+ para "If you can do"
+ line "that, I will ac-"
+ cont "cept you as a"
+ cont "worthy trainer."
+
+ para "Until then, I"
+ line "won't give you a"
+ cont "BADGE."
+ done
+
+ClairText_TooMuchToExpect:
+ text "CLAIR: What's"
+ line "the matter?"
+
+ para "This errand won't"
+ line "be hard for you,"
+
+ para "unless your vic-"
+ line "tory was a fluke."
+ done
+
+BlackthornGymClairText_Cheat:
+ text "CLAIR: You did"
+ line "not get that at"
+ cont "DRAGON'S DEN."
+
+ para "Trying to cheat"
+ line "like that…"
+
+ para "I'm disappointed"
+ line "in you."
+ done
+
+BlackthornGymClairText_YouKeptMeWaiting:
+ text "CLAIR: You have"
+ line "proven yourself to"
+ cont "me."
+
+ para "I want you to have"
+ line "this TM."
+ done
+
+BlackthornGymText_ReceivedTM24:
+ text "<PLAYER> received"
+ line "TM24."
+ done
+
+BlackthornGymClairText_DescribeTM24:
+ text "That contains"
+ line "DRAGONBREATH."
+
+ para "No, it doesn't"
+ line "have anything to"
+ cont "do with my breath."
+
+ para "If you don't want"
+ line "it, you don't have"
+ cont "to take it."
+ done
+
+BlackthornGymClairText_BagFull:
+BlackthornGymClairText_League:
+ text "So you've col-"
+ line "lected all the"
+ cont "BADGES."
+
+ para "Your destination"
+ line "is the #MON"
+
+ para "LEAGUE in INDIGO"
+ line "PLATEAU."
+
+ para "Do you know how to"
+ line "get there?"
+
+ para "From here, go to"
+ line "NEW BARK TOWN."
+
+ para "Then SURF east."
+ line "The route there is"
+ cont "very tough."
+
+ para "Don't you dare"
+ line "lose at the #-"
+ cont "MON LEAGUE!"
+
+ para "If you do, I'll"
+ line "feel even worse"
+
+ para "about having lost"
+ line "to you!"
+ done
+
+CooltrainermPaulSeenText:
+ text "Your first battle"
+ line "against dragons?"
+
+ para "I'll show you how"
+ line "tough they are!"
+ done
+
+CooltrainermPaulBeatenText:
+ text "I'm disappointed."
+ done
+
+CooltrainermPaulAfterBattleText:
+ text "You've met LANCE,"
+ line "the dragon master?"
+
+ para "That just can't be"
+ line "true."
+ done
+
+CooltrainermMikeSeenText:
+ text "My chance of"
+ line "losing? Not even"
+ cont "one percent!"
+ done
+
+CooltrainermMikeBeatenText:
+ text "That's odd."
+ done
+
+CooltrainermMikeAfterBattleText:
+ text "I know my short-"
+ line "comings now."
+
+ para "Thanks for showing"
+ line "me!"
+ done
+
+CooltrainerfLolaSeenText:
+ text "Dragons are sacred"
+ line "#MON."
+
+ para "They are full of"
+ line "life energy."
+
+ para "If you're not"
+ line "serious, you won't"
+
+ para "be able to beat"
+ line "them."
+ done
+
+CooltrainerfLolaBeatenText:
+ text "Way to go!"
+ done
+
+CooltrainerfLolaAfterBattleText:
+ text "Dragons are weak"
+ line "against dragon-"
+ cont "type moves."
+ done
+
+BlackthornGymGuyText:
+ text "Yo! CHAMP in"
+ line "making!"
+
+ para "It's been a long"
+ line "journey, but we"
+
+ para "are almost done!"
+ line "Count on me!"
+
+ para "CLAIR uses the"
+ line "mythical and sac-"
+ cont "red dragon-type"
+ cont "#MON."
+
+ para "You can't damage"
+ line "them very easily."
+
+ para "But you know,"
+ line "they're supposed"
+
+ para "to be weak against"
+ line "ice-type moves."
+ done
+
+BlackthornGymGuyWinText:
+ text "You were great to"
+ line "beat CLAIR!"
+
+ para "All that's left is"
+ line "the #MON LEAGUE"
+ cont "challenge."
+
+ para "You're on the way"
+ line "to becoming the"
+ cont "#MON CHAMPION!"
+ done
+
+BlackthornGym1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 7 ; warp events
+ warp_event 4, 17, BLACKTHORN_CITY, 1
+ warp_event 5, 17, BLACKTHORN_CITY, 1
+ warp_event 1, 7, BLACKTHORN_GYM_2F, 1
+ warp_event 7, 9, BLACKTHORN_GYM_2F, 2
+ warp_event 2, 6, BLACKTHORN_GYM_2F, 3
+ warp_event 7, 7, BLACKTHORN_GYM_2F, 4
+ warp_event 7, 6, BLACKTHORN_GYM_2F, 5
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 3, 15, BGEVENT_READ, BlackthornGymStatue
+ bg_event 6, 15, BGEVENT_READ, BlackthornGymStatue
+
+ db 5 ; object events
+ object_event 5, 3, SPRITE_CLAIR, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, BlackthornGymClairScript, -1
+ object_event 6, 6, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 3, TrainerCooltrainermMike, -1
+ object_event 1, 14, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 3, TrainerCooltrainermPaul, -1
+ object_event 9, 2, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerCooltrainerfLola, -1
+ object_event 7, 15, SPRITE_GYM_GUY, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, BlackthornGymGuyScript, -1
diff --git a/maps/BlackthornGym2F.asm b/maps/BlackthornGym2F.asm
new file mode 100644
index 00000000..73fdb2d3
--- /dev/null
+++ b/maps/BlackthornGym2F.asm
@@ -0,0 +1,155 @@
+ const_def 2 ; object constants
+ const BLACKTHORNGYM2F_COOLTRAINER_M
+ const BLACKTHORNGYM2F_COOLTRAINER_F
+ const BLACKTHORNGYM2F_BOULDER1
+ const BLACKTHORNGYM2F_BOULDER2
+ const BLACKTHORNGYM2F_BOULDER3
+ const BLACKTHORNGYM2F_BOULDER4
+ const BLACKTHORNGYM2F_BOULDER5
+ const BLACKTHORNGYM2F_BOULDER6
+
+BlackthornGym2F_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_CMDQUEUE, .SetUpStoneTable
+
+.SetUpStoneTable:
+ writecmdqueue .CommandQueue
+ return
+
+.CommandQueue:
+ cmdqueue CMDQUEUE_STONETABLE, .StoneTable ; check if any stones are sitting on a warp
+
+.StoneTable:
+ stonetable 5, BLACKTHORNGYM2F_BOULDER1, .Boulder1
+ stonetable 3, BLACKTHORNGYM2F_BOULDER2, .Boulder2
+ stonetable 4, BLACKTHORNGYM2F_BOULDER3, .Boulder3
+ db -1 ; end
+
+.Boulder1:
+ disappear BLACKTHORNGYM2F_BOULDER1
+ jump .Fall
+
+.Boulder2:
+ disappear BLACKTHORNGYM2F_BOULDER2
+ jump .Fall
+
+.Boulder3:
+ disappear BLACKTHORNGYM2F_BOULDER3
+ jump .Fall
+
+.Fall:
+ pause 30
+ scall .FX
+ opentext
+ writetext BlackthornGym2FBoulderFellText
+ waitbutton
+ closetext
+ end
+
+.FX:
+ playsound SFX_STRENGTH
+ earthquake 80
+ end
+
+BlackthornGymBoulder:
+ jumpstd strengthboulder
+
+TrainerCooltrainermCody:
+ trainer COOLTRAINERM, CODY, EVENT_BEAT_COOLTRAINERM_CODY, CooltrainermCodySeenText, CooltrainermCodyBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainermCodyAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerCooltrainerfFran:
+ trainer COOLTRAINERF, FRAN, EVENT_BEAT_COOLTRAINERF_FRAN, CooltrainerfFranSeenText, CooltrainerfFranBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext CooltrainerfFranAfterBattleText
+ waitbutton
+ closetext
+ end
+
+CooltrainermCodySeenText:
+ text "It's not as if we"
+ line "all use dragon-"
+ cont "type #MON."
+
+ para "My policy is to"
+ line "use #MON that"
+
+ para "are stronger than"
+ line "dragon #MON."
+ done
+
+CooltrainermCodyBeatenText:
+ text "You are special…"
+ done
+
+CooltrainermCodyAfterBattleText:
+ text "But just watch!"
+ line "My #MON will"
+
+ para "become even more"
+ line "powerful."
+
+ para "We'll be tougher"
+ line "as a trainer and"
+ cont "#MON team."
+ done
+
+CooltrainerfFranSeenText:
+ text "We go through rig-"
+ line "orous training un-"
+ cont "der CLAIR. I can't"
+ cont "afford to lose."
+ done
+
+CooltrainerfFranBeatenText:
+ text "Arrrgh! I'm so"
+ line "disgusted!"
+ done
+
+CooltrainerfFranAfterBattleText:
+ text "Whew…"
+
+ para "I'll have to re-"
+ line "think my training…"
+ done
+
+BlackthornGym2FBoulderFellText:
+ text "The boulder fell"
+ line "through!"
+ done
+
+BlackthornGym2F_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 1, 7, BLACKTHORN_GYM_1F, 3
+ warp_event 7, 9, BLACKTHORN_GYM_1F, 4
+ warp_event 2, 5, BLACKTHORN_GYM_1F, 5 ; hole
+ warp_event 8, 7, BLACKTHORN_GYM_1F, 6 ; hole
+ warp_event 8, 3, BLACKTHORN_GYM_1F, 7 ; hole
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 8 ; object events
+ object_event 4, 1, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerCooltrainermCody, -1
+ object_event 4, 11, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 1, TrainerCooltrainerfFran, -1
+ object_event 8, 2, SPRITE_BOULDER, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_1
+ object_event 2, 3, SPRITE_BOULDER, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_2
+ object_event 6, 16, SPRITE_BOULDER, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornGymBoulder, EVENT_BOULDER_IN_BLACKTHORN_GYM_3
+ object_event 3, 3, SPRITE_BOULDER, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornGymBoulder, -1
+ object_event 6, 1, SPRITE_BOULDER, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornGymBoulder, -1
+ object_event 8, 14, SPRITE_BOULDER, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornGymBoulder, -1
diff --git a/maps/BlackthornMart.asm b/maps/BlackthornMart.asm
new file mode 100644
index 00000000..c7a61af0
--- /dev/null
+++ b/maps/BlackthornMart.asm
@@ -0,0 +1,61 @@
+ const_def 2 ; object constants
+ const BLACKTHORNMART_CLERK
+ const BLACKTHORNMART_COOLTRAINER_M
+ const BLACKTHORNMART_BLACK_BELT
+
+BlackthornMart_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+BlackthornMartClerkScript:
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_BLACKTHORN
+ closetext
+ end
+
+BlackthornMartCooltrainerMScript:
+ jumptextfaceplayer BlackthornMartCooltrainerMText
+
+BlackthornMartBlackBeltScript:
+ jumptextfaceplayer BlackthornMartBlackBeltText
+
+BlackthornMartCooltrainerMText:
+ text "You can't buy MAX"
+ line "REVIVE, but it"
+
+ para "fully restores a"
+ line "fainted #MON."
+
+ para "Beware--it won't"
+ line "restore PP, the"
+
+ para "POWER POINTS"
+ line "needed for moves."
+ done
+
+BlackthornMartBlackBeltText:
+ text "MAX REPEL keeps"
+ line "weak #MON away"
+ cont "from you."
+
+ para "It's the longest"
+ line "lasting of the"
+ cont "REPEL sprays."
+ done
+
+BlackthornMart_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, BLACKTHORN_CITY, 4
+ warp_event 3, 7, BLACKTHORN_CITY, 4
+
+ 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, BlackthornMartClerkScript, -1
+ object_event 7, 6, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 2, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornMartCooltrainerMScript, -1
+ object_event 5, 2, SPRITE_BLACK_BELT, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, BlackthornMartBlackBeltScript, -1
diff --git a/maps/BlackthornPokecenter1F.asm b/maps/BlackthornPokecenter1F.asm
new file mode 100644
index 00000000..a6e44a88
--- /dev/null
+++ b/maps/BlackthornPokecenter1F.asm
@@ -0,0 +1,66 @@
+ const_def 2 ; object constants
+ const BLACKTHORNPOKECENTER1F_NURSE
+ const BLACKTHORNPOKECENTER1F_GENTLEMAN
+ const BLACKTHORNPOKECENTER1F_TWIN
+ const BLACKTHORNPOKECENTER1F_COOLTRAINER_M
+
+BlackthornPokecenter1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+BlackthornPokecenter1FNurseScript:
+ jumpstd pokecenternurse
+
+BlackthornPokecenter1FGentlemanScript:
+ jumptextfaceplayer BlackthornPokecenter1FGentlemanText
+
+BlackthornPokecenter1FTwinScript:
+ jumptextfaceplayer BlackthornPokecenter1FTwinText
+
+BlackthornPokecenter1FCooltrainerMScript:
+ jumpstd happinesschecknpc
+
+BlackthornPokecenter1FGentlemanText:
+ text "Deep inside far-"
+ line "off INDIGO PLATEAU"
+
+ para "is the #MON"
+ line "LEAGUE."
+
+ para "I hear the best"
+ line "trainers gather"
+
+ para "there from around"
+ line "the country."
+ done
+
+BlackthornPokecenter1FTwinText:
+ text "There was this"
+ line "move I just had"
+
+ para "to teach my #-"
+ line "MON."
+
+ para "So I got the MOVE"
+ line "DELETER to make it"
+ cont "forget an HM move."
+ done
+
+BlackthornPokecenter1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 7, BLACKTHORN_CITY, 5
+ warp_event 4, 7, BLACKTHORN_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, BlackthornPokecenter1FNurseScript, -1
+ object_event 5, 3, SPRITE_GENTLEMAN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, BlackthornPokecenter1FGentlemanScript, -1
+ object_event 1, 4, SPRITE_TWIN, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, BlackthornPokecenter1FTwinScript, -1
+ object_event 7, 6, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, BlackthornPokecenter1FCooltrainerMScript, -1
diff --git a/maps/CinnabarPokecenter1F.asm b/maps/CinnabarPokecenter1F.asm
new file mode 100644
index 00000000..9100f73b
--- /dev/null
+++ b/maps/CinnabarPokecenter1F.asm
@@ -0,0 +1,50 @@
+ const_def 2 ; object constants
+ const CINNABARPOKECENTER1F_NURSE
+ const CINNABARPOKECENTER1F_COOLTRAINER_F
+ const CINNABARPOKECENTER1F_FISHER
+
+CinnabarPokecenter1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CinnabarPokecenter1FNurseScript:
+ jumpstd pokecenternurse
+
+CinnabarPokecenter1FCooltrainerFScript:
+ jumptextfaceplayer CinnabarPokecenter1FCooltrainerFText
+
+CinnabarPokecenter1FFisherScript:
+ jumptextfaceplayer CinnabarPokecenter1FFisherText
+
+CinnabarPokecenter1FCooltrainerFText:
+ text "CINNABAR GYM's"
+ line "BLAINE apparently"
+
+ para "lives alone in the"
+ line "SEAFOAM ISLANDS"
+ cont "cave…"
+ done
+
+CinnabarPokecenter1FFisherText:
+ text "It's been a year"
+ line "since the volcano"
+ cont "erupted."
+ done
+
+CinnabarPokecenter1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 7, CINNABAR_ISLAND, 1
+ warp_event 4, 7, CINNABAR_ISLAND, 1
+ warp_event 0, 7, POKECENTER_2F, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 3 ; object events
+ object_event 3, 1, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, CinnabarPokecenter1FNurseScript, -1
+ object_event 7, 6, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 2, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, CinnabarPokecenter1FCooltrainerFScript, -1
+ object_event 2, 4, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CinnabarPokecenter1FFisherScript, -1
diff --git a/maps/CinnabarPokecenter2FBeta.asm b/maps/CinnabarPokecenter2FBeta.asm
new file mode 100644
index 00000000..cf100a4a
--- /dev/null
+++ b/maps/CinnabarPokecenter2FBeta.asm
@@ -0,0 +1,16 @@
+CinnabarPokecenter2FBeta_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+CinnabarPokecenter2FBeta_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 0, 7, CINNABAR_POKECENTER_1F, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 0 ; object events
diff --git a/maps/LakeOfRageHiddenPowerHouse.asm b/maps/LakeOfRageHiddenPowerHouse.asm
new file mode 100644
index 00000000..177d7ea2
--- /dev/null
+++ b/maps/LakeOfRageHiddenPowerHouse.asm
@@ -0,0 +1,82 @@
+ const_def 2 ; object constants
+ const LAKEOFRAGEHIDDENPOWERHOUSE_FISHER
+
+LakeOfRageHiddenPowerHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+HiddenPowerGuy:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_TM10_HIDDEN_POWER
+ iftrue .AlreadyGotItem
+ writetext HiddenPowerGuyText1
+ buttonsound
+ verbosegiveitem TM_HIDDEN_POWER
+ iffalse .Done
+ setevent EVENT_GOT_TM10_HIDDEN_POWER
+ writetext HiddenPowerGuyText2
+ waitbutton
+ closetext
+ end
+.AlreadyGotItem:
+ writetext HiddenPowerGuyText3
+ waitbutton
+.Done:
+ closetext
+ end
+
+HiddenPowerHouseBookshelf:
+ jumpstd difficultbookshelf
+
+HiddenPowerGuyText1:
+ text "…You have strayed"
+ line "far…"
+
+ para "Here I have medi-"
+ line "tated. Inside me,"
+
+ para "a new power has"
+ line "been awakened."
+
+ para "Let me share my"
+ line "power with your"
+
+ para "#MON."
+ line "Take this, child."
+ done
+
+HiddenPowerGuyText2:
+ text "Do you see it? It"
+ line "is HIDDEN POWER!"
+
+ para "It draws out the"
+ line "power of #MON"
+ cont "for attacking."
+
+ para "Remember this: its"
+ line "type and power de-"
+ cont "pend on the #-"
+ cont "MON using it."
+ done
+
+HiddenPowerGuyText3:
+ text "I am meditating…"
+ done
+
+LakeOfRageHiddenPowerHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, LAKE_OF_RAGE, 1
+ warp_event 3, 7, LAKE_OF_RAGE, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 0, 1, BGEVENT_READ, HiddenPowerHouseBookshelf
+ bg_event 1, 1, BGEVENT_READ, HiddenPowerHouseBookshelf
+
+ db 1 ; object events
+ object_event 2, 3, SPRITE_FISHER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, HiddenPowerGuy, -1
diff --git a/maps/LakeOfRageMagikarpHouse.asm b/maps/LakeOfRageMagikarpHouse.asm
new file mode 100644
index 00000000..52c5a1e0
--- /dev/null
+++ b/maps/LakeOfRageMagikarpHouse.asm
@@ -0,0 +1,222 @@
+ const_def 2 ; object constants
+ const LAKEOFRAGEMAGIKARPHOUSE_FISHING_GURU
+
+LakeOfRageMagikarpHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+MagikarpLengthRaterScript:
+ faceplayer
+ opentext
+ checkevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
+ iftrue .GetReward
+ checkevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
+ iftrue .AskedForMagikarp
+ checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+ iftrue .ClearedRocketHideout
+ checkevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
+ iftrue .ExplainedHistory
+ writetext MagikarpLengthRaterText_LakeOfRageHistory
+ waitbutton
+ closetext
+ setevent EVENT_LAKE_OF_RAGE_EXPLAINED_WEIRD_MAGIKARP
+ end
+
+.ExplainedHistory:
+ writetext MagikarpLengthRaterText_MenInBlack
+ waitbutton
+ closetext
+ end
+
+.ClearedRocketHideout:
+ writetext MagikarpLengthRaterText_WorldsLargestMagikarp
+ waitbutton
+ closetext
+ setevent EVENT_LAKE_OF_RAGE_ASKED_FOR_MAGIKARP
+ end
+
+.AskedForMagikarp:
+ writebyte MAGIKARP
+ special FindPartyMonThatSpecies
+ iffalse .ClearedRocketHideout
+ writetext MagikarpLengthRaterText_YouHaveAMagikarp
+ waitbutton
+ special CheckMagikarpLength
+ ifequal MAGIKARPLENGTH_NOT_MAGIKARP, .NotMagikarp
+ ifequal MAGIKARPLENGTH_REFUSED, .Refused
+ ifequal MAGIKARPLENGTH_TOO_SHORT, .TooShort
+ ; MAGIKARPLENGTH_BEAT_RECORD
+ jump .GetReward
+
+.GetReward:
+ writetext MagikarpLengthRaterText_Memento
+ buttonsound
+ verbosegiveitem ETHER
+ iffalse .NoRoom
+ writetext MagikarpLengthRaterText_Bonus
+ waitbutton
+ closetext
+ clearevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
+ end
+
+.NoRoom:
+ closetext
+ setevent EVENT_LAKE_OF_RAGE_ELIXIR_ON_STANDBY
+ end
+
+.TooShort:
+ writetext MagikarpLengthRaterText_TooShort
+ waitbutton
+ closetext
+ end
+
+.NotMagikarp:
+ writetext MagikarpLengthRaterText_NotMagikarp
+ waitbutton
+ closetext
+ end
+
+.Refused:
+ writetext MagikarpLengthRaterText_Refused
+ waitbutton
+ closetext
+ end
+
+LakeOfRageMagikarpHouseUnusedRecordSign:
+; unused
+ jumptext LakeOfRageMagikarpHouseUnusedRecordText
+
+MagikarpHouseBookshelf:
+ jumpstd difficultbookshelf
+
+MagikarpLengthRaterText_LakeOfRageHistory:
+ text "LAKE OF RAGE is"
+ line "actually a crater"
+
+ para "made by rampaging"
+ line "GYARADOS."
+
+ para "The crater filled"
+ line "up with rainwater"
+
+ para "and the LAKE was"
+ line "formed."
+
+ para "That's the story"
+ line "passed on from my"
+
+ para "Grandpa's great-"
+ line "great-grandpa."
+
+ para "It used to be that"
+ line "you could catch"
+
+ para "lively MAGIKARP"
+ line "there, but…"
+
+ para "I don't understand"
+ line "what's happening."
+ done
+
+MagikarpLengthRaterText_MenInBlack:
+ text "The LAKE hasn't"
+ line "been normal since"
+
+ para "those men wearing"
+ line "black arrived."
+ done
+
+MagikarpLengthRaterText_WorldsLargestMagikarp:
+ text "LAKE OF RAGE is"
+ line "back to normal."
+
+ para "The MAGIKARP have"
+ line "returned."
+
+ para "I may yet realize"
+ line "my dream of see-"
+ cont "ing the world's"
+ cont "largest MAGIKARP."
+
+ para "Do you have a ROD?"
+ line "Please help me if"
+ cont "you do."
+ done
+
+MagikarpLengthRaterText_YouHaveAMagikarp:
+ text "Ah, you have a"
+ line "MAGIKARP! Let's"
+
+ para "see how big that"
+ line "baby is."
+ done
+
+MagikarpLengthRaterText_Memento:
+ text "Wow! This one is"
+ line "outstanding!"
+
+ para "I tip my hat to"
+ line "you!"
+
+ para "Take this as a"
+ line "memento!"
+ done
+
+MagikarpLengthRaterText_Bonus:
+ text "The record is the"
+ line "important thing."
+
+ para "Think of that as"
+ line "a bonus!"
+ done
+
+MagikarpLengthRaterText_TooShort:
+ text "Wow! This one is"
+ line "outstanding!"
+
+ para "…I wish I could"
+ line "say that, but I've"
+
+ para "seen a bigger one"
+ line "before."
+ done
+
+MagikarpLengthRaterText_NotMagikarp:
+ text "What? That's not a"
+ line "MAGIKARP!"
+ done
+
+MagikarpLengthRaterText_Refused:
+ text "Oh… So you didn't"
+ line "get one good"
+
+ para "enough to show me?"
+ line "Maybe next time."
+ done
+
+LakeOfRageMagikarpHouseUnusedRecordText:
+ text "CURRENT RECORD"
+
+ para "@"
+ text_from_ram wStringBuffer3
+ text " caught by"
+ line "@"
+ text_from_ram wStringBuffer4
+ db "@@"
+
+LakeOfRageMagikarpHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, LAKE_OF_RAGE, 2
+ warp_event 3, 7, LAKE_OF_RAGE, 2
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 0, 1, BGEVENT_READ, MagikarpHouseBookshelf
+ bg_event 1, 1, BGEVENT_READ, MagikarpHouseBookshelf
+
+ db 1 ; object events
+ object_event 2, 3, SPRITE_FISHING_GURU, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, MagikarpLengthRaterScript, -1
diff --git a/maps/MoveDeletersHouse.asm b/maps/MoveDeletersHouse.asm
new file mode 100644
index 00000000..e382cf22
--- /dev/null
+++ b/maps/MoveDeletersHouse.asm
@@ -0,0 +1,34 @@
+ const_def 2 ; object constants
+ const MOVEDELETERSHOUSE_SUPER_NERD
+
+MoveDeletersHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+MoveDeleter:
+ faceplayer
+ opentext
+ special MoveDeletion
+ waitbutton
+ closetext
+ end
+
+MoveDeletersHouseBookshelf:
+ jumpstd difficultbookshelf
+
+MoveDeletersHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, BLACKTHORN_CITY, 6
+ warp_event 3, 7, BLACKTHORN_CITY, 6
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 0, 1, BGEVENT_READ, MoveDeletersHouseBookshelf
+ bg_event 1, 1, BGEVENT_READ, MoveDeletersHouseBookshelf
+
+ db 1 ; object events
+ object_event 2, 3, SPRITE_SUPER_NERD, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, MoveDeleter, -1
diff --git a/maps/Route19FuchsiaGate.asm b/maps/Route19FuchsiaGate.asm
new file mode 100644
index 00000000..4c2d6abd
--- /dev/null
+++ b/maps/Route19FuchsiaGate.asm
@@ -0,0 +1,60 @@
+ const_def 2 ; object constants
+ const ROUTE19FUCHSIAGATE_OFFICER
+
+Route19FuchsiaGate_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Route19FuchsiaGateOfficerScript:
+ faceplayer
+ opentext
+ checkevent EVENT_CINNABAR_ROCKS_CLEARED
+ iftrue .RocksCleared
+ writetext Route19FuchsiaGateOfficerText
+ waitbutton
+ closetext
+ end
+
+.RocksCleared:
+ writetext Route19FuchsiaGateOfficerText_RocksCleared
+ waitbutton
+ closetext
+ end
+
+Route19FuchsiaGateOfficerText:
+ text "CINNABAR's volcano"
+ line "erupted."
+
+ para "It hurled boulders"
+ line "that cut off ROUTE"
+ cont "19 indefinitely."
+
+ para "I wonder if the"
+ line "people of CINNABAR"
+ cont "are safe…"
+ done
+
+Route19FuchsiaGateOfficerText_RocksCleared:
+ text "No CINNABAR citi-"
+ line "zens were injured"
+
+ para "by the eruption."
+ line "That's great!"
+ done
+
+Route19FuchsiaGate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 0, FUCHSIA_CITY, 10
+ warp_event 5, 0, FUCHSIA_CITY, 11
+ warp_event 4, 7, ROUTE_19, 1
+ warp_event 5, 7, ROUTE_19, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route19FuchsiaGateOfficerScript, -1
diff --git a/maps/Route43Gate.asm b/maps/Route43Gate.asm
new file mode 100644
index 00000000..6b4c530d
--- /dev/null
+++ b/maps/Route43Gate.asm
@@ -0,0 +1,263 @@
+ROUTE43GATE_TOLL EQU 1000
+
+ const_def 2 ; object constants
+ const ROUTE43GATE_OFFICER
+ const ROUTE43GATE_ROCKET1
+ const ROUTE43GATE_ROCKET2
+
+Route43Gate_MapScripts:
+ db 2 ; scene scripts
+ scene_script .RocketShakedown ; SCENE_DEFAULT
+ scene_script .DummyScene ; SCENE_FINISHED
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .CheckIfRockets
+
+.RocketShakedown:
+ priorityjump .RocketTakeover
+ end
+
+.DummyScene:
+ end
+
+.CheckIfRockets:
+ checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+ iftrue .NoRockets
+ setmapscene ROUTE_43, 0 ; Route 43 does not have a scene variable
+ return
+
+.NoRockets:
+ setmapscene ROUTE_43, 1 ; Route 43 does not have a scene variable
+ return
+
+.RocketTakeover:
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ checkcode VAR_FACING
+ ifequal DOWN, RocketScript_Southbound
+ ifequal UP, RocketScript_Northbound
+ setscene SCENE_FINISHED
+ end
+
+RocketScript_Southbound:
+ applymovement PLAYER, PlayerStepsIn
+ showemote EMOTE_SHOCK, ROUTE43GATE_ROCKET2, 15
+ applymovement ROUTE43GATE_ROCKET2, Rocket2Script_BlocksYouSouth
+ turnobject ROUTE43GATE_ROCKET1, UP
+ showemote EMOTE_SHOCK, ROUTE43GATE_ROCKET1, 15
+ applymovement ROUTE43GATE_ROCKET1, Rocket1Script_BlocksYouSouth
+ opentext
+ writetext RocketText_TollFee
+ buttonsound
+ checkmoney YOUR_MONEY, ROUTE43GATE_TOLL - 1
+ ifequal HAVE_MORE, RocketScript_TollSouth
+ jump RocketScript_YoureBrokeSouth
+
+RocketScript_TollSouth:
+ takemoney YOUR_MONEY, ROUTE43GATE_TOLL
+ writetext RocketText_ThankYou
+ jump RocketScript_ShakeDownSouth
+
+RocketScript_YoureBrokeSouth:
+ takemoney YOUR_MONEY, ROUTE43GATE_TOLL
+ writetext RocketText_AllYouGot
+ jump RocketScript_ShakeDownSouth
+
+RocketScript_ShakeDownSouth:
+ buttonsound
+ closetext
+ applymovement ROUTE43GATE_ROCKET1, Rocket1Script_LetsYouPassSouth
+ applymovement ROUTE43GATE_ROCKET2, Rocket2Script_LetsYouPassSouth
+ setscene SCENE_FINISHED
+ special RestartMapMusic
+ end
+
+RocketScript_Northbound:
+ showemote EMOTE_SHOCK, ROUTE43GATE_ROCKET1, 15
+ applymovement ROUTE43GATE_ROCKET1, Rocket1Script_BlocksYouNorth
+ turnobject ROUTE43GATE_ROCKET2, DOWN
+ showemote EMOTE_SHOCK, ROUTE43GATE_ROCKET2, 15
+ applymovement ROUTE43GATE_ROCKET2, Rocket2Script_BlocksYouNorth
+ opentext
+ writetext RocketText_TollFee
+ buttonsound
+ checkmoney YOUR_MONEY, ROUTE43GATE_TOLL - 1
+ ifequal HAVE_MORE, RocketScript_TollNorth
+ jump RocketScript_YoureBrokeNorth
+
+RocketScript_TollNorth:
+ takemoney YOUR_MONEY, ROUTE43GATE_TOLL
+ writetext RocketText_ThankYou
+ jump RocketScript_ShakeDownNorth
+
+RocketScript_YoureBrokeNorth:
+ takemoney YOUR_MONEY, ROUTE43GATE_TOLL
+ writetext RocketText_AllYouGot
+ jump RocketScript_ShakeDownNorth
+
+RocketScript_ShakeDownNorth:
+ buttonsound
+ closetext
+ applymovement ROUTE43GATE_ROCKET2, Rocket2Script_LetsYouPassNorth
+ applymovement ROUTE43GATE_ROCKET1, Rocket1Script_LetsYouPassNorth
+ setscene SCENE_FINISHED
+ special RestartMapMusic
+ end
+
+RocketScript_MakingABundle:
+ jumptextfaceplayer RocketText_MakingABundle
+
+OfficerScript_GuardWithSludgeBomb:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_TM36_SLUDGE_BOMB
+ iftrue .GotSludgeBomb
+ writetext OfficerText_FoundTM
+ buttonsound
+ verbosegiveitem TM_SLUDGE_BOMB
+ iffalse .NoRoomForSludgeBomb
+ setevent EVENT_GOT_TM36_SLUDGE_BOMB
+ closetext
+ end
+
+.GotSludgeBomb:
+ writetext OfficerText_AvoidGrass
+ waitbutton
+.NoRoomForSludgeBomb:
+ closetext
+ end
+
+PlayerStepsIn:
+ step DOWN
+ step_end
+
+Rocket1Script_BlocksYouSouth:
+ big_step UP
+ big_step UP
+ big_step RIGHT
+ big_step RIGHT
+ turn_head UP
+ step_end
+
+Rocket1Script_LetsYouPassSouth:
+ big_step LEFT
+ big_step LEFT
+ big_step DOWN
+ big_step DOWN
+ step_end
+
+Rocket1Script_BlocksYouNorth:
+ big_step DOWN
+ big_step DOWN
+ big_step RIGHT
+ big_step RIGHT
+ turn_head DOWN
+ step_end
+
+Rocket1Script_LetsYouPassNorth:
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ turn_head DOWN
+ step_end
+
+Rocket2Script_BlocksYouSouth:
+ big_step UP
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ turn_head UP
+ step_end
+
+Rocket2Script_LetsYouPassSouth:
+ big_step RIGHT
+ big_step RIGHT
+ big_step DOWN
+ big_step DOWN
+ turn_head UP
+ step_end
+
+Rocket2Script_BlocksYouNorth:
+ big_step DOWN
+ big_step DOWN
+ big_step LEFT
+ big_step LEFT
+ turn_head DOWN
+ step_end
+
+Rocket2Script_LetsYouPassNorth:
+ big_step RIGHT
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ step_end
+
+RocketText_TollFee:
+ text "Hold it there,"
+ line "mister!"
+
+ para "The toll is ¥1000"
+ line "to go through."
+ done
+
+RocketText_ThankYou:
+ text "Thank you, sir!"
+ done
+
+RocketText_AllYouGot:
+ text "Then pay what you"
+ line "have, please."
+ done
+
+RocketText_MakingABundle:
+ text "He-he-he. We're"
+ line "making a bundle."
+
+ para "Everyone wants to"
+ line "see what's going"
+
+ para "on up at LAKE OF"
+ line "RAGE."
+ done
+
+OfficerText_FoundTM:
+ text "I got chased from"
+ line "my post by these"
+ cont "thugs in black."
+
+ para "They left this"
+ line "behind."
+
+ para "It makes me uncom-"
+ line "fortable. Could"
+ cont "you take it away?"
+ done
+
+Text_ReceivedTM30:
+ text "<PLAYER> received"
+ line "TM30."
+ done
+
+OfficerText_AvoidGrass:
+ text "Use this gate to"
+ line "avoid walking in"
+ cont "the grass."
+ done
+
+Route43Gate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 0, ROUTE_43, 4
+ warp_event 5, 0, ROUTE_43, 5
+ warp_event 4, 7, ROUTE_43, 3
+ warp_event 5, 7, ROUTE_43, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 3 ; object events
+ object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, OfficerScript_GuardWithSludgeBomb, EVENT_LAKE_OF_RAGE_CIVILIANS
+ object_event 2, 4, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, RocketScript_MakingABundle, EVENT_ROUTE_43_GATE_ROCKETS
+ object_event 7, 4, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, RocketScript_MakingABundle, EVENT_ROUTE_43_GATE_ROCKETS
diff --git a/maps/Route43MahoganyGate.asm b/maps/Route43MahoganyGate.asm
new file mode 100644
index 00000000..671b64ae
--- /dev/null
+++ b/maps/Route43MahoganyGate.asm
@@ -0,0 +1,53 @@
+ const_def 2 ; object constants
+ const ROUTE43MAHOGANYGATE_OFFICER
+
+Route43MahoganyGate_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Route43MahoganyGateOfficer:
+ faceplayer
+ opentext
+ checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+ iftrue .RocketsCleared
+ writetext Route43MahoganyGateOfficerText
+ waitbutton
+ closetext
+ end
+
+.RocketsCleared:
+ writetext Route43MahoganyGateOfficerRocketsClearedText
+ waitbutton
+ closetext
+ end
+
+Route43MahoganyGateOfficerText:
+ text "Only people headed"
+ line "up to LAKE OF RAGE"
+
+ para "have been through"
+ line "here lately."
+ done
+
+Route43MahoganyGateOfficerRocketsClearedText:
+ text "Nobody goes up to"
+ line "LAKE OF RAGE these"
+ cont "days."
+ done
+
+Route43MahoganyGate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 0, ROUTE_43, 1
+ warp_event 5, 0, ROUTE_43, 2
+ warp_event 4, 7, MAHOGANY_TOWN, 5
+ warp_event 5, 7, MAHOGANY_TOWN, 5
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Route43MahoganyGateOfficer, -1
diff --git a/maps/SeafoamGym.asm b/maps/SeafoamGym.asm
new file mode 100644
index 00000000..5aa09720
--- /dev/null
+++ b/maps/SeafoamGym.asm
@@ -0,0 +1,170 @@
+ const_def 2 ; object constants
+ const SEAFOAMGYM_BLAINE
+ const SEAFOAMGYM_GYM_GUY
+
+SeafoamGym_MapScripts:
+ db 1 ; scene scripts
+ scene_script .DummyScene
+
+ db 0 ; callbacks
+
+.DummyScene:
+ end
+
+SeafoamGymBlaineScript:
+ faceplayer
+ opentext
+ checkflag ENGINE_VOLCANOBADGE
+ iftrue .FightDone
+ writetext BlaineIntroText
+ waitbutton
+ closetext
+ winlosstext BlaineWinLossText, 0
+ loadtrainer BLAINE, BLAINE1
+ startbattle
+ iftrue .ReturnAfterBattle
+ appear SEAFOAMGYM_GYM_GUY
+.ReturnAfterBattle:
+ reloadmapafterbattle
+ setevent EVENT_BEAT_BLAINE
+ opentext
+ writetext ReceivedVolcanoBadgeText
+ playsound SFX_GET_BADGE
+ waitsfx
+ setflag ENGINE_VOLCANOBADGE
+ writetext BlaineAfterBattleText
+ waitbutton
+ closetext
+ end
+
+.FightDone:
+ writetext BlaineFightDoneText
+ waitbutton
+ closetext
+ end
+
+SeafoamGymGuyScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TALKED_TO_SEAFOAM_GYM_GUY_ONCE
+ iftrue .TalkedToSeafoamGymGuyScript
+ writetext SeafoamGymGuyWinText
+ waitbutton
+ closetext
+ setevent EVENT_TALKED_TO_SEAFOAM_GYM_GUY_ONCE
+ end
+
+.TalkedToSeafoamGymGuyScript:
+ writetext SeafoamGymGuyWinText2
+ waitbutton
+ closetext
+ end
+
+BlaineIntroText:
+ text "BLAINE: Waaah!"
+
+ para "My GYM in CINNABAR"
+ line "burned down."
+
+ para "My fire-breathing"
+ line "#MON and I are"
+
+ para "homeless because"
+ line "of the volcano."
+
+ para "Waaah!"
+
+ para "But I'm back in"
+ line "business as a GYM"
+
+ para "LEADER here in"
+ line "this cave."
+
+ para "If you can beat"
+ line "me, I'll give you"
+ cont "a BADGE."
+
+ para "Ha! You'd better"
+ line "have BURN HEAL!"
+ done
+
+BlaineWinLossText:
+ text "BLAINE: Awesome."
+ line "I've burned out…"
+
+ para "You've earned"
+ line "VOLCANOBADGE!"
+ done
+
+ReceivedVolcanoBadgeText:
+ text "<PLAYER> received"
+ line "VOLCANOBADGE."
+ done
+
+BlaineAfterBattleText:
+ text "BLAINE: I did lose"
+ line "this time, but I'm"
+
+ para "going to win the"
+ line "next time."
+
+ para "When I rebuild my"
+ line "CINNABAR GYM,"
+
+ para "we'll have to have"
+ line "a rematch."
+ done
+
+BlaineFightDoneText:
+ text "BLAINE: My fire"
+ line "#MON will be"
+
+ para "even stronger."
+ line "Just you watch!"
+ done
+
+SeafoamGymGuyWinText:
+ text "Yo!"
+
+ para "… Huh? It's over"
+ line "already?"
+
+ para "Sorry, dude!"
+
+ para "CINNABAR GYM was"
+ line "gone, so I didn't"
+
+ para "know where to find"
+ line "you."
+
+ para "But, hey, you're"
+ line "plenty strong even"
+
+ para "without my advice."
+ line "I knew you'd win!"
+ done
+
+SeafoamGymGuyWinText2:
+ text "A #MON GYM can"
+ line "be anywhere as"
+
+ para "long as the GYM"
+ line "LEADER is there."
+
+ para "There's no need"
+ line "for a building."
+ done
+
+SeafoamGym_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 5, 5, ROUTE_20, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 2 ; object events
+ object_event 5, 2, SPRITE_BLAINE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, SeafoamGymBlaineScript, -1
+ object_event 6, 5, SPRITE_GYM_GUY, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, SeafoamGymGuyScript, EVENT_SEAFOAM_GYM_GYM_GUY