summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--macros/scripts/events.asm2
-rw-r--r--main.asm25
-rw-r--r--maps/EarlsPokemonAcademy.asm433
-rw-r--r--maps/Route32Pokecenter1F.asm110
-rw-r--r--maps/Route32RuinsOfAlphGate.asm63
-rw-r--r--maps/Route35GoldenrodGate.asm194
-rw-r--r--maps/Route35NationalParkGate.asm452
-rw-r--r--maps/Route36NationalParkGate.asm875
-rw-r--r--maps/Route36RuinsOfAlphGate.asm50
-rw-r--r--maps/VioletGym.asm299
-rw-r--r--maps/VioletKylesHouse.asm46
-rw-r--r--maps/VioletMart.asm63
-rw-r--r--maps/VioletNicknameSpeechHouse.asm59
-rw-r--r--maps/VioletPokecenter1F.asm210
14 files changed, 2867 insertions, 14 deletions
diff --git a/macros/scripts/events.asm b/macros/scripts/events.asm
index 6feee09f..6e2856d1 100644
--- a/macros/scripts/events.asm
+++ b/macros/scripts/events.asm
@@ -998,7 +998,7 @@ credits: MACRO
db credits_command
ENDM
- enum warpfacing_command ; $a3
+ enum warpfacing_command ; $a1
warpfacing: MACRO
db warpfacing_command
db \1 ; facing
diff --git a/main.asm b/main.asm
index 253b0df6..96428d2a 100644
--- a/main.asm
+++ b/main.asm
@@ -1781,19 +1781,18 @@ INCLUDE "maps/KurtsHouse.asm"
INCLUDE "maps/AzaleaGym.asm"
SECTION "bank56", ROMX, BANK[$56]
-;INCLUDE "maps/VioletMart.asm"
-;INCLUDE "maps/VioletGym.asm"
-;INCLUDE "maps/EarlsPokemonAcademy.asm"
-;INCLUDE "maps/VioletNicknameSpeechHouse.asm"
-;INCLUDE "maps/VioletPokecenter1F.asm"
-;INCLUDE "maps/VioletKylesHouse.asm"
-;INCLUDE "maps/Route32RuinsOfAlphGate.asm"
-;INCLUDE "maps/Route32Pokecenter1F.asm"
-;INCLUDE "maps/Route35GoldenrodGate.asm"
-;INCLUDE "maps/Route35NationalParkGate.asm"
-;INCLUDE "maps/Route36RuinsOfAlphGate.asm"
-;INCLUDE "maps/Route36NationalParkGate.asm"
- dr $158000, $15c000
+INCLUDE "maps/VioletMart.asm"
+INCLUDE "maps/VioletGym.asm"
+INCLUDE "maps/EarlsPokemonAcademy.asm"
+INCLUDE "maps/VioletNicknameSpeechHouse.asm"
+INCLUDE "maps/VioletPokecenter1F.asm"
+INCLUDE "maps/VioletKylesHouse.asm"
+INCLUDE "maps/Route32RuinsOfAlphGate.asm"
+INCLUDE "maps/Route32Pokecenter1F.asm"
+INCLUDE "maps/Route35GoldenrodGate.asm"
+INCLUDE "maps/Route35NationalParkGate.asm"
+INCLUDE "maps/Route36RuinsOfAlphGate.asm"
+INCLUDE "maps/Route36NationalParkGate.asm"
SECTION "bank57", ROMX, BANK[$57]
diff --git a/maps/EarlsPokemonAcademy.asm b/maps/EarlsPokemonAcademy.asm
new file mode 100644
index 00000000..07ea18bf
--- /dev/null
+++ b/maps/EarlsPokemonAcademy.asm
@@ -0,0 +1,433 @@
+ const_def 2 ; object constants
+ const EARLSPOKEMONACADEMY_EARL
+ const EARLSPOKEMONACADEMY_YOUNGSTER1
+ const EARLSPOKEMONACADEMY_GAMEBOY_KID1
+ const EARLSPOKEMONACADEMY_GAMEBOY_KID2
+ const EARLSPOKEMONACADEMY_YOUNGSTER2
+ const EARLSPOKEMONACADEMY_POKEDEX
+
+EarlsPokemonAcademy_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+AcademyEarl:
+ applymovement EARLSPOKEMONACADEMY_EARL, AcademyEarlSpinMovement
+ faceplayer
+ opentext
+ writetext AcademyEarlIntroText
+ yesorno
+ iffalse .Part1
+ writetext AcademyEarlTeachHowToWinText
+ yesorno
+ iffalse .Done
+.Part1:
+ writetext AcademyEarlTeachMoreText
+ yesorno
+ iffalse .Done
+ writetext AcademyEarlTeachHowToRaiseWellText
+ waitbutton
+ closetext
+ end
+
+.Done:
+ writetext AcademyEarlNoMoreToTeachText
+ waitbutton
+ closetext
+ end
+
+EarlsPokemonAcademyYoungster1Script:
+ jumptextfaceplayer EarlsPokemonAcademyYoungster1Text
+
+EarlsPokemonAcademyGameboyKid1Script:
+ faceplayer
+ opentext
+ writetext EarlsPokemonAcademyGameboyKid1Text
+ waitbutton
+ closetext
+ turnobject EARLSPOKEMONACADEMY_GAMEBOY_KID1, DOWN
+ end
+
+EarlsPokemonAcademyGameboyKid2Script:
+ faceplayer
+ opentext
+ writetext EarlsPokemonAcademyGameboyKid2Text
+ waitbutton
+ closetext
+ turnobject EARLSPOKEMONACADEMY_GAMEBOY_KID2, DOWN
+ end
+
+EarlsPokemonAcademyYoungster2Script:
+ jumptextfaceplayer EarlsPokemonAcademyYoungster2Text
+
+AcademyBlackboard:
+ opentext
+ writetext AcademyBlackboardText
+.Loop:
+ loadmenu .BlackboardMenuHeader
+ _2dmenu
+ closewindow
+ ifequal 1, .Poison
+ ifequal 2, .Paralysis
+ ifequal 3, .Sleep
+ ifequal 4, .Burn
+ ifequal 5, .Freeze
+ closetext
+ end
+
+.Poison:
+ writetext AcademyPoisonText
+ waitbutton
+ jump .Loop
+
+.Paralysis:
+ writetext AcademyParalysisText
+ waitbutton
+ jump .Loop
+
+.Sleep:
+ writetext AcademySleepText
+ waitbutton
+ jump .Loop
+
+.Burn:
+ writetext AcademyBurnText
+ waitbutton
+ jump .Loop
+
+.Freeze:
+ writetext AcademyFreezeText
+ waitbutton
+ jump .Loop
+
+.BlackboardMenuHeader:
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 0, 0, 11, 8
+ dw .MenuData
+ db 1 ; default option
+
+.MenuData:
+ db STATICMENU_CURSOR ; flags
+ dn 3, 2 ; rows, columns
+ db 5 ; spacing
+ dba .Text
+ dbw BANK(AcademyBlackboard), 0
+
+.Text:
+ db "PSN@"
+ db "PAR@"
+ db "SLP@"
+ db "BRN@"
+ db "FRZ@"
+ db "QUIT@"
+
+AcademyNotebook:
+ opentext
+ writetext AcademyNotebookText
+ yesorno
+ iffalse .Done
+ writetext AcademyNotebookText1
+ yesorno
+ iffalse .Done
+ writetext AcademyNotebookText2
+ yesorno
+ iffalse .Done
+ writetext AcademyNotebookText3
+ waitbutton
+.Done:
+ closetext
+ end
+
+AcademyStickerMachine:
+; unused
+ jumptext AcademyStickerMachineText
+
+AcademyBookshelf:
+ jumpstd difficultbookshelf
+
+AcademyEarlSpinMovement:
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ turn_head DOWN
+ step_end
+
+AcademyEarlIntroText:
+ text "EARL, I am!"
+
+ para "Wonderful are"
+ line "#MON, yes!"
+
+ para "Teach you I will"
+ line "to be a better"
+ cont "trainer!"
+
+ para "What you want to"
+ line "know? Want to be"
+ cont "a winner is you?"
+ done
+
+AcademyEarlTeachHowToWinText:
+ text "Good! Teach you,"
+ line "I will!"
+
+ para "In battle, #MON"
+ line "top on list jump"
+ cont "out first!"
+
+ para "Change order in"
+ line "list, make battle"
+ cont "easy, maybe!"
+
+ para "More from me you"
+ line "want to hear?"
+ done
+
+AcademyEarlTeachMoreText:
+ text "So, want to know"
+ line "how to raise"
+ cont "#MON well?"
+ done
+
+AcademyEarlTeachHowToRaiseWellText:
+ text "Fine! Teach you,"
+ line "I will!"
+
+ para "If #MON come"
+ line "out in battle even"
+
+ para "briefly, some EXP."
+ line "points it gets."
+
+ para "At top of list put"
+ line "weak #MON."
+
+ para "Switch in battle"
+ line "quick!"
+
+ para "This way, weak"
+ line "#MON strong"
+ cont "become!"
+ done
+
+AcademyEarlNoMoreToTeachText:
+ text "Oh! Smart student"
+ line "you are! Nothing"
+ cont "more do I teach!"
+
+ para "Good to #MON"
+ line "you must be!"
+ done
+
+EarlsPokemonAcademyYoungster1Text:
+ text "I'm taking notes"
+ line "of the teacher's"
+ cont "lecture."
+
+ para "I'd better copy"
+ line "the stuff on the"
+ cont "blackboard too."
+ done
+
+EarlsPokemonAcademyGameboyKid1Text:
+ text "I traded my best"
+ line "#MON to the"
+ cont "guy beside me."
+ done
+
+EarlsPokemonAcademyGameboyKid2Text:
+ text "Huh? The #MON I"
+ line "just got is hold-"
+ cont "ing something!"
+ done
+
+EarlsPokemonAcademyYoungster2Text:
+ text "A #MON holding"
+ line "a BERRY will heal"
+ cont "itself in battle."
+
+ para "Many other items"
+ line "can be held by"
+ cont "#MON…"
+
+ para "It sure is tough"
+ line "taking notes…"
+ done
+
+AcademyBlackboardText:
+ text "The blackboard"
+ line "describes #MON"
+
+ para "status changes in"
+ line "battle."
+ done
+
+AcademyBlackboardText2:
+; unused
+ text "Read which topic?"
+ done
+
+AcademyPoisonText:
+ text "If poisoned, a"
+ line "#MON steadily"
+ cont "loses HP."
+
+ para "Poison lingers"
+ line "after the battle,"
+
+ para "and HP is lost as"
+ line "you walk."
+
+ para "To cure it, use an"
+ line "ANTIDOTE."
+ done
+
+AcademyParalysisText:
+ text "Paralysis reduces"
+ line "speed and may"
+ cont "prevent movement."
+
+ para "It remains after"
+ line "battle, so use"
+ cont "a PARLYZ HEAL."
+ done
+
+AcademySleepText:
+ text "If asleep, your"
+ line "#MON can't make"
+ cont "a move."
+
+ para "A sleeping #MON"
+ line "doesn't wake up"
+ cont "after battle."
+
+ para "Wake it up with"
+ line "an AWAKENING."
+ done
+
+AcademyBurnText:
+ text "A burn steadily"
+ line "consumes HP."
+
+ para "It also reduces"
+ line "attack power."
+
+ para "A burn lingers"
+ line "after battle."
+
+ para "Use a BURN HEAL as"
+ line "the cure."
+ done
+
+AcademyFreezeText:
+ text "If your #MON is"
+ line "frozen, it can't"
+ cont "do a thing."
+
+ para "It remains frozen"
+ line "after battle."
+
+ para "Thaw it out with"
+ line "an ICE HEAL."
+ done
+
+AcademyNotebookText:
+ text "It's this kid's"
+ line "notebook…"
+
+ para "Catch #MON"
+ line "using # BALLS."
+
+ para "Up to six can be"
+ line "in your party."
+
+ para "Keep reading?"
+ done
+
+AcademyNotebookText1:
+ text "Before throwing a"
+ line "# BALL, weaken"
+ cont "the target first."
+
+ para "A poisoned or"
+ line "burned #MON is"
+ cont "easier to catch."
+
+ para "Keep reading?"
+ done
+
+AcademyNotebookText2:
+ text "Some moves may"
+ line "cause confusion."
+
+ para "Confusion may make"
+ line "a #MON attack"
+ cont "itself."
+
+ para "Leaving battle"
+ line "clears up any"
+ cont "confusion."
+
+ para "Keep reading?"
+ done
+
+AcademyNotebookText3:
+ text "People who catch"
+ line "and use #MON"
+
+ para "in battle are"
+ line "#MON trainers."
+
+ para "They are expected"
+ line "to visit #MON"
+
+ para "GYMS and defeat"
+ line "other trainers."
+
+ para "The next page"
+ line "is… Blank!"
+
+ para "Boy: E-he-he…"
+
+ para "I haven't written"
+ line "anymore…"
+ done
+
+AcademyStickerMachineText:
+ text "This super machine"
+ line "prints data out as"
+
+ para "stickers!"
+ done
+
+EarlsPokemonAcademy_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 3, 15, VIOLET_CITY, 3
+ warp_event 4, 15, VIOLET_CITY, 3
+
+ db 0 ; coord events
+
+ db 4 ; bg events
+ bg_event 0, 1, BGEVENT_READ, AcademyBookshelf
+ bg_event 1, 1, BGEVENT_READ, AcademyBookshelf
+ bg_event 3, 0, BGEVENT_READ, AcademyBlackboard
+ bg_event 4, 0, BGEVENT_READ, AcademyBlackboard
+
+ db 6 ; object events
+ object_event 4, 2, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, AcademyEarl, EVENT_EARLS_ACADEMY_EARL
+ object_event 2, 5, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, EarlsPokemonAcademyYoungster1Script, -1
+ object_event 3, 11, SPRITE_GAMEBOY_KID, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, EarlsPokemonAcademyGameboyKid1Script, -1
+ object_event 4, 11, SPRITE_GAMEBOY_KID, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, EarlsPokemonAcademyGameboyKid2Script, -1
+ object_event 4, 7, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, EarlsPokemonAcademyYoungster2Script, -1
+ object_event 2, 4, SPRITE_POKEDEX, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, AcademyNotebook, -1
diff --git a/maps/Route32Pokecenter1F.asm b/maps/Route32Pokecenter1F.asm
new file mode 100644
index 00000000..0f51be40
--- /dev/null
+++ b/maps/Route32Pokecenter1F.asm
@@ -0,0 +1,110 @@
+ const_def 2 ; object constants
+ const ROUTE32POKECENTER1F_NURSE
+ const ROUTE32POKECENTER1F_FISHING_GURU
+ const ROUTE32POKECENTER1F_COOLTRAINER_F
+
+Route32Pokecenter1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Route32Pokecenter1FNurseScript:
+ jumpstd pokecenternurse
+
+Route32Pokecenter1FFishingGuruScript:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_OLD_ROD
+ iftrue .GotOldRod
+ writetext Route32Pokecenter1FFishingGuruText_Question
+ yesorno
+ iffalse .Refused
+ writetext Route32Pokecenter1FFishingGuruText_Yes
+ buttonsound
+ verbosegiveitem OLD_ROD
+ writetext Route32Pokecenter1FFishingGuruText_GiveOldRod
+ waitbutton
+ closetext
+ setevent EVENT_GOT_OLD_ROD
+ end
+
+.Refused:
+ writetext Route32Pokecenter1FFishingGuruText_No
+ waitbutton
+ closetext
+ end
+
+.GotOldRod:
+ writetext Route32Pokecenter1FFishingGuruText_After
+ waitbutton
+ closetext
+ end
+
+Route32Pokecenter1FCooltrainerFScript:
+ jumptextfaceplayer Route32Pokecenter1FCooltrainerFText
+
+Route32Pokecenter1FFishingGuruText_Question:
+ text "This is a great"
+ line "fishing spot."
+
+ para "You saw people"
+ line "fishing? How"
+ cont "about you?"
+
+ para "Would you like one"
+ line "of my RODS?"
+ done
+
+Route32Pokecenter1FFishingGuruText_Yes:
+ text "Heh, that's good"
+ line "to hear."
+
+ para "Now you're an"
+ line "angler too!"
+ done
+
+Route32Pokecenter1FFishingGuruText_GiveOldRod:
+ text "Fishing is great!"
+
+ para "If there's water,"
+ line "be it the sea or a"
+
+ para "stream, try out"
+ line "your ROD."
+ done
+
+Route32Pokecenter1FFishingGuruText_No:
+ text "Oh. That's rather"
+ line "disappointing…"
+ done
+
+Route32Pokecenter1FFishingGuruText_After:
+ text "Yo, youngster. How"
+ line "are they biting?"
+ done
+
+Route32Pokecenter1FCooltrainerFText:
+ text "What should I make"
+ line "my #MON hold?"
+
+ para "Maybe an item that"
+ line "increases ATTACK"
+ cont "power…"
+ done
+
+Route32Pokecenter1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 7, ROUTE_32, 1
+ warp_event 4, 7, ROUTE_32, 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, Route32Pokecenter1FNurseScript, -1
+ object_event 1, 4, SPRITE_FISHING_GURU, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route32Pokecenter1FFishingGuruScript, -1
+ object_event 6, 2, SPRITE_COOLTRAINER_F, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Route32Pokecenter1FCooltrainerFScript, -1
diff --git a/maps/Route32RuinsOfAlphGate.asm b/maps/Route32RuinsOfAlphGate.asm
new file mode 100644
index 00000000..3329d54f
--- /dev/null
+++ b/maps/Route32RuinsOfAlphGate.asm
@@ -0,0 +1,63 @@
+ const_def 2 ; object constants
+ const ROUTE32RUINSOFALPHGATE_OFFICER
+ const ROUTE32RUINSOFALPHGATE_POKEFAN_M
+ const ROUTE32RUINSOFALPHGATE_YOUNGSTER
+
+Route32RuinsOfAlphGate_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Route32RuinsOfAlphGateOfficerScript:
+ jumptextfaceplayer Route32RuinsOfAlphGateOfficerText
+
+Route32RuinsOfAlphGatePokefanMScript:
+ jumptextfaceplayer Route32RuinsOfAlphGatePokefanMText
+
+Route32RuinsOfAlphGateYoungsterScript:
+ jumptextfaceplayer Route32RuinsOfAlphGateYoungsterText
+
+Route32RuinsOfAlphGateOfficerText:
+ text "RUINS OF ALPH"
+
+ para "A Look-and-Touch"
+ line "Tourist Site"
+
+ para "Try the sliding"
+ line "stone panels!"
+ done
+
+Route32RuinsOfAlphGatePokefanMText:
+ text "You're studying"
+ line "the RUINS?"
+
+ para "I see a scientist"
+ line "in the making."
+ done
+
+Route32RuinsOfAlphGateYoungsterText:
+ text "There are drawings"
+ line "on stone panels."
+
+ para "I tried moving"
+ line "them. I wonder"
+ cont "what they are."
+ done
+
+Route32RuinsOfAlphGate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 0, 4, RUINS_OF_ALPH_OUTSIDE, 10
+ warp_event 0, 5, RUINS_OF_ALPH_OUTSIDE, 11
+ warp_event 9, 4, ROUTE_32, 2
+ warp_event 9, 5, ROUTE_32, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 3 ; object events
+ object_event 5, 2, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Route32RuinsOfAlphGateOfficerScript, -1
+ object_event 8, 2, SPRITE_POKEFAN_M, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, Route32RuinsOfAlphGatePokefanMScript, -1
+ object_event 1, 6, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route32RuinsOfAlphGateYoungsterScript, -1
diff --git a/maps/Route35GoldenrodGate.asm b/maps/Route35GoldenrodGate.asm
new file mode 100644
index 00000000..b2816dbd
--- /dev/null
+++ b/maps/Route35GoldenrodGate.asm
@@ -0,0 +1,194 @@
+ const_def 2 ; object constants
+ const ROUTE35GOLDENRODGATE_OFFICER
+ const ROUTE35GOLDENRODGATE_POKEFAN_F
+ const ROUTE35GOLDENRODGATE_FISHER
+
+Route35GoldenrodGate_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+RandyScript:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_HP_UP_FROM_RANDY
+ iftrue .gothpup
+ checkevent EVENT_GAVE_KENYA
+ iftrue .questcomplete
+ checkevent EVENT_GOT_KENYA
+ iftrue .alreadyhavekenya
+ writetext UnknownText_0x69ddd
+ yesorno
+ iffalse .refused
+ writetext UnknownText_0x69e48
+ buttonsound
+ waitsfx
+ checkcode VAR_PARTYCOUNT
+ ifequal PARTY_LENGTH, .partyfull
+ writetext UnknownText_0x69eb8
+ playsound SFX_KEY_ITEM
+ waitsfx
+ givepoke SPEAROW, 10, NO_ITEM, TRUE, GiftSpearowName, GiftSpearowOTName
+ givepokemail GiftSpearowMail
+ setevent EVENT_GOT_KENYA
+.alreadyhavekenya
+ writetext UnknownText_0x69ed6
+ waitbutton
+ closetext
+ end
+
+.partyfull
+ writetext UnknownText_0x69f56
+ waitbutton
+ closetext
+ end
+
+.refused
+ writetext UnknownText_0x69f74
+ waitbutton
+ closetext
+ end
+
+.questcomplete
+ writetext UnknownText_0x69f8b
+ buttonsound
+ verbosegiveitem HP_UP
+ iffalse .bagfull
+ setevent EVENT_GOT_HP_UP_FROM_RANDY
+.gothpup
+ writetext UnknownText_0x69fd9
+ waitbutton
+.bagfull
+ closetext
+ end
+
+GiftSpearowMail:
+ db FLOWER_MAIL
+ db "DARK CAVE leads"
+ next "to another road@"
+
+GiftSpearowName:
+ db "KENYA@"
+
+GiftSpearowOTName:
+ db "RANDY@"
+
+Route35GoldenrodGatePokefanFScript:
+ faceplayer
+ opentext
+ checkevent EVENT_FOUGHT_SUDOWOODO
+ iftrue .FoughtSudowoodo
+ writetext Route35GoldenrodGatePokefanFText
+ waitbutton
+ closetext
+ end
+
+.FoughtSudowoodo
+ writetext Route35GoldenrodGatePokefanFText_FoughtSudowoodo
+ waitbutton
+ closetext
+ end
+
+UnknownText_0x69ddd:
+ text "Excuse me, guy!"
+ line "Can you do a guy"
+ cont "a favor?"
+
+ para "Can you take this"
+ line "#MON with MAIL"
+ cont "to my friend?"
+
+ para "He's on ROUTE 31."
+ done
+
+UnknownText_0x69e48:
+ text "You will? Perfect!"
+ line "Thanks, guy!"
+
+ para "My pal's a chubby"
+ line "guy who snoozes"
+ cont "all the time."
+
+ para "You'll recognize"
+ line "him right away!"
+ done
+
+UnknownText_0x69eb8:
+ text "<PLAYER> received a"
+ line "#MON with MAIL."
+ done
+
+UnknownText_0x69ed6:
+ text "You can read it,"
+ line "but don't lose it!"
+ cont "ROUTE 31!"
+
+ para "Oh, yeah. There"
+ line "was a weird tree"
+ cont "blocking the road."
+
+ para "I wonder if it's"
+ line "been cleared?"
+ done
+
+UnknownText_0x69f56:
+ text "You can't carry"
+ line "another #MON…"
+ done
+
+UnknownText_0x69f74:
+ text "Oh… Never mind,"
+ line "then…"
+ done
+
+UnknownText_0x69f8b:
+ text "Thanks, guy! You"
+ line "made the delivery"
+ cont "for me!"
+
+ para "Here's something"
+ line "for your trouble!"
+ done
+
+UnknownText_0x69fd9:
+ text "My pal was snooz-"
+ line "ing, right? Heh,"
+ cont "what'd I say?"
+ done
+
+Route35GoldenrodGatePokefanFText:
+ text "A strange tree is"
+ line "blocking the road."
+
+ para "It wriggles around"
+ line "if you talk to it."
+
+ para "I heard it became"
+ line "wild when someone"
+
+ para "watered it with a"
+ line "SQUIRTBOTTLE."
+ done
+
+Route35GoldenrodGatePokefanFText_FoughtSudowoodo:
+ text "I like the #MON"
+ line "Lullaby they play"
+ cont "on the radio."
+ done
+
+Route35GoldenrodGate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 0, ROUTE_35, 1
+ warp_event 5, 0, ROUTE_35, 2
+ warp_event 4, 7, GOLDENROD_CITY, 13
+ warp_event 5, 7, GOLDENROD_CITY, 13
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 2 ; object events
+ object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, RandyScript, -1
+ object_event 6, 4, SPRITE_POKEFAN_F, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 1, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Route35GoldenrodGatePokefanFScript, -1
diff --git a/maps/Route35NationalParkGate.asm b/maps/Route35NationalParkGate.asm
new file mode 100644
index 00000000..35040564
--- /dev/null
+++ b/maps/Route35NationalParkGate.asm
@@ -0,0 +1,452 @@
+ const_def 2 ; object constants
+ const ROUTE35NATIONALPARKGATE_OFFICER1
+ const ROUTE35NATIONALPARKGATE_YOUNGSTER
+ const ROUTE35NATIONALPARKGATE_OFFICER2
+
+Route35NationalParkGate_MapScripts:
+ db 3 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_ROUTE35NATIONALPARKGATE_NOTHING
+ scene_script .DummyScene1 ; SCENE_ROUTE35NATIONALPARKGATE_UNUSED
+ scene_script .LeaveContestEarly ; SCENE_ROUTE35NATIONALPARKGATE_LEAVE_CONTEST_EARLY
+
+ db 2 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .CheckIfContestRunning
+ callback MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
+
+.DummyScene0:
+ end
+
+.DummyScene1:
+ end
+
+.LeaveContestEarly:
+ priorityjump .LeavingContestEarly
+ end
+
+.CheckIfContestRunning:
+ checkflag ENGINE_BUG_CONTEST_TIMER
+ iftrue .BugContestIsRunning
+ setscene SCENE_ROUTE35NATIONALPARKGATE_NOTHING
+ return
+
+.BugContestIsRunning:
+ setscene SCENE_ROUTE35NATIONALPARKGATE_LEAVE_CONTEST_EARLY
+ return
+
+.CheckIfContestAvailable:
+ checkcode VAR_WEEKDAY
+ ifequal TUESDAY, .SetContestOfficer
+ ifequal THURSDAY, .SetContestOfficer
+ ifequal SATURDAY, .SetContestOfficer
+ checkflag ENGINE_BUG_CONTEST_TIMER
+ iftrue .BugContestIsRunning
+ disappear ROUTE35NATIONALPARKGATE_OFFICER1
+ appear ROUTE35NATIONALPARKGATE_YOUNGSTER
+ appear ROUTE35NATIONALPARKGATE_OFFICER2
+ return
+
+.SetContestOfficer:
+ appear ROUTE35NATIONALPARKGATE_OFFICER1
+ disappear ROUTE35NATIONALPARKGATE_YOUNGSTER
+ disappear ROUTE35NATIONALPARKGATE_OFFICER2
+ return
+
+.LeavingContestEarly:
+ applymovement PLAYER, MovementData_0x6a2e2
+ turnobject ROUTE35NATIONALPARKGATE_OFFICER1, RIGHT
+ opentext
+ checkcode VAR_CONTESTMINUTES
+ addvar 1
+ vartomem MEM_BUFFER_0
+ writetext UnknownText_0x6a79a
+ yesorno
+ iffalse .GoBackToContest
+ writetext UnknownText_0x6a7db
+ waitbutton
+ closetext
+ jumpstd bugcontestresultswarp
+
+.GoBackToContest:
+ writetext UnknownText_0x6a823
+ waitbutton
+ closetext
+ scall Route35NationalParkGate_EnterContest
+ playsound SFX_ENTER_DOOR
+ special FadeOutPalettes
+ waitsfx
+ warp NATIONAL_PARK_BUG_CONTEST, 10, 47
+ end
+
+Route35OfficerScriptContest:
+ checkcode VAR_WEEKDAY
+ ifequal SUNDAY, Route35NationalParkGate_NoContestToday
+ ifequal MONDAY, Route35NationalParkGate_NoContestToday
+ ifequal WEDNESDAY, Route35NationalParkGate_NoContestToday
+ ifequal FRIDAY, Route35NationalParkGate_NoContestToday
+ faceplayer
+ opentext
+ checkflag ENGINE_DAILY_BUG_CONTEST
+ iftrue Route35NationalParkGate_ContestIsOver
+ scall Route35NationalParkGate_GetDayOfWeek
+ writetext UnknownText_0x6a2eb
+ yesorno
+ iffalse Route35NationalParkGate_DeclinedToParticipate
+ checkcode VAR_PARTYCOUNT
+ ifgreater 1, Route35NationalParkGate_LeaveTheRestBehind
+ special ContestDropOffMons
+ clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+Route35NationalParkGate_OkayToProceed:
+ setflag ENGINE_BUG_CONTEST_TIMER
+ special PlayMapMusic
+ writetext UnknownText_0x6a39d
+ buttonsound
+ writetext UnknownText_0x6a3c7
+ playsound SFX_ITEM
+ waitsfx
+ writetext UnknownText_0x6a3e2
+ waitbutton
+ closetext
+ special GiveParkBalls
+ scall Route35NationalParkGate_EnterContest
+ playsound SFX_ENTER_DOOR
+ special FadeOutPalettes
+ waitsfx
+ special SelectRandomBugContestContestants
+ warp NATIONAL_PARK_BUG_CONTEST, 10, 47
+ end
+
+Route35NationalParkGate_EnterContest:
+ checkcode VAR_FACING
+ ifequal LEFT, Route35NationalParkGate_FacingLeft
+ applymovement PLAYER, MovementData_0x6a2e5
+ end
+
+Route35NationalParkGate_FacingLeft:
+ applymovement PLAYER, MovementData_0x6a2e9
+ end
+
+Route35NationalParkGate_LeaveTheRestBehind:
+ checkcode VAR_PARTYCOUNT
+ ifless PARTY_LENGTH, Route35NationalParkGate_LessThanFullParty
+ checkcode VAR_BOXSPACE
+ ifequal 0, Route35NationalParkGate_NoRoomInBox
+
+Route35NationalParkGate_LessThanFullParty:
+ special CheckFirstMonIsEgg
+ ifequal TRUE, Route35NationalParkGate_FirstMonIsEgg
+ writetext UnknownText_0x6a4c6
+ yesorno
+ iffalse Route35NationalParkGate_DeclinedToLeaveMonsBehind
+ special ContestDropOffMons
+ iftrue Route35NationalParkGate_FirstMonIsFainted
+ setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+ writetext UnknownText_0x6a537
+ buttonsound
+ writetext UnknownText_0x6a56b
+ playsound SFX_GOT_SAFARI_BALLS
+ waitsfx
+ buttonsound
+ jump Route35NationalParkGate_OkayToProceed
+
+Route35NationalParkGate_DeclinedToParticipate:
+ writetext UnknownText_0x6a5dc
+ waitbutton
+ closetext
+ end
+
+Route35NationalParkGate_DeclinedToLeaveMonsBehind:
+ writetext UnknownText_0x6a597
+ waitbutton
+ closetext
+ end
+
+Route35NationalParkGate_FirstMonIsFainted:
+ writetext UnknownText_0x6a608
+ waitbutton
+ closetext
+ end
+
+Route35NationalParkGate_NoRoomInBox:
+ writetext UnknownText_0x6a67c
+ waitbutton
+ closetext
+ end
+
+Route35NationalParkGate_FirstMonIsEgg:
+ writetext UnknownText_0x6a71f
+ waitbutton
+ closetext
+ end
+
+Route35NationalParkGate_ContestIsOver:
+ writetext UnknownText_0x6a84f
+ waitbutton
+ closetext
+ end
+
+Route35NationalParkGate_NoContestToday:
+ jumptextfaceplayer UnknownText_0x6a894
+
+Route35NationalParkGateOfficerScript:
+ faceplayer
+ opentext
+ checkflag ENGINE_DAILY_BUG_CONTEST
+ iftrue Route35NationalParkGate_ContestIsOver
+ writetext UnknownText_0x6a894
+ waitbutton
+ closetext
+ end
+
+Route35NationalParkGateYoungsterScript:
+ jumptextfaceplayer Route35NationalParkGateYoungsterText
+
+BugCatchingContestExplanationSign:
+ jumptext BugCatchingContestExplanationText
+
+Route35NationalParkGate_GetDayOfWeek:
+ jumpstd daytotext
+ end
+
+MovementData_0x6a2e2:
+ step DOWN
+ turn_head LEFT
+ step_end
+
+MovementData_0x6a2e5:
+ step RIGHT
+ step UP
+ step UP
+ step_end
+
+MovementData_0x6a2e9:
+ step UP
+ step_end
+
+UnknownText_0x6a2eb:
+ text "Today's @"
+ text_from_ram wStringBuffer3
+ text "."
+ line "That means the"
+
+ para "Bug-Catching Con-"
+ line "test is on today."
+
+ para "The rules are sim-"
+ line "ple."
+
+ para "Using one of your"
+ line "#MON, catch a"
+
+ para "bug #MON to be"
+ line "judged."
+
+ para "Would you like to"
+ line "give it a try?"
+ done
+
+UnknownText_0x6a39d:
+ text "Here are the PARK"
+ line "BALLS for the"
+ cont "Contest."
+ done
+
+UnknownText_0x6a3c7:
+ text "<PLAYER> received"
+ line "20 PARK BALLS."
+ done
+
+UnknownText_0x6a3e2:
+ text "The person who"
+ line "gets the strong-"
+ cont "est bug #MON"
+ cont "is the winner."
+
+ para "You have 20"
+ line "minutes."
+
+ para "If you run out of"
+ line "PARK BALLS, you're"
+ cont "done."
+
+ para "You can keep the"
+ line "last #MON you"
+ cont "catch as your own."
+
+ para "Go out and catch"
+ line "the strongest bug"
+
+ para "#MON you can"
+ line "find!"
+ done
+
+UnknownText_0x6a4c6:
+ text "Uh-oh…"
+
+ para "You have more than"
+ line "one #MON."
+
+ para "You'll have to use"
+ line "@"
+ text_from_ram wStringBuffer3
+ text ", the"
+
+ para "first #MON in"
+ line "your party."
+
+ para "Is that OK with"
+ line "you?"
+ done
+
+UnknownText_0x6a537:
+ text "Fine, we'll hold"
+ line "your other #MON"
+ cont "while you compete."
+ done
+
+UnknownText_0x6a56b:
+ text "<PLAYER>'s #MON"
+ line "were left with the"
+ cont "CONTEST HELPER."
+ done
+
+UnknownText_0x6a597:
+ text "Please choose the"
+ line "#MON to be used"
+
+ para "in the Contest,"
+ line "then come see me."
+ done
+
+UnknownText_0x6a5dc:
+ text "OK. We hope you'll"
+ line "take part in the"
+ cont "future."
+ done
+
+UnknownText_0x6a608:
+ text "Uh-oh…"
+ line "The first #MON"
+
+ para "in your party"
+ line "can't battle."
+
+ para "Please switch it"
+ line "with the #MON"
+
+ para "you want to use,"
+ line "then come see me."
+ done
+
+UnknownText_0x6a67c:
+ text "Uh-oh…"
+ line "Both your party"
+
+ para "and your PC BOX"
+ line "are full."
+
+ para "You have no room"
+ line "to put the bug"
+ cont "#MON you catch."
+
+ para "Please make room"
+ line "in your party or"
+
+ para "your PC BOX, then"
+ line "come see me."
+ done
+
+UnknownText_0x6a71f:
+ text "Uh-oh…"
+ line "You have an EGG as"
+
+ para "the first #MON"
+ line "in your party."
+
+ para "Please switch it"
+ line "with the #MON"
+
+ para "you want to use,"
+ line "then come see me."
+ done
+
+UnknownText_0x6a79a:
+ text "You still have @"
+ text_from_ram wStringBuffer3
+ text_start
+ line "minute(s) left."
+
+ para "Do you want to"
+ line "finish now?"
+ done
+
+UnknownText_0x6a7db:
+ text "OK. Please wait at"
+ line "the North Gate for"
+
+ para "the announcement"
+ line "of the winners."
+ done
+
+UnknownText_0x6a823:
+ text "OK. Please get"
+ line "back outside and"
+ cont "finish up."
+ done
+
+UnknownText_0x6a84f:
+ text "Today's Contest is"
+ line "over. We hope you"
+
+ para "will participate"
+ line "in the future."
+ done
+
+UnknownText_0x6a894:
+ text "We hold Contests"
+ line "regularly in the"
+
+ para "PARK. You should"
+ line "give it a shot."
+ done
+
+Route35NationalParkGateYoungsterText:
+ text "When is the next"
+ line "Bug-Catching Con-"
+ cont "test going to be?"
+ done
+
+BugCatchingContestExplanationText:
+ text "The Bug-Catching"
+ line "Contest is held on"
+
+ para "Tuesday, Thursday"
+ line "and Saturday."
+
+ para "Not only do you"
+ line "earn a prize just"
+
+ para "for participating,"
+ line "you also get to"
+
+ para "keep a bug #MON"
+ line "that you catch."
+ done
+
+Route35NationalParkGate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 3, 0, NATIONAL_PARK, 3
+ warp_event 4, 0, NATIONAL_PARK, 4
+ warp_event 3, 7, ROUTE_35, 3
+ warp_event 4, 7, ROUTE_35, 3
+
+ db 0 ; coord events
+
+ db 1 ; bg events
+ bg_event 5, 0, BGEVENT_READ, BugCatchingContestExplanationSign
+
+ db 3 ; object events
+ object_event 2, 1, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route35OfficerScriptContest, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+ object_event 6, 5, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WANDER, 1, 1, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Route35NationalParkGateYoungsterScript, EVENT_ROUTE_35_NATIONAL_PARK_GATE_YOUNGSTER
+ object_event 0, 3, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route35NationalParkGateOfficerScript, EVENT_ROUTE_35_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
diff --git a/maps/Route36NationalParkGate.asm b/maps/Route36NationalParkGate.asm
new file mode 100644
index 00000000..52fc9ac2
--- /dev/null
+++ b/maps/Route36NationalParkGate.asm
@@ -0,0 +1,875 @@
+ const_def 2 ; object constants
+ const ROUTE36NATIONALPARKGATE_OFFICER1
+ const ROUTE36NATIONALPARKGATE_YOUNGSTER1
+ const ROUTE36NATIONALPARKGATE_YOUNGSTER2
+ const ROUTE36NATIONALPARKGATE_ROCKER
+ const ROUTE36NATIONALPARKGATE_POKEFAN_M
+ const ROUTE36NATIONALPARKGATE_YOUNGSTER3
+ const ROUTE36NATIONALPARKGATE_YOUNGSTER4
+ const ROUTE36NATIONALPARKGATE_LASS
+ const ROUTE36NATIONALPARKGATE_YOUNGSTER5
+ const ROUTE36NATIONALPARKGATE_YOUNGSTER6
+ const ROUTE36NATIONALPARKGATE_YOUNGSTER7
+ const ROUTE36NATIONALPARKGATE_OFFICER2
+
+Route36NationalParkGate_MapScripts:
+ db 3 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_ROUTE36NATIONALPARKGATE_NOTHING
+ scene_script .DummyScene1 ; SCENE_ROUTE36NATIONALPARKGATE_UNUSED
+ scene_script .LeaveContestEarly ; SCENE_ROUTE36NATIONALPARKGATE_LEAVE_CONTEST_EARLY
+
+ db 2 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .CheckIfContestRunning
+ callback MAPCALLBACK_OBJECTS, .CheckIfContestAvailable
+
+.DummyScene0:
+ end
+
+.DummyScene1:
+ end
+
+.LeaveContestEarly:
+ priorityjump .LeavingContestEarly
+ end
+
+.CheckIfContestRunning:
+ checkflag ENGINE_BUG_CONTEST_TIMER
+ iftrue .BugContestIsRunning
+ setscene SCENE_ROUTE36NATIONALPARKGATE_NOTHING
+ return
+
+.BugContestIsRunning:
+ setscene SCENE_ROUTE36NATIONALPARKGATE_LEAVE_CONTEST_EARLY
+ return
+
+.CheckIfContestAvailable:
+ checkevent EVENT_WARPED_FROM_ROUTE_35_NATIONAL_PARK_GATE
+ iftrue .Return
+ checkcode VAR_WEEKDAY
+ ifequal TUESDAY, .SetContestOfficer
+ ifequal THURSDAY, .SetContestOfficer
+ ifequal SATURDAY, .SetContestOfficer
+ checkflag ENGINE_BUG_CONTEST_TIMER
+ iftrue .SetContestOfficer
+ disappear ROUTE36NATIONALPARKGATE_OFFICER1
+ appear ROUTE36NATIONALPARKGATE_OFFICER2
+ return
+
+.SetContestOfficer:
+ appear ROUTE36NATIONALPARKGATE_OFFICER1
+ disappear ROUTE36NATIONALPARKGATE_OFFICER2
+.Return:
+ return
+
+.LeavingContestEarly:
+ turnobject PLAYER, UP
+ opentext
+ checkcode VAR_CONTESTMINUTES
+ addvar 1
+ vartomem MEM_BUFFER_0
+ writetext UnknownText_0x6b284
+ yesorno
+ iffalse .GoBackToContest
+ writetext UnknownText_0x6b2c5
+ waitbutton
+ closetext
+ special FadeBlackQuickly
+ special ReloadSpritesNoPalettes
+ scall .CopyContestants
+ disappear ROUTE36NATIONALPARKGATE_OFFICER1
+ appear ROUTE36NATIONALPARKGATE_OFFICER2
+ applymovement PLAYER, MovementData_0x6add1
+ pause 15
+ special FadeInQuickly
+ jumpstd bugcontestresults
+
+.GoBackToContest:
+ writetext UnknownText_0x6b300
+ waitbutton
+ closetext
+ turnobject PLAYER, LEFT
+ playsound SFX_EXIT_BUILDING
+ special FadeOutPalettes
+ waitsfx
+ warp NATIONAL_PARK_BUG_CONTEST, 33, 18
+ end
+
+.CopyContestants:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_1A
+ iftrue .Not1
+ appear ROUTE36NATIONALPARKGATE_YOUNGSTER1
+.Not1:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_2A
+ iftrue .Not2
+ appear ROUTE36NATIONALPARKGATE_YOUNGSTER2
+.Not2:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_3A
+ iftrue .Not3
+ appear ROUTE36NATIONALPARKGATE_ROCKER
+.Not3:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_4A
+ iftrue .Not4
+ appear ROUTE36NATIONALPARKGATE_POKEFAN_M
+.Not4:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_5A
+ iftrue .Not5
+ appear ROUTE36NATIONALPARKGATE_YOUNGSTER3
+.Not5:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_6A
+ iftrue .Not6
+ appear ROUTE36NATIONALPARKGATE_YOUNGSTER4
+.Not6:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_7A
+ iftrue .Not7
+ appear ROUTE36NATIONALPARKGATE_LASS
+.Not7:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_8A
+ iftrue .Not8
+ appear ROUTE36NATIONALPARKGATE_YOUNGSTER5
+.Not8:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_9A
+ iftrue .Not9
+ appear ROUTE36NATIONALPARKGATE_YOUNGSTER6
+.Not9:
+ checkevent EVENT_BUG_CATCHING_CONTESTANT_10A
+ iftrue .Not10
+ appear ROUTE36NATIONALPARKGATE_YOUNGSTER7
+.Not10:
+ special UpdateSprites
+ end
+
+Route36OfficerScriptContest:
+ checkcode VAR_WEEKDAY
+ ifequal SUNDAY, _ContestNotOn
+ ifequal MONDAY, _ContestNotOn
+ ifequal WEDNESDAY, _ContestNotOn
+ ifequal FRIDAY, _ContestNotOn
+ faceplayer
+ opentext
+ checkflag ENGINE_DAILY_BUG_CONTEST
+ iftrue Route36Officer_ContestHasConcluded
+ scall Route36ParkGate_DayToText
+ writetext UnknownText_0x6add5
+ yesorno
+ iffalse .DecidedNotToJoinContest
+ checkcode VAR_PARTYCOUNT
+ ifgreater 1, .LeaveMonsWithOfficer
+ special ContestDropOffMons
+ clearevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+.ResumeStartingContest:
+ setflag ENGINE_BUG_CONTEST_TIMER
+ special PlayMapMusic
+ writetext UnknownText_0x6ae87
+ buttonsound
+ waitsfx
+ writetext UnknownText_0x6aeb1
+ playsound SFX_ITEM
+ waitsfx
+ writetext UnknownText_0x6aecc
+ waitbutton
+ closetext
+ setflag ENGINE_BUG_CONTEST_TIMER
+ special GiveParkBalls
+ turnobject PLAYER, LEFT
+ playsound SFX_EXIT_BUILDING
+ special FadeOutPalettes
+ waitsfx
+ special SelectRandomBugContestContestants
+ warp NATIONAL_PARK_BUG_CONTEST, 33, 18
+ end
+
+.LeaveMonsWithOfficer:
+ checkcode VAR_PARTYCOUNT
+ ifless PARTY_LENGTH, .ContinueLeavingMons
+ checkcode VAR_BOXSPACE
+ ifequal 0, .BoxFull
+.ContinueLeavingMons:
+ special CheckFirstMonIsEgg
+ ifequal TRUE, .FirstMonIsEgg
+ writetext UnknownText_0x6afb0
+ yesorno
+ iffalse .RefusedToLeaveMons
+ special ContestDropOffMons
+ iftrue .FirstMonIsFainted
+ setevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
+ writetext UnknownText_0x6b021
+ buttonsound
+ writetext UnknownText_0x6b055
+ playsound SFX_GOT_SAFARI_BALLS
+ waitsfx
+ buttonsound
+ jump .ResumeStartingContest
+
+.DecidedNotToJoinContest:
+ writetext UnknownText_0x6b0c6
+ waitbutton
+ closetext
+ end
+
+.RefusedToLeaveMons:
+ writetext UnknownText_0x6b081
+ waitbutton
+ closetext
+ end
+
+.FirstMonIsFainted:
+ writetext UnknownText_0x6b0f2
+ waitbutton
+ closetext
+ end
+
+.BoxFull:
+ writetext UnknownText_0x6b166
+ waitbutton
+ closetext
+ end
+
+.FirstMonIsEgg:
+ writetext UnknownText_0x6b209
+ waitbutton
+ closetext
+ end
+
+Route36Officer_ContestHasConcluded:
+ checkevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+ iftrue .Sunstone
+ checkevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+ iftrue .Everstone
+ checkevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+ iftrue .GoldBerry
+ checkevent EVENT_CONTEST_OFFICER_HAS_BERRY
+ iftrue .Berry
+ writetext UnknownText_0x6b32b
+ waitbutton
+ closetext
+ end
+
+.Sunstone:
+ writetext UnknownText_0x6b97f
+ buttonsound
+ verbosegiveitem SUN_STONE
+ iffalse .BagFull
+ clearevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
+ closetext
+ end
+
+.Everstone:
+ writetext UnknownText_0x6b97f
+ buttonsound
+ verbosegiveitem EVERSTONE
+ iffalse .BagFull
+ clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
+ closetext
+ end
+
+.GoldBerry:
+ writetext UnknownText_0x6b97f
+ buttonsound
+ verbosegiveitem GOLD_BERRY
+ iffalse .BagFull
+ clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
+ closetext
+ end
+
+.Berry:
+ writetext UnknownText_0x6b97f
+ buttonsound
+ verbosegiveitem BERRY
+ iffalse .BagFull
+ clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
+ closetext
+ end
+
+.BagFull:
+ writetext UnknownText_0x6b910
+ waitbutton
+ closetext
+ end
+
+_ContestNotOn:
+ jumptextfaceplayer UnknownText_0x6b370
+
+Route36NationalParkGateOfficerScript:
+ faceplayer
+ opentext
+ checkflag ENGINE_DAILY_BUG_CONTEST
+ iftrue Route36Officer_ContestHasConcluded
+ writetext UnknownText_0x6b370
+ waitbutton
+ closetext
+ end
+
+Route36ParkGate_DayToText:
+ jumpstd daytotext
+ end
+
+BugCatchingContestant1BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant1BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant1BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant2BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant2BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant2BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant3BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant3BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant3BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant4BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant4BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant4BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant5BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant5BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant5BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant6BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant6BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant6BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant7BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant7BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant7BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant8BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant8BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant8BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant9BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant9BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant9BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+BugCatchingContestant10BScript:
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iffalse .StillCompeting
+ writetext BugCatchingContestant10BText
+ waitbutton
+ closetext
+ end
+
+.StillCompeting:
+ writetext BugCatchingContestant10BStillCompetingText
+ waitbutton
+ closetext
+ end
+
+UnusedBugCatchingContestExplanationSign:
+; duplicate of BugCatchingContestExplanationSign in Route35NationalParkGate.asm
+ jumptext UnusedBugCatchingContestExplanationText
+
+MovementData_0x6add1:
+ big_step DOWN
+ big_step RIGHT
+ turn_head UP
+ step_end
+
+UnknownText_0x6add5:
+ text "Today's @"
+ text_from_ram wStringBuffer3
+ text "."
+ line "That means the"
+
+ para "Bug-Catching Con-"
+ line "test is on today."
+
+ para "The rules are"
+ line "simple."
+
+ para "Using one of your"
+ line "#MON, catch a"
+
+ para "bug #MON to be"
+ line "judged."
+
+ para "Would you like to"
+ line "give it a try?"
+ done
+
+UnknownText_0x6ae87:
+ text "Here are the PARK"
+ line "BALLS for the"
+ cont "Contest."
+ done
+
+UnknownText_0x6aeb1:
+ text "<PLAYER> received"
+ line "20 PARK BALLS."
+ done
+
+UnknownText_0x6aecc:
+ text "The person who"
+ line "gets the strong-"
+ cont "est bug #MON"
+ cont "is the winner."
+
+ para "You have 20"
+ line "minutes."
+
+ para "If you run out of"
+ line "PARK BALLS, you're"
+ cont "done."
+
+ para "You may keep the"
+ line "last #MON you"
+ cont "catch as your own."
+
+ para "Go out and catch"
+ line "the strongest bug"
+
+ para "#MON you can"
+ line "find!"
+ done
+
+UnknownText_0x6afb0:
+ text "Uh-oh…"
+
+ para "You have more than"
+ line "one #MON."
+
+ para "You'll have to use"
+ line "@"
+ text_from_ram wStringBuffer3
+ text ", the"
+
+ para "first #MON in"
+ line "your party."
+
+ para "Is that OK with"
+ line "you?"
+ done
+
+UnknownText_0x6b021:
+ text "Fine. We'll hold"
+ line "your other #MON"
+ cont "while you compete."
+ done
+
+UnknownText_0x6b055:
+ text "<PLAYER>'s #MON"
+ line "were left with the"
+ cont "CONTEST HELPER."
+ done
+
+UnknownText_0x6b081:
+ text "Please choose the"
+ line "#MON to be used"
+
+ para "in the Contest,"
+ line "then come see me."
+ done
+
+UnknownText_0x6b0c6:
+ text "OK. We hope you'll"
+ line "take part in the"
+ cont "future."
+ done
+
+UnknownText_0x6b0f2:
+ text "Uh-oh…"
+ line "The first #MON"
+
+ para "in your party"
+ line "can't battle."
+
+ para "Please switch it"
+ line "with the #MON"
+
+ para "you want to use,"
+ line "then come see me."
+ done
+
+UnknownText_0x6b166:
+ text "Uh-oh…"
+ line "Both your party"
+
+ para "and your PC BOX"
+ line "are full."
+
+ para "You have nowhere"
+ line "to put the bug"
+ cont "#MON you catch."
+
+ para "Please make room"
+ line "in your party or"
+
+ para "your PC BOX, then"
+ line "come see me."
+ done
+
+UnknownText_0x6b209:
+ text "Uh-oh…"
+ line "You have an EGG as"
+
+ para "the first #MON"
+ line "in your party."
+
+ para "Please switch it"
+ line "with the #MON"
+
+ para "you want to use,"
+ line "then come see me."
+ done
+
+UnknownText_0x6b284:
+ text "You still have @"
+ text_from_ram wStringBuffer3
+ text_start
+ line "minutes left."
+
+ para "Do you want to"
+ line "finish now?"
+ done
+
+UnknownText_0x6b2c5:
+ text "OK. Please wait"
+ line "here for the"
+
+ para "announcement of"
+ line "the winners."
+ done
+
+UnknownText_0x6b300:
+ text "OK. Please go back"
+ line "outside and finish"
+ cont "up."
+ done
+
+UnknownText_0x6b32b:
+ text "Today's Contest is"
+ line "over. We hope you"
+
+ para "will participate"
+ line "in the future."
+ done
+
+UnknownText_0x6b370:
+ text "Some #MON can"
+ line "only be seen in"
+ cont "the PARK."
+ done
+
+BugCatchingContestant1BText:
+ text "DON: Wow, you beat"
+ line "me. You're pretty"
+ cont "good."
+ done
+
+BugCatchingContestant1BStillCompetingText:
+ text "DON: Luck plays a"
+ line "big part in this."
+
+ para "You never know"
+ line "what #MON will"
+ cont "appear."
+ done
+
+BugCatchingContestant2BText:
+ text "ED: I envy you."
+ line "I just couldn't"
+ cont "do it this time."
+ done
+
+BugCatchingContestant2BStillCompetingText:
+ text "ED: Maybe you win"
+ line "with big #MON?"
+ done
+
+BugCatchingContestant3BText:
+ text "NICK: Well done!"
+ line "I'm going to raise"
+ cont "my #MON better."
+ done
+
+BugCatchingContestant3BStillCompetingText:
+ text "NICK: Maybe you"
+ line "get a higher score"
+
+ para "for a #MON of"
+ line "an unusual color."
+ done
+
+BugCatchingContestant4BText:
+ text "WILLIAM: You're"
+ line "the winner? What"
+ cont "did you catch?"
+ done
+
+BugCatchingContestant4BStillCompetingText:
+ text "WILLIAM: Well, I'm"
+ line "satisfied because"
+
+ para "I caught a #MON"
+ line "that I wanted."
+ done
+
+BugCatchingContestant5BText:
+ text "BENNY: Congrats!"
+ line "You have earned my"
+ cont "respect!"
+ done
+
+BugCatchingContestant5BStillCompetingText:
+ text "BENNY: I caught a"
+ line "SCYTHER before,"
+ cont "but I didn't win."
+ done
+
+BugCatchingContestant6BText:
+ text "BARRY: That #-"
+ line "MON you caught…"
+ cont "it's awesome!"
+ done
+
+BugCatchingContestant6BStillCompetingText:
+ text "BARRY: It's easier"
+ line "to win if you get"
+
+ para "a high-level bug"
+ line "#MON."
+
+ para "But I think they"
+ line "also consider some"
+ cont "other points."
+ done
+
+BugCatchingContestant7BText:
+ text "CINDY: You won?"
+ line "That's great!"
+
+ para "Do you feel like"
+ line "looking for bug"
+ cont "#MON with me?"
+ done
+
+BugCatchingContestant7BStillCompetingText:
+ text "CINDY: I really"
+ line "love bug #MON!"
+ done
+
+BugCatchingContestant8BText:
+ text "JOSH: I… I can't"
+ line "believe I lost at"
+ cont "bug-catching…"
+ done
+
+BugCatchingContestant8BStillCompetingText:
+ text "JOSH: I heard that"
+ line "somebody won with"
+ cont "a CATERPIE!"
+ done
+
+BugCatchingContestant9BText:
+ text "SAMUEL: Next time,"
+ line "I'm going to win."
+ done
+
+BugCatchingContestant9BStillCompetingText:
+ text "SAMUEL: Darn."
+ line "I thought I would"
+ cont "score higher…"
+ done
+
+BugCatchingContestant10BText:
+ text "KIPP: Could you"
+ line "give me some tips?"
+
+ para "I want to study"
+ line "your style."
+ done
+
+BugCatchingContestant10BStillCompetingText:
+ text "KIPP: I study a"
+ line "lot, but that's"
+
+ para "not good enough to"
+ line "win."
+ done
+
+UnusedSudowoodoText:
+; This text is unused and unreferenced in the final game.
+; The tree Pokémon is Sudowoodo.
+; The Silph Scope 2 was later reworked into the Squirtbottle.
+ text "I hear there's a"
+ line "#MON that looks"
+ cont "just like a tree."
+
+ para "You can reveal its"
+ line "identity using a"
+ cont "SILPHSCOPE 2."
+ done
+
+UnusedBugCatchingContestExplanationText:
+; duplicate of BugCatchingContestExplanationText in Route35NationalParkGate.asm
+ text "The Bug-Catching"
+ line "Contest is held on"
+
+ para "Tuesday, Thursday"
+ line "and Saturday."
+
+ para "Not only do you"
+ line "earn a prize just"
+
+ para "for participating,"
+ line "you also get to"
+
+ para "keep a bug #MON"
+ line "that you catch."
+ done
+
+UnknownText_0x6b910:
+ text "Uh-oh… Your PACK"
+ line "is full."
+
+ para "We'll hold on to"
+ line "your prize, but"
+ cont "only for today."
+
+ para "Please make room,"
+ line "then come see me."
+ done
+
+UnknownText_0x6b97f:
+ text "<PLAYER>?"
+
+ para "Here's the prize"
+ line "we were holding"
+ cont "for you."
+ done
+
+Route36NationalParkGate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 0, 4, NATIONAL_PARK, 1
+ warp_event 0, 5, NATIONAL_PARK, 2
+ warp_event 9, 4, ROUTE_36, 1
+ warp_event 9, 5, ROUTE_36, 2
+
+ db 0 ; coord events
+
+ db 1 ; bg events
+ bg_event 6, 0, BGEVENT_READ, BugCatchingContestExplanationSign
+
+ db 12 ; object events
+ object_event 0, 3, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route36OfficerScriptContest, EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
+ object_event 2, 5, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant1BScript, EVENT_BUG_CATCHING_CONTESTANT_1B
+ object_event 4, 5, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant2BScript, EVENT_BUG_CATCHING_CONTESTANT_2B
+ object_event 2, 6, SPRITE_ROCKER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant3BScript, EVENT_BUG_CATCHING_CONTESTANT_3B
+ object_event 6, 5, SPRITE_POKEFAN_M, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant4BScript, EVENT_BUG_CATCHING_CONTESTANT_4B
+ object_event 2, 7, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant5BScript, EVENT_BUG_CATCHING_CONTESTANT_5B
+ object_event 5, 6, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant6BScript, EVENT_BUG_CATCHING_CONTESTANT_6B
+ object_event 3, 6, SPRITE_LASS, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant7BScript, EVENT_BUG_CATCHING_CONTESTANT_7B
+ object_event 4, 7, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant8BScript, EVENT_BUG_CATCHING_CONTESTANT_8B
+ object_event 6, 7, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant9BScript, EVENT_BUG_CATCHING_CONTESTANT_9B
+ object_event 6, 6, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, BugCatchingContestant10BScript, EVENT_BUG_CATCHING_CONTESTANT_10B
+ object_event 3, 2, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, Route36NationalParkGateOfficerScript, EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
diff --git a/maps/Route36RuinsOfAlphGate.asm b/maps/Route36RuinsOfAlphGate.asm
new file mode 100644
index 00000000..ed894445
--- /dev/null
+++ b/maps/Route36RuinsOfAlphGate.asm
@@ -0,0 +1,50 @@
+ const_def 2 ; object constants
+ const ROUTE36RUINSOFALPHGATE_OFFICER
+ const ROUTE36RUINSOFALPHGATE_GRAMPS
+
+Route36RuinsOfAlphGate_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Route36RuinsOfAlphGateOfficerScript:
+ jumptextfaceplayer Route36RuinsOfAlphGateOfficerText
+
+Route36RuinsOfAlphGateGrampsScript:
+ jumptextfaceplayer Route36RuinsOfAlphGateGrampsText
+
+Route36RuinsOfAlphGateOfficerText:
+ text "Don't you wonder"
+ line "who'd make some-"
+ cont "thing like this?"
+ cont "And why?"
+ done
+
+Route36RuinsOfAlphGateGrampsText:
+ text "Did you see that"
+ line "strange tree in"
+ cont "the road?"
+
+ para "That may explain"
+ line "why fewer people"
+
+ para "are visiting the"
+ line "RUINS OF ALPH."
+ done
+
+Route36RuinsOfAlphGate_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 4, 0, ROUTE_36, 3
+ warp_event 5, 0, ROUTE_36, 4
+ warp_event 4, 7, RUINS_OF_ALPH_OUTSIDE, 9
+ warp_event 5, 7, RUINS_OF_ALPH_OUTSIDE, 9
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 2 ; object events
+ object_event 0, 4, SPRITE_OFFICER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Route36RuinsOfAlphGateOfficerScript, -1
+ object_event 7, 5, SPRITE_GRAMPS, SPRITEMOVEDATA_WANDER, 1, 2, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, Route36RuinsOfAlphGateGrampsScript, -1
diff --git a/maps/VioletGym.asm b/maps/VioletGym.asm
new file mode 100644
index 00000000..4fefeba5
--- /dev/null
+++ b/maps/VioletGym.asm
@@ -0,0 +1,299 @@
+ const_def 2 ; object constants
+ const VIOLETGYM_FALKNER
+ const VIOLETGYM_YOUNGSTER1
+ const VIOLETGYM_YOUNGSTER2
+ const VIOLETGYM_GYM_GUY
+
+VioletGym_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+VioletGymFalknerScript:
+ faceplayer
+ opentext
+ checkevent EVENT_BEAT_FALKNER
+ iftrue .FightDone
+ writetext FalknerIntroText
+ waitbutton
+ closetext
+ winlosstext FalknerWinLossText, 0
+ loadtrainer FALKNER, FALKNER1
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_FALKNER
+ opentext
+ writetext ReceivedZephyrBadgeText
+ playsound SFX_GET_BADGE
+ waitsfx
+ setflag ENGINE_ZEPHYRBADGE
+ checkcode VAR_BADGES
+ scall VioletGymActivateRockets
+.FightDone:
+ checkevent EVENT_GOT_TM31_MUD_SLAP
+ iftrue .SpeechAfterTM
+ setevent EVENT_BEAT_BIRD_KEEPER_ROD
+ setevent EVENT_BEAT_BIRD_KEEPER_ABE
+ setmapscene ELMS_LAB, SCENE_ELMSLAB_NOTHING
+ specialphonecall SPECIALCALL_ASSISTANT
+ writetext FalknerZephyrBadgeText
+ buttonsound
+ verbosegiveitem TM_MUD_SLAP
+ iffalse .NoRoomForMudSlap
+ setevent EVENT_GOT_TM31_MUD_SLAP
+ writetext FalknerTMMudSlapText
+ waitbutton
+ closetext
+ end
+
+.SpeechAfterTM:
+ writetext FalknerFightDoneText
+ waitbutton
+.NoRoomForMudSlap:
+ closetext
+ end
+
+VioletGymActivateRockets:
+ ifequal 7, .RadioTowerRockets
+ ifequal 6, .GoldenrodRockets
+ end
+
+.GoldenrodRockets:
+ jumpstd goldenrodrockets
+
+.RadioTowerRockets:
+ jumpstd radiotowerrockets
+
+TrainerBirdKeeperRod:
+ trainer BIRD_KEEPER, ROD, EVENT_BEAT_BIRD_KEEPER_ROD, BirdKeeperRodSeenText, BirdKeeperRodBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BirdKeeperRodAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerBirdKeeperAbe:
+ trainer BIRD_KEEPER, ABE, EVENT_BEAT_BIRD_KEEPER_ABE, BirdKeeperAbeSeenText, BirdKeeperAbeBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext BirdKeeperAbeAfterBattleText
+ waitbutton
+ closetext
+ end
+
+VioletGymGuyScript:
+ faceplayer
+ opentext
+ checkevent EVENT_BEAT_FALKNER
+ iftrue .VioletGymGuyWinScript
+ writetext VioletGymGuyText
+ waitbutton
+ closetext
+ end
+
+.VioletGymGuyWinScript:
+ writetext VioletGymGuyWinText
+ waitbutton
+ closetext
+ end
+
+VioletGymStatue:
+ checkflag ENGINE_ZEPHYRBADGE
+ iftrue .Beaten
+ jumpstd gymstatue1
+.Beaten:
+ trainertotext FALKNER, FALKNER1, MEM_BUFFER_1
+ jumpstd gymstatue2
+
+FalknerIntroText:
+ text "I'm FALKNER, the"
+ line "VIOLET #MON GYM"
+ cont "leader!"
+
+ para "People say you can"
+ line "clip flying-type"
+
+ para "#MON's wings"
+ line "with a jolt of"
+ cont "electricity…"
+
+ para "I won't allow such"
+ line "insults to bird"
+ cont "#MON!"
+
+ para "I'll show you the"
+ line "real power of the"
+
+ para "magnificent bird"
+ line "#MON!"
+ done
+
+FalknerWinLossText:
+ text "…Darn! My Dad's"
+ line "cherished bird"
+ cont "#MON…"
+
+ para "All right."
+ line "Take this."
+
+ para "It's the official"
+ line "#MON LEAGUE"
+ cont "ZEPHYRBADGE."
+ done
+
+ReceivedZephyrBadgeText:
+ text "<PLAYER> received"
+ line "ZEPHYRBADGE."
+ done
+
+FalknerZephyrBadgeText:
+ text "ZEPHYRBADGE"
+ line "raises the attack"
+ cont "power of #MON."
+
+ para "It also enables"
+ line "#MON to use"
+
+ para "FLASH, if they"
+ line "have it, anytime."
+
+ para "Here--take this"
+ line "too."
+ done
+
+FalknerTMMudSlapText:
+ text "By using a TM, a"
+ line "#MON will"
+
+ para "instantly learn a"
+ line "new move."
+
+ para "Think before you"
+ line "act--a TM can be"
+ cont "used only once."
+
+ para "TM31 contains"
+ line "MUD-SLAP."
+
+ para "It reduces the"
+ line "enemy's accuracy"
+
+ para "while it causes"
+ line "damage."
+
+ para "In other words, it"
+ line "is both defensive"
+ cont "and offensive."
+ done
+
+FalknerFightDoneText:
+ text "There are #MON"
+ line "GYMS in cities and"
+ cont "towns ahead."
+
+ para "You should test"
+ line "your skills at"
+ cont "these GYMS."
+
+ para "I'm going to train"
+ line "harder to become"
+
+ para "the greatest bird"
+ line "master!"
+ done
+
+BirdKeeperRodSeenText:
+ text "The keyword is"
+ line "guts!"
+
+ para "Those here are"
+ line "training night and"
+
+ para "day to become bird"
+ line "#MON masters."
+
+ para "Come on!"
+ done
+
+BirdKeeperRodBeatenText:
+ text "Gaaah!"
+ done
+
+BirdKeeperRodAfterBattleText:
+ text "FALKNER's skills"
+ line "are for real!"
+
+ para "Don't get cocky"
+ line "just because you"
+ cont "beat me!"
+ done
+
+BirdKeeperAbeSeenText:
+ text "Let me see if you"
+ line "are good enough to"
+ cont "face FALKNER!"
+ done
+
+BirdKeeperAbeBeatenText:
+ text "This can't be"
+ line "true!"
+ done
+
+BirdKeeperAbeAfterBattleText:
+ text "This is pathetic,"
+ line "losing to some"
+ cont "rookie trainer…"
+ done
+
+VioletGymGuyText:
+ text "Hey! I'm no train-"
+ line "er but I can give"
+ cont "some advice!"
+
+ para "Believe me!"
+ line "If you believe, a"
+
+ para "championship dream"
+ line "can come true."
+
+ para "You believe?"
+ line "Then listen."
+
+ para "The grass-type is"
+ line "weak against the"
+
+ para "flying-type. Keep"
+ line "this in mind."
+ done
+
+VioletGymGuyWinText:
+ text "Nice battle! Keep"
+ line "it up, and you'll"
+
+ para "be the CHAMP in no"
+ line "time at all!"
+ done
+
+VioletGym_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 4, 15, VIOLET_CITY, 2
+ warp_event 5, 15, VIOLET_CITY, 2
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 3, 13, BGEVENT_READ, VioletGymStatue
+ bg_event 6, 13, BGEVENT_READ, VioletGymStatue
+
+ db 4 ; object events
+ object_event 5, 1, SPRITE_FALKNER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, VioletGymFalknerScript, -1
+ object_event 7, 6, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_LEFT, 2, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerBirdKeeperRod, -1
+ object_event 2, 10, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_RIGHT, 2, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerBirdKeeperAbe, -1
+ object_event 7, 13, SPRITE_GYM_GUY, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, VioletGymGuyScript, -1
diff --git a/maps/VioletKylesHouse.asm b/maps/VioletKylesHouse.asm
new file mode 100644
index 00000000..eb906270
--- /dev/null
+++ b/maps/VioletKylesHouse.asm
@@ -0,0 +1,46 @@
+ const_def 2 ; object constants
+ const VIOLETKYLESHOUSE_POKEFAN_M
+ const VIOLETKYLESHOUSE_KYLE
+
+VioletKylesHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+VioletKylesHousePokefanMScript:
+ jumptextfaceplayer VioletKylesHousePokefanMText
+
+Kyle:
+ faceplayer
+ opentext
+ trade NPC_TRADE_KYLE
+ waitbutton
+ closetext
+ end
+
+VioletKylesHousePokefanMText:
+ text "A #MON you get"
+ line "in a trade grows"
+ cont "quickly."
+
+ para "But if you don't"
+ line "have the right GYM"
+
+ para "BADGE, they may"
+ line "disobey you."
+ done
+
+VioletKylesHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 3, 7, VIOLET_CITY, 6
+ warp_event 4, 7, VIOLET_CITY, 6
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 2 ; object events
+ object_event 2, 3, SPRITE_POKEFAN_M, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VioletKylesHousePokefanMScript, -1
+ object_event 6, 5, SPRITE_YOUNGSTER, SPRITEMOVEDATA_WALK_UP_DOWN, 0, 2, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Kyle, -1
diff --git a/maps/VioletMart.asm b/maps/VioletMart.asm
new file mode 100644
index 00000000..d3e4ce73
--- /dev/null
+++ b/maps/VioletMart.asm
@@ -0,0 +1,63 @@
+ const_def 2 ; object constants
+ const VIOLETMART_CLERK
+ const VIOLETMART_GRANNY
+ const VIOLETMART_COOLTRAINER_M
+
+VioletMart_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+VioletMartClerkScript:
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_VIOLET
+ closetext
+ end
+
+VioletMartGrannyScript:
+ jumptextfaceplayer VioletMartGrannyText
+
+VioletMartCooltrainerMScript:
+ jumptextfaceplayer VioletMartCooltrainerMText
+
+VioletMartGrannyText:
+ text "When you first"
+ line "catch a #MON,"
+ cont "it may be weak."
+
+ para "But it will even-"
+ line "tually grow to be"
+ cont "strong."
+
+ para "It's important to"
+ line "treat #MON with"
+ cont "love."
+ done
+
+VioletMartCooltrainerMText:
+ text "#MON can hold"
+ line "items like POTION"
+ cont "and ANTIDOTE."
+
+ para "But they don't"
+ line "appear to know how"
+
+ para "to use manmade"
+ line "items."
+ done
+
+VioletMart_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 2, 7, VIOLET_CITY, 1
+ warp_event 3, 7, VIOLET_CITY, 1
+
+ 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, VioletMartClerkScript, -1
+ object_event 7, 6, SPRITE_GRANNY, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VioletMartGrannyScript, -1
+ object_event 5, 2, SPRITE_COOLTRAINER_M, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, VioletMartCooltrainerMScript, -1
diff --git a/maps/VioletNicknameSpeechHouse.asm b/maps/VioletNicknameSpeechHouse.asm
new file mode 100644
index 00000000..ec274786
--- /dev/null
+++ b/maps/VioletNicknameSpeechHouse.asm
@@ -0,0 +1,59 @@
+ const_def 2 ; object constants
+ const VIOLETNICKNAMESPEECHHOUSE_TEACHER
+ const VIOLETNICKNAMESPEECHHOUSE_LASS
+ const VIOLETNICKNAMESPEECHHOUSE_BIRD
+
+VioletNicknameSpeechHouse_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+VioletNicknameSpeechHouseTeacherScript:
+ jumptextfaceplayer VioletNicknameSpeechHouseTeacherText
+
+VioletNicknameSpeechHouseLassScript:
+ jumptextfaceplayer VioletNicknameSpeechHouseLassText
+
+VioletNicknameSpeechHouseBirdScript:
+ faceplayer
+ opentext
+ writetext VioletNicknameSpeechHouseBirdText
+ cry PIDGEY
+ waitbutton
+ closetext
+ end
+
+VioletNicknameSpeechHouseTeacherText:
+ text "She uses the names"
+ line "of her favorite"
+ cont "things to eat."
+
+ para "For the nicknames"
+ line "she gives to her"
+ cont "#MON, I mean."
+ done
+
+VioletNicknameSpeechHouseLassText:
+ text "I call my PIDGEY"
+ line "STRAWBERRY!"
+ done
+
+VioletNicknameSpeechHouseBirdText:
+ text "STRAWBERRY: Pijji!"
+ done
+
+VioletNicknameSpeechHouse_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 3, 7, VIOLET_CITY, 4
+ warp_event 4, 7, VIOLET_CITY, 4
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 3 ; object events
+ object_event 2, 3, SPRITE_TEACHER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VioletNicknameSpeechHouseTeacherScript, -1
+ object_event 6, 4, SPRITE_LASS, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, VioletNicknameSpeechHouseLassScript, -1
+ object_event 5, 2, SPRITE_BIRD, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, VioletNicknameSpeechHouseBirdScript, -1
diff --git a/maps/VioletPokecenter1F.asm b/maps/VioletPokecenter1F.asm
new file mode 100644
index 00000000..b2e64a16
--- /dev/null
+++ b/maps/VioletPokecenter1F.asm
@@ -0,0 +1,210 @@
+ const_def 2 ; object constants
+ const VIOLETPOKECENTER1F_NURSE
+ const VIOLETPOKECENTER1F_GAMEBOY_KID
+ const VIOLETPOKECENTER1F_GENTLEMAN
+ const VIOLETPOKECENTER1F_YOUNGSTER
+ const VIOLETPOKECENTER1F_SCIENTIST
+
+VioletPokecenter1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+VioletPokecenterNurse:
+ jumpstd pokecenternurse
+
+VioletPokecenter1F_ElmsAideScript:
+ faceplayer
+ opentext
+ checkevent EVENT_REFUSED_TO_TAKE_EGG_FROM_ELMS_AIDE
+ iftrue .SecondTimeAsking
+ writetext UnknownText_0x69555
+.AskTakeEgg:
+ yesorno
+ iffalse .RefusedEgg
+ checkcode VAR_PARTYCOUNT
+ ifequal PARTY_LENGTH, .PartyFull
+ giveegg TOGEPI, 5
+ stringtotext .eggname, MEM_BUFFER_1
+ scall .AideGivesEgg
+ setevent EVENT_GOT_TOGEPI_EGG_FROM_ELMS_AIDE
+ clearevent EVENT_ELMS_AIDE_IN_LAB
+ clearevent EVENT_TOGEPI_HATCHED
+ setmapscene ROUTE_32, SCENE_ROUTE32_OFFER_SLOWPOKETAIL
+ writetext UnknownText_0x695c5
+ waitbutton
+ closetext
+ checkcode VAR_FACING
+ ifequal UP, .AideWalksAroundPlayer
+ turnobject PLAYER, DOWN
+ applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideWalksStraightOutOfPokecenter
+ playsound SFX_EXIT_BUILDING
+ disappear VIOLETPOKECENTER1F_SCIENTIST
+ waitsfx
+ end
+
+.AideWalksAroundPlayer:
+ applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideWalksLeftToExitPokecenter
+ turnobject PLAYER, DOWN
+ applymovement VIOLETPOKECENTER1F_SCIENTIST, MovementData_AideFinishesLeavingPokecenter
+ playsound SFX_EXIT_BUILDING
+ disappear VIOLETPOKECENTER1F_SCIENTIST
+ waitsfx
+ end
+
+.eggname
+ db "EGG@"
+
+.AideGivesEgg:
+ jumpstd receivetogepiegg
+ end
+
+.PartyFull:
+ writetext UnknownText_0x69693
+ waitbutton
+ closetext
+ end
+
+.RefusedEgg:
+ writetext UnknownText_0x696f2
+ waitbutton
+ closetext
+ setevent EVENT_REFUSED_TO_TAKE_EGG_FROM_ELMS_AIDE
+ end
+
+.SecondTimeAsking:
+ writetext UnknownText_0x69712
+ jump .AskTakeEgg
+
+VioletPokecenter1FGameboyKidScript:
+ jumptextfaceplayer VioletPokecenter1FGameboyKidText
+
+VioletPokecenter1FGentlemanScript:
+ jumptextfaceplayer VioletPokecenter1FGentlemanText
+
+VioletPokecenter1FYoungsterScript:
+ jumptextfaceplayer VioletPokecenter1FYoungsterText
+
+MovementData_AideWalksStraightOutOfPokecenter:
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+MovementData_AideWalksLeftToExitPokecenter:
+ step LEFT
+ step DOWN
+ step_end
+
+MovementData_AideFinishesLeavingPokecenter:
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+UnknownText_0x69555:
+ text "<PLAYER>, long"
+ line "time, no see."
+
+ para "PROF.ELM asked me"
+ line "to find you."
+
+ para "He has another"
+ line "favor to ask."
+
+ para "Would you take the"
+ line "#MON EGG?"
+ done
+
+UnknownText_0x695c5:
+ text "We discovered that"
+ line "a #MON will not"
+
+ para "hatch until it"
+ line "grows in the EGG."
+
+ para "It also has to be"
+ line "with other active"
+ cont "#MON to hatch."
+
+ para "<PLAYER>, you're"
+ line "the only person"
+ cont "we can rely on."
+
+ para "Please call PROF."
+ line "ELM when that EGG"
+ cont "hatches!"
+ done
+
+UnknownText_0x69693:
+ text "Oh, no. You can't"
+ line "carry any more"
+ cont "#MON with you."
+
+ para "I'll wait here"
+ line "while you make"
+ cont "room for the EGG."
+ done
+
+UnknownText_0x696f2:
+ text "B-but… PROF.ELM"
+ line "asked for you…"
+ done
+
+UnknownText_0x69712:
+ text "<PLAYER>, will you"
+ line "take the EGG?"
+ done
+
+VioletPokecenter1FGameboyKidText:
+ text "A guy named BILL"
+ line "made the #MON"
+ cont "PC storage system."
+ done
+
+VioletPokecenter1FGentlemanText:
+ text "It was around"
+ line "three years ago."
+
+ para "TEAM ROCKET was up"
+ line "to no good with"
+ cont "#MON."
+
+ para "But justice pre-"
+ line "vailed--a young"
+ cont "kid broke 'em up."
+ done
+
+VioletPokecenter1FYoungsterText:
+ text "#MON are smart."
+ line "They won't obey a"
+
+ para "trainer they don't"
+ line "respect."
+
+ para "Without the right"
+ line "GYM BADGES, they"
+
+ para "will just do as"
+ line "they please."
+ done
+
+VioletPokecenter1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 7, VIOLET_CITY, 5
+ warp_event 4, 7, VIOLET_CITY, 5
+ warp_event 0, 7, POKECENTER_2F, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 5 ; object events
+ object_event 3, 1, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VioletPokecenterNurse, -1
+ object_event 7, 6, SPRITE_SUPER_NERD, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, VioletPokecenter1FGameboyKidScript, -1
+ object_event 1, 4, SPRITE_GENTLEMAN, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, VioletPokecenter1FGentlemanScript, -1
+ object_event 8, 1, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, VioletPokecenter1FYoungsterScript, -1
+ object_event 4, 3, SPRITE_SCIENTIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, VioletPokecenter1F_ElmsAideScript, EVENT_ELMS_AIDE_IN_VIOLET_POKEMON_CENTER