summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIIMarckus <iimarckus@gmail.com>2018-09-20 20:31:09 -0600
committerIIMarckus <iimarckus@gmail.com>2018-09-20 20:31:09 -0600
commitf7c1a2cd8ffb4c00ba0261ed57fe6ea5349af8a4 (patch)
treea34be0dd9493cc16758aef7e3ca3547c1ee9c5c6
parentf5ce33c3dc240c7f1f9a1cb894ba041b5692c8bd (diff)
Add map scripts from bank 45.
-rw-r--r--constants/event_flags.asm24
-rw-r--r--constants/map_constants.asm9
-rw-r--r--macros/scripts/events.asm24
-rw-r--r--main.asm6
-rw-r--r--maps/IlexForest.asm695
-rw-r--r--maps/MahoganyMart1F.asm238
-rw-r--r--maps/SlowpokeWellB1F.asm2
-rw-r--r--maps/TeamRocketBaseB1F.asm789
-rw-r--r--maps/TeamRocketBaseB2F.asm968
-rw-r--r--maps/TeamRocketBaseB3F.asm602
10 files changed, 3326 insertions, 31 deletions
diff --git a/constants/event_flags.asm b/constants/event_flags.asm
index a0f67d37..12d5fce1 100644
--- a/constants/event_flags.asm
+++ b/constants/event_flags.asm
@@ -1712,9 +1712,9 @@
const EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
const EVENT_TEAM_ROCKET_BASE_B1F_GUARD_SPEC
const EVENT_TEAM_ROCKET_BASE_B2F_TM_THIEF
- const EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
- const EVENT_TEAM_ROCKET_BASE_B3F_X_SPECIAL
const EVENT_TEAM_ROCKET_BASE_B3F_FULL_HEAL
+ const EVENT_TEAM_ROCKET_BASE_B3F_DIRE_HIT
+ const EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
const EVENT_TEAM_ROCKET_BASE_B3F_ICE_HEAL
const EVENT_ILEX_FOREST_REVIVE
const EVENT_WAREHOUSE_ENTRANCE_COIN_CASE
@@ -1837,16 +1837,16 @@
const EVENT_DAY_CARE_MAN_ON_ROUTE_34
const EVENT_DAY_CARE_MON_1
const EVENT_DAY_CARE_MON_2
- const EVENT_ILEX_FOREST_FARFETCHD
- const EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_BEHIND_COUNTER
- const EVENT_ROUTE_34_ILEX_FOREST_GATE_LASS
- const EVENT_ROUTE_34_ILEX_FOREST_GATE_TEACHER_IN_WALKWAY
- const EVENT_ILEX_FOREST_LASS
- const EVENT_COPYCAT_1
- const EVENT_COPYCAT_2
- const EVENT_GOLDENROD_SALE_OFF
- const EVENT_GOLDENROD_SALE_ON
- const EVENT_6F2
+ const EVENT_ILEX_FOREST_FARFETCHD1
+ const EVENT_ILEX_FOREST_FARFETCHD2
+ const EVENT_ILEX_FOREST_FARFETCHD3
+ const EVENT_ILEX_FOREST_FARFETCHD4
+ const EVENT_ILEX_FOREST_FARFETCHD5
+ const EVENT_ILEX_FOREST_FARFETCHD6
+ const EVENT_ILEX_FOREST_FARFETCHD7
+ const EVENT_ILEX_FOREST_FARFETCHD8
+ const EVENT_ILEX_FOREST_FARFETCHD9
+ const EVENT_ILEX_FOREST_FARFETCHD10
const EVENT_ILEX_FOREST_APPRENTICE
const EVENT_ILEX_FOREST_CHARCOAL_MASTER
const EVENT_CHARCOAL_KILN_FARFETCH_D
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index 5bb98f0a..c41643c8 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -255,11 +255,10 @@ ENDM
map_const GOLDENROD_DEPT_STORE_5F, 4, 8 ; 16
map_const GOLDENROD_DEPT_STORE_6F, 4, 8 ; 17
map_const GOLDENROD_DEPT_STORE_ELEVATOR, 2, 2 ; 18
- map_const GOLDENROD_DEPT_STORE_ROOF, 4, 8 ; 19
- map_const GOLDENROD_GAME_CORNER, 7, 10 ; 20
- map_const ILEX_FOREST_AZALEA_GATE, 4, 5 ; 21
- map_const ROUTE_34_ILEX_FOREST_GATE, 4, 5 ; 22
- map_const DAYCARE, 4, 5 ; 23
+ map_const GOLDENROD_GAME_CORNER, 7, 10 ; 19
+ map_const ILEX_FOREST_AZALEA_GATE, 4, 5 ; 20
+ map_const ROUTE_34_ILEX_FOREST_GATE, 4, 5 ; 21
+ map_const DAYCARE, 4, 5 ; 22
newgroup ; 12
diff --git a/macros/scripts/events.asm b/macros/scripts/events.asm
index 10ecc385..6c936ffc 100644
--- a/macros/scripts/events.asm
+++ b/macros/scripts/events.asm
@@ -697,19 +697,19 @@ appear: MACRO
db \1 ; object id
ENDM
- enum follow_command ; $70
+ enum follow_command ; $6f
follow: MACRO
db follow_command
db \1 ; object2
db \2 ; object1
ENDM
- enum stopfollow_command ; $71
+ enum stopfollow_command ; $70
stopfollow: MACRO
db stopfollow_command
ENDM
- enum moveobject_command ; $72
+ enum moveobject_command ; $71
moveobject: MACRO
db moveobject_command
db \1 ; object id
@@ -717,13 +717,13 @@ moveobject: MACRO
db \3 ; y
ENDM
- enum writeobjectxy_command ; $73
+ enum writeobjectxy_command ; $72
writeobjectxy: MACRO
db writeobjectxy_command
db \1 ; object id
ENDM
- enum loademote_command ; $74
+ enum loademote_command ; $73
loademote: MACRO
db loademote_command
db \1 ; bubble
@@ -744,27 +744,27 @@ turnobject: MACRO
db \2 ; facing
ENDM
- enum follownotexact_command ; $77
+ enum follownotexact_command ; $76
follownotexact: MACRO
db follownotexact_command
db \1 ; object2
db \2 ; object1
ENDM
- enum earthquake_command ; $78
+ enum earthquake_command ; $77
earthquake: MACRO
db earthquake_command
db \1 ; param
ENDM
- enum changemap_command ; $79
+ enum changemap_command ; $78
changemap: MACRO
db changemap_command
db \1 ; map_bank
dw \2 ; map_data_pointer
ENDM
- enum changeblock_command ; $7a
+ enum changeblock_command ; $79
changeblock: MACRO
db changeblock_command
db \1 ; x
@@ -772,17 +772,17 @@ changeblock: MACRO
db \3 ; block
ENDM
- enum reloadmap_command ; $7b
+ enum reloadmap_command ; $7a
reloadmap: MACRO
db reloadmap_command
ENDM
- enum reloadmappart_command ; $7c
+ enum reloadmappart_command ; $7b
reloadmappart: MACRO
db reloadmappart_command
ENDM
- enum writecmdqueue_command ; $7d
+ enum writecmdqueue_command ; $7c
writecmdqueue: MACRO
db writecmdqueue_command
dw \1 ; queue_pointer
diff --git a/main.asm b/main.asm
index 41379ccb..321ebbcb 100644
--- a/main.asm
+++ b/main.asm
@@ -1579,7 +1579,11 @@ INCLUDE "maps/OlivineLighthouse5F.asm"
INCLUDE "maps/OlivineLighthouse6F.asm"
SECTION "bank45", ROMX, BANK[$45]
- dr $114000, $118000
+INCLUDE "maps/MahoganyMart1F.asm"
+INCLUDE "maps/TeamRocketBaseB1F.asm"
+INCLUDE "maps/TeamRocketBaseB2F.asm"
+INCLUDE "maps/TeamRocketBaseB3F.asm"
+INCLUDE "maps/IlexForest.asm"
SECTION "bank46", ROMX, BANK[$46]
dr $118000, $11c000
diff --git a/maps/IlexForest.asm b/maps/IlexForest.asm
new file mode 100644
index 00000000..7ec75819
--- /dev/null
+++ b/maps/IlexForest.asm
@@ -0,0 +1,695 @@
+ const_def 2 ; object constants
+ const ILEXFOREST_FARFETCHD1
+ const ILEXFOREST_FARFETCHD2
+ const ILEXFOREST_FARFETCHD3
+ const ILEXFOREST_FARFETCHD4
+ const ILEXFOREST_FARFETCHD5
+ const ILEXFOREST_FARFETCHD6
+ const ILEXFOREST_FARFETCHD7
+ const ILEXFOREST_FARFETCHD8
+ const ILEXFOREST_FARFETCHD9
+ const ILEXFOREST_FARFETCHD10
+ const ILEXFOREST_YOUNGSTER1
+ const ILEXFOREST_BLACK_BELT
+ const ILEXFOREST_ROCKER
+ const ILEXFOREST_POKE_BALL1
+ const ILEXFOREST_YOUNGSTER2
+ const ILEXFOREST_POKE_BALL2
+ const ILEXFOREST_POKE_BALL3
+ const ILEXFOREST_POKE_BALL4
+
+IlexForest_MapScripts:
+ db 0 ; scene scripts
+
+ db 0 ; callbacks
+
+IlexForestCharcoalApprenticeScript:
+ faceplayer
+ opentext
+ checkevent EVENT_HERDED_FARFETCHD
+ iftrue .DoneFarfetchd
+ writetext IlexForestApprenticeIntroText
+ waitbutton
+ closetext
+ end
+
+.DoneFarfetchd:
+ writetext IlexForestApprenticeAfterText
+ waitbutton
+ closetext
+ end
+
+FarfetchdPosition1:
+ faceplayer
+ opentext
+ writetext Text_ItsTheMissingPokemon
+ buttonsound
+ writetext Text_Kwaaaa
+ cry FARFETCH_D
+ waitbutton
+ closetext
+ applymovement ILEXFOREST_FARFETCHD1, MovementData_Farfetchd_Pos1_Pos2
+ appear ILEXFOREST_FARFETCHD2
+ pause 5
+ disappear ILEXFOREST_FARFETCHD1
+ end
+
+FarfetchdPosition2:
+ scall FarfetchdCryAndCheckFacing
+ ifequal DOWN, .Position2_Down
+ applymovement ILEXFOREST_FARFETCHD2, MovementData_Farfetchd_Pos2_Pos3
+ appear ILEXFOREST_FARFETCHD3
+ pause 5
+ disappear ILEXFOREST_FARFETCHD2
+ end
+
+.Position2_Down:
+ applymovement ILEXFOREST_FARFETCHD2, MovementData_Farfetchd_Pos2_Pos8
+ appear ILEXFOREST_FARFETCHD8
+ pause 5
+ disappear ILEXFOREST_FARFETCHD2
+ end
+
+FarfetchdPosition3:
+ scall FarfetchdCryAndCheckFacing
+ ifequal LEFT, .Position3_Left
+ applymovement ILEXFOREST_FARFETCHD3, MovementData_Farfetchd_Pos3_Pos4
+ appear ILEXFOREST_FARFETCHD4
+ pause 5
+ disappear ILEXFOREST_FARFETCHD3
+ end
+
+.Position3_Left:
+ applymovement ILEXFOREST_FARFETCHD3, MovementData_Farfetchd_Pos3_Pos2
+ appear ILEXFOREST_FARFETCHD2
+ pause 5
+ disappear ILEXFOREST_FARFETCHD3
+ end
+
+FarfetchdPosition4:
+ scall FarfetchdCryAndCheckFacing
+ ifequal UP, .Position4_Up
+ applymovement ILEXFOREST_FARFETCHD4, MovementData_Farfetchd_Pos4_Pos5
+ appear ILEXFOREST_FARFETCHD5
+ pause 5
+ disappear ILEXFOREST_FARFETCHD4
+ end
+
+.Position4_Up:
+ applymovement ILEXFOREST_FARFETCHD4, MovementData_Farfetchd_Pos4_Pos3
+ appear ILEXFOREST_FARFETCHD3
+ pause 5
+ disappear ILEXFOREST_FARFETCHD4
+ end
+
+FarfetchdPosition5:
+ scall FarfetchdCryAndCheckFacing
+ ifequal UP, .Position5_Up
+ ifequal LEFT, .Position5_Left
+ ifequal RIGHT, .Position5_Right
+ applymovement ILEXFOREST_FARFETCHD5, MovementData_Farfetchd_Pos5_Pos6
+ appear ILEXFOREST_FARFETCHD6
+ pause 5
+ disappear ILEXFOREST_FARFETCHD5
+ end
+
+.Position5_Left:
+ applymovement ILEXFOREST_FARFETCHD5, MovementData_Farfetchd_Pos5_Pos7
+ appear ILEXFOREST_FARFETCHD7
+ pause 5
+ disappear ILEXFOREST_FARFETCHD5
+ end
+
+.Position5_Up:
+ applymovement ILEXFOREST_FARFETCHD5, MovementData_Farfetched_Pos5_Pos4_Up
+ appear ILEXFOREST_FARFETCHD4
+ pause 5
+ disappear ILEXFOREST_FARFETCHD5
+ end
+
+.Position5_Right:
+ applymovement ILEXFOREST_FARFETCHD5, MovementData_Farfetched_Pos5_Pos4_Right
+ appear ILEXFOREST_FARFETCHD4
+ pause 5
+ disappear ILEXFOREST_FARFETCHD5
+ end
+
+FarfetchdPosition6:
+ scall FarfetchdCryAndCheckFacing
+ ifequal RIGHT, .Position6_Right
+ applymovement ILEXFOREST_FARFETCHD6, MovementData_Farfetched_Pos6_Pos7
+ appear ILEXFOREST_FARFETCHD7
+ pause 5
+ disappear ILEXFOREST_FARFETCHD6
+ end
+
+.Position6_Right:
+ applymovement ILEXFOREST_FARFETCHD6, MovementData_Farfetched_Pos6_Pos5
+ appear ILEXFOREST_FARFETCHD5
+ pause 5
+ disappear ILEXFOREST_FARFETCHD6
+ end
+
+FarfetchdPosition7:
+ scall FarfetchdCryAndCheckFacing
+ ifequal DOWN, .Position7_Down
+ ifequal LEFT, .Position7_Left
+ applymovement ILEXFOREST_FARFETCHD7, MovementData_Farfetched_Pos7_Pos8
+ appear ILEXFOREST_FARFETCHD8
+ pause 5
+ disappear ILEXFOREST_FARFETCHD7
+ end
+
+.Position7_Left:
+ applymovement ILEXFOREST_FARFETCHD7, MovementData_Farfetched_Pos7_Pos6
+ appear ILEXFOREST_FARFETCHD6
+ pause 5
+ disappear ILEXFOREST_FARFETCHD7
+ end
+
+.Position7_Down:
+ applymovement ILEXFOREST_FARFETCHD7, MovementData_Farfetched_Pos7_Pos5
+ appear ILEXFOREST_FARFETCHD5
+ pause 5
+ disappear ILEXFOREST_FARFETCHD7
+ end
+
+FarfetchdPosition8:
+ scall FarfetchdCryAndCheckFacing
+ ifequal UP, .Position8_Up
+ ifequal LEFT, .Position8_Left
+ ifequal RIGHT, .Position8_Right
+ applymovement ILEXFOREST_FARFETCHD8, MovementData_Farfetched_Pos8_Pos9
+ appear ILEXFOREST_FARFETCHD9
+ pause 5
+ disappear ILEXFOREST_FARFETCHD8
+ end
+
+.Position8_Right:
+ applymovement ILEXFOREST_FARFETCHD8, MovementData_Farfetched_Pos8_Pos7
+ appear ILEXFOREST_FARFETCHD7
+ pause 5
+ disappear ILEXFOREST_FARFETCHD8
+ end
+
+.Position8_Up:
+.Position8_Left:
+ applymovement ILEXFOREST_FARFETCHD8, MovementData_Farfetched_Pos8_Pos2
+ appear ILEXFOREST_FARFETCHD2
+ pause 5
+ disappear ILEXFOREST_FARFETCHD8
+ end
+
+FarfetchdPosition9:
+ scall FarfetchdCryAndCheckFacing
+ ifequal DOWN, .Position9_Down
+ ifequal RIGHT, .Position9_Right
+ applymovement ILEXFOREST_FARFETCHD9, MovementData_Farfetched_Pos9_Pos10
+ appear ILEXFOREST_FARFETCHD10
+ pause 5
+ disappear ILEXFOREST_FARFETCHD9
+ appear 13 ; ILEXFOREST_BLACK_BELT
+ setevent EVENT_CHARCOAL_KILN_BOSS
+ setevent EVENT_HERDED_FARFETCHD
+ end
+
+.Position9_Right:
+ applymovement ILEXFOREST_FARFETCHD9, MovementData_Farfetched_Pos9_Pos8_Right
+ appear ILEXFOREST_FARFETCHD8
+ pause 5
+ disappear ILEXFOREST_FARFETCHD9
+ end
+
+.Position9_Down:
+ applymovement ILEXFOREST_FARFETCHD9, MovementData_Farfetched_Pos9_Pos8_Down
+ appear ILEXFOREST_FARFETCHD8
+ pause 5
+ disappear ILEXFOREST_FARFETCHD9
+ end
+
+FarfetchdPosition10:
+ faceplayer
+ opentext
+ writetext Text_Kwaaaa
+ cry FARFETCH_D
+ waitbutton
+ closetext
+ end
+
+FarfetchdCryAndCheckFacing:
+ faceplayer
+ opentext
+ writetext Text_Kwaaaa
+ cry FARFETCH_D
+ waitbutton
+ closetext
+ checkcode VAR_FACING
+ end
+
+IlexForestCharcoalMasterScript:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_HM01_CUT
+ iftrue .AlreadyGotCut
+ writetext Text_CharcoalMasterIntro
+ buttonsound
+ verbosegiveitem HM_CUT
+ setevent EVENT_GOT_HM01_CUT
+ writetext Text_CharcoalMasterOutro
+ waitbutton
+ closetext
+ setevent EVENT_ILEX_FOREST_FARFETCHD10
+ setevent EVENT_ILEX_FOREST_APPRENTICE
+ setevent EVENT_ILEX_FOREST_CHARCOAL_MASTER
+ clearevent EVENT_CHARCOAL_KILN_FARFETCH_D
+ clearevent EVENT_CHARCOAL_KILN_APPRENTICE
+ clearevent EVENT_CHARCOAL_KILN_BOSS
+ end
+
+.AlreadyGotCut:
+ writetext Text_CharcoalMasterTalkAfter
+ waitbutton
+ closetext
+ end
+
+IlexForestHeadbuttGuyScript:
+ faceplayer
+ opentext
+ checkevent EVENT_GOT_TM02_HEADBUTT
+ iftrue .AlreadyGotHeadbutt
+ writetext Text_HeadbuttIntro
+ buttonsound
+ verbosegiveitem TM_HEADBUTT
+ iffalse .BagFull
+ setevent EVENT_GOT_TM02_HEADBUTT
+.AlreadyGotHeadbutt:
+ writetext Text_HeadbuttOutro
+ waitbutton
+.BagFull:
+ closetext
+ end
+
+IlexForestRevive:
+ itemball REVIVE
+
+IlexForestHiddenEther:
+ hiddenitem ETHER, EVENT_ILEX_FOREST_HIDDEN_ETHER
+
+IlexForestHiddenSuperPotion:
+ hiddenitem SUPER_POTION, EVENT_ILEX_FOREST_HIDDEN_SUPER_POTION
+
+IlexForestHiddenFullHeal:
+ hiddenitem FULL_HEAL, EVENT_ILEX_FOREST_HIDDEN_FULL_HEAL
+
+IlexForestBoulder:
+; unused
+ jumpstd strengthboulder
+
+IlexForestSignpost:
+ jumptext IlexForestSignpostText
+
+IlexForestShrineScript:
+ jumptext Text_IlexForestShrine
+
+MovementData_Farfetchd_Pos1_Pos2:
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ step_end
+
+MovementData_Farfetchd_Pos2_Pos3:
+ big_step UP
+ big_step UP
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step DOWN
+ step_end
+
+MovementData_Farfetchd_Pos2_Pos8:
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ step_end
+
+MovementData_Farfetchd_Pos3_Pos4:
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ step_end
+
+MovementData_Farfetchd_Pos3_Pos2:
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+MovementData_Farfetchd_Pos4_Pos5:
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ step_end
+
+MovementData_Farfetchd_Pos4_Pos3:
+ big_step LEFT
+ jump_step LEFT
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+MovementData_Farfetchd_Pos5_Pos6:
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ step_end
+
+MovementData_Farfetchd_Pos5_Pos7:
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+MovementData_Farfetched_Pos5_Pos4_Up:
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step RIGHT
+ big_step UP
+ step_end
+
+MovementData_Farfetched_Pos5_Pos4_Right:
+ big_step RIGHT
+ turn_head UP
+ step_sleep 1
+ turn_head DOWN
+ step_sleep 1
+ turn_head UP
+ step_sleep 1
+ big_step DOWN
+ big_step DOWN
+ fix_facing
+ jump_step UP
+ step_sleep 8
+ step_sleep 8
+ remove_fixed_facing
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ step_end
+
+MovementData_Farfetched_Pos6_Pos7:
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ step_end
+
+MovementData_Farfetched_Pos6_Pos5:
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ step_end
+
+MovementData_Farfetched_Pos7_Pos8:
+ big_step UP
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+MovementData_Farfetched_Pos7_Pos6:
+ big_step DOWN
+ big_step DOWN
+ big_step LEFT
+ big_step DOWN
+ big_step DOWN
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ step_end
+
+MovementData_Farfetched_Pos7_Pos5:
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ step_end
+
+MovementData_Farfetched_Pos8_Pos9:
+ big_step DOWN
+ big_step LEFT
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ step_end
+
+MovementData_Farfetched_Pos8_Pos7:
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ step_end
+
+MovementData_Farfetched_Pos8_Pos2:
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ step_end
+
+MovementData_Farfetched_Pos9_Pos10:
+ big_step LEFT
+ big_step LEFT
+ fix_facing
+ jump_step RIGHT
+ step_sleep 8
+ step_sleep 8
+ remove_fixed_facing
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ step_end
+
+MovementData_Farfetched_Pos9_Pos8_Right:
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ step_end
+
+MovementData_Farfetched_Pos9_Pos8_Down:
+ big_step LEFT
+ big_step LEFT
+ fix_facing
+ jump_step RIGHT
+ step_sleep 8
+ step_sleep 8
+ remove_fixed_facing
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ step_end
+
+IlexForestApprenticeIntroText:
+ text "Oh, man… My boss"
+ line "is going to be"
+ cont "steaming…"
+
+ para "The FARFETCH'D"
+ line "that CUTS trees"
+
+ para "for charcoal took"
+ line "off on me."
+
+ para "I can't go looking"
+ line "for it here in the"
+ cont "ILEX FOREST."
+
+ para "It's too big, dark"
+ line "and scary for me…"
+ done
+
+IlexForestApprenticeAfterText:
+ text "Wow! Thanks a"
+ line "whole bunch!"
+
+ para "My boss's #MON"
+ line "won't obey me be-"
+ cont "cause I don't have"
+ cont "a BADGE."
+ done
+
+Text_ItsTheMissingPokemon:
+ text "It's the missing"
+ line "#MON!"
+ done
+
+Text_Kwaaaa:
+ text "FARFETCH'D: Kwaa!"
+ done
+
+Text_CharcoalMasterIntro:
+ text "Ah! My FARFETCH'D!"
+
+ para "You found it for"
+ line "us, kid?"
+
+ para "Without it, we"
+ line "wouldn't be able"
+
+ para "to CUT trees for"
+ line "charcoal."
+
+ para "Thanks, kid!"
+
+ para "Now, how can I"
+ line "thank you…"
+
+ para "I know! Here, take"
+ line "this."
+ done
+
+Text_CharcoalMasterOutro:
+ text "That's the CUT HM."
+ line "Teach that to a"
+
+ para "#MON to clear"
+ line "small trees."
+
+ para "Of course, you"
+ line "have to have the"
+
+ para "GYM BADGE from"
+ line "AZALEA to use it."
+ done
+
+Text_CharcoalMasterTalkAfter:
+ text "Do you want to"
+ line "apprentice as a"
+
+ para "charcoal maker"
+ line "with me?"
+
+ para "You'll be first-"
+ line "rate in ten years!"
+ done
+
+Text_HeadbuttIntro:
+ text "What am I doing?"
+
+ para "I'm shaking trees"
+ line "using HEADBUTT."
+
+ para "It's fun. Here,"
+ line "you try it too!"
+ done
+
+Text_HeadbuttOutro:
+ text "Rattle trees with"
+ line "HEADBUTT. Some-"
+ cont "times, sleeping"
+ cont "#MON fall out."
+ done
+
+IlexForestSignpostText:
+ text "ILEX FOREST is"
+ line "so overgrown with"
+
+ para "trees that you"
+ line "can't see the sky."
+
+ para "Please watch out"
+ line "for items that may"
+ cont "have been dropped."
+ done
+
+Text_IlexForestShrine:
+ text "ILEX FOREST"
+ line "SHRINE…"
+
+ para "It's in honor of"
+ line "the forest's"
+ cont "protector…"
+ done
+
+IlexForest_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 1, 5, ROUTE_34_ILEX_FOREST_GATE, 3
+ warp_event 3, 42, ILEX_FOREST_AZALEA_GATE, 1
+ warp_event 3, 43, ILEX_FOREST_AZALEA_GATE, 2
+
+ db 0 ; coord events
+
+ db 5 ; bg events
+ bg_event 3, 17, BGEVENT_READ, IlexForestSignpost
+ bg_event 27, 1, BGEVENT_ITEM, IlexForestHiddenEther
+ bg_event 17, 7, BGEVENT_ITEM, IlexForestHiddenSuperPotion
+ bg_event 9, 17, BGEVENT_ITEM, IlexForestHiddenFullHeal
+ bg_event 8, 22, BGEVENT_READ, IlexForestShrineScript
+
+ db 14 ; object events
+ object_event 14, 31, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition1, EVENT_ILEX_FOREST_FARFETCHD1
+ object_event 15, 25, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition2, EVENT_ILEX_FOREST_FARFETCHD2
+ object_event 20, 24, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition3, EVENT_ILEX_FOREST_FARFETCHD3
+ object_event 29, 22, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition4, EVENT_ILEX_FOREST_FARFETCHD4
+ object_event 28, 31, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition5, EVENT_ILEX_FOREST_FARFETCHD5
+ object_event 24, 35, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition6, EVENT_ILEX_FOREST_FARFETCHD6
+ object_event 22, 31, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition7, EVENT_ILEX_FOREST_FARFETCHD7
+ object_event 15, 29, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition8, EVENT_ILEX_FOREST_FARFETCHD8
+ object_event 10, 35, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition9, EVENT_ILEX_FOREST_FARFETCHD9
+ object_event 6, 28, SPRITE_BIRD, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, FarfetchdPosition10, EVENT_ILEX_FOREST_FARFETCHD10
+ object_event 7, 28, SPRITE_YOUNGSTER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, IlexForestCharcoalApprenticeScript, EVENT_ILEX_FOREST_APPRENTICE
+ object_event 5, 28, SPRITE_BLACK_BELT, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IlexForestCharcoalMasterScript, EVENT_ILEX_FOREST_CHARCOAL_MASTER
+ object_event 15, 14, SPRITE_ROCKER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, IlexForestHeadbuttGuyScript, -1
+ object_event 20, 32, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, IlexForestRevive, EVENT_ILEX_FOREST_REVIVE
diff --git a/maps/MahoganyMart1F.asm b/maps/MahoganyMart1F.asm
new file mode 100644
index 00000000..75e34a5f
--- /dev/null
+++ b/maps/MahoganyMart1F.asm
@@ -0,0 +1,238 @@
+ const_def 2 ; object constants
+ const MAHOGANYMART1F_PHARMACIST
+ const MAHOGANYMART1F_BLACK_BELT
+ const MAHOGANYMART1F_LANCE
+ const MAHOGANYMART1F_DRAGON
+ const MAHOGANYMART1F_GRANNY
+
+MahoganyMart1F_MapScripts:
+ db 2 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_MAHOGANYMART1F_NOTHING
+ scene_script .LanceUncoversStaircase ; SCENE_MAHOGANYMART1F_LANCE_UNCOVERS_STAIRS
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .MahoganyMart1FStaircase
+
+.DummyScene0:
+ end
+
+.LanceUncoversStaircase:
+ priorityjump MahoganyMart1FLanceUncoversStaircaseScript
+ end
+
+.MahoganyMart1FStaircase:
+ checkevent EVENT_UNCOVERED_STAIRCASE_IN_MAHOGANY_MART
+ iftrue .ShowStairs
+ return
+
+.ShowStairs:
+ changeblock 6, 2, $1e ; stairs
+ return
+
+MahogayMart1FPharmacistScript:
+ faceplayer
+ opentext
+ checkevent EVENT_DECIDED_TO_HELP_LANCE
+ iftrue .LanceEntered
+ pokemart MARTTYPE_STANDARD, MART_MAHOGANY_1
+ closetext
+ end
+
+.LanceEntered:
+ writetext MahogayMart1FPharmacistText_LanceEntered
+ waitbutton
+ closetext
+ end
+
+MahogayMart1FBlackBeltScript:
+ faceplayer
+ opentext
+ checkevent EVENT_DECIDED_TO_HELP_LANCE
+ iftrue .LanceEntered
+ writetext MahogayMart1FBlackBeltText
+ waitbutton
+ closetext
+ end
+
+.LanceEntered:
+ writetext MahogayMart1FBlackBeltText_LanceEntered
+ waitbutton
+ closetext
+ end
+
+MahoganyMart1FLanceUncoversStaircaseScript:
+ pause 15
+ opentext
+ writetext UnknownText_0x6c52a
+ pause 15
+ closetext
+ playsound SFX_TACKLE
+ applymovement MAHOGANYMART1F_DRAGON, MovementData_0x6c3f6
+ applymovement MAHOGANYMART1F_BLACK_BELT, MovementData_0x6c3fb
+ pause 15
+ disappear MAHOGANYMART1F_DRAGON
+ pause 15
+ applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c407
+ opentext
+ writetext UnknownText_0x6c549
+ waitbutton
+ closetext
+ follow MAHOGANYMART1F_LANCE, PLAYER
+ applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c40a
+ applymovement MAHOGANYMART1F_PHARMACIST, MovementData_0x6c403
+ applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c40e
+ stopfollow
+ opentext
+ writetext UnknownText_0x6c59e
+ waitbutton
+ showemote EMOTE_SHOCK, MAHOGANYMART1F_PHARMACIST, 10
+ playsound SFX_FAINT
+ changeblock 6, 2, $1e ; stairs
+ reloadmappart
+ closetext
+ setevent EVENT_UNCOVERED_STAIRCASE_IN_MAHOGANY_MART
+ turnobject MAHOGANYMART1F_LANCE, LEFT
+ opentext
+ writetext UnknownText_0x6c5ba
+ waitbutton
+ closetext
+ applymovement MAHOGANYMART1F_LANCE, MovementData_0x6c412
+ playsound SFX_EXIT_BUILDING
+ disappear MAHOGANYMART1F_LANCE
+ setscene SCENE_MAHOGANYMART1F_NOTHING
+ waitsfx
+ end
+
+MahogayMart1FGrannyScript:
+ faceplayer
+ opentext
+ pokemart MARTTYPE_STANDARD, MART_MAHOGANY_2
+ closetext
+ end
+
+MovementData_0x6c3f6:
+ fix_facing
+ big_step LEFT
+ big_step RIGHT
+ remove_fixed_facing
+ step_end
+
+MovementData_0x6c3fb:
+ fix_facing
+ big_step LEFT
+ remove_fixed_facing
+ turn_head DOWN
+ turn_head LEFT
+ turn_head UP
+ turn_head RIGHT
+ step_end
+
+MovementData_0x6c403:
+ fix_facing
+ big_step LEFT
+ remove_fixed_facing
+ step_end
+
+MovementData_0x6c407:
+ slow_step LEFT
+ turn_head DOWN
+ step_end
+
+MovementData_0x6c40a:
+ slow_step RIGHT
+ slow_step UP
+ slow_step UP
+ step_end
+
+MovementData_0x6c40e:
+ slow_step UP
+ slow_step RIGHT
+ slow_step RIGHT
+ step_end
+
+MovementData_0x6c412:
+ slow_step RIGHT
+ step_end
+
+UnknownText_0x6c414:
+ text "Hello, youngster!"
+
+ para "How would you like"
+ line "some RAGECANDYBAR?"
+
+ para "It's the thing to"
+ line "eat in MAHOGANY!"
+ done
+
+MahogayMart1FPharmacistText_LanceEntered:
+ text "Arrgh… You found"
+ line "the secret stair-"
+ cont "way…"
+ done
+
+MahogayMart1FBlackBeltText:
+ text "Heheh! The experi-"
+ line "ment worked like a"
+ cont "charm."
+
+ para "MAGIKARP are just"
+ line "worthless, but"
+
+ para "GYARADOS are big"
+ line "moneymakers."
+ done
+
+MahogayMart1FBlackBeltText_LanceEntered:
+ text "Urrgh…"
+
+ para "That guy's dragon"
+ line "#MON are tough…"
+ done
+
+UnknownText_0x6c52a:
+ text "LANCE: DRAGONITE,"
+ line "HYPER BEAM."
+ done
+
+UnknownText_0x6c549:
+ text "What took you,"
+ line "<PLAYER>?"
+
+ para "Just as I thought,"
+ line "that strange radio"
+
+ para "signal is coming"
+ line "from here."
+ done
+
+UnknownText_0x6c59e:
+ text "The stairs are"
+ line "right here."
+ done
+
+UnknownText_0x6c5ba:
+ text "LANCE: <PLAYER>, we"
+ line "should split up to"
+
+ para "check this place."
+ line "I'll go first."
+ done
+
+MahoganyMart1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 3 ; warp events
+ warp_event 3, 7, MAHOGANY_TOWN, 1
+ warp_event 4, 7, MAHOGANY_TOWN, 1
+ warp_event 7, 3, TEAM_ROCKET_BASE_B1F, 1
+
+ db 0 ; coord events
+
+ db 0 ; bg events
+
+ db 5 ; object events
+ object_event 4, 3, SPRITE_PHARMACIST, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, MahogayMart1FPharmacistScript, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 1, 6, SPRITE_BLACK_BELT, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, MahogayMart1FBlackBeltScript, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 4, 6, SPRITE_LANCE, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
+ object_event 3, 6, SPRITE_DRAGON, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_MAHOGANY_MART_LANCE_AND_DRAGONITE
+ object_event 1, 3, SPRITE_GRANNY, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, MahogayMart1FGrannyScript, EVENT_MAHOGANY_MART_OWNERS
diff --git a/maps/SlowpokeWellB1F.asm b/maps/SlowpokeWellB1F.asm
index 843114e5..59952c26 100644
--- a/maps/SlowpokeWellB1F.asm
+++ b/maps/SlowpokeWellB1F.asm
@@ -57,7 +57,7 @@ TrainerGruntM1:
variablesprite SPRITE_AZALEA_ROCKET, SPRITE_SILVER
setmapscene AZALEA_TOWN, SCENE_AZALEATOWN_RIVAL_BATTLE
clearevent EVENT_ILEX_FOREST_APPRENTICE
- clearevent EVENT_ILEX_FOREST_FARFETCHD
+ clearevent EVENT_ILEX_FOREST_FARFETCHD1
setevent EVENT_CHARCOAL_KILN_FARFETCH_D
setevent EVENT_CHARCOAL_KILN_APPRENTICE
setevent EVENT_SLOWPOKE_WELL_SLOWPOKES
diff --git a/maps/TeamRocketBaseB1F.asm b/maps/TeamRocketBaseB1F.asm
new file mode 100644
index 00000000..edf6134c
--- /dev/null
+++ b/maps/TeamRocketBaseB1F.asm
@@ -0,0 +1,789 @@
+ const_def 2 ; object constants
+ const TEAMROCKETBASEB1F_ROCKET1
+ const TEAMROCKETBASEB1F_ROCKET2
+ const TEAMROCKETBASEB1F_SCIENTIST
+ const TEAMROCKETBASEB1F_POKE_BALL1
+ const TEAMROCKETBASEB1F_POKE_BALL2
+ const TEAMROCKETBASEB1F_POKE_BALL3
+
+TeamRocketBaseB1F_MapScripts:
+ db 1 ; scene scripts
+ scene_script .DummyScene ; SCENE_DEFAULT
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_OBJECTS, .HideSecurityGrunt
+
+.DummyScene:
+ end
+
+.HideSecurityGrunt:
+ disappear TEAMROCKETBASEB1F_ROCKET1
+ return
+
+SecurityCamera1a:
+ checkevent EVENT_SECURITY_CAMERA_1
+ iftrue NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
+ iftrue NoSecurityCamera
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 2
+ appear TEAMROCKETBASEB1F_ROCKET1
+ turnobject PLAYER, LEFT
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
+ scall TrainerCameraGrunt1
+ ifequal TRUE, NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 2
+ appear TEAMROCKETBASEB1F_ROCKET1
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
+ scall TrainerCameraGrunt2
+ ifequal TRUE, NoSecurityCamera
+ setevent EVENT_SECURITY_CAMERA_1
+ end
+
+SecurityCamera1b:
+ checkevent EVENT_SECURITY_CAMERA_1
+ iftrue NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
+ iftrue NoSecurityCamera
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 3
+ appear TEAMROCKETBASEB1F_ROCKET1
+ turnobject PLAYER, LEFT
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
+ scall TrainerCameraGrunt1
+ ifequal TRUE, NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 3
+ appear TEAMROCKETBASEB1F_ROCKET1
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
+ scall TrainerCameraGrunt2
+ ifequal TRUE, NoSecurityCamera
+ setevent EVENT_SECURITY_CAMERA_1
+ end
+
+SecurityCamera2a:
+ checkevent EVENT_SECURITY_CAMERA_2
+ iftrue NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
+ iftrue NoSecurityCamera
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 4, 7
+ appear TEAMROCKETBASEB1F_ROCKET1
+ turnobject PLAYER, LEFT
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement2
+ scall TrainerCameraGrunt1
+ ifequal TRUE, NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ turnobject PLAYER, RIGHT
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 12, 5
+ appear TEAMROCKETBASEB1F_ROCKET1
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement3
+ scall TrainerCameraGrunt2
+ ifequal TRUE, NoSecurityCamera
+ setevent EVENT_SECURITY_CAMERA_2
+ end
+
+SecurityCamera2b:
+ checkevent EVENT_SECURITY_CAMERA_2
+ iftrue NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
+ iftrue NoSecurityCamera
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 4, 8
+ appear TEAMROCKETBASEB1F_ROCKET1
+ turnobject PLAYER, LEFT
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement4
+ scall TrainerCameraGrunt1
+ ifequal TRUE, NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ turnobject PLAYER, RIGHT
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 12, 5
+ appear TEAMROCKETBASEB1F_ROCKET1
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement5
+ scall TrainerCameraGrunt2
+ ifequal TRUE, NoSecurityCamera
+ setevent EVENT_SECURITY_CAMERA_2
+ end
+
+SecurityCamera3a:
+ checkevent EVENT_SECURITY_CAMERA_3
+ iftrue NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
+ iftrue NoSecurityCamera
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 6
+ appear TEAMROCKETBASEB1F_ROCKET1
+ turnobject PLAYER, LEFT
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
+ scall TrainerCameraGrunt1
+ ifequal TRUE, NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ turnobject PLAYER, RIGHT
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 25, 11
+ appear TEAMROCKETBASEB1F_ROCKET1
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement6
+ scall TrainerCameraGrunt2
+ ifequal TRUE, NoSecurityCamera
+ setevent EVENT_SECURITY_CAMERA_3
+ end
+
+SecurityCamera3b:
+ checkevent EVENT_SECURITY_CAMERA_3
+ iftrue NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
+ iftrue NoSecurityCamera
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 19, 7
+ appear TEAMROCKETBASEB1F_ROCKET1
+ turnobject PLAYER, LEFT
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
+ scall TrainerCameraGrunt1
+ ifequal TRUE, NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ turnobject PLAYER, RIGHT
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 25, 12
+ appear TEAMROCKETBASEB1F_ROCKET1
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement7
+ scall TrainerCameraGrunt2
+ ifequal TRUE, NoSecurityCamera
+ setevent EVENT_SECURITY_CAMERA_3
+ end
+
+SecurityCamera4:
+ checkevent EVENT_SECURITY_CAMERA_4
+ iftrue NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
+ iftrue NoSecurityCamera
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 17, 16
+ appear TEAMROCKETBASEB1F_ROCKET1
+ turnobject PLAYER, LEFT
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
+ scall TrainerCameraGrunt1
+ ifequal TRUE, NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ turnobject PLAYER, RIGHT
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 25, 11
+ appear TEAMROCKETBASEB1F_ROCKET1
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement8
+ scall TrainerCameraGrunt2
+ ifequal TRUE, NoSecurityCamera
+ setevent EVENT_SECURITY_CAMERA_4
+ end
+
+SecurityCamera5:
+ checkevent EVENT_SECURITY_CAMERA_5
+ iftrue NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ checkevent EVENT_TEAM_ROCKET_BASE_POPULATION
+ iftrue NoSecurityCamera
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 3, 16
+ appear TEAMROCKETBASEB1F_ROCKET1
+ turnobject PLAYER, LEFT
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement1
+ scall TrainerCameraGrunt1
+ ifequal TRUE, NoSecurityCamera
+ scall PlaySecurityCameraSounds
+ showemote EMOTE_SHOCK, PLAYER, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ turnobject PLAYER, RIGHT
+ moveobject TEAMROCKETBASEB1F_ROCKET1, 14, 16
+ appear TEAMROCKETBASEB1F_ROCKET1
+ applymovement TEAMROCKETBASEB1F_ROCKET1, SecurityCameraMovement9
+ scall TrainerCameraGrunt2
+ ifequal TRUE, NoSecurityCamera
+ setevent EVENT_SECURITY_CAMERA_5
+ end
+
+NoSecurityCamera:
+ end
+
+TrainerCameraGrunt1:
+ opentext
+ writetext CameraGrunt1SeenText
+ waitbutton
+ closetext
+ winlosstext CameraGrunt1BeatenText, 0
+ setlasttalked TEAMROCKETBASEB1F_ROCKET1
+ loadtrainer GRUNTM, GRUNTM_20
+ startbattle
+ disappear TEAMROCKETBASEB1F_ROCKET1
+ reloadmapafterbattle
+ end
+
+TrainerCameraGrunt2:
+ opentext
+ writetext CameraGrunt2SeenText
+ waitbutton
+ closetext
+ winlosstext CameraGrunt2BeatenText, 0
+ setlasttalked TEAMROCKETBASEB1F_ROCKET1
+ loadtrainer GRUNTM, GRUNTM_21
+ startbattle
+ disappear TEAMROCKETBASEB1F_ROCKET1
+ reloadmapafterbattle
+ end
+
+PlaySecurityCameraSounds:
+ playsound SFX_LICK
+ pause 10
+ playsound SFX_LICK
+ pause 10
+ playsound SFX_LICK
+ pause 10
+ playsound SFX_LICK
+ pause 10
+ playsound SFX_LICK
+ pause 10
+ playsound SFX_LICK
+ end
+
+ExplodingTrap1:
+ checkevent EVENT_EXPLODING_TRAP_1
+ iftrue NoExplodingTrap
+ scall KoffingExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_1
+ end
+
+ExplodingTrap2:
+ checkevent EVENT_EXPLODING_TRAP_2
+ iftrue NoExplodingTrap
+ scall VoltorbExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_2
+ end
+
+ExplodingTrap3:
+ checkevent EVENT_EXPLODING_TRAP_3
+ iftrue NoExplodingTrap
+ scall GeodudeExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_3
+ end
+
+ExplodingTrap4:
+ checkevent EVENT_EXPLODING_TRAP_4
+ iftrue NoExplodingTrap
+ scall VoltorbExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_4
+ end
+
+ExplodingTrap5:
+ checkevent EVENT_EXPLODING_TRAP_5
+ iftrue NoExplodingTrap
+ scall GeodudeExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_5
+ end
+
+ExplodingTrap6:
+ checkevent EVENT_EXPLODING_TRAP_6
+ iftrue NoExplodingTrap
+ scall KoffingExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_6
+ end
+
+ExplodingTrap7:
+ checkevent EVENT_EXPLODING_TRAP_7
+ iftrue NoExplodingTrap
+ scall VoltorbExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_7
+ end
+
+ExplodingTrap8:
+ checkevent EVENT_EXPLODING_TRAP_8
+ iftrue NoExplodingTrap
+ scall KoffingExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_8
+ end
+
+ExplodingTrap9:
+ checkevent EVENT_EXPLODING_TRAP_9
+ iftrue NoExplodingTrap
+ scall KoffingExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_9
+ end
+
+ExplodingTrap10:
+ checkevent EVENT_EXPLODING_TRAP_10
+ iftrue NoExplodingTrap
+ scall VoltorbExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_10
+ end
+
+ExplodingTrap11:
+ checkevent EVENT_EXPLODING_TRAP_11
+ iftrue NoExplodingTrap
+ scall GeodudeExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_11
+ end
+
+ExplodingTrap12:
+ checkevent EVENT_EXPLODING_TRAP_12
+ iftrue NoExplodingTrap
+ scall GeodudeExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_12
+ end
+
+ExplodingTrap13:
+ checkevent EVENT_EXPLODING_TRAP_13
+ iftrue NoExplodingTrap
+ scall GeodudeExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_13
+ end
+
+ExplodingTrap14:
+ checkevent EVENT_EXPLODING_TRAP_14
+ iftrue NoExplodingTrap
+ scall KoffingExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_14
+ end
+
+ExplodingTrap15:
+ checkevent EVENT_EXPLODING_TRAP_15
+ iftrue NoExplodingTrap
+ scall VoltorbExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_15
+ end
+
+ExplodingTrap16:
+ checkevent EVENT_EXPLODING_TRAP_16
+ iftrue NoExplodingTrap
+ scall KoffingExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_16
+ end
+
+ExplodingTrap17:
+ checkevent EVENT_EXPLODING_TRAP_17
+ iftrue NoExplodingTrap
+ scall VoltorbExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_17
+ end
+
+ExplodingTrap18:
+ checkevent EVENT_EXPLODING_TRAP_18
+ iftrue NoExplodingTrap
+ scall GeodudeExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_18
+ end
+
+ExplodingTrap19:
+ checkevent EVENT_EXPLODING_TRAP_19
+ iftrue NoExplodingTrap
+ scall GeodudeExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_19
+ end
+
+ExplodingTrap20:
+ checkevent EVENT_EXPLODING_TRAP_20
+ iftrue NoExplodingTrap
+ scall VoltorbExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_20
+ end
+
+ExplodingTrap21:
+ checkevent EVENT_EXPLODING_TRAP_21
+ iftrue NoExplodingTrap
+ scall KoffingExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_21
+ end
+
+ExplodingTrap22:
+ checkevent EVENT_EXPLODING_TRAP_22
+ iftrue NoExplodingTrap
+ scall VoltorbExplodingTrap
+ reloadmapafterbattle
+ setevent EVENT_EXPLODING_TRAP_22
+ end
+
+VoltorbExplodingTrap:
+ special FadeOutPalettes
+ cry VOLTORB
+ special FadeInPalettes
+ setlasttalked -1
+ writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
+ loadwildmon VOLTORB, 23
+ startbattle
+ end
+
+GeodudeExplodingTrap:
+ special FadeOutPalettes
+ cry GEODUDE
+ special FadeInPalettes
+ setlasttalked -1
+ writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
+ loadwildmon GEODUDE, 21
+ startbattle
+ end
+
+KoffingExplodingTrap:
+ special FadeOutPalettes
+ cry KOFFING
+ special FadeInPalettes
+ setlasttalked -1
+ writecode VAR_BATTLETYPE, BATTLETYPE_TRAP
+ loadwildmon KOFFING, 21
+ startbattle
+ end
+
+NoExplodingTrap:
+ end
+
+TrainerScientistJed:
+ trainer SCIENTIST, JED, EVENT_BEAT_SCIENTIST_JED, ScientistJedSeenText, ScientistJedBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext ScientistJedAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerGruntM16:
+ trainer GRUNTM, GRUNTM_16, EVENT_BEAT_ROCKET_GRUNTM_16, GruntM16SeenText, GruntM16BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext GruntM16AfterBattleText
+ waitbutton
+ closetext
+ end
+
+TeamRocketBaseB1FSecurityCamera:
+ jumptext TeamRocketBaseB1FSecurityCameraText
+
+TeamRocketBaseB1FBookshelf:
+ jumpstd teamrocketoath
+
+TeamRocketBaseB1FSecretSwitch:
+ opentext
+ checkevent EVENT_TURNED_OFF_SECURITY_CAMERAS
+ iftrue .SecretSwitchOff
+ writetext TeamRocketBaseB1FSecretSwitchText
+ playsound SFX_TALLY
+ waitbutton
+ closetext
+ setevent EVENT_TURNED_OFF_SECURITY_CAMERAS
+ setevent EVENT_SECURITY_CAMERA_1
+ setevent EVENT_SECURITY_CAMERA_2
+ setevent EVENT_SECURITY_CAMERA_3
+ setevent EVENT_SECURITY_CAMERA_4
+ setevent EVENT_SECURITY_CAMERA_5
+ end
+
+.SecretSwitchOff:
+ writetext TeamRocketBaseB1FSwitchOffText
+ waitbutton
+ closetext
+ end
+
+TeamRocketBaseB1FHyperPotion:
+ itemball HYPER_POTION
+
+TeamRocketBaseB1FNugget:
+ itemball NUGGET
+
+TeamRocketBaseB1FXAccuracy:
+ itemball X_ACCURACY
+
+TeamRocketBaseB1FHiddenRevive:
+ hiddenitem REVIVE, EVENT_TEAM_ROCKET_BASE_B1F_HIDDEN_REVIVE
+
+SecurityCameraMovement1:
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ step_end
+
+SecurityCameraMovement2:
+ big_step UP
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ turn_head RIGHT
+ step_end
+
+SecurityCameraMovement3:
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+SecurityCameraMovement4:
+; he jumps over a trap
+ jump_step UP
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ big_step UP
+ turn_head RIGHT
+ step_end
+
+SecurityCameraMovement5:
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+SecurityCameraMovement6:
+ big_step UP
+ big_step UP
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step LEFT
+ step_end
+
+SecurityCameraMovement7:
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step RIGHT
+ big_step UP
+ big_step UP
+ big_step LEFT
+ step_end
+
+SecurityCameraMovement8:
+ big_step DOWN
+ big_step DOWN
+ big_step RIGHT
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+SecurityCameraMovement9:
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+CameraGrunt1SeenText:
+ text "Hey!"
+ line "Intruder alert!"
+ done
+
+CameraGrunt1BeatenText:
+ text "Dang… I failed…"
+ done
+
+CameraGrunt2SeenText:
+ text "It's my turn!"
+ line "There's no escape!"
+ done
+
+CameraGrunt2BeatenText:
+ text "Surveillance cams"
+ line "are in the #MON"
+ cont "statues."
+
+ para "We'll keep appear-"
+ line "ing until you trip"
+ cont "a secret switch."
+ done
+
+ScientistJedSeenText:
+ text "This was once a"
+ line "ninja hideout."
+
+ para "There are traps to"
+ line "confound intruders"
+ cont "like you."
+ done
+
+ScientistJedBeatenText:
+ text "I get it…"
+ done
+
+ScientistJedAfterBattleText:
+ text "All right. I'll"
+ line "divulge a secret"
+ cont "about our hideout."
+
+ para "That thing on the"
+ line "floor up ahead is"
+ cont "a warp panel."
+
+ para "If you step on it,"
+ line "you'll be warped"
+
+ para "back to the en-"
+ line "trance."
+ done
+
+GruntM16SeenText:
+ text "Heheh. Feeling"
+ line "lucky, punk?"
+
+ para "Go ahead, take"
+ line "another step."
+
+ para "We've got traps"
+ line "set in the floor!"
+ done
+
+GruntM16BeatenText:
+ text "Kaboom!"
+ done
+
+GruntM16AfterBattleText:
+ text "I don't even know"
+ line "where the traps"
+ cont "are planted."
+
+ para "You'll just have"
+ line "to collect your"
+ cont "courage and walk."
+ done
+
+TeamRocketBaseB1FSecurityCameraText:
+ text "It's a PERSIAN"
+ line "statue…"
+
+ para "Its eyes are oddly"
+ line "shiny."
+ done
+
+TeamRocketBaseB1FSecretSwitchText:
+ text "A secret switch!"
+ line "Better press it."
+ done
+
+TeamRocketBaseB1FSwitchOffText:
+ text "The switch is"
+ line "turned off."
+ done
+
+TeamRocketBaseB1F_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 27, 2, MAHOGANY_MART_1F, 3
+ warp_event 3, 14, TEAM_ROCKET_BASE_B2F, 1
+ warp_event 5, 15, TEAM_ROCKET_BASE_B1F, 4
+ warp_event 25, 2, TEAM_ROCKET_BASE_B1F, 3
+
+ db 30 ; coord events
+ ; There are five security cameras in the base.
+ ; Walking in front of one triggers two Rocket Grunts.
+ coord_event 24, 2, SCENE_DEFAULT, SecurityCamera1a
+ coord_event 24, 3, SCENE_DEFAULT, SecurityCamera1b
+ coord_event 6, 2, SCENE_DEFAULT, SecurityCamera2a
+ coord_event 6, 3, SCENE_DEFAULT, SecurityCamera2b
+ coord_event 24, 6, SCENE_DEFAULT, SecurityCamera3a
+ coord_event 24, 7, SCENE_DEFAULT, SecurityCamera3b
+ coord_event 22, 16, SCENE_DEFAULT, SecurityCamera4
+ coord_event 8, 16, SCENE_DEFAULT, SecurityCamera5
+ ; There are spots on the floor that trigger a Pokémon battle.
+ ; Each Pokémon (Voltorb, Koffing, Geodude) knows Selfdestruct.
+ coord_event 2, 7, SCENE_DEFAULT, ExplodingTrap1
+ coord_event 3, 7, SCENE_DEFAULT, ExplodingTrap2
+ coord_event 4, 7, SCENE_DEFAULT, ExplodingTrap3
+ coord_event 1, 8, SCENE_DEFAULT, ExplodingTrap4
+ coord_event 3, 8, SCENE_DEFAULT, ExplodingTrap5
+ coord_event 5, 8, SCENE_DEFAULT, ExplodingTrap6
+ coord_event 3, 9, SCENE_DEFAULT, ExplodingTrap7
+ coord_event 4, 9, SCENE_DEFAULT, ExplodingTrap8
+ coord_event 1, 10, SCENE_DEFAULT, ExplodingTrap9
+ coord_event 2, 10, SCENE_DEFAULT, ExplodingTrap10
+ coord_event 3, 10, SCENE_DEFAULT, ExplodingTrap11
+ coord_event 5, 10, SCENE_DEFAULT, ExplodingTrap12
+ coord_event 2, 11, SCENE_DEFAULT, ExplodingTrap13
+ coord_event 4, 11, SCENE_DEFAULT, ExplodingTrap14
+ coord_event 1, 12, SCENE_DEFAULT, ExplodingTrap15
+ coord_event 2, 12, SCENE_DEFAULT, ExplodingTrap16
+ coord_event 4, 12, SCENE_DEFAULT, ExplodingTrap17
+ coord_event 5, 12, SCENE_DEFAULT, ExplodingTrap18
+ coord_event 1, 13, SCENE_DEFAULT, ExplodingTrap19
+ coord_event 3, 13, SCENE_DEFAULT, ExplodingTrap20
+ coord_event 4, 13, SCENE_DEFAULT, ExplodingTrap21
+ coord_event 5, 13, SCENE_DEFAULT, ExplodingTrap22
+
+ db 9 ; bg events
+ bg_event 19, 11, BGEVENT_READ, TeamRocketBaseB1FSecretSwitch
+ bg_event 24, 1, BGEVENT_UP, TeamRocketBaseB1FSecurityCamera
+ bg_event 6, 1, BGEVENT_UP, TeamRocketBaseB1FSecurityCamera
+ bg_event 8, 15, BGEVENT_UP, TeamRocketBaseB1FSecurityCamera
+ bg_event 22, 15, BGEVENT_UP, TeamRocketBaseB1FSecurityCamera
+ bg_event 24, 5, BGEVENT_UP, TeamRocketBaseB1FSecurityCamera
+ bg_event 20, 11, BGEVENT_READ, TeamRocketBaseB1FBookshelf
+ bg_event 21, 11, BGEVENT_READ, TeamRocketBaseB1FBookshelf
+ bg_event 3, 11, BGEVENT_ITEM, TeamRocketBaseB1FHiddenRevive
+
+ db 6 ; object events
+ object_event 0, 0, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_SECURITY_GRUNTS
+ object_event 2, 4, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 3, TrainerGruntM16, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 18, 12, SPRITE_SCIENTIST, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerScientistJed, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 27, 6, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TeamRocketBaseB1FHyperPotion, EVENT_TEAM_ROCKET_BASE_B1F_HYPER_POTION
+ object_event 14, 15, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TeamRocketBaseB1FNugget, EVENT_TEAM_ROCKET_BASE_B1F_NUGGET
+ object_event 21, 12, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TeamRocketBaseB1FXAccuracy, EVENT_TEAM_ROCKET_BASE_B1F_GUARD_SPEC
diff --git a/maps/TeamRocketBaseB2F.asm b/maps/TeamRocketBaseB2F.asm
new file mode 100644
index 00000000..c45b3572
--- /dev/null
+++ b/maps/TeamRocketBaseB2F.asm
@@ -0,0 +1,968 @@
+ const_def 2 ; object constants
+ const TEAMROCKETBASEB2F_ROCKET1
+ const TEAMROCKETBASEB2F_ROCKET_GIRL
+ const TEAMROCKETBASEB2F_LANCE
+ const TEAMROCKETBASEB2F_DRAGON
+ const TEAMROCKETBASEB2F_ELECTRODE1
+ const TEAMROCKETBASEB2F_ELECTRODE2
+ const TEAMROCKETBASEB2F_ELECTRODE3
+ const TEAMROCKETBASEB2F_ELECTRODE4
+ const TEAMROCKETBASEB2F_ELECTRODE5
+ const TEAMROCKETBASEB2F_ELECTRODE6
+ const TEAMROCKETBASEB2F_ROCKET2
+ const TEAMROCKETBASEB2F_ROCKET3
+ const TEAMROCKETBASEB2F_ROCKET4
+ const TEAMROCKETBASEB2F_POKE_BALL
+
+TeamRocketBaseB2F_MapScripts:
+ db 4 ; scene scripts
+ scene_script .DummyScene0 ; SCENE_DEFAULT
+ scene_script .DummyScene1 ; SCENE_TEAMROCKETBASEB2F_ROCKET_BOSS
+ scene_script .DummyScene2 ; SCENE_TEAMROCKETBASEB2F_ELECTRODES
+ scene_script .DummyScene3 ; SCENE_TEAMROCKETBASEB2F_NOTHING
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .TransmitterDoorCallback
+
+.DummyScene0:
+ end
+
+.DummyScene1:
+ end
+
+.DummyScene2:
+ end
+
+.DummyScene3:
+ end
+
+.TransmitterDoorCallback:
+ checkevent EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
+ iftrue .OpenDoor
+ return
+
+.OpenDoor:
+ changeblock 14, 12, $07 ; floor
+ return
+
+RocketBaseBossFLeft:
+ moveobject TEAMROCKETBASEB2F_LANCE, 9, 13
+ jump RocketBaseBossFScript
+
+RocketBaseBossFRight:
+ moveobject TEAMROCKETBASEB2F_ROCKET_GIRL, 21, 16
+ moveobject TEAMROCKETBASEB2F_ROCKET1, 21, 16
+ moveobject TEAMROCKETBASEB2F_DRAGON, 10, 13
+ moveobject TEAMROCKETBASEB2F_LANCE, 10, 13
+RocketBaseBossFScript:
+ appear TEAMROCKETBASEB2F_ROCKET_GIRL
+ appear TEAMROCKETBASEB2F_ROCKET1
+ opentext
+ writetext UnknownText_0x6d2ad
+ waitbutton
+ closetext
+ turnobject PLAYER, DOWN
+ showemote EMOTE_SHOCK, PLAYER, 15
+ applymovement PLAYER, MovementData_0x6d21f
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d224
+ turnobject PLAYER, UP
+ applymovement TEAMROCKETBASEB2F_ROCKET1, MovementData_0x6d22f
+ opentext
+ writetext UnknownText_0x6d2c3
+ waitbutton
+ closetext
+ cry DRAGONITE
+ turnobject TEAMROCKETBASEB2F_ROCKET_GIRL, LEFT
+ turnobject PLAYER, LEFT
+ appear TEAMROCKETBASEB2F_DRAGON
+ applymovement TEAMROCKETBASEB2F_DRAGON, MovementData_0x6d236
+ applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d23b
+ applymovement TEAMROCKETBASEB2F_ROCKET1, MovementData_0x6d24c
+ appear TEAMROCKETBASEB2F_LANCE
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d244
+ opentext
+ writetext UnknownText_0x6d38c
+ waitbutton
+ closetext
+ turnobject PLAYER, RIGHT
+ applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d241
+ opentext
+ writetext UnknownText_0x6d3bd
+ waitbutton
+ closetext
+ applymovement TEAMROCKETBASEB2F_ROCKET1, MovementData_0x6d24a
+ applymovement TEAMROCKETBASEB2F_ROCKET_GIRL, MovementData_0x6d248
+ winlosstext UnknownText_0x6d45c, 0
+ setlasttalked TEAMROCKETBASEB2F_ROCKET_GIRL
+ loadtrainer EXECUTIVEF, EXECUTIVEF_2
+ startbattle
+ disappear TEAMROCKETBASEB2F_DRAGON
+ setevent EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
+ setevent EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
+ setevent EVENT_TEAM_ROCKET_BASE_B2F_LANCE
+ reloadmapafterbattle
+ setevent EVENT_BEAT_ROCKET_EXECUTIVEF_2
+ opentext
+ writetext UnknownText_0x6d4c6
+ waitbutton
+ closetext
+ special FadeBlackQuickly
+ special ReloadSpritesNoPalettes
+ disappear TEAMROCKETBASEB2F_ROCKET1
+ disappear TEAMROCKETBASEB2F_ROCKET_GIRL
+ disappear TEAMROCKETBASEB2F_ROCKET2
+ disappear TEAMROCKETBASEB2F_ROCKET3
+ disappear TEAMROCKETBASEB2F_ROCKET4
+ pause 15
+ special FadeInQuickly
+ setscene SCENE_TEAMROCKETBASEB2F_ELECTRODES
+ clearevent EVENT_TEAM_ROCKET_BASE_B2F_LANCE
+ turnobject TEAMROCKETBASEB2F_LANCE, DOWN
+ opentext
+ writetext UnknownText_0x6d5d8
+ waitbutton
+ closetext
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d250
+ turnobject PLAYER, UP
+ opentext
+ writetext UnknownText_0x6d64e
+ waitbutton
+ closetext
+ follow TEAMROCKETBASEB2F_LANCE, PLAYER
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d254
+ stopfollow
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d258
+ opentext
+ writetext UnknownText_0x6d6cf
+ waitbutton
+ closetext
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d267
+ disappear TEAMROCKETBASEB2F_LANCE
+
+RocketBaseCantLeaveScript:
+ applymovement PLAYER, MovementData_0x6d271
+ end
+
+RocketBaseLancesSideScript:
+ opentext
+ writetext UnknownText_0x6d7ea
+ waitbutton
+ closetext
+ applymovement PLAYER, MovementData_0x6d278
+ end
+
+LanceHealsScript1:
+ turnobject PLAYER, UP
+ jump LanceHealsCommon
+
+LanceHealsScript2:
+ turnobject PLAYER, RIGHT
+ turnobject TEAMROCKETBASEB2F_LANCE, LEFT
+LanceHealsCommon:
+ opentext
+ writetext LanceHealsText1
+ waitbutton
+ closetext
+ special FadeOutPalettes
+ playsound SFX_FULL_HEAL
+ special HealParty
+ special FadeInPalettes
+ opentext
+ writetext LanceHealsText2
+ waitbutton
+ closetext
+ setscene SCENE_TEAMROCKETBASEB2F_ROCKET_BOSS
+ setevent EVENT_LANCE_HEALED_YOU_IN_TEAM_ROCKET_BASE
+ checkcode VAR_FACING
+ ifequal RIGHT, .FacingRight
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d212
+ disappear TEAMROCKETBASEB2F_LANCE
+ end
+
+.FacingRight:
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d219
+ disappear TEAMROCKETBASEB2F_LANCE
+ end
+
+TrainerGruntM17:
+ trainer GRUNTM, GRUNTM_17, EVENT_BEAT_ROCKET_GRUNTM_17, GruntM17SeenText, GruntM17BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext GruntM17AfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerGruntM18:
+ trainer GRUNTM, GRUNTM_18, EVENT_BEAT_ROCKET_GRUNTM_18, GruntM18SeenText, GruntM18BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext GruntM18AfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerGruntM19:
+ trainer GRUNTM, GRUNTM_19, EVENT_BEAT_ROCKET_GRUNTM_19, GruntM19SeenText, GruntM19BeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext GruntM19AfterBattleText
+ waitbutton
+ closetext
+ end
+
+RocketElectrode1:
+ cry ELECTRODE
+ loadwildmon ELECTRODE, 23
+ startbattle
+ iftrue TeamRocketBaseB2FReloadMap
+ disappear TEAMROCKETBASEB2F_ELECTRODE1
+ disappear TEAMROCKETBASEB2F_ELECTRODE4
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+ iffalse TeamRocketBaseB2FReloadMap
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+ iffalse TeamRocketBaseB2FReloadMap
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+ iffalse TeamRocketBaseB2FReloadMap
+ reloadmapafterbattle
+ special PlayMapMusic
+ applymovement PLAYER, MovementData_0x6d28c
+ jump RocketBaseElectrodeScript
+
+RocketElectrode2:
+ cry ELECTRODE
+ loadwildmon ELECTRODE, 23
+ startbattle
+ iftrue TeamRocketBaseB2FReloadMap
+ disappear TEAMROCKETBASEB2F_ELECTRODE2
+ disappear TEAMROCKETBASEB2F_ELECTRODE5
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+ iffalse TeamRocketBaseB2FReloadMap
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+ iffalse TeamRocketBaseB2FReloadMap
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+ iffalse TeamRocketBaseB2FReloadMap
+ reloadmapafterbattle
+ special PlayMapMusic
+ applymovement PLAYER, MovementData_0x6d299
+ jump RocketBaseElectrodeScript
+
+RocketElectrode3:
+ cry ELECTRODE
+ loadwildmon ELECTRODE, 23
+ startbattle
+ iftrue TeamRocketBaseB2FReloadMap
+ disappear TEAMROCKETBASEB2F_ELECTRODE3
+ disappear TEAMROCKETBASEB2F_ELECTRODE6
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+ iffalse TeamRocketBaseB2FReloadMap
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+ iffalse TeamRocketBaseB2FReloadMap
+ checkevent EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+ iffalse TeamRocketBaseB2FReloadMap
+ reloadmapafterbattle
+ special PlayMapMusic
+ applymovement PLAYER, MovementData_0x6d2a4
+ jump RocketBaseElectrodeScript
+
+TeamRocketBaseB2FReloadMap:
+ reloadmapafterbattle
+ end
+
+RocketBaseElectrodeScript:
+ moveobject TEAMROCKETBASEB2F_LANCE, 18, 6
+ appear TEAMROCKETBASEB2F_LANCE
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d27a
+ turnobject PLAYER, RIGHT
+ opentext
+ writetext UnknownText_0x6d809
+ buttonsound
+ verbosegiveitem HM_WHIRLPOOL
+ setevent EVENT_GOT_HM06_WHIRLPOOL
+ writetext UnknownText_0x6d8f8
+ waitbutton
+ closetext
+ turnobject TEAMROCKETBASEB2F_LANCE, DOWN
+ opentext
+ writetext UnknownText_0x6d994
+ waitbutton
+ closetext
+ turnobject PLAYER, DOWN
+ applymovement TEAMROCKETBASEB2F_LANCE, MovementData_0x6d283
+ disappear TEAMROCKETBASEB2F_LANCE
+ setevent EVENT_CLEARED_ROCKET_HIDEOUT
+ clearflag ENGINE_ROCKET_SIGNAL_ON_CH20
+ setevent EVENT_ROUTE_43_GATE_ROCKETS
+ setevent EVENT_MAHOGANY_TOWN_POKEFAN_M_BLOCKS_GYM
+ setscene SCENE_TEAMROCKETBASEB2F_NOTHING
+ clearevent EVENT_LAKE_OF_RAGE_CIVILIANS
+ setevent EVENT_TURNED_OFF_SECURITY_CAMERAS
+ setevent EVENT_SECURITY_CAMERA_1
+ setevent EVENT_SECURITY_CAMERA_2
+ setevent EVENT_SECURITY_CAMERA_3
+ setevent EVENT_SECURITY_CAMERA_4
+ setevent EVENT_SECURITY_CAMERA_5
+ end
+
+TeamRocketBaseB2FLockedDoor:
+ conditional_event EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER, .Script
+
+.Script:
+ opentext
+ checkevent EVENT_LEARNED_HAIL_GIOVANNI
+ iftrue .KnowsPassword
+ writetext UnknownText_0x6dd39
+ waitbutton
+ closetext
+ end
+
+.KnowsPassword:
+ writetext UnknownText_0x6dd6b
+ waitbutton
+ playsound SFX_ENTER_DOOR
+ changeblock 14, 12, $07 ; floor
+ reloadmappart
+ closetext
+ setevent EVENT_OPENED_DOOR_TO_ROCKET_HIDEOUT_TRANSMITTER
+ waitsfx
+ end
+
+TeamRocketBaseB2FTransmitterScript:
+ opentext
+ checkevent EVENT_CLEARED_ROCKET_HIDEOUT
+ iftrue .Deactivated
+ writetext UnknownText_0x6dda7
+ waitbutton
+ closetext
+ end
+
+.Deactivated:
+ writetext UnknownText_0x6de03
+ waitbutton
+ closetext
+ end
+
+TeamRocketBaseB2FTMThief:
+ itemball TM_THIEF
+
+TeamRocketBaseB2FHiddenFullHeal:
+ hiddenitem FULL_HEAL, EVENT_TEAM_ROCKET_BASE_B2F_HIDDEN_FULL_HEAL
+
+MovementData_0x6d212:
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step_end
+
+MovementData_0x6d219:
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step_end
+
+MovementData_0x6d21f:
+ step DOWN
+ step DOWN
+ step DOWN
+ turn_head RIGHT
+ step_end
+
+MovementData_0x6d224:
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ turn_head DOWN
+ step_end
+
+MovementData_0x6d22f:
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+MovementData_0x6d236:
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ big_step RIGHT
+ step_end
+
+MovementData_0x6d23b:
+ fix_facing
+ set_sliding
+ jump_step RIGHT
+ remove_sliding
+ remove_fixed_facing
+ step_end
+
+MovementData_0x6d241:
+ slow_step DOWN
+ turn_head LEFT
+ step_end
+
+MovementData_0x6d244:
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step_end
+
+MovementData_0x6d248:
+ big_step LEFT
+ step_end
+
+MovementData_0x6d24a:
+ big_step LEFT
+ step_end
+
+MovementData_0x6d24c:
+ big_step LEFT
+ big_step UP
+ turn_head LEFT
+ step_end
+
+MovementData_0x6d250:
+ step RIGHT
+ step RIGHT
+ turn_head DOWN
+ step_end
+
+MovementData_0x6d254:
+ step UP
+ step UP
+ step UP
+ step_end
+
+MovementData_0x6d258:
+ step_sleep 8
+ step LEFT
+ step LEFT
+ turn_head UP
+ step_sleep 8
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ turn_head UP
+ step_sleep 8
+ step LEFT
+ step LEFT
+ turn_head DOWN
+ step_end
+
+MovementData_0x6d267:
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step UP
+ step UP
+ step UP
+ step UP
+ step UP
+ step_end
+
+MovementData_0x6d271:
+ step UP
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ turn_head UP
+ step_end
+
+MovementData_0x6d278:
+ step LEFT
+ step_end
+
+MovementData_0x6d27a:
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step LEFT
+ step LEFT
+ step LEFT
+ step_end
+
+MovementData_0x6d283:
+ step DOWN
+ step DOWN
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step_end
+
+MovementData_0x6d28c:
+ step RIGHT
+ step RIGHT
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step_end
+
+MovementData_0x6d299:
+ step RIGHT
+ step RIGHT
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step_end
+
+MovementData_0x6d2a4:
+ step RIGHT
+ step RIGHT
+ step DOWN
+ step DOWN
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step_end
+
+UnknownText_0x6d2ad:
+ text "Hold it right"
+ line "there!"
+ done
+
+UnknownText_0x6d2c3:
+ text "We can't have a"
+ line "brat like you on"
+ cont "the loose."
+
+ para "It's harmful to"
+ line "TEAM ROCKET's"
+ cont "pride, you see."
+
+ para "However strong you"
+ line "may be, you can't"
+
+ para "take both of us at"
+ line "the same time."
+
+ para "Sorry, baby. Now"
+ line "get ready to be"
+ cont "thrashed."
+ done
+
+UnknownText_0x6d38c:
+ text "Hey! Don't be so"
+ line "selfish. Spread"
+ cont "the fun around."
+ done
+
+UnknownText_0x6d3bd:
+ text "What? You had an"
+ line "accomplice?"
+
+ para "Where is your"
+ line "sense of honor?"
+
+ para "As the interim"
+ line "boss in place of"
+
+ para "GIOVANNI, I'll"
+ line "show you how wrong"
+
+ para "it is to meddle"
+ line "with TEAM ROCKET!"
+ done
+
+UnknownText_0x6d45c:
+ text "Tch, you really"
+ line "are strong."
+
+ para "It's too bad."
+
+ para "If you were to"
+ line "join TEAM ROCKET,"
+
+ para "you could become"
+ line "an EXECUTIVE."
+ done
+
+UnknownText_0x6d4c6:
+ text "…This hideout is"
+ line "done for…"
+
+ para "But that's fine."
+ line "The broadcast ex-"
+ cont "periment was a"
+ cont "total success."
+
+ para "It doesn't matter"
+ line "what happens to"
+ cont "this hideout now."
+
+ para "We have much big-"
+ line "ger plans."
+
+ para "You'll come to"
+ line "appreciate TEAM"
+
+ para "ROCKET's true"
+ line "power soon enough."
+
+ para "Enjoy yourself"
+ line "while you can…"
+
+ para "Fufufufu…"
+ done
+
+UnknownText_0x6d5d8:
+ text "LANCE: That did"
+ line "it. We defeated"
+
+ para "all the ROCKETS"
+ line "here."
+
+ para "But I'm concerned"
+ line "about the young"
+
+ para "guy I battled in"
+ line "the process…"
+ done
+
+UnknownText_0x6d64e:
+ text "Sorry, <PLAYER>."
+ line "I saw how well you"
+
+ para "were doing, so I"
+ line "just hung back."
+
+ para "Now all there is"
+ line "left to do is to"
+
+ para "turn off that odd"
+ line "radio signal."
+ done
+
+UnknownText_0x6d6cf:
+ text "It's this machine"
+ line "that's causing all"
+ cont "the problems."
+
+ para "I don't see a"
+ line "switch on it…"
+
+ para "We have no choice."
+ line "We have to make"
+
+ para "all the ELECTRODE"
+ line "faint."
+
+ para "That should stop"
+ line "this machine from"
+
+ para "transmitting that"
+ line "strange signal."
+
+ para "It's no fault of"
+ line "the #MON, so it"
+
+ para "makes me feel"
+ line "guilty."
+
+ para "<PLAYER>, let's"
+ line "split the job."
+ done
+
+UnknownText_0x6d7ea:
+ text "LANCE: Leave this"
+ line "side to me."
+ done
+
+UnknownText_0x6d809:
+ text "LANCE: That odd"
+ line "signal has finally"
+ cont "stopped."
+
+ para "The LAKE should be"
+ line "back to normal."
+
+ para "You're the hero!"
+ line "Let me thank you"
+
+ para "on behalf of all"
+ line "the #MON."
+
+ para "Oh, yes. You"
+ line "should take this."
+
+ para "I found it here,"
+ line "but I don't have"
+ cont "any need for it."
+ done
+
+UnknownText_0x6d8e6:
+ text "<PLAYER> received"
+ line "HM06."
+ done
+
+UnknownText_0x6d8f8:
+ text "That's WHIRLPOOL."
+ line "Teach it to a"
+
+ para "#MON to get"
+ line "across wild water."
+
+ para "But keep this in"
+ line "mind."
+
+ para "You can use that"
+ line "out of battle only"
+
+ para "with the BADGE"
+ line "from MAHOGANY GYM."
+ done
+
+UnknownText_0x6d994:
+ text "<PLAYER>…"
+
+ para "The journey to be-"
+ line "coming the #MON"
+
+ para "MASTER is long and"
+ line "difficult."
+
+ para "Knowing that, will"
+ line "you keep going?"
+
+ para "…"
+
+ para "I see. No, you're"
+ line "right."
+
+ para "If you would give"
+ line "up that easily,"
+
+ para "you would have"
+ line "never chased that"
+
+ para "dream in the first"
+ line "place."
+
+ para "I look forward to"
+ line "seeing you again!"
+ done
+
+LanceHealsText1:
+ text "LANCE: Are you all"
+ line "right?"
+
+ para "Your #MON are"
+ line "hurt and tired."
+
+ para "Here, give them"
+ line "some of my medi-"
+ cont "cine."
+ done
+
+LanceHealsText2:
+ text "LANCE: <PLAYER>,"
+ line "let's give it our"
+ cont "best for #MON."
+ done
+
+GruntM17SeenText:
+ text "The door won't"
+ line "open?"
+
+ para "Well, duh."
+ line "It has to have a"
+
+ para "password that only"
+ line "TEAM ROCKET knows."
+ done
+
+GruntM17BeatenText:
+ text "What? I lost?"
+ done
+
+GruntM17AfterBattleText:
+ text "Heh, I'm just a"
+ line "GRUNT."
+
+ para "I don't know the"
+ line "password. Too bad"
+ cont "for you."
+ done
+
+GruntM18SeenText:
+ text "Oh, a kid? I don't"
+ line "really like this,"
+
+ para "but eliminate you"
+ line "I must."
+ done
+
+GruntM18BeatenText:
+ text "I knew I'd lose…"
+ done
+
+GruntM18AfterBattleText:
+ text "I got wiped out on"
+ line "the last mission"
+ cont "by a kid too."
+
+ para "When we were ab-"
+ line "ducting #MON,"
+
+ para "this kid with long"
+ line "red hair and mean-"
+
+ para "looking eyes just"
+ line "creamed me…"
+ done
+
+GruntM19SeenText:
+ text "You rotten little"
+ line "pest!"
+ done
+
+GruntM19BeatenText:
+ text "Grrrr…"
+ done
+
+GruntM19AfterBattleText:
+ text "Heh, only the boss"
+ line "knows the password"
+ cont "for that door."
+
+ para "Where's the boss?"
+ line "Who knows? Go look"
+ cont "for yourself."
+ done
+
+UnknownText_0x6dd39:
+ text "The door's closed…"
+
+ para "It needs a pass-"
+ line "word to open."
+ done
+
+UnknownText_0x6dd6b:
+ text "The door's closed…"
+
+ para "<PLAYER> entered"
+ line "the password."
+
+ para "The door opened!"
+ done
+
+UnknownText_0x6dda7:
+ text "It's the radio"
+ line "transmitter that's"
+
+ para "sending the"
+ line "sinister signal."
+
+ para "It's working at"
+ line "full capacity."
+ done
+
+UnknownText_0x6de03:
+ text "The radio trans-"
+ line "mitter has finally"
+
+ para "stopped its evil"
+ line "broadcast."
+ done
+
+TeamRocketBaseB2F_MapEvents:
+ db 0, 0 ; filler
+
+ db 5 ; warp events
+ warp_event 3, 14, TEAM_ROCKET_BASE_B1F, 2
+ warp_event 3, 2, TEAM_ROCKET_BASE_B3F, 1
+ warp_event 27, 2, TEAM_ROCKET_BASE_B3F, 2
+ warp_event 3, 6, TEAM_ROCKET_BASE_B3F, 3
+ warp_event 27, 14, TEAM_ROCKET_BASE_B3F, 4
+
+ db 9 ; coord events
+ coord_event 5, 14, SCENE_DEFAULT, LanceHealsScript1
+ coord_event 4, 13, SCENE_DEFAULT, LanceHealsScript2
+ coord_event 14, 11, SCENE_TEAMROCKETBASEB2F_ROCKET_BOSS, RocketBaseBossFLeft
+ coord_event 15, 11, SCENE_TEAMROCKETBASEB2F_ROCKET_BOSS, RocketBaseBossFRight
+ coord_event 14, 12, SCENE_TEAMROCKETBASEB2F_ELECTRODES, RocketBaseCantLeaveScript
+ coord_event 15, 12, SCENE_TEAMROCKETBASEB2F_ELECTRODES, RocketBaseCantLeaveScript
+ coord_event 12, 3, SCENE_TEAMROCKETBASEB2F_ELECTRODES, RocketBaseLancesSideScript
+ coord_event 12, 10, SCENE_TEAMROCKETBASEB2F_ELECTRODES, RocketBaseLancesSideScript
+ coord_event 12, 11, SCENE_TEAMROCKETBASEB2F_ELECTRODES, RocketBaseLancesSideScript
+
+ db 23 ; bg events
+ bg_event 14, 12, BGEVENT_IFNOTSET, TeamRocketBaseB2FLockedDoor
+ bg_event 15, 12, BGEVENT_IFNOTSET, TeamRocketBaseB2FLockedDoor
+ bg_event 17, 9, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 16, 9, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 15, 9, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 14, 9, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 13, 9, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 12, 9, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 12, 8, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 12, 7, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 12, 6, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 12, 5, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 12, 4, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 13, 4, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 14, 4, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 15, 4, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 16, 4, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 17, 4, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 17, 5, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 17, 6, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 17, 7, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 17, 8, BGEVENT_READ, TeamRocketBaseB2FTransmitterScript
+ bg_event 26, 7, BGEVENT_ITEM, TeamRocketBaseB2FHiddenFullHeal
+
+ db 14 ; object events
+ object_event 20, 16, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_GRUNT_WITH_EXECUTIVE
+ object_event 20, 16, SPRITE_ROCKET_GIRL, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_EXECUTIVE
+ object_event 5, 13, SPRITE_LANCE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_LANCE
+ object_event 9, 13, SPRITE_DRAGON, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_DRAGONITE
+ object_event 7, 5, SPRITE_VOLTORB, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, RocketElectrode1, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+ object_event 7, 7, SPRITE_VOLTORB, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, RocketElectrode2, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+ object_event 7, 9, SPRITE_VOLTORB, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, RocketElectrode3, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+ object_event 22, 5, SPRITE_VOLTORB, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_1
+ object_event 22, 7, SPRITE_VOLTORB, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_2
+ object_event 22, 9, SPRITE_VOLTORB, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B2F_ELECTRODE_3
+ object_event 25, 13, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 3, TrainerGruntM17, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 2, 1, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 3, TrainerGruntM18, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 21, 14, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 4, TrainerGruntM19, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 3, 10, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TeamRocketBaseB2FTMThief, EVENT_TEAM_ROCKET_BASE_B2F_TM_THIEF
diff --git a/maps/TeamRocketBaseB3F.asm b/maps/TeamRocketBaseB3F.asm
new file mode 100644
index 00000000..62b51485
--- /dev/null
+++ b/maps/TeamRocketBaseB3F.asm
@@ -0,0 +1,602 @@
+ const_def 2 ; object constants
+ const TEAMROCKETBASEB3F_LANCE
+ const TEAMROCKETBASEB3F_ROCKET1
+ const TEAMROCKETBASEB3F_MOLTRES
+ const TEAMROCKETBASEB3F_ROCKET_GIRL
+ const TEAMROCKETBASEB3F_ROCKET2
+ const TEAMROCKETBASEB3F_SCIENTIST1
+ const TEAMROCKETBASEB3F_SCIENTIST2
+ const TEAMROCKETBASEB3F_ROCKET3
+ const TEAMROCKETBASEB3F_SILVER
+ const TEAMROCKETBASEB3F_POKE_BALL1
+ const TEAMROCKETBASEB3F_POKE_BALL2
+ const TEAMROCKETBASEB3F_POKE_BALL3
+ const TEAMROCKETBASEB3F_POKE_BALL4
+ const TEAMROCKETBASEB3F_POKE_BALL5
+
+TeamRocketBaseB3F_MapScripts:
+ db 4 ; scene scripts
+ scene_script .LanceGetsPassword ; SCENE_DEFAULT
+ scene_script .DummyScene1 ; SCENE_TEAMROCKETBASEB3F_RIVAL_ENCOUNTER
+ scene_script .DummyScene2 ; SCENE_TEAMROCKETBASEB3F_ROCKET_BOSS
+ scene_script .DummyScene3 ; SCENE_TEAMROCKETBASEB3F_NOTHING
+
+ db 1 ; callbacks
+ callback MAPCALLBACK_TILES, .CheckGiovanniDoor
+
+.LanceGetsPassword:
+ priorityjump LanceGetPasswordScript
+ end
+
+.DummyScene1:
+ end
+
+.DummyScene2:
+ end
+
+.DummyScene3:
+ end
+
+.CheckGiovanniDoor:
+ checkevent EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
+ iftrue .OpenSesame
+ return
+
+.OpenSesame:
+ changeblock 10, 8, $07 ; floor
+ return
+
+LanceGetPasswordScript:
+ turnobject PLAYER, LEFT
+ pause 5
+ turnobject TEAMROCKETBASEB3F_MOLTRES, RIGHT
+ pause 20
+ applymovement TEAMROCKETBASEB3F_LANCE, MovementData_0x6e12a
+ opentext
+ writetext LanceGetPasswordText
+ waitbutton
+ closetext
+ applymovement TEAMROCKETBASEB3F_LANCE, MovementData_0x6e12c
+ disappear TEAMROCKETBASEB3F_LANCE
+ setscene SCENE_TEAMROCKETBASEB3F_RIVAL_ENCOUNTER
+ end
+
+RocketBaseRival:
+ turnobject PLAYER, LEFT
+ showemote EMOTE_SHOCK, PLAYER, 15
+ special FadeOutMusic
+ appear TEAMROCKETBASEB3F_SILVER
+ applymovement TEAMROCKETBASEB3F_SILVER, RocketBaseRivalEnterMovement
+ turnobject PLAYER, LEFT
+ playmusic MUSIC_RIVAL_ENCOUNTER
+ opentext
+ writetext RocketBaseRivalText
+ waitbutton
+ closetext
+ playsound SFX_TACKLE
+ applymovement PLAYER, RocketBaseRivalShovesPlayerMovement
+ applymovement TEAMROCKETBASEB3F_SILVER, RocketBaseRivalLeaveMovement
+ disappear TEAMROCKETBASEB3F_SILVER
+ setscene SCENE_TEAMROCKETBASEB3F_ROCKET_BOSS
+ special RestartMapMusic
+ end
+
+TeamRocketBaseB3FRocketScript:
+ jumptextfaceplayer TeamRocketBaseB3FRocketText
+
+RocketBaseBossLeft:
+ applymovement PLAYER, MovementData_0x6e133
+ jump RocketBaseBoss
+
+RocketBaseBossRight:
+ applymovement PLAYER, MovementData_0x6e13a
+RocketBaseBoss:
+ pause 30
+ showemote EMOTE_SHOCK, TEAMROCKETBASEB3F_ROCKET1, 15
+ playmusic MUSIC_ROCKET_ENCOUNTER
+ turnobject TEAMROCKETBASEB3F_ROCKET1, DOWN
+ opentext
+ writetext ExecutiveM4BeforeText
+ waitbutton
+ closetext
+ applymovement TEAMROCKETBASEB3F_ROCKET1, MovementData_0x6e142
+ winlosstext ExecutiveM4BeatenText, 0
+ setlasttalked TEAMROCKETBASEB3F_ROCKET1
+ loadtrainer EXECUTIVEM, EXECUTIVEM_4
+ startbattle
+ reloadmapafterbattle
+ setevent EVENT_BEAT_ROCKET_EXECUTIVEM_4
+ opentext
+ writetext ExecutiveM4AfterText
+ waitbutton
+ closetext
+ applymovement TEAMROCKETBASEB3F_ROCKET1, MovementData_0x6e144
+ playsound SFX_TACKLE
+ applymovement TEAMROCKETBASEB3F_ROCKET1, MovementData_0x6e147
+ disappear TEAMROCKETBASEB3F_ROCKET1
+ setscene SCENE_TEAMROCKETBASEB3F_NOTHING
+ end
+
+RocketBaseMurkrow:
+ opentext
+ writetext RocketBaseMurkrowText
+ waitbutton
+ closetext
+ setevent EVENT_LEARNED_HAIL_GIOVANNI
+ end
+
+SlowpokeTailGrunt:
+ trainer GRUNTF, GRUNTF_5, EVENT_BEAT_ROCKET_GRUNTF_5, GruntF5SeenText, GruntF5BeatenText, 0, GruntF5Script
+
+GruntF5Script:
+ endifjustbattled
+ opentext
+ writetext GruntF5AfterBattleText
+ waitbutton
+ closetext
+ setevent EVENT_LEARNED_SLOWPOKETAIL
+ end
+
+RaticateTailGrunt:
+ trainer GRUNTM, GRUNTM_28, EVENT_BEAT_ROCKET_GRUNTM_28, GruntM28SeenText, GruntM28BeatenText, 0, GruntM28Script
+
+GruntM28Script:
+ endifjustbattled
+ opentext
+ writetext GruntM28AfterBattleText
+ waitbutton
+ closetext
+ setevent EVENT_LEARNED_RATICATE_TAIL
+ end
+
+TrainerScientistRoss:
+ trainer SCIENTIST, ROSS, EVENT_BEAT_SCIENTIST_ROSS, ScientistRossSeenText, ScientistRossBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext ScientistRossAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TrainerScientistMitch:
+ trainer SCIENTIST, MITCH, EVENT_BEAT_SCIENTIST_MITCH, ScientistMitchSeenText, ScientistMitchBeatenText, 0, .Script
+
+.Script:
+ endifjustbattled
+ opentext
+ writetext ScientistMitchAfterBattleText
+ waitbutton
+ closetext
+ end
+
+TeamRocketBaseB3FLockedDoor:
+ conditional_event EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE, .Script
+
+.Script:
+ opentext
+ checkevent EVENT_LEARNED_SLOWPOKETAIL
+ iffalse .NeedsPassword
+ checkevent EVENT_LEARNED_RATICATE_TAIL
+ iffalse .NeedsPassword
+ jump .OpenSesame
+
+.NeedsPassword:
+ writetext TeamRocketBaseB3FLockedDoorNeedsPasswordText
+ waitbutton
+ closetext
+ end
+
+.OpenSesame:
+ writetext TeamRocketBaseB3FLockedDoorOpenSesameText
+ waitbutton
+ playsound SFX_ENTER_DOOR
+ changeblock 10, 8, $07 ; floor
+ reloadmappart
+ closetext
+ setevent EVENT_OPENED_DOOR_TO_GIOVANNIS_OFFICE
+ waitsfx
+ end
+
+TeamRocketBaseB3FOathScript:
+ jumpstd teamrocketoath
+
+TeamRocketBaseB3FFullHeal:
+ itemball FULL_HEAL
+
+TeamRocketBaseB3FDireHit:
+ itemball DIRE_HIT
+
+TeamRocketBaseB3FProtein:
+ itemball PROTEIN
+
+TeamRocketBaseB3FIceHeal:
+ itemball ICE_HEAL
+
+MovementData_0x6e12a:
+ step RIGHT
+ step_end
+
+MovementData_0x6e12c:
+ step DOWN
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step LEFT
+ step_end
+
+MovementData_0x6e133:
+ step UP
+ step UP
+ step UP
+ step LEFT
+ step LEFT
+ turn_head UP
+ step_end
+
+MovementData_0x6e13a:
+ step UP
+ step UP
+ step LEFT
+ step UP
+ step LEFT
+ step LEFT
+ turn_head UP
+ step_end
+
+MovementData_0x6e142:
+ step DOWN
+ step_end
+
+MovementData_0x6e144:
+ big_step RIGHT
+ big_step RIGHT
+ step_end
+
+MovementData_0x6e147:
+ fix_facing
+ fast_jump_step LEFT
+ remove_fixed_facing
+ step_sleep 8
+ step_sleep 8
+ slow_step RIGHT
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step RIGHT
+ big_step DOWN
+ big_step DOWN
+ big_step DOWN
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step LEFT
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step UP
+ big_step LEFT
+ big_step LEFT
+ step_end
+
+RocketBaseRivalEnterMovement:
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step DOWN
+ step RIGHT
+ step RIGHT
+ step RIGHT
+ step_end
+
+RocketBaseRivalLeaveMovement:
+ step LEFT
+ step LEFT
+ step UP
+ step UP
+ step UP
+ step UP
+ step UP
+ step_end
+
+RocketBaseRivalShovesPlayerMovement:
+ fix_facing
+ big_step RIGHT
+ remove_fixed_facing
+ step_end
+
+LanceGetPasswordText:
+ text "LANCE: It takes"
+ line "two passwords to"
+
+ para "get into the"
+ line "boss's quarters."
+
+ para "Those passwords"
+ line "are known only to"
+ cont "a few ROCKETS."
+
+ para "That ROCKET there"
+ line "very graciously"
+ cont "told me so."
+
+ para "<PLAYER>, let's go"
+ line "get the passwords."
+ done
+
+TeamRocketBaseB3FRocketText:
+ text "Urrggh… The guy"
+ line "in the cape is"
+ cont "incredibly tough…"
+ done
+
+RocketBaseRivalText:
+ text "…"
+
+ para "Didn't I tell you"
+ line "that I was going"
+
+ para "to destroy TEAM"
+ line "ROCKET?"
+
+ para "…Tell me, who was"
+ line "the guy in the"
+
+ para "cape who used"
+ line "dragon #MON?"
+
+ para "My #MON were no"
+ line "match at all."
+
+ para "I don't care that"
+ line "I lost. I can beat"
+
+ para "him by getting"
+ line "stronger #MON."
+
+ para "It's what he said"
+ line "that bothers me…"
+
+ para "He told me that"
+ line "I don't love and"
+
+ para "trust my #MON"
+ line "enough."
+
+ para "I'm furious that I"
+ line "lost to a bleeding"
+ cont "heart like him."
+
+ para "…Humph! I don't"
+ line "have the time for"
+ cont "the likes of you!"
+ done
+
+ExecutiveM4BeforeText:
+ text "What? Who are you?"
+ line "This is the office"
+
+ para "of our leader,"
+ line "GIOVANNI."
+
+ para "Since disbanding"
+ line "TEAM ROCKET three"
+
+ para "years ago, he has"
+ line "been in training."
+
+ para "But we're certain"
+ line "he will be back"
+
+ para "some day to assume"
+ line "command again."
+
+ para "That's why we're"
+ line "standing guard."
+
+ para "I won't let any-"
+ line "one disturb this"
+ cont "place!"
+ done
+
+ExecutiveM4BeatenText:
+ text "I… I couldn't do a"
+ line "thing…"
+
+ para "GIOVANNI, please"
+ line "forgive me…"
+ done
+
+ExecutiveM4AfterText:
+ text "No, I can't let"
+ line "this affect me."
+
+ para "I have to inform"
+ line "the others…"
+ done
+
+RocketBaseMurkrowText:
+ text "MURKROW: The"
+ line "password is…"
+
+ para "HAIL GIOVANNI."
+ done
+
+GruntF5SeenText:
+ text "Do I know the"
+ line "password?"
+
+ para "Maybe."
+
+ para "But no weakling's"
+ line "going to get it!"
+ done
+
+GruntF5BeatenText:
+ text "All right. Stop."
+ line "I'll tell you."
+ done
+
+GruntF5AfterBattleText:
+ text "The password to"
+ line "the boss's room is"
+
+ para "SLOWPOKETAIL."
+
+ para "But it's useless"
+ line "unless you have"
+ cont "two passwords."
+ done
+
+GruntM28SeenText:
+ text "Hyuck-hyuck-hyuck!"
+
+ para "You're challenging"
+ line "me to a battle?"
+
+ para "Hah! You're nuts,"
+ line "but you have guts!"
+
+ para "I like that!"
+
+ para "If you can beat"
+ line "me, I'll tell you"
+
+ para "a password to the"
+ line "boss's room!"
+ done
+
+GruntM28BeatenText:
+ text "Hyuck-hyuck-hyuck!"
+ line "You're good!"
+ done
+
+GruntM28AfterBattleText:
+ text "Hyuck-hyuck-hyuck!"
+
+ para "The password to"
+ line "the boss's room…"
+
+ para "Uh…, I think it is"
+ line "RATICATE TAIL."
+ done
+
+ScientistRossSeenText:
+ text "I used to work for"
+ line "SILPH, but now I"
+
+ para "run research for"
+ line "TEAM ROCKET."
+
+ para "A meddlesome child"
+ line "like you needs to"
+ cont "be punished."
+ done
+
+ScientistRossBeatenText:
+ text "A mere tactical"
+ line "error cost me…"
+ done
+
+ScientistRossAfterBattleText:
+ text "A radio signal"
+ line "that drives #-"
+ cont "MON mad…"
+
+ para "My experiment is a"
+ line "complete success."
+
+ para "My promotion is"
+ line "assured. This loss"
+
+ para "means absolutely"
+ line "nothing."
+ done
+
+ScientistMitchSeenText:
+ text "I don't care that"
+ line "#MON are hurt"
+ cont "by our experiment."
+ done
+
+ScientistMitchBeatenText:
+ text "Thinking is my"
+ line "strong suit, not"
+ cont "battling."
+ done
+
+ScientistMitchAfterBattleText:
+ text "If we turn up the"
+ line "power of our radio"
+
+ para "signal for broad-"
+ line "cast nationwide…"
+
+ para "The very thought"
+ line "excites me!"
+ done
+
+TeamRocketBaseB3FLockedDoorNeedsPasswordText:
+ text "The door's closed…"
+
+ para "It needs two"
+ line "passwords to open."
+ done
+
+TeamRocketBaseB3FLockedDoorOpenSesameText:
+ text "The door's closed…"
+
+ para "<PLAYER> entered"
+ line "the two passwords."
+
+ para "The door opened!"
+ done
+
+TeamRocketBaseB3F_MapEvents:
+ db 0, 0 ; filler
+
+ db 4 ; warp events
+ warp_event 3, 2, TEAM_ROCKET_BASE_B2F, 2
+ warp_event 27, 2, TEAM_ROCKET_BASE_B2F, 3
+ warp_event 3, 6, TEAM_ROCKET_BASE_B2F, 4
+ warp_event 27, 14, TEAM_ROCKET_BASE_B2F, 5
+
+ db 3 ; coord events
+ coord_event 10, 8, SCENE_TEAMROCKETBASEB3F_ROCKET_BOSS, RocketBaseBossLeft
+ coord_event 11, 8, SCENE_TEAMROCKETBASEB3F_ROCKET_BOSS, RocketBaseBossRight
+ coord_event 8, 10, SCENE_TEAMROCKETBASEB3F_RIVAL_ENCOUNTER, RocketBaseRival
+
+ db 10 ; bg events
+ bg_event 10, 9, BGEVENT_IFNOTSET, TeamRocketBaseB3FLockedDoor
+ bg_event 11, 9, BGEVENT_IFNOTSET, TeamRocketBaseB3FLockedDoor
+ bg_event 10, 1, BGEVENT_READ, TeamRocketBaseB3FOathScript
+ bg_event 11, 1, BGEVENT_READ, TeamRocketBaseB3FOathScript
+ bg_event 12, 1, BGEVENT_READ, TeamRocketBaseB3FOathScript
+ bg_event 13, 1, BGEVENT_READ, TeamRocketBaseB3FOathScript
+ bg_event 4, 13, BGEVENT_READ, TeamRocketBaseB3FOathScript
+ bg_event 5, 13, BGEVENT_READ, TeamRocketBaseB3FOathScript
+ bg_event 6, 13, BGEVENT_READ, TeamRocketBaseB3FOathScript
+ bg_event 7, 13, BGEVENT_READ, TeamRocketBaseB3FOathScript
+
+ db 13 ; object events
+ object_event 25, 14, SPRITE_LANCE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, LanceGetPasswordScript, EVENT_TEAM_ROCKET_BASE_B3F_LANCE_PASSWORDS
+ object_event 8, 3, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_TEAM_ROCKET_BASE_B3F_EXECUTIVE
+ object_event 7, 2, SPRITE_MOLTRES, SPRITEMOVEDATA_POKEMON, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, RocketBaseMurkrow, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 21, 7, SPRITE_ROCKET_GIRL, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_TRAINER, 0, SlowpokeTailGrunt, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 5, 15, SPRITE_ROCKET, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, 0, OBJECTTYPE_TRAINER, 3, RaticateTailGrunt, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 25, 12, SPRITE_SCIENTIST, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 4, TrainerScientistRoss, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 14, 15, SPRITE_SCIENTIST, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerScientistMitch, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 24, 14, SPRITE_ROCKET, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, TeamRocketBaseB3FRocketScript, EVENT_TEAM_ROCKET_BASE_POPULATION
+ object_event 4, 5, SPRITE_SILVER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_RIVAL_TEAM_ROCKET_BASE
+ object_event 1, 12, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TeamRocketBaseB3FFullHeal, EVENT_TEAM_ROCKET_BASE_B3F_FULL_HEAL
+ object_event 3, 12, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TeamRocketBaseB3FDireHit, EVENT_TEAM_ROCKET_BASE_B3F_DIRE_HIT
+ object_event 28, 9, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TeamRocketBaseB3FProtein, EVENT_TEAM_ROCKET_BASE_B3F_PROTEIN
+ object_event 17, 2, SPRITE_POKE_BALL, SPRITEMOVEDATA_STILL, 0, 0, -1, -1, 0, OBJECTTYPE_ITEMBALL, 0, TeamRocketBaseB3FIceHeal, EVENT_TEAM_ROCKET_BASE_B3F_ICE_HEAL