summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--constants/event_flags.asm4
-rw-r--r--macros/scripts/events.asm17
-rw-r--r--main.asm18
-rw-r--r--maps/DarkCaveBlackthornEntrance.asm76
-rw-r--r--maps/DarkCaveVioletEntrance.asm51
-rw-r--r--maps/DragonsDen1F.asm19
-rw-r--r--maps/DragonsDenB1F.asm289
-rw-r--r--maps/SilverCaveItemRooms.asm29
-rw-r--r--maps/SilverCaveOutside.asm38
-rw-r--r--maps/SilverCavePokecenter1F.asm44
-rw-r--r--maps/SilverCaveRoom1.asm43
-rw-r--r--maps/SilverCaveRoom2.asm28
-rw-r--r--maps/SilverCaveRoom3.asm62
-rw-r--r--maps/TohjoFalls.asm24
-rw-r--r--maps/WhirlIslandB1F.asm68
-rw-r--r--maps/WhirlIslandB2F.asm36
-rw-r--r--maps/WhirlIslandCave.asm17
-rw-r--r--maps/WhirlIslandLugiaChamber.asm66
-rw-r--r--maps/WhirlIslandNE.asm25
-rw-r--r--maps/WhirlIslandNW.asm19
-rw-r--r--maps/WhirlIslandSE.asm17
-rw-r--r--maps/WhirlIslandSW.asm27
22 files changed, 1002 insertions, 15 deletions
diff --git a/constants/event_flags.asm b/constants/event_flags.asm
index 41010f6b..fbde1623 100644
--- a/constants/event_flags.asm
+++ b/constants/event_flags.asm
@@ -1747,7 +1747,7 @@
const EVENT_ICE_PATH_B2F_BLACKTHORN_SIDE_TM_REST
const EVENT_ICE_PATH_B3F_NEVERMELTICE
const EVENT_WHIRL_ISLAND_NE_ULTRA_BALL
- const EVENT_WHIRL_ISLAND_SW_ULTRA_BALL
+ const EVENT_WHIRL_ISLAND_SW_GUARD_SPEC
const EVENT_WHIRL_ISLAND_B1F_FULL_RESTORE
const EVENT_WHIRL_ISLAND_B1F_CARBOS
const EVENT_WHIRL_ISLAND_B1F_CALCIUM
@@ -1757,7 +1757,7 @@
const EVENT_WHIRL_ISLAND_B2F_MAX_REVIVE
const EVENT_WHIRL_ISLAND_B2F_MAX_ELIXER
const EVENT_SILVER_CAVE_ROOM_1_MAX_ELIXER
- const EVENT_SILVER_CAVE_ROOM_1_PROTEIN
+ const EVENT_SILVER_CAVE_ROOM_1_X_ACCURACY
const EVENT_SILVER_CAVE_ROOM_1_ESCAPE_ROPE
const EVENT_SILVER_CAVE_ITEM_ROOMS_MAX_REVIVE
const EVENT_SILVER_CAVE_ITEM_ROOMS_FULL_RESTORE
diff --git a/macros/scripts/events.asm b/macros/scripts/events.asm
index 6c936ffc..6feee09f 100644
--- a/macros/scripts/events.asm
+++ b/macros/scripts/events.asm
@@ -953,13 +953,13 @@ describedecoration: MACRO
db \1 ; byte
ENDM
- enum fruittree_command ; $9b
+ enum fruittree_command ; $9a
fruittree: MACRO
db fruittree_command
db \1 ; tree_id
ENDM
- enum specialphonecall_command ; $9c
+ enum specialphonecall_command ; $9b
specialphonecall: MACRO
db specialphonecall_command
dw \1 ; call_id
@@ -981,26 +981,19 @@ else
endc
ENDM
- enum verbosegiveitem2_command ; $9f
-verbosegiveitem2: MACRO
- db verbosegiveitem2_command
- db \1 ; item
- db \2 ; var
-ENDM
-
- enum swarm_command ; $a0
+ enum swarm_command ; $9e
swarm: MACRO
db swarm_command
db \1 ; flag
map_id \2 ; map
ENDM
- enum halloffame_command ; $a1
+ enum halloffame_command ; $9f
halloffame: MACRO
db halloffame_command
ENDM
- enum credits_command ; $a2
+ enum credits_command ; $a0
credits: MACRO
db credits_command
ENDM
diff --git a/main.asm b/main.asm
index 09fb1d84..17507122 100644
--- a/main.asm
+++ b/main.asm
@@ -1601,7 +1601,23 @@ INCLUDE "maps/IcePathB2FBlackthornSide.asm"
INCLUDE "maps/IcePathB3F.asm"
SECTION "bank47", ROMX, BANK[$47]
- dr $11c000, $120000
+INCLUDE "maps/WhirlIslandNW.asm"
+INCLUDE "maps/WhirlIslandNE.asm"
+INCLUDE "maps/WhirlIslandSW.asm"
+INCLUDE "maps/WhirlIslandCave.asm"
+INCLUDE "maps/WhirlIslandSE.asm"
+INCLUDE "maps/WhirlIslandB1F.asm"
+INCLUDE "maps/WhirlIslandB2F.asm"
+INCLUDE "maps/WhirlIslandLugiaChamber.asm"
+INCLUDE "maps/SilverCaveRoom1.asm"
+INCLUDE "maps/SilverCaveRoom2.asm"
+INCLUDE "maps/SilverCaveRoom3.asm"
+INCLUDE "maps/SilverCaveItemRooms.asm"
+INCLUDE "maps/DarkCaveVioletEntrance.asm"
+INCLUDE "maps/DarkCaveBlackthornEntrance.asm"
+INCLUDE "maps/DragonsDen1F.asm"
+INCLUDE "maps/DragonsDenB1F.asm"
+INCLUDE "maps/TohjoFalls.asm"
SECTION "bank48", ROMX, BANK[$48]
dr $120000, $124000
diff --git a/maps/DarkCaveBlackthornEntrance.asm b/maps/DarkCaveBlackthornEntrance.asm
new file mode 100644
index 00000000..84daa17d
--- /dev/null
+++ b/maps/DarkCaveBlackthornEntrance.asm
@@ -0,0 +1,76 @@
+ const_def 2 ; object constants
+ const DARKCAVEBLACKTHORNENTRANCE_PHARMACIST
+ const DARKCAVEBLACKTHORNENTRANCE_POKE_BALL1
+ const DARKCAVEBLACKTHORNENTRANCE_POKE_BALL2
+
+DarkCaveBlackthornEntrance_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+DarkCaveBlackthornEntrancePharmacistScript:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_BLACKGLASSES_IN_DARK_CAVE
+ iftrue .GotBlackglasses
+ writetext DarkCaveBlackthornEntrancePharmacistText1
+ buttonsound
+ verbosegiveitem BLACKGLASSES
+ iffalse .PackFull
+ setevent EVENT_GOT_BLACKGLASSES_IN_DARK_CAVE
+.GotBlackglasses:
+ writetext DarkCaveBlackthornEntrancePharmacistText2
+ waitbutton
+.PackFull:
+ closetext
+ end
+
+DarkCaveBlackthornEntranceRevive:
+ itemball REVIVE
+
+DarkCaveBlackthornEntranceTMSnore:
+ itemball TM_SNORE
+
+DarkCaveBlackthornEntrancePharmacistText1:
+ text "Whoa! You startled"
+ line "me there!"
+
+ para "I had my BLACK-"
+ line "GLASSES on, so I"
+
+ para "didn't notice you"
+ line "at all."
+
+ para "What am I doing"
+ line "here?"
+
+ para "Hey, don't you"
+ line "worry about it."
+
+ para "I'll give you a"
+ line "pair of BLACK-"
+ cont "GLASSES, so forget"
+ cont "you saw me, OK?"
+ done
+
+DarkCaveBlackthornEntrancePharmacistText2:
+ text "BLACKGLASSES ups"
+ line "the power of dark-"
+ cont "type moves."
+ done
+
+DarkCaveBlackthornEntrance_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 23, 3, ROUTE_45, 1
+ warp_event 3, 25, DARK_CAVE_VIOLET_ENTRANCE, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 3 ; object events
+ object_event 7, 3, SPRITE_PHARMACIST, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DarkCaveBlackthornEntrancePharmacistScript, -1
+ object_event 21, 24, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, DarkCaveBlackthornEntranceRevive, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_REVIVE
+ object_event 7, 22, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, DarkCaveBlackthornEntranceTMSnore, EVENT_DARK_CAVE_BLACKTHORN_ENTRANCE_TM_SNORE
diff --git a/maps/DarkCaveVioletEntrance.asm b/maps/DarkCaveVioletEntrance.asm
new file mode 100644
index 00000000..e6dd4b83
--- /dev/null
+++ b/maps/DarkCaveVioletEntrance.asm
@@ -0,0 +1,51 @@
+ const_def 2 ; object constants
+ const DARKCAVEVIOLETENTRANCE_POKE_BALL1
+ const DARKCAVEVIOLETENTRANCE_ROCK1
+ const DARKCAVEVIOLETENTRANCE_ROCK2
+ const DARKCAVEVIOLETENTRANCE_ROCK3
+ const DARKCAVEVIOLETENTRANCE_ROCK4
+ const DARKCAVEVIOLETENTRANCE_POKE_BALL2
+ const DARKCAVEVIOLETENTRANCE_POKE_BALL3
+ const DARKCAVEVIOLETENTRANCE_POKE_BALL4
+
+DarkCaveVioletEntrance_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+DarkCaveVioletEntrancePotion:
+ itemball POTION
+
+DarkCaveVioletEntranceFullHeal:
+ itemball FULL_HEAL
+
+DarkCaveVioletEntranceHyperPotion:
+ itemball HYPER_POTION
+
+DarkCaveVioletEntranceRock:
+ jumpstd smashrock
+
+DarkCaveVioletEntranceHiddenElixer:
+ hiddenitem ELIXER, EVENT_DARK_CAVE_VIOLET_ENTRANCE_HIDDEN_ELIXER
+
+DarkCaveVioletEntrance_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 15, ROUTE_31, 3
+ warp_event 17, 1, DARK_CAVE_BLACKTHORN_ENTRANCE, 2
+ warp_event 35, 33, ROUTE_46, 3
+
+ db 0 ; coord events
+
+ db 1 ; bg events
+ bg_event 26, 3, BGEVENT_ITEM, DarkCaveVioletEntranceHiddenElixer
+
+ db 7 ; object events
+ object_event 6, 8, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, DarkCaveVioletEntrancePotion, EVENT_DARK_CAVE_VIOLET_ENTRANCE_POTION
+ object_event 16, 14, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DarkCaveVioletEntranceRock, -1
+ object_event 27, 6, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DarkCaveVioletEntranceRock, -1
+ object_event 7, 14, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DarkCaveVioletEntranceRock, -1
+ object_event 36, 31, SPRITE_ROCK, SPRITEMOVEDATA_SMASHABLE_ROCK, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DarkCaveVioletEntranceRock, -1
+ object_event 36, 22, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, DarkCaveVioletEntranceFullHeal, EVENT_DARK_CAVE_VIOLET_ENTRANCE_FULL_HEAL
+ object_event 35, 9, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, DarkCaveVioletEntranceHyperPotion, EVENT_DARK_CAVE_VIOLET_ENTRANCE_HYPER_POTION
diff --git a/maps/DragonsDen1F.asm b/maps/DragonsDen1F.asm
new file mode 100644
index 00000000..2fbc62df
--- /dev/null
+++ b/maps/DragonsDen1F.asm
@@ -0,0 +1,19 @@
+DragonsDen1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+DragonsDen1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 3, 5, BLACKTHORN_CITY, 8
+ warp_event 3, 3, DRAGONS_DEN_1F, 4
+ warp_event 5, 15, DRAGONS_DEN_B1F, 1
+ warp_event 5, 13, DRAGONS_DEN_1F, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 0 ; object events
diff --git a/maps/DragonsDenB1F.asm b/maps/DragonsDenB1F.asm
new file mode 100644
index 00000000..13d20b01
--- /dev/null
+++ b/maps/DragonsDenB1F.asm
@@ -0,0 +1,289 @@
+ const_def 2 ; object constants
+ const DRAGONSDENB1F_POKE_BALL1
+ const DRAGONSDENB1F_CLAIR
+ const DRAGONSDENB1F_SILVER
+ const DRAGONSDENB1F_COOLTRAINER_M
+ const DRAGONSDENB1F_COOLTRAINER_F
+ const DRAGONSDENB1F_TWIN1
+ const DRAGONSDENB1F_TWIN2
+ const DRAGONSDENB1F_POKE_BALL2
+ const DRAGONSDENB1F_POKE_BALL3
+
+DragonsDenB1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .CheckSilver
+
+.CheckSilver:
+ checkevent EVENT_BEAT_RIVAL_IN_MT_MOON
+ iftrue .CheckDay
+ disappear DRAGONSDENB1F_SILVER
+ return
+
+.CheckDay:
+ checkcode VAR_WEEKDAY
+ ifequal TUESDAY, .AppearSilver
+ ifequal THURSDAY, .AppearSilver
+ disappear DRAGONSDENB1F_SILVER
+ return
+
+.AppearSilver:
+ appear DRAGONSDENB1F_SILVER
+ return
+
+DragonsDenB1FDragonFangScript:
+ giveitem DRAGON_FANG
+ iffalse .BagFullDragonFang
+ disappear DRAGONSDENB1F_POKE_BALL1
+ opentext
+ itemtotext DRAGON_FANG, MEM_BUFFER_0
+ writetext Text_FoundDragonFang
+ playsound SFX_ITEM
+ waitsfx
+ itemnotify
+ closetext
+ checkcode VAR_FACING
+ ifequal RIGHT, .next
+ jump .next2
+.next
+ moveobject DRAGONSDENB1F_CLAIR, 34, 21
+.next2
+ appear DRAGONSDENB1F_CLAIR
+ applymovement DRAGONSDENB1F_CLAIR, MovementDragonsDen_ClairWalksToYou
+ turnobject PLAYER, DOWN
+ opentext
+ writetext ClairText_GiveDragonbreathDragonDen
+ buttonsound
+ waitsfx
+ writetext DragonShrinePlayerReceivedRisingBadgeText
+ playsound SFX_GET_BADGE
+ waitsfx
+ setflag ENGINE_RISINGBADGE
+ specialphonecall SPECIALCALL_MASTERBALL
+ writetext DragonShrineRisingBadgeExplanationText
+ buttonsound
+ verbosegiveitem TM_DRAGONBREATH, 1
+ iffalse .ClairLastText
+ setevent EVENT_GOT_TM24_DRAGONBREATH
+ writetext ClairText_DescribeDragonbreathDragonDen
+ buttonsound
+ jump .ClairLastText
+.ClairLastText
+ writetext ClairText_WhatsTheMatterDragonDen
+ waitbutton
+ closetext
+ applymovement DRAGONSDENB1F_CLAIR, MovementDragonsDen_ClairWalksAway
+ disappear DRAGONSDENB1F_CLAIR
+ end
+
+.BagFullDragonFang:
+ opentext
+ itemtotext DRAGON_FANG, MEM_BUFFER_0
+ writetext Text_FoundDragonFang
+ buttonsound
+ writetext Text_NoRoomForDragonFang
+ waitbutton
+ closetext
+ end
+
+DragonsDenB1FSilverScript:
+ playmusic MUSIC_RIVAL_ENCOUNTER
+ faceplayer
+ opentext
+ checkevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ iftrue .SilverTalkAgain
+ writetext SilverText_Training1
+ waitbutton
+ closetext
+ setevent EVENT_TEMPORARY_UNTIL_MAP_RELOAD_1
+ special RestartMapMusic
+ end
+
+.SilverTalkAgain:
+ writetext SilverText_Training2
+ waitbutton
+ closetext
+ special RestartMapMusic
+ end
+
+DragonShrineSignpost:
+ jumptext DragonShrineSignpostText
+
+DragonsDenB1FHiddenRevive:
+ hiddenitem REVIVE, EVENT_DRAGONS_DEN_B1F_HIDDEN_REVIVE
+
+DragonsDenB1FHiddenMaxPotion:
+ hiddenitem MAX_POTION, EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_POTION
+
+DragonsDenB1FHiddenMaxElixer:
+ hiddenitem MAX_ELIXER, EVENT_DRAGONS_DEN_B1F_HIDDEN_MAX_ELIXER
+
+MovementDragonsDen_ClairWalksToYou:
+ step UP
+ step UP
+ step UP
+ step UP
+ step_end
+
+MovementDragonsDen_ClairWalksAway:
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step_end
+
+ClairText_GiveDragonbreathDragonDen:
+ text "CLAIR: All right."
+ line "I recognize your"
+
+ para "true power. This"
+ line "BADGE is yours."
+ done
+
+DragonShrinePlayerReceivedRisingBadgeText:
+ text "<PLAYER> received"
+ line "RISINGBADGE."
+ done
+
+DragonShrineRisingBadgeExplanationText:
+ text "RISINGBADGE will"
+ line "enable your"
+
+ para "#MON to use the"
+ line "move for climbing"
+ cont "waterfalls."
+
+ para "Also, all #MON"
+ line "will recognize you"
+
+ para "as a trainer and"
+ line "obey your every"
+
+ para "command without"
+ line "question."
+
+ para "I also want you to"
+ line "have this TM."
+ done
+
+NotifyReceiveDragonbreath:
+ text "<PLAYER> received"
+ line "TM24."
+ done
+
+ClairText_DescribeDragonbreathDragonDen:
+ 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
+
+ClairText_WhatsTheMatterDragonDen:
+ 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
+
+DragonShrineSignpostText:
+ text "DRAGON SHRINE"
+
+ para "A shrine honoring"
+ line "the dragon #MON"
+
+ para "said to have lived"
+ line "in DRAGON'S DEN."
+ done
+
+SilverText_Training1:
+ text "…"
+ line "What? <PLAYER>?"
+
+ para "…No, I won't"
+ line "battle you now…"
+
+ para "My #MON aren't"
+ line "ready to beat you."
+
+ para "I can't push them"
+ line "too hard now."
+
+ para "I have to be dis-"
+ line "ciplined to become"
+
+ para "the greatest #-"
+ line "MON trainer…"
+ done
+
+SilverText_Training2:
+ text "…"
+
+ para "Whew…"
+
+ para "Learn to stay out"
+ line "of my way…"
+ done
+
+Text_FoundDragonFang:
+ text "<PLAYER> found a"
+ line "@"
+ text_from_ram wStringBuffer3
+ text "!"
+ done
+
+Text_NoRoomForDragonFang:
+ text "But <PLAYER> can't"
+ line "carry any more"
+ cont "items."
+ done
+
+DragonsDenB1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 20, 3, DRAGONS_DEN_1F, 3
+
+ db 0 ; coord events
+
+ db 4 ; bg events
+ bg_event 18, 24, BGEVENT_READ, DragonShrineSignpost
+ bg_event 31, 4, BGEVENT_ITEM, DragonsDenB1FHiddenRevive
+ bg_event 21, 17, BGEVENT_ITEM, DragonsDenB1FHiddenMaxPotion
+ bg_event 31, 15, BGEVENT_ITEM, DragonsDenB1FHiddenMaxElixer
+
+ db 3 ; object events
+ object_event 35, 16, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DragonsDenB1FDragonFangScript, EVENT_DRAGONS_DEN_B1F_DRAGON_FANG
+ object_event 35, 22, SPRITE_CLAIR, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_DRAGONS_DEN_CLAIR
+ object_event 20, 23, SPRITE_SILVER, SPRITEMOVEDATA_WANDER, 2, 2, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DragonsDenB1FSilverScript, EVENT_RIVAL_DRAGONS_DEN
diff --git a/maps/SilverCaveItemRooms.asm b/maps/SilverCaveItemRooms.asm
new file mode 100644
index 00000000..e2f48638
--- /dev/null
+++ b/maps/SilverCaveItemRooms.asm
@@ -0,0 +1,29 @@
+ const_def 2 ; object constants
+ const SILVERCAVEITEMROOMS_POKE_BALL1
+ const SILVERCAVEITEMROOMS_POKE_BALL2
+
+SilverCaveItemRooms_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+SilverCaveItemRoomsMaxRevive:
+ itemball MAX_REVIVE
+
+SilverCaveItemRoomsFullRestore:
+ itemball FULL_RESTORE
+
+SilverCaveItemRooms_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 13, 3, SILVER_CAVE_ROOM_2, 3
+ warp_event 7, 15, SILVER_CAVE_ROOM_2, 4
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 2 ; object events
+ object_event 6, 3, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, SilverCaveItemRoomsMaxRevive, EVENT_SILVER_CAVE_ITEM_ROOMS_MAX_REVIVE
+ object_event 15, 11, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, SilverCaveItemRoomsFullRestore, EVENT_SILVER_CAVE_ITEM_ROOMS_FULL_RESTORE
diff --git a/maps/SilverCaveOutside.asm b/maps/SilverCaveOutside.asm
new file mode 100644
index 00000000..fea25620
--- /dev/null
+++ b/maps/SilverCaveOutside.asm
@@ -0,0 +1,38 @@
+SilverCaveOutside_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_NEWMAP, .FlyPoint
+
+.FlyPoint:
+ setflag ENGINE_FLYPOINT_SILVER_CAVE
+ return
+
+MtSilverPokecenterSign:
+ jumpstd pokecentersign
+
+MtSilverSign:
+ jumptext MtSilverSignText
+
+SilverCaveOutsideHiddenFullRestore:
+ hiddenitem FULL_RESTORE, EVENT_SILVER_CAVE_OUTSIDE_HIDDEN_FULL_RESTORE
+
+MtSilverSignText:
+ text "MT.SILVER"
+ done
+
+SilverCaveOutside_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 23, 19, SILVER_CAVE_POKECENTER_1F, 1
+ warp_event 18, 11, SILVER_CAVE_ROOM_1, 1
+
+ db 0 ; coord events
+
+ db 3 ; bg events
+ bg_event 24, 19, BGEVENT_READ, MtSilverPokecenterSign
+ bg_event 17, 13, BGEVENT_READ, MtSilverSign
+ bg_event 9, 25, BGEVENT_ITEM, SilverCaveOutsideHiddenFullRestore
+
+ db 0 ; object events
diff --git a/maps/SilverCavePokecenter1F.asm b/maps/SilverCavePokecenter1F.asm
new file mode 100644
index 00000000..7c293a36
--- /dev/null
+++ b/maps/SilverCavePokecenter1F.asm
@@ -0,0 +1,44 @@
+ const_def 2 ; object constants
+ const SILVERCAVEPOKECENTER1F_NURSE
+ const SILVERCAVEPOKECENTER1F_GRANNY
+
+SilverCavePokecenter1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+SilverCavePokecenter1FNurseScript:
+ jumpstd pokecenternurse
+
+SilverCavePokecenter1FGrannyScript:
+ jumptextfaceplayer SilverCavePokecenter1FGrannyText
+
+SilverCavePokecenter1FGrannyText:
+ text "Trainers who seek"
+ line "power climb MT."
+
+ para "SILVER despite its"
+ line "many dangers…"
+
+ para "With their trusted"
+ line "#MON, they must"
+
+ para "feel they can go"
+ line "anywhere…"
+ done
+
+SilverCavePokecenter1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 7, SILVER_CAVE_OUTSIDE, 1
+ warp_event 4, 7, SILVER_CAVE_OUTSIDE, 1
+ warp_event 0, 7, POKECENTER_2F, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 2 ; object events
+ object_event 3, 1, SPRITE_NURSE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SilverCavePokecenter1FNurseScript, -1
+ object_event 1, 5, SPRITE_GRANNY, SPRITEMOVEDATA_STANDING_LEFT, 2, 1, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, SilverCavePokecenter1FGrannyScript, -1
diff --git a/maps/SilverCaveRoom1.asm b/maps/SilverCaveRoom1.asm
new file mode 100644
index 00000000..15398351
--- /dev/null
+++ b/maps/SilverCaveRoom1.asm
@@ -0,0 +1,43 @@
+ const_def 2 ; object constants
+ const SILVERCAVEROOM1_POKE_BALL1
+ const SILVERCAVEROOM1_POKE_BALL2
+ const SILVERCAVEROOM1_POKE_BALL3
+ const SILVERCAVEROOM1_POKE_BALL4
+
+SilverCaveRoom1_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+SilverCaveRoom1MaxElixer:
+ itemball MAX_ELIXER
+
+SilverCaveRoom1XAccuracy:
+ itemball X_ACCURACY
+
+SilverCaveRoom1EscapeRope:
+ itemball ESCAPE_ROPE
+
+SilverCaveRoom1HiddenDireHit:
+ hiddenitem DIRE_HIT, EVENT_SILVER_CAVE_ROOM_1_HIDDEN_DIRE_HIT
+
+SilverCaveRoom1HiddenUltraBall:
+ hiddenitem ULTRA_BALL, EVENT_SILVER_CAVE_ROOM_1_HIDDEN_ULTRA_BALL
+
+SilverCaveRoom1_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 9, 33, SILVER_CAVE_OUTSIDE, 2
+ warp_event 15, 1, SILVER_CAVE_ROOM_2, 1
+
+ db 0 ; coord events
+
+ db 2 ; bg events
+ bg_event 16, 23, BGEVENT_ITEM, SilverCaveRoom1HiddenDireHit
+ bg_event 17, 12, BGEVENT_ITEM, SilverCaveRoom1HiddenUltraBall
+
+ db 3 ; object events
+ object_event 4, 9, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, SilverCaveRoom1MaxElixer, EVENT_SILVER_CAVE_ROOM_1_MAX_ELIXER
+ object_event 15, 29, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, SilverCaveRoom1XAccuracy, EVENT_SILVER_CAVE_ROOM_1_X_ACCURACY
+ object_event 5, 30, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, SilverCaveRoom1EscapeRope, EVENT_SILVER_CAVE_ROOM_1_ESCAPE_ROPE
diff --git a/maps/SilverCaveRoom2.asm b/maps/SilverCaveRoom2.asm
new file mode 100644
index 00000000..a9df9969
--- /dev/null
+++ b/maps/SilverCaveRoom2.asm
@@ -0,0 +1,28 @@
+ const_def 2 ; object constants
+ const SILVERCAVEROOM2_POKE_BALL1
+ const SILVERCAVEROOM2_POKE_BALL2
+ const SILVERCAVEROOM2_POKE_BALL3
+
+SilverCaveRoom2_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+SilverCaveRoom2HiddenMaxPotion:
+ hiddenitem MAX_POTION, EVENT_SILVER_CAVE_ROOM_2_HIDDEN_MAX_POTION
+
+SilverCaveRoom2_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 17, 31, SILVER_CAVE_ROOM_1, 2
+ warp_event 11, 5, SILVER_CAVE_ROOM_3, 1
+ warp_event 13, 21, SILVER_CAVE_ITEM_ROOMS, 1
+ warp_event 23, 3, SILVER_CAVE_ITEM_ROOMS, 2
+
+ db 0 ; coord events
+
+ db 1 ; bg events
+ bg_event 14, 31, BGEVENT_ITEM, SilverCaveRoom2HiddenMaxPotion
+
+ db 0 ; object events
diff --git a/maps/SilverCaveRoom3.asm b/maps/SilverCaveRoom3.asm
new file mode 100644
index 00000000..3f071288
--- /dev/null
+++ b/maps/SilverCaveRoom3.asm
@@ -0,0 +1,62 @@
+ const_def 2 ; object constants
+ const SILVERCAVEROOM3_RED
+
+SilverCaveRoom3_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+Red:
+ special FadeOutMusic
+ faceplayer
+ opentext
+ writetext .Text1
+ waitbutton
+ closetext
+ winlosstext .Text2, .Text2
+ loadtrainer RED, RED1
+ startbattle
+ dontrestartmapmusic
+ reloadmapafterbattle
+ special FadeOutMusic
+ opentext
+ writetext .Text3
+ waitbutton
+ closetext
+ special FadeBlackQuickly
+ special ReloadSpritesNoPalettes
+ disappear SILVERCAVEROOM3_RED
+ pause 15
+ special FadeInQuickly
+ pause 30
+ special HealParty
+ refreshscreen
+ credits
+ end
+
+.Text1:
+ text "…"
+ line "…"
+ done
+
+.Text2:
+ text "…"
+ done
+
+.Text3:
+ text "…"
+ line "…"
+ done
+
+SilverCaveRoom3_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 9, 33, SILVER_CAVE_ROOM_2, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 9, 10, SPRITE_RED, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, Red, EVENT_RED_IN_MT_SILVER
diff --git a/maps/TohjoFalls.asm b/maps/TohjoFalls.asm
new file mode 100644
index 00000000..4a57e3d2
--- /dev/null
+++ b/maps/TohjoFalls.asm
@@ -0,0 +1,24 @@
+ const_def 2 ; object constants
+ const TOHJOFALLS_POKE_BALL
+
+TohjoFalls_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+TohjoFallsMoonStone:
+ itemball MOON_STONE
+
+TohjoFalls_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 13, 15, ROUTE_27, 2
+ warp_event 25, 15, ROUTE_27, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 2, 6, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TohjoFallsMoonStone, EVENT_TOHJO_FALLS_MOON_STONE
diff --git a/maps/WhirlIslandB1F.asm b/maps/WhirlIslandB1F.asm
new file mode 100644
index 00000000..a38e53a1
--- /dev/null
+++ b/maps/WhirlIslandB1F.asm
@@ -0,0 +1,68 @@
+ const_def 2 ; object constants
+ const WHIRLISLANDB1F_POKE_BALL1
+ const WHIRLISLANDB1F_POKE_BALL2
+ const WHIRLISLANDB1F_POKE_BALL3
+ const WHIRLISLANDB1F_POKE_BALL4
+ const WHIRLISLANDB1F_POKE_BALL5
+ const WHIRLISLANDB1F_BOULDER
+
+WhirlIslandB1F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+WhirlIslandB1FFullRestore:
+ itemball FULL_RESTORE
+
+WhirlIslandB1FCarbos:
+ itemball CARBOS
+
+WhirlIslandB1FCalcium:
+ itemball CALCIUM
+
+WhirlIslandB1FNugget:
+ itemball NUGGET
+
+WhirlIslandB1FEscapeRope:
+ itemball ESCAPE_ROPE
+
+WhirlIslandB1FBoulder:
+ jumpstd strengthboulder
+
+WhirlIslandB1FHiddenRareCandy:
+ hiddenitem RARE_CANDY, EVENT_WHIRL_ISLAND_B1F_HIDDEN_RARE_CANDY
+
+WhirlIslandB1FHiddenUltraBall:
+ hiddenitem ULTRA_BALL, EVENT_WHIRL_ISLAND_B1F_HIDDEN_ULTRA_BALL
+
+WhirlIslandB1FHiddenFullRestore:
+ hiddenitem FULL_RESTORE, EVENT_WHIRL_ISLAND_B1F_HIDDEN_FULL_RESTORE
+
+WhirlIslandB1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 9 ; warp events
+ warp_event 5, 5, WHIRL_ISLAND_NW, 2
+ warp_event 35, 3, WHIRL_ISLAND_NE, 2
+ warp_event 29, 9, WHIRL_ISLAND_NE, 3
+ warp_event 9, 31, WHIRL_ISLAND_SW, 3
+ warp_event 23, 31, WHIRL_ISLAND_SW, 2
+ warp_event 31, 29, WHIRL_ISLAND_SE, 2
+ warp_event 25, 21, WHIRL_ISLAND_B2F, 1
+ warp_event 13, 27, WHIRL_ISLAND_B2F, 2
+ warp_event 17, 21, WHIRL_ISLAND_CAVE, 1
+
+ db 0 ; coord events
+
+ db 3 ; bg events
+ bg_event 30, 4, BGEVENT_ITEM, WhirlIslandB1FHiddenRareCandy
+ bg_event 36, 18, BGEVENT_ITEM, WhirlIslandB1FHiddenUltraBall
+ bg_event 2, 23, BGEVENT_ITEM, WhirlIslandB1FHiddenFullRestore
+
+ db 6 ; object events
+ object_event 7, 13, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandB1FFullRestore, EVENT_WHIRL_ISLAND_B1F_FULL_RESTORE
+ object_event 2, 18, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandB1FCarbos, EVENT_WHIRL_ISLAND_B1F_CARBOS
+ object_event 33, 23, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandB1FCalcium, EVENT_WHIRL_ISLAND_B1F_CALCIUM
+ object_event 17, 8, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandB1FNugget, EVENT_WHIRL_ISLAND_B1F_NUGGET
+ object_event 19, 26, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandB1FEscapeRope, EVENT_WHIRL_ISLAND_B1F_ESCAPE_ROPE
+ object_event 23, 26, SPRITE_BOULDER, SPRITEMOVEDATA_STRENGTH_BOULDER, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, WhirlIslandB1FBoulder, -1
diff --git a/maps/WhirlIslandB2F.asm b/maps/WhirlIslandB2F.asm
new file mode 100644
index 00000000..acee9670
--- /dev/null
+++ b/maps/WhirlIslandB2F.asm
@@ -0,0 +1,36 @@
+ const_def 2 ; object constants
+ const WHIRLISLANDB2F_POKE_BALL1
+ const WHIRLISLANDB2F_POKE_BALL2
+ const WHIRLISLANDB2F_POKE_BALL3
+
+WhirlIslandB2F_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+WhirlIslandB2FFullRestore:
+ itemball FULL_RESTORE
+
+WhirlIslandB2FMaxRevive:
+ itemball MAX_REVIVE
+
+WhirlIslandB2FMaxElixer:
+ itemball MAX_ELIXER
+
+WhirlIslandB2F_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 11, 5, WHIRL_ISLAND_B1F, 7
+ warp_event 7, 11, WHIRL_ISLAND_B1F, 8
+ warp_event 7, 25, WHIRL_ISLAND_LUGIA_CHAMBER, 1
+ warp_event 13, 31, WHIRL_ISLAND_SW, 5
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 3 ; object events
+ object_event 10, 11, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandB2FFullRestore, EVENT_WHIRL_ISLAND_B2F_FULL_RESTORE
+ object_event 6, 4, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandB2FMaxRevive, EVENT_WHIRL_ISLAND_B2F_MAX_REVIVE
+ object_event 5, 12, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandB2FMaxElixer, EVENT_WHIRL_ISLAND_B2F_MAX_ELIXER
diff --git a/maps/WhirlIslandCave.asm b/maps/WhirlIslandCave.asm
new file mode 100644
index 00000000..35e726b5
--- /dev/null
+++ b/maps/WhirlIslandCave.asm
@@ -0,0 +1,17 @@
+WhirlIslandCave_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+WhirlIslandCave_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 7, 5, WHIRL_ISLAND_B1F, 9
+ warp_event 3, 13, WHIRL_ISLAND_NW, 4
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 0 ; object events
diff --git a/maps/WhirlIslandLugiaChamber.asm b/maps/WhirlIslandLugiaChamber.asm
new file mode 100644
index 00000000..19c21331
--- /dev/null
+++ b/maps/WhirlIslandLugiaChamber.asm
@@ -0,0 +1,66 @@
+ const_def 2 ; object constants
+ const WHIRLISLANDLUGIACHAMBER_LUGIA
+
+WhirlIslandLugiaChamber_MapScripts:
+ db 0 ; scene scripts
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_OBJECTS, .Lugia
+
+.Lugia:
+ checkevent EVENT_FOUGHT_LUGIA
+ iftrue .NoAppear
+ checkitem SILVER_WING
+ iftrue .Appear
+ jump .NoAppear
+
+.Appear:
+ appear WHIRLISLANDLUGIACHAMBER_LUGIA
+ return
+
+.NoAppear:
+ disappear WHIRLISLANDLUGIACHAMBER_LUGIA
+ return
+
+Lugia:
+ faceplayer
+ opentext
+ writetext LugiaText
+ cry LUGIA
+ pause 15
+ closetext
+ setevent EVENT_FOUGHT_LUGIA
+ checkver
+ iftrue .Silver
+
+ writecode VAR_BATTLETYPE, BATTLETYPE_FORCEITEM
+ loadwildmon LUGIA, 70
+ startbattle
+ disappear WHIRLISLANDLUGIACHAMBER_LUGIA
+ reloadmapafterbattle
+ end
+
+.Silver:
+ writecode VAR_BATTLETYPE, BATTLETYPE_FORCEITEM
+ loadwildmon LUGIA, 40
+ startbattle
+ disappear WHIRLISLANDLUGIACHAMBER_LUGIA
+ reloadmapafterbattle
+ end
+
+LugiaText:
+ text "Gyaaas!"
+ done
+
+WhirlIslandLugiaChamber_MapEvents:
+ db 0, 0 ; filler
+
+ db 1 ; warp events
+ warp_event 9, 13, WHIRL_ISLAND_B2F, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 9, 5, SPRITE_LUGIA, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Lugia, EVENT_WHIRL_ISLAND_LUGIA_CHAMBER_LUGIA
diff --git a/maps/WhirlIslandNE.asm b/maps/WhirlIslandNE.asm
new file mode 100644
index 00000000..c13cd7a9
--- /dev/null
+++ b/maps/WhirlIslandNE.asm
@@ -0,0 +1,25 @@
+ const_def 2 ; object constants
+ const WHIRLISLANDNE_POKE_BALL
+
+WhirlIslandNE_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+WhirlIslandNEUltraBall:
+ itemball ULTRA_BALL
+
+WhirlIslandNE_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 13, ROUTE_41, 2
+ warp_event 17, 3, WHIRL_ISLAND_B1F, 2
+ warp_event 13, 11, WHIRL_ISLAND_B1F, 3
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 11, 11, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandNEUltraBall, EVENT_WHIRL_ISLAND_NE_ULTRA_BALL
diff --git a/maps/WhirlIslandNW.asm b/maps/WhirlIslandNW.asm
new file mode 100644
index 00000000..55e4f2d0
--- /dev/null
+++ b/maps/WhirlIslandNW.asm
@@ -0,0 +1,19 @@
+WhirlIslandNW_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+WhirlIslandNW_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 5, 7, ROUTE_41, 1
+ warp_event 5, 3, WHIRL_ISLAND_B1F, 1
+ warp_event 3, 15, WHIRL_ISLAND_SW, 4
+ warp_event 7, 15, WHIRL_ISLAND_CAVE, 2
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 0 ; object events
diff --git a/maps/WhirlIslandSE.asm b/maps/WhirlIslandSE.asm
new file mode 100644
index 00000000..be43871c
--- /dev/null
+++ b/maps/WhirlIslandSE.asm
@@ -0,0 +1,17 @@
+WhirlIslandSE_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+WhirlIslandSE_MapEvents:
+ db 0, 0 ; filler
+
+ db 2 ; warp events
+ warp_event 5, 13, ROUTE_41, 4
+ warp_event 5, 3, WHIRL_ISLAND_B1F, 6
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 0 ; object events
diff --git a/maps/WhirlIslandSW.asm b/maps/WhirlIslandSW.asm
new file mode 100644
index 00000000..9cedc665
--- /dev/null
+++ b/maps/WhirlIslandSW.asm
@@ -0,0 +1,27 @@
+ const_def 2 ; object constants
+ const WHIRLISLANDSW_POKE_BALL
+
+WhirlIslandSW_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+WhirlIslandSWGuardSpec:
+ itemball GUARD_SPEC
+
+WhirlIslandSW_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 5, 7, ROUTE_41, 3
+ warp_event 17, 3, WHIRL_ISLAND_B1F, 5
+ warp_event 3, 3, WHIRL_ISLAND_B1F, 4
+ warp_event 3, 15, WHIRL_ISLAND_NW, 3
+ warp_event 17, 15, WHIRL_ISLAND_B2F, 4
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 1 ; object events
+ object_event 15, 2, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, WhirlIslandSWGuardSpec, EVENT_WHIRL_ISLAND_SW_GUARD_SPEC