diff options
author | IIMarckus <iimarckus@gmail.com> | 2018-09-20 20:31:09 -0600 |
---|---|---|
committer | IIMarckus <iimarckus@gmail.com> | 2018-09-20 20:31:09 -0600 |
commit | f7c1a2cd8ffb4c00ba0261ed57fe6ea5349af8a4 (patch) | |
tree | a34be0dd9493cc16758aef7e3ca3547c1ee9c5c6 | |
parent | f5ce33c3dc240c7f1f9a1cb894ba041b5692c8bd (diff) |
Add map scripts from bank 45.
-rw-r--r-- | constants/event_flags.asm | 24 | ||||
-rw-r--r-- | constants/map_constants.asm | 9 | ||||
-rw-r--r-- | macros/scripts/events.asm | 24 | ||||
-rw-r--r-- | main.asm | 6 | ||||
-rw-r--r-- | maps/IlexForest.asm | 695 | ||||
-rw-r--r-- | maps/MahoganyMart1F.asm | 238 | ||||
-rw-r--r-- | maps/SlowpokeWellB1F.asm | 2 | ||||
-rw-r--r-- | maps/TeamRocketBaseB1F.asm | 789 | ||||
-rw-r--r-- | maps/TeamRocketBaseB2F.asm | 968 | ||||
-rw-r--r-- | maps/TeamRocketBaseB3F.asm | 602 |
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 @@ -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 |