aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/BikeShop.asm11
-rw-r--r--scripts/BillsHouse.asm283
-rw-r--r--scripts/BillsHouse_2.asm156
-rw-r--r--scripts/BluesHouse.asm7
-rw-r--r--scripts/CeladonCity.asm14
-rw-r--r--scripts/CeladonCity_2.asm8
-rw-r--r--scripts/CeladonDiner.asm37
-rw-r--r--scripts/CeladonDiner_2.asm38
-rw-r--r--scripts/CeladonMansion1F.asm29
-rw-r--r--scripts/CeladonMansion1F_2.asm78
-rw-r--r--scripts/CeladonMansion3F.asm132
-rw-r--r--scripts/CeladonMansion3F_2.asm35
-rw-r--r--scripts/CeladonMansionRoof.asm3
-rw-r--r--scripts/CeladonMansionRoofHouse.asm3
-rw-r--r--scripts/CeladonMart1F.asm3
-rw-r--r--scripts/CeladonMart3F.asm35
-rw-r--r--scripts/CeladonMart3F_2.asm36
-rw-r--r--scripts/CeladonMart5F.asm3
-rw-r--r--scripts/CeladonMartRoof.asm12
-rw-r--r--scripts/CeladonPokecenter.asm6
-rw-r--r--scripts/CeruleanCave1F.asm5
-rw-r--r--scripts/CeruleanCave2F.asm3
-rw-r--r--scripts/CeruleanCaveB1F.asm4
-rw-r--r--scripts/CeruleanCity.asm55
-rw-r--r--scripts/CeruleanGym.asm2
-rw-r--r--scripts/CeruleanMelaniesHouse.asm107
-rw-r--r--scripts/CeruleanPokecenter.asm6
-rw-r--r--scripts/CeruleanTradeHouse.asm18
-rw-r--r--scripts/ChampionsRoom.asm16
-rw-r--r--scripts/CinnabarGym.asm151
-rw-r--r--scripts/CinnabarGym_2.asm18
-rw-r--r--scripts/CinnabarGym_3.asm64
-rw-r--r--scripts/CinnabarLabFossilRoom.asm2
-rw-r--r--scripts/CinnabarLabTradeRoom.asm4
-rw-r--r--scripts/CinnabarPokecenter.asm6
-rw-r--r--scripts/Daycare.asm29
-rw-r--r--scripts/FuchsiaMart.asm3
-rw-r--r--scripts/FuchsiaPokecenter.asm6
-rw-r--r--scripts/GameCorner.asm66
-rw-r--r--scripts/GameCorner_2.asm12
-rw-r--r--scripts/IndigoPlateauLobby.asm6
-rw-r--r--scripts/LancesRoom.asm2
-rw-r--r--scripts/LavenderPokecenter.asm6
-rw-r--r--scripts/MtMoon1F.asm19
-rw-r--r--scripts/MtMoonB2F.asm422
-rw-r--r--scripts/MtMoonB2F_2.asm28
-rw-r--r--scripts/MtMoonPokecenter.asm68
-rw-r--r--scripts/MtMoonPokecenter_2.asm64
-rw-r--r--scripts/Museum1F.asm196
-rw-r--r--scripts/Museum1F_2.asm202
-rw-r--r--scripts/Museum2F.asm34
-rw-r--r--scripts/OaksLab.asm695
-rw-r--r--scripts/OaksLab_2.asm28
-rw-r--r--scripts/PalletTown.asm154
-rw-r--r--scripts/PewterCity.asm16
-rw-r--r--scripts/PewterGym.asm16
-rw-r--r--scripts/PewterNidoranHouse.asm3
-rw-r--r--scripts/PewterPokecenter.asm81
-rw-r--r--scripts/PewterPokecenter_2.asm79
-rw-r--r--scripts/PokemonFanClub.asm232
-rw-r--r--scripts/PokemonTower1F.asm3
-rw-r--r--scripts/PokemonTower2F.asm24
-rw-r--r--scripts/PokemonTower2F_2.asm12
-rw-r--r--scripts/PokemonTower7F.asm450
-rw-r--r--scripts/RedsHouse1F.asm60
-rw-r--r--scripts/RedsHouse1F_2.asm57
-rw-r--r--scripts/RedsHouse2F.asm21
-rw-r--r--scripts/RockTunnelPokecenter.asm6
-rw-r--r--scripts/RocketHideoutB4F.asm386
-rw-r--r--scripts/Route1.asm47
-rw-r--r--scripts/Route11Gate2F.asm2
-rw-r--r--scripts/Route18Gate2F.asm6
-rw-r--r--scripts/Route19.asm30
-rw-r--r--scripts/Route1_2.asm53
-rw-r--r--scripts/Route22.asm137
-rw-r--r--scripts/Route22Gate.asm5
-rw-r--r--scripts/Route22_2.asm48
-rw-r--r--scripts/Route24.asm59
-rw-r--r--scripts/Route25.asm18
-rw-r--r--scripts/Route2TradeHouse.asm2
-rw-r--r--scripts/Route6.asm12
-rw-r--r--scripts/Route7.asm3
-rw-r--r--scripts/Route8Gate.asm2
-rw-r--r--scripts/Route9.asm18
-rw-r--r--scripts/SSAnne2F.asm23
-rw-r--r--scripts/SSAnne2FRooms.asm33
-rw-r--r--scripts/SSAnne2FRooms_2.asm35
-rw-r--r--scripts/SSAnneCaptainsRoom.asm10
-rw-r--r--scripts/SafariZoneGate.asm104
-rw-r--r--scripts/SafariZoneGate_2.asm252
-rw-r--r--scripts/SaffronPokecenter.asm6
-rw-r--r--scripts/SeafoamIslandsB4F.asm3
-rw-r--r--scripts/SilphCo11F.asm471
-rw-r--r--scripts/SilphCo11F_2.asm75
-rw-r--r--scripts/SilphCo7F.asm24
-rw-r--r--scripts/SummerBeachHouse.asm209
-rw-r--r--scripts/SummerBeachHouse_2.asm33
-rw-r--r--scripts/UndergroundPathRoute5.asm2
-rw-r--r--scripts/VermilionCity.asm55
-rw-r--r--scripts/VermilionCity_2.asm111
-rw-r--r--scripts/VermilionDock.asm6
-rw-r--r--scripts/VermilionPokecenter.asm6
-rw-r--r--scripts/VermilionTradeHouse.asm11
-rw-r--r--scripts/VictoryRoad1F.asm3
-rw-r--r--scripts/VictoryRoad2F.asm3
-rw-r--r--scripts/VictoryRoad3F.asm3
-rw-r--r--scripts/ViridianCity.asm364
-rw-r--r--scripts/ViridianCity_2.asm215
-rw-r--r--scripts/ViridianForest.asm90
-rw-r--r--scripts/ViridianForestSouthGate.asm3
-rw-r--r--scripts/ViridianForest_2.asm53
-rw-r--r--scripts/ViridianMart.asm22
-rw-r--r--scripts/ViridianPokecenter.asm6
-rw-r--r--scripts/ViridianSchoolHouse.asm14
-rw-r--r--scripts/ViridianSchoolHouse_2.asm17
115 files changed, 5252 insertions, 2328 deletions
diff --git a/scripts/BikeShop.asm b/scripts/BikeShop.asm
index a245b657..66b2a1e6 100644
--- a/scripts/BikeShop.asm
+++ b/scripts/BikeShop.asm
@@ -1,5 +1,6 @@
BikeShop_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
BikeShop_TextPointers:
def_text_pointers
@@ -51,8 +52,7 @@ BikeShopClerkText:
ld hl, wStatusFlags5
set BIT_NO_TEXT_DELAY, [hl]
hlcoord 0, 0
- ld b, 4
- ld c, 15
+ lb bc, 4, 15
call TextBoxBorder
call UpdateSprites
hlcoord 2, 2
@@ -63,11 +63,12 @@ BikeShopClerkText:
call PlaceString
ld hl, BikeShopClerkDoYouLikeItText
call PrintText
+ ; This fixes the bike shop instatext glitch
+ ld hl, wStatusFlags5
+ res BIT_NO_TEXT_DELAY, [hl]
call HandleMenuInput
bit B_PAD_B, a
jr nz, .cancel
- ld hl, wStatusFlags5
- res BIT_NO_TEXT_DELAY, [hl]
ld a, [wCurrentMenuItem]
and a
jr nz, .cancel
diff --git a/scripts/BillsHouse.asm b/scripts/BillsHouse.asm
index 6b65aa38..cb1afbdd 100644
--- a/scripts/BillsHouse.asm
+++ b/scripts/BillsHouse.asm
@@ -1,43 +1,88 @@
BillsHouse_Script:
+ call BillsHouseScript_1e09e
call EnableAutoTextBoxDrawing
ld a, [wBillsHouseCurScript]
ld hl, BillsHouse_ScriptPointers
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
BillsHouse_ScriptPointers:
def_script_pointers
- dw_const BillsHouseDefaultScript, SCRIPT_BILLSHOUSE_DEFAULT
- dw_const BillsHousePokemonWalkToMachineScript, SCRIPT_BILLSHOUSE_POKEMON_WALK_TO_MACHINE
- dw_const BillsHousePokemonEntersMachineScript, SCRIPT_BILLSHOUSE_POKEMON_ENTERS_MACHINE
- dw_const BillsHouseBillExitsMachineScript, SCRIPT_BILLSHOUSE_BILL_EXITS_MACHINE
- dw_const BillsHouseCleanupScript, SCRIPT_BILLSHOUSE_CLEANUP
- dw_const BillsHousePCScript, SCRIPT_BILLSHOUSE_PC
+ dw_const BillsHouseScript0, SCRIPT_BILLSHOUSE_SCRIPT0
+ dw_const BillsHouseScript1, SCRIPT_BILLSHOUSE_SCRIPT1
+ dw_const BillsHouseScript2, SCRIPT_BILLSHOUSE_SCRIPT2
+ dw_const BillsHouseScript3, SCRIPT_BILLSHOUSE_SCRIPT3
+ dw_const BillsHouseScript4, SCRIPT_BILLSHOUSE_SCRIPT4
+ dw_const BillsHouseScript5, SCRIPT_BILLSHOUSE_SCRIPT5
+ dw_const BillsHouseScript6, SCRIPT_BILLSHOUSE_SCRIPT6
+ dw_const BillsHouseScript7, SCRIPT_BILLSHOUSE_SCRIPT7
+ dw_const BillsHouseScript8, SCRIPT_BILLSHOUSE_SCRIPT8
+ dw_const BillsHouseScript9, SCRIPT_BILLSHOUSE_SCRIPT9
+
+BillsHouseScript_1e09e:
+ ld hl, wd492
+ bit 7, [hl]
+ set 7, [hl]
+ ret nz
+ CheckEventHL EVENT_MET_BILL_2
+ jr z, .asm_1e0af
+ jr .asm_1e0b3
-BillsHouseDefaultScript:
+.asm_1e0af
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT0
+ jr .asm_1e0b5
+
+.asm_1e0b3
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT9
+.asm_1e0b5
+ ld [wBillsHouseCurScript], a
ret
-BillsHousePokemonWalkToMachineScript:
+BillsHouseScript0:
+ ld a, [wd471]
+ bit 7, a
+ jr z, .asm_1e0d2
+ callfar CheckPikachuStatusCondition
+ jr c, .asm_1e0d2
+ callfar Func_f24d5
+.asm_1e0d2
+ xor a
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT1
+ ld [wBillsHouseCurScript], a
+ ret
+
+BillsHouseScript1:
+ ret
+
+BillsHouseScript2:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
- ld de, .PokemonWalkToMachineMovement
+ ld de, MovementData_1e79c
jr nz, .notDown
- ld de, .PokemonWalkAroundPlayerMovement
+ call CheckPikachuFollowingPlayer
+ jr nz, .asm_1e0f8
+ callfar Func_f250b
+.asm_1e0f8
+ ld de, MovementData_1e7a0
.notDown
ld a, BILLSHOUSE_BILL_POKEMON
ldh [hSpriteIndex], a
call MoveSprite
- ld a, SCRIPT_BILLSHOUSE_POKEMON_ENTERS_MACHINE
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT3
ld [wBillsHouseCurScript], a
ret
-.PokemonWalkToMachineMovement:
+MovementData_1e79c:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1 ; end
; make Bill walk around the player
-.PokemonWalkAroundPlayerMovement:
+MovementData_1e7a0:
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
@@ -45,25 +90,58 @@ BillsHousePokemonWalkToMachineScript:
db NPC_MOVEMENT_UP
db -1 ; end
-BillsHousePokemonEntersMachineScript:
+BillsHouseScript3:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
ld a, HS_BILL_POKEMON
ld [wMissableObjectIndex], a
predef HideObject
- SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR
+ call CheckPikachuFollowingPlayer
+ jr z, .asm_1e13e
+ ld hl, PikachuMovementData_1e14d
+ ld a, [wSpritePlayerStateData1FacingDirection]
+ and a ; cp SPRITE_FACING_DOWN
+ jr nz, .asm_1e133
+ ld hl, PikachuMovementData_1e152
+.asm_1e133
+ call ApplyPikachuMovementData
+ callfar InitializePikachuTextID
+.asm_1e13e
xor a
ld [wJoyIgnore], a
- ld a, SCRIPT_BILLSHOUSE_BILL_EXITS_MACHINE
+ SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT4
ld [wBillsHouseCurScript], a
ret
-BillsHouseBillExitsMachineScript:
+PikachuMovementData_1e14d:
+ db $00
+ db $1e
+ db $1e
+ db $1e
+ db $3f
+
+PikachuMovementData_1e152:
+ db $00
+ db $1e
+ db $1f
+ db $1e
+ db $1e
+ db $20
+ db $36
+ db $3f
+
+BillsHouseScript4:
CheckEvent EVENT_USED_CELL_SEPARATOR_ON_BILL
ret z
- ld a, PAD_CTRL_PAD
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT5
+ ld [wBillsHouseCurScript], a
+ ret
+
+BillsHouseScript5:
ld a, BILLSHOUSE_BILL1
ld [wSpriteIndex], a
ld a, $c
@@ -80,15 +158,34 @@ BillsHouseBillExitsMachineScript:
predef ShowObject
ld c, 8
call DelayFrames
+ ld hl, wd471
+ bit 7, [hl]
+ jr z, .asm_1e1c6
+ call CheckPikachuFollowingPlayer
+ jr z, .asm_1e1c6
+ ld a, BILLSHOUSE_BILL1
+ ldh [hSpriteIndex], a
+ ld a, SPRITE_FACING_DOWN
+ ldh [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ ld hl, PikachuMovementData_1e1a9
+ call ApplyPikachuMovementData
+ ld a, $f
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ callfar InitializePikachuTextID
+.asm_1e1c6
ld a, BILLSHOUSE_BILL1
ldh [hSpriteIndex], a
- ld de, BillExitMachineMovement
+ ld de, MovementData_1e807
call MoveSprite
- ld a, SCRIPT_BILLSHOUSE_CLEANUP
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT6
ld [wBillsHouseCurScript], a
ret
-BillExitMachineMovement:
+MovementData_1e807:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
@@ -96,121 +193,89 @@ BillExitMachineMovement:
db NPC_MOVEMENT_DOWN
db -1 ; end
-BillsHouseCleanupScript:
+PikachuMovementData_1e1a9:
+ db $00
+ db $37
+ db $3f
+
+BillsHouseScript6:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- xor a
- ld [wJoyIgnore], a
SetEvent EVENT_MET_BILL_2 ; this event seems redundant
SetEvent EVENT_MET_BILL
- ld a, SCRIPT_BILLSHOUSE_DEFAULT
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT7
+ ld [wBillsHouseCurScript], a
+ ret
+
+BillsHouseScript7:
+ xor a
+ ld [wPlayerMovingDirection], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld de, RLE_1e219
+ ld hl, wSimulatedJoypadStatesEnd
+ call DecodeRLEList
+ dec a
+ ld [wSimulatedJoypadStatesIndex], a
+ call StartSimulatingJoypadStates
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT8
ld [wBillsHouseCurScript], a
ret
-BillsHousePCScript:
- ld a, TEXT_BILLSHOUSE_ACTIVATE_PC
+RLE_1e219:
+ db PAD_RIGHT, $3
+ db $FF
+
+BillsHouseScript8:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ xor a
+ ld [wPlayerMovingDirection], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, BILLSHOUSE_BILL1
+ ldh [hSpriteIndex], a
+ ld a, SPRITE_FACING_DOWN
+ ldh [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ xor a
+ ld [wJoyIgnore], a
+ ld a, TEXT_BILLSHOUSE_BILL_SS_TICKET
ldh [hTextID], a
call DisplayTextID
- ld a, SCRIPT_BILLSHOUSE_DEFAULT
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT9
ld [wBillsHouseCurScript], a
ret
+BillsHouseScript9:
+ ret
+
BillsHouse_TextPointers:
def_text_pointers
dw_const BillsHouseBillPokemonText, TEXT_BILLSHOUSE_BILL_POKEMON
dw_const BillsHouseBillSSTicketText, TEXT_BILLSHOUSE_BILL_SS_TICKET
dw_const BillsHouseBillCheckOutMyRarePokemonText, TEXT_BILLSHOUSE_BILL_CHECK_OUT_MY_RARE_POKEMON
- dw_const BillsHouseActivatePCScript, TEXT_BILLSHOUSE_ACTIVATE_PC
+ dw_const BillsHouseBillDontLeaveText, TEXT_BILLSHOUSE_BILL_DONT_LEAVE
-BillsHouseActivatePCScript:
- script_bills_pc
+BillsHouseBillDontLeaveText:
+ text_far _BillsHouseBillDontLeaveText
+ text_end
BillsHouseBillPokemonText:
text_asm
- ld hl, .ImNotAPokemonText
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .answered_no
-.use_machine
- ld hl, .UseSeparationSystemText
- call PrintText
- ld a, SCRIPT_BILLSHOUSE_POKEMON_WALK_TO_MACHINE
- ld [wBillsHouseCurScript], a
- jr .text_script_end
-.answered_no
- ld hl, .NoYouGottaHelpText
- call PrintText
- jr .use_machine
-.text_script_end
+ farcall BillsHousePrintBillPokemonText
jp TextScriptEnd
-.ImNotAPokemonText:
- text_far _BillsHouseBillImNotAPokemonText
- text_end
-
-.UseSeparationSystemText:
- text_far _BillsHouseBillUseSeparationSystemText
- text_end
-
-.NoYouGottaHelpText:
- text_far _BillsHouseBillNoYouGottaHelpText
- text_end
-
BillsHouseBillSSTicketText:
text_asm
- CheckEvent EVENT_GOT_SS_TICKET
- jr nz, .got_ss_ticket
- ld hl, .ThankYouText
- call PrintText
- lb bc, S_S_TICKET, 1
- call GiveItem
- jr nc, .bag_full
- ld hl, .SSTicketReceivedText
- call PrintText
- SetEvent EVENT_GOT_SS_TICKET
- ld a, HS_CERULEAN_GUARD_1
- ld [wMissableObjectIndex], a
- predef ShowObject
- ld a, HS_CERULEAN_GUARD_2
- ld [wMissableObjectIndex], a
- predef HideObject
-.got_ss_ticket
- ld hl, .WhyDontYouGoInsteadOfMeText
- call PrintText
- jr .text_script_end
-.bag_full
- ld hl, .SSTicketNoRoomText
- call PrintText
-.text_script_end
+ farcall BillsHousePrintBillSSTicketText
jp TextScriptEnd
-.ThankYouText:
- text_far _BillsHouseBillThankYouText
- text_end
-
-.SSTicketReceivedText:
- text_far _SSTicketReceivedText
- sound_get_key_item
- text_promptbutton
- text_end
-
-.SSTicketNoRoomText:
- text_far _SSTicketNoRoomText
- text_end
-
-.WhyDontYouGoInsteadOfMeText:
- text_far _BillsHouseBillWhyDontYouGoInsteadOfMeText
- text_end
-
BillsHouseBillCheckOutMyRarePokemonText:
text_asm
- ld hl, .Text
- call PrintText
+ farcall BillsHousePrintBillCheckOutMyRarePokemonText
jp TextScriptEnd
-
-.Text:
- text_far _BillsHouseBillCheckOutMyRarePokemonText
- text_end
diff --git a/scripts/BillsHouse_2.asm b/scripts/BillsHouse_2.asm
new file mode 100644
index 00000000..f75ab204
--- /dev/null
+++ b/scripts/BillsHouse_2.asm
@@ -0,0 +1,156 @@
+BillsHousePrintBillPokemonText::
+ ld hl, .ImNotAPokemonText
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .answered_no
+.use_machine
+ ld hl, .UseSeparationSystemText
+ call PrintText
+ ld a, SCRIPT_BILLSHOUSE_SCRIPT2
+ ld [wBillsHouseCurScript], a
+ ret
+.answered_no
+ ld hl, .NoYouGottaHelpText
+ call PrintText
+ jr .use_machine
+
+.ImNotAPokemonText:
+ text_far _BillsHouseBillImNotAPokemonText
+ text_end
+
+.UseSeparationSystemText:
+ text_far _BillsHouseBillUseSeparationSystemText
+ text_end
+
+.NoYouGottaHelpText:
+ text_far _BillsHouseBillNoYouGottaHelpText
+ text_end
+
+BillsHousePrintBillSSTicketText::
+ CheckEvent EVENT_GOT_SS_TICKET
+ jr nz, .got_ss_ticket
+ ld hl, .ThankYouText
+ call PrintText
+ lb bc, S_S_TICKET, 1
+ call GiveItem
+ jr nc, .bag_full
+ ld hl, .SSTicketReceivedText
+ call PrintText
+ SetEvent EVENT_GOT_SS_TICKET
+ ld a, HS_CERULEAN_GUARD_1
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ ld a, HS_CERULEAN_GUARD_2
+ ld [wMissableObjectIndex], a
+ predef HideObject
+.got_ss_ticket
+ ld hl, .WhyDontYouGoInsteadOfMeText
+ call PrintText
+ ret
+.bag_full
+ ld hl, .SSTicketNoRoomText
+ call PrintText
+ ret
+
+.ThankYouText:
+ text_far _BillsHouseBillThankYouText
+ text_end
+
+.SSTicketReceivedText:
+ text_far _SSTicketReceivedText
+ sound_get_key_item
+ text_promptbutton
+ text_end
+
+.SSTicketNoRoomText:
+ text_far _SSTicketNoRoomText
+ text_end
+
+.WhyDontYouGoInsteadOfMeText:
+ text_far _BillsHouseBillWhyDontYouGoInsteadOfMeText
+ text_end
+
+BillsHousePrintBillCheckOutMyRarePokemonText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _BillsHouseBillCheckOutMyRarePokemonText
+ text_end
+
+Func_f24ae::
+ ld a, [wCurMap]
+ cp BILLS_HOUSE
+ jr nz, .asm_f24d2
+ call CheckPikachuFollowingPlayer
+ jr z, .asm_f24d2
+ ld a, [wBillsHouseCurScript]
+ cp SCRIPT_BILLSHOUSE_SCRIPT5
+ ldpikaemotion e, PikachuEmotion27
+ ret z
+ cp SCRIPT_BILLSHOUSE_SCRIPT0
+ ldpikaemotion e, PikachuEmotion23
+ ret z
+ CheckEventHL EVENT_MET_BILL_2
+ ldpikaemotion e, PikachuEmotion32
+ ret z
+ ldpikaemotion e, PikachuEmotion31
+ ret
+
+.asm_f24d2
+ ld e, $ff
+ ret
+
+Func_f24d5::
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ xor a
+ ld [wPlayerMovingDirection], a
+ call UpdateSprites
+ call UpdateSprites
+ ld hl, Data_f2505
+ call ApplyPikachuMovementData
+ ld a, $f ; pikachu
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, QUESTION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ call DisablePikachuFollowingPlayer
+ callfar InitializePikachuTextID
+ ret
+
+Data_f2505:
+ db $00
+ db $20
+ db $20
+ db $20
+ db $1e
+ db $3f
+
+Func_f250b::
+ ld hl, Data_f251c
+ ld b, SPRITE_FACING_UP
+ call TryApplyPikachuMovementData
+ ld hl, Data_f2521
+ ld b, SPRITE_FACING_RIGHT
+ call TryApplyPikachuMovementData
+ ret
+
+Data_f251c:
+ db $00
+ db $1f
+ db $1d
+ db $38
+ db $3f
+
+Data_f2521:
+ db $00
+ db $1e
+ db $1f
+ db $1f
+ db $1d
+ db $38
+ db $3f
diff --git a/scripts/BluesHouse.asm b/scripts/BluesHouse.asm
index 0a16abbf..834a24e4 100644
--- a/scripts/BluesHouse.asm
+++ b/scripts/BluesHouse.asm
@@ -1,8 +1,9 @@
BluesHouse_Script:
call EnableAutoTextBoxDrawing
ld hl, BluesHouse_ScriptPointers
- ld a, [wBluesHouseCurScript]
- jp CallFunctionInTable
+ xor a
+ call CallFunctionInTable
+ ret
BluesHouse_ScriptPointers:
def_script_pointers
@@ -13,8 +14,6 @@ BluesHouseDefaultScript:
SetEvent EVENT_ENTERED_BLUES_HOUSE
ld a, SCRIPT_BLUESHOUSE_NOOP
ld [wBluesHouseCurScript], a
- ret
-
BluesHouseNoopScript:
ret
diff --git a/scripts/CeladonCity.asm b/scripts/CeladonCity.asm
index 60ca58c3..b70a48bf 100644
--- a/scripts/CeladonCity.asm
+++ b/scripts/CeladonCity.asm
@@ -1,5 +1,14 @@
CeladonCity_Script:
call EnableAutoTextBoxDrawing
+ ld hl, CeladonCity_ScriptPointers
+ ld a, [wCeladonCityCurScript]
+ call CallFunctionInTable
+ ret
+
+CeladonCity_ScriptPointers:
+ dw CeladonCityScript1
+
+CeladonCityScript1:
ResetEvents EVENT_1B8, EVENT_1BF
ResetEvent EVENT_67F
ret
@@ -101,8 +110,9 @@ CeladonCityRocket2Text:
text_end
CeladonCityTrainerTips1Text:
- text_far _CeladonCityTrainerTips1Text
- text_end
+ text_asm
+ farcall CeladonCityPrintTrainerTips1Text
+ jp TextScriptEnd
CeladonCitySignText:
text_far _CeladonCitySignText
diff --git a/scripts/CeladonCity_2.asm b/scripts/CeladonCity_2.asm
new file mode 100644
index 00000000..d2c1c4a3
--- /dev/null
+++ b/scripts/CeladonCity_2.asm
@@ -0,0 +1,8 @@
+CeladonCityPrintTrainerTips1Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _CeladonCityTrainerTips1Text
+ text_end
diff --git a/scripts/CeladonDiner.asm b/scripts/CeladonDiner.asm
index ca54af4f..426d6296 100644
--- a/scripts/CeladonDiner.asm
+++ b/scripts/CeladonDiner.asm
@@ -28,40 +28,5 @@ CeladonDinerFisherText:
CeladonDinerGymGuideText:
text_asm
- CheckEvent EVENT_GOT_COIN_CASE
- jr nz, .got_item
- ld hl, .ImFlatOutBustedText
- call PrintText
- lb bc, COIN_CASE, 1
- call GiveItem
- jr nc, .bag_full
- SetEvent EVENT_GOT_COIN_CASE
- ld hl, .ReceivedCoinCaseText
- call PrintText
- jr .done
-.bag_full
- ld hl, .CoinCaseNoRoomText
- call PrintText
- jr .done
-.got_item
- ld hl, .WinItBackText
- call PrintText
-.done
+ callfar CeladonDinerPrintGymGuideText
jp TextScriptEnd
-
-.ImFlatOutBustedText:
- text_far _CeladonDinerGymGuideImFlatOutBustedText
- text_end
-
-.ReceivedCoinCaseText:
- text_far _CeladonDinerGymGuideReceivedCoinCaseText
- sound_get_key_item
- text_end
-
-.CoinCaseNoRoomText:
- text_far _CeladonDinerGymGuideCoinCaseNoRoomText
- text_end
-
-.WinItBackText:
- text_far _CeladonDinerGymGuideWinItBackText
- text_end
diff --git a/scripts/CeladonDiner_2.asm b/scripts/CeladonDiner_2.asm
new file mode 100644
index 00000000..28e6f11a
--- /dev/null
+++ b/scripts/CeladonDiner_2.asm
@@ -0,0 +1,38 @@
+CeladonDinerPrintGymGuideText::
+ CheckEvent EVENT_GOT_COIN_CASE
+ jr nz, .got_item
+ ld hl, .ImFlatOutBustedText
+ call PrintText
+ lb bc, COIN_CASE, 1
+ call GiveItem
+ jr nc, .bag_full
+ SetEvent EVENT_GOT_COIN_CASE
+ ld hl, .ReceivedCoinCaseText
+ call PrintText
+ jr .done
+.bag_full
+ ld hl, .CoinCaseNoRoomText
+ call PrintText
+ jr .done
+.got_item
+ ld hl, .WinItBackText
+ call PrintText
+.done
+ ret
+
+.ImFlatOutBustedText:
+ text_far _CeladonDinerGymGuideImFlatOutBustedText
+ text_end
+
+.ReceivedCoinCaseText:
+ text_far _CeladonDinerGymGuideReceivedCoinCaseText
+ sound_get_key_item
+ text_end
+
+.CoinCaseNoRoomText:
+ text_far _CeladonDinerGymGuideCoinCaseNoRoomText
+ text_end
+
+.WinItBackText:
+ text_far _CeladonDinerGymGuideWinItBackText
+ text_end
diff --git a/scripts/CeladonMansion1F.asm b/scripts/CeladonMansion1F.asm
index 4ef67258..ca276973 100644
--- a/scripts/CeladonMansion1F.asm
+++ b/scripts/CeladonMansion1F.asm
@@ -1,5 +1,6 @@
CeladonMansion1F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansion1F_TextPointers:
def_text_pointers
@@ -9,31 +10,39 @@ CeladonMansion1F_TextPointers:
dw_const CeladonMansion1FNidoranFText, TEXT_CELADONMANSION1F_NIDORANF
dw_const CeladonMansion1FManagersSuiteSignText, TEXT_CELADONMANSION1F_MANAGERS_SUITE_SIGN
-CeladonMansion1_PlayCryScript:
- call PlayCry
- jp TextScriptEnd
-
CeladonMansion1FMeowthText:
text_far _CeladonMansion1FMeowthText
text_asm
ld a, MEOWTH
- jp CeladonMansion1_PlayCryScript
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1FGrannyText:
- text_far _CeladonMansion1FGrannyText
- text_end
+ text_asm
+ farcall CeladonMansion1FPrintGrannyText
+ ld a, [wPikachuHappiness]
+ cp 251
+ jr c, .asm_485d9
+ ld c, 50
+ call DelayFrames
+ ldpikacry e, PikachuCry23
+ callfar PlayPikachuSoundClip
+.asm_485d9
+ jp TextScriptEnd
CeladonMansion1FClefairyText:
text_far _CeladonMansion1FClefairyText
text_asm
ld a, CLEFAIRY
- jp CeladonMansion1_PlayCryScript
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1FNidoranFText:
text_far _CeladonMansion1FNidoranFText
text_asm
ld a, NIDORAN_F
- jp CeladonMansion1_PlayCryScript
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1FManagersSuiteSignText:
text_far _CeladonMansion1FManagersSuiteSignText
diff --git a/scripts/CeladonMansion1F_2.asm b/scripts/CeladonMansion1F_2.asm
new file mode 100644
index 00000000..ab366e7d
--- /dev/null
+++ b/scripts/CeladonMansion1F_2.asm
@@ -0,0 +1,78 @@
+CeladonMansion1FPrintGrannyText::
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, CeladonMansion1Text_f1e96
+ call PrintText
+ callfar IsStarterPikachuAliveInOurParty
+ ret nc
+ ld hl, CeladonMansionText_f1e9c
+ call PrintText
+ ld a, $0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call Func_f1ea2
+ call PrintText
+ ret
+
+CeladonMansion1Text_f1e96:
+ text_far _CeladonMansion1Text2
+ text_waitbutton
+ text_end
+
+CeladonMansionText_f1e9c:
+ text_far _CeladonMansion1Text6
+ text_promptbutton
+ text_end
+
+Func_f1ea2:
+ ld hl, PikachuHappinessThresholds_f1eb9
+.asm_f1ea5
+ ld a, [hli]
+ inc hl
+ and a
+ jr z, .asm_f1eb5
+ ld b, a
+ ld a, [wPikachuHappiness]
+ cp b
+ jr c, .asm_f1eb5
+ inc hl
+ inc hl
+ jr .asm_f1ea5
+
+.asm_f1eb5
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+PikachuHappinessThresholds_f1eb9:
+ dw 51, CeladonMansion1Text_f1ed5
+ dw 101, CeladonMansion1Text_f1eda
+ dw 131, CeladonMansion1Text_f1edf
+ dw 161, CeladonMansion1Text_f1ee4
+ dw 201, CeladonMansion1Text_f1ee9
+ dw 255, CeladonMansion1Text_f1eee
+ dw -256, CeladonMansion1Text_f1eee
+
+CeladonMansion1Text_f1ed5:
+ text_far _CeladonMansion1Text7
+ text_end
+
+CeladonMansion1Text_f1eda:
+ text_far _CeladonMansion1Text8
+ text_end
+
+CeladonMansion1Text_f1edf:
+ text_far _CeladonMansion1Text9
+ text_end
+
+CeladonMansion1Text_f1ee4:
+ text_far _CeladonMansion1Text10
+ text_end
+
+CeladonMansion1Text_f1ee9:
+ text_far _CeladonMansion1Text11
+ text_end
+
+CeladonMansion1Text_f1eee:
+ text_far _CeladonMansion1Text12
+ text_end
diff --git a/scripts/CeladonMansion3F.asm b/scripts/CeladonMansion3F.asm
index e977bb62..8453d0e5 100644
--- a/scripts/CeladonMansion3F.asm
+++ b/scripts/CeladonMansion3F.asm
@@ -1,5 +1,13 @@
CeladonMansion3F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
+
+CeladonMansion3_PokedexCount:
+ ld hl, wPokedexOwned
+ ld b, wPokedexOwnedEnd - wPokedexOwned
+ call CountSetBits
+ ld a, [wNumSetBits]
+ ret
CeladonMansion3F_TextPointers:
def_text_pointers
@@ -13,29 +21,119 @@ CeladonMansion3F_TextPointers:
dw_const CeladonMansion3FDevRoomSignText, TEXT_CELADONMANSION3F_DEV_ROOM_SIGN
CeladonMansion3FProgrammerText:
+ text_asm
+ call CeladonMansion3_PokedexCount
+ cp NUM_POKEMON - 1 ; discount Mew
+ ld hl, CeladonMansion3Text_486f5
+ jr nc, .print
+ ld hl, CeladonMansion3Text_486f0
+.print
+ call PrintText
+ jp TextScriptEnd
+
+CeladonMansion3Text_486f0:
text_far _CeladonMansion3FProgrammerText
text_end
+CeladonMansion3Text_486f5:
+ text_far _CeladonMansion3FProgrammerText2
+ text_end
+
CeladonMansion3FGraphicArtistText:
+ text_asm
+ call CeladonMansion3_PokedexCount
+ cp NUM_POKEMON - 1 ; discount Mew
+ jr nc, .completed
+ ld hl, .Text1
+ jr .print
+
+.completed
+ ld hl, .Text2
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .declined_print
+ call SaveScreenTilesToBuffer2
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wStatusFlags5
+ set BIT_NO_TEXT_DELAY, [hl]
+ callfar PrintDiploma
+ ld hl, wStatusFlags5
+ res BIT_NO_TEXT_DELAY, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, .Text5
+ ldh a, [hCanceledPrinting]
+ and a
+ jr nz, .print
+ ld hl, .Text4
+ jr .print
+
+.declined_print
+ ld hl, .Text3
+.print
+ call PrintText
+ jp TextScriptEnd
+
+.Text1:
text_far _CeladonMansion3FGraphicArtistText
text_end
+.Text2:
+ text_far _CeladonMansion3FGraphicArtistText2
+ text_end
+
+.Text3:
+ text_far _CeladonMansion3FGraphicArtistText3
+ text_end
+
+.Text4:
+ text_far _CeladonMansion3FGraphicArtistText4
+ text_end
+
+.Text5:
+ text_far _CeladonMansion3FGraphicArtistText5
+ text_end
+
CeladonMansion3FWriterText:
+ text_asm
+ call CeladonMansion3_PokedexCount
+ cp NUM_POKEMON - 1 ; discount Mew
+ ld hl, .Text2
+ jr nc, .print
+ ld hl, .Text1
+.print
+ call PrintText
+ jp TextScriptEnd
+
+.Text1:
text_far _CeladonMansion3FWriterText
text_end
+.Text2:
+ text_far _CeladonMansion3FWriterText2
+ text_end
+
CeladonMansion3FGameDesignerText:
text_asm
- ld hl, wPokedexOwned
- ld b, wPokedexOwnedEnd - wPokedexOwned
- call CountSetBits
- ld a, [wNumSetBits]
+ call CeladonMansion3_PokedexCount
cp NUM_POKEMON - 1 ; discount Mew
jr nc, .completed_dex
ld hl, .Text
jr .done
.completed_dex
ld hl, .CompletedDexText
+ call PrintText
+ call Delay3
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .UnlockedDiplomaPrinting
.done
call PrintText
jp TextScriptEnd
@@ -53,18 +151,26 @@ CeladonMansion3FGameDesignerText:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
jp TextScriptEnd
-CeladonMansion3FGameProgramPCText:
- text_far _CeladonMansion3FGameProgramPCText
+.UnlockedDiplomaPrinting
+ text_far _CeladonMansion3FGameDesignerCompletedDexText2
text_end
+CeladonMansion3FGameProgramPCText:
+ text_asm
+ farcall CeladonMansion3FPrintGameProgramPCText
+ jp TextScriptEnd
+
CeladonMansion3FPlayingGamePCText:
- text_far _CeladonMansion3FPlayingGamePCText
- text_end
+ text_asm
+ farcall CeladonMansion3FPrintPlayingGamePCText
+ jp TextScriptEnd
CeladonMansion3FGameScriptPCText:
- text_far _CeladonMansion3FGameScriptPCText
- text_end
+ text_asm
+ farcall CeladonMansion3FPrintGameScriptPCText
+ jp TextScriptEnd
CeladonMansion3FDevRoomSignText:
- text_far _CeladonMansion3FDevRoomSignText
- text_end
+ text_asm
+ farcall CeladonMansion3FPrintDevRoomSignText
+ jp TextScriptEnd
diff --git a/scripts/CeladonMansion3F_2.asm b/scripts/CeladonMansion3F_2.asm
new file mode 100644
index 00000000..cfb18988
--- /dev/null
+++ b/scripts/CeladonMansion3F_2.asm
@@ -0,0 +1,35 @@
+CeladonMansion3FPrintGameProgramPCText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _CeladonMansion3FGameProgramPCText
+ text_end
+
+CeladonMansion3FPrintPlayingGamePCText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _CeladonMansion3FPlayingGamePCText
+ text_end
+
+CeladonMansion3FPrintGameScriptPCText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _CeladonMansion3FGameScriptPCText
+ text_end
+
+CeladonMansion3FPrintDevRoomSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _CeladonMansion3FDevRoomSignText
+ text_end
diff --git a/scripts/CeladonMansionRoof.asm b/scripts/CeladonMansionRoof.asm
index 0c39288c..f55bfa92 100644
--- a/scripts/CeladonMansionRoof.asm
+++ b/scripts/CeladonMansionRoof.asm
@@ -1,5 +1,6 @@
CeladonMansionRoof_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansionRoof_TextPointers:
def_text_pointers
diff --git a/scripts/CeladonMansionRoofHouse.asm b/scripts/CeladonMansionRoofHouse.asm
index d3c03290..e71d14d5 100644
--- a/scripts/CeladonMansionRoofHouse.asm
+++ b/scripts/CeladonMansionRoofHouse.asm
@@ -1,5 +1,6 @@
CeladonMansionRoofHouse_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansionRoofHouse_TextPointers:
def_text_pointers
diff --git a/scripts/CeladonMart1F.asm b/scripts/CeladonMart1F.asm
index 9bdc031d..72b99423 100644
--- a/scripts/CeladonMart1F.asm
+++ b/scripts/CeladonMart1F.asm
@@ -1,5 +1,6 @@
CeladonMart1F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMart1F_TextPointers:
def_text_pointers
diff --git a/scripts/CeladonMart3F.asm b/scripts/CeladonMart3F.asm
index bf354764..0c277d57 100644
--- a/scripts/CeladonMart3F.asm
+++ b/scripts/CeladonMart3F.asm
@@ -23,42 +23,9 @@ CeladonMart3F_TextPointers:
CeladonMart3FClerkText:
text_asm
- CheckEvent EVENT_GOT_TM18
- jr nz, .got_item
- ld hl, .TM18PreReceiveText
- call PrintText
- lb bc, TM_COUNTER, 1
- call GiveItem
- jr nc, .bag_full
- SetEvent EVENT_GOT_TM18
- ld hl, .ReceivedTM18Text
- jr .done
-.bag_full
- ld hl, .TM18NoRoomText
- jr .done
-.got_item
- ld hl, .TM18ExplanationText
-.done
- call PrintText
+ callfar CeladonMart3FPrintClerkText
jp TextScriptEnd
-.TM18PreReceiveText:
- text_far _CeladonMart3FClerkTM18PreReceiveText
- text_end
-
-.ReceivedTM18Text:
- text_far _CeladonMart3FClerkReceivedTM18Text
- sound_get_item_1
- text_end
-
-.TM18ExplanationText:
- text_far _CeladonMart3FClerkTM18ExplanationText
- text_end
-
-.TM18NoRoomText:
- text_far _CeladonMart3FClerkTM18NoRoomText
- text_end
-
CeladonMart3FGameBoyKid1Text:
text_far _CeladonMart3FGameBoyKid1Text
text_end
diff --git a/scripts/CeladonMart3F_2.asm b/scripts/CeladonMart3F_2.asm
new file mode 100644
index 00000000..81c219e4
--- /dev/null
+++ b/scripts/CeladonMart3F_2.asm
@@ -0,0 +1,36 @@
+CeladonMart3FPrintClerkText::
+ CheckEvent EVENT_GOT_TM18
+ jr nz, .got_item
+ ld hl, .TM18PreReceiveText
+ call PrintText
+ lb bc, TM_COUNTER, 1
+ call GiveItem
+ jr nc, .bag_full
+ SetEvent EVENT_GOT_TM18
+ ld hl, .ReceivedTM18Text
+ jr .done
+.bag_full
+ ld hl, .TM18NoRoomText
+ jr .done
+.got_item
+ ld hl, .TM18ExplanationText
+.done
+ call PrintText
+ ret
+
+.TM18PreReceiveText:
+ text_far _CeladonMart3FClerkTM18PreReceiveText
+ text_end
+
+.ReceivedTM18Text:
+ text_far _CeladonMart3FClerkReceivedTM18Text
+ sound_get_item_1
+ text_end
+
+.TM18ExplanationText:
+ text_far _CeladonMart3FClerkTM18ExplanationText
+ text_end
+
+.TM18NoRoomText:
+ text_far _CeladonMart3FClerkTM18NoRoomText
+ text_end
diff --git a/scripts/CeladonMart5F.asm b/scripts/CeladonMart5F.asm
index f3fc5036..ae79297d 100644
--- a/scripts/CeladonMart5F.asm
+++ b/scripts/CeladonMart5F.asm
@@ -1,5 +1,6 @@
CeladonMart5F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMart5F_TextPointers:
def_text_pointers
diff --git a/scripts/CeladonMartRoof.asm b/scripts/CeladonMartRoof.asm
index 9a1f8834..4bb4d596 100644
--- a/scripts/CeladonMartRoof.asm
+++ b/scripts/CeladonMartRoof.asm
@@ -1,5 +1,6 @@
CeladonMartRoof_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMartRoofScript_GetDrinksInBag:
; construct a list of all drinks in the player's bag
@@ -126,13 +127,16 @@ CeladonMartRoofScript_GiveDrinkToGirl:
ret
.bagFull
ld hl, CeladonMartRoofLittleGirlNoRoomText
- jp PrintText
+ call PrintText
+ ret
.alreadyGaveDrink
ld hl, CeladonMartRoofLittleGirlImNotThirstyText
- jp PrintText
+ call PrintText
+ ret
RemoveItemByIDBank12:
- farjp RemoveItemByID
+ farcall RemoveItemByID
+ ret
CeladonMartRoofLittleGirlGiveHerWhichDrinkText:
text_far _CeladonMartRoofLittleGirlGiveHerWhichDrinkText
diff --git a/scripts/CeladonPokecenter.asm b/scripts/CeladonPokecenter.asm
index f2b0bf65..b9d73bc1 100644
--- a/scripts/CeladonPokecenter.asm
+++ b/scripts/CeladonPokecenter.asm
@@ -8,6 +8,7 @@ CeladonPokecenter_TextPointers:
dw_const CeladonPokecenterGentlemanText, TEXT_CELADONPOKECENTER_GENTLEMAN
dw_const CeladonPokecenterBeautyText, TEXT_CELADONPOKECENTER_BEAUTY
dw_const CeladonPokecenterLinkReceptionistText, TEXT_CELADONPOKECENTER_LINK_RECEPTIONIST
+ dw_const CeladonPokecenterChanseyText, TEXT_CELADONPOKECENTER_CHANSEY
CeladonPokecenterLinkReceptionistText:
script_cable_club_receptionist
@@ -22,3 +23,8 @@ CeladonPokecenterGentlemanText:
CeladonPokecenterBeautyText:
text_far _CeladonPokecenterBeautyText
text_end
+
+CeladonPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/CeruleanCave1F.asm b/scripts/CeruleanCave1F.asm
index d340f689..835c6977 100644
--- a/scripts/CeruleanCave1F.asm
+++ b/scripts/CeruleanCave1F.asm
@@ -3,6 +3,7 @@ CeruleanCave1F_Script:
CeruleanCave1F_TextPointers:
def_text_pointers
- dw_const PickUpItemText, TEXT_CERULEANCAVE1F_FULL_RESTORE
+ dw_const PickUpItemText, TEXT_CERULEANCAVE1F_RARE_CANDY
dw_const PickUpItemText, TEXT_CERULEANCAVE1F_MAX_ELIXER
- dw_const PickUpItemText, TEXT_CERULEANCAVE1F_NUGGET
+ dw_const PickUpItemText, TEXT_CERULEANCAVE1F_MAX_REVIVE
+ dw_const PickUpItemText, TEXT_CERULEANCAVE1F_ULTRA_BALL
diff --git a/scripts/CeruleanCave2F.asm b/scripts/CeruleanCave2F.asm
index de423343..7170c2a9 100644
--- a/scripts/CeruleanCave2F.asm
+++ b/scripts/CeruleanCave2F.asm
@@ -3,6 +3,7 @@ CeruleanCave2F_Script:
CeruleanCave2F_TextPointers:
def_text_pointers
- dw_const PickUpItemText, TEXT_CERULEANCAVE2F_PP_UP
+ dw_const PickUpItemText, TEXT_CERULEANCAVE2F_RARE_CANDY
dw_const PickUpItemText, TEXT_CERULEANCAVE2F_ULTRA_BALL
+ dw_const PickUpItemText, TEXT_CERULEANCAVE2F_MAX_REVIVE
dw_const PickUpItemText, TEXT_CERULEANCAVE2F_FULL_RESTORE
diff --git a/scripts/CeruleanCaveB1F.asm b/scripts/CeruleanCaveB1F.asm
index f35ee1e6..401ba44f 100644
--- a/scripts/CeruleanCaveB1F.asm
+++ b/scripts/CeruleanCaveB1F.asm
@@ -16,8 +16,10 @@ CeruleanCaveB1F_ScriptPointers:
CeruleanCaveB1F_TextPointers:
def_text_pointers
dw_const CeruleanCaveB1FMewtwoText, TEXT_CERULEANCAVEB1F_MEWTWO
- dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_ULTRA_BALL
+ dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_ULTRA_BALL1
+ dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_ULTRA_BALL2
dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_MAX_REVIVE
+ dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_MAX_ELIXER
CeruleanCaveB1FTrainerHeaders:
def_trainers
diff --git a/scripts/CeruleanCity.asm b/scripts/CeruleanCity.asm
index 4412b49c..0bc77b42 100644
--- a/scripts/CeruleanCity.asm
+++ b/scripts/CeruleanCity.asm
@@ -69,9 +69,7 @@ ENDC
ld a, [wWalkBikeSurfState]
and a
jr z, .walking
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.walking
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
@@ -141,23 +139,8 @@ CeruleanCityRivalBattleScript:
call SaveEndBattleTextPointers
ld a, OPP_RIVAL1
ld [wCurOpponent], a
-
- ; select which team to use during the encounter
- ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotSquirtle
- ld a, $7
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $8
- jr .done
-.Charmander
- ld a, $9
-.done
+ ld a, 3
ld [wTrainerNo], a
-
xor a
ldh [hJoyHeld], a
call CeruleanCityFaceRivalScript
@@ -176,9 +159,7 @@ CeruleanCityRivalDefeatedScript:
ld a, TEXT_CERULEANCITY_RIVAL
ldh [hTextID], a
call DisplayTextID
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, CERULEANCITY_RIVAL
ldh [hSpriteIndex], a
@@ -241,7 +222,7 @@ CeruleanCity_TextPointers:
dw_const CeruleanCitySuperNerd2Text, TEXT_CERULEANCITY_SUPER_NERD2
dw_const CeruleanCityGuardText, TEXT_CERULEANCITY_GUARD1
dw_const CeruleanCityCooltrainerF1Text, TEXT_CERULEANCITY_COOLTRAINER_F1
- dw_const CeruleanCitySlowbroText, TEXT_CERULEANCITY_SLOWBRO
+ dw_const CeruleanCityElectrodeText, TEXT_CERULEANCITY_ELECTRODE
dw_const CeruleanCityCooltrainerF2Text, TEXT_CERULEANCITY_COOLTRAINER_F2
dw_const CeruleanCitySuperNerd3Text, TEXT_CERULEANCITY_SUPER_NERD3
dw_const CeruleanCityGuardText, TEXT_CERULEANCITY_GUARD2
@@ -364,35 +345,35 @@ CeruleanCityCooltrainerF1Text:
ldh a, [hRandomAdd]
cp 180 ; 76/256 chance of 1st dialogue
jr c, .notFirstText
- ld hl, .SlowbroUseSonicboomText
+ ld hl, .ElectrodeUseSonicboomText
call PrintText
jr .end
.notFirstText
cp 100 ; 80/256 chance of 2nd dialogue
jr c, .notSecondText
- ld hl, .SlowbroPunchText
+ ld hl, .ElectrodePunchText
call PrintText
jr .end
.notSecondText
; 100/256 chance of 3rd dialogue
- ld hl, .SlowbroWithdrawText
+ ld hl, .ElectrodeWithdrawText
call PrintText
.end
jp TextScriptEnd
-.SlowbroUseSonicboomText:
- text_far _CeruleanCityCooltrainerF1SlowbroUseSonicboomText
+.ElectrodeUseSonicboomText:
+ text_far _CeruleanCityCooltrainerF1ElectrodeUseSonicboomText
text_end
-.SlowbroPunchText:
- text_far _CeruleanCityCooltrainerF1SlowbroPunchText
+.ElectrodePunchText:
+ text_far _CeruleanCityCooltrainerF1ElectrodePunchText
text_end
-.SlowbroWithdrawText:
- text_far _CeruleanCityCooltrainerF1SlowbroWithdrawText
+.ElectrodeWithdrawText:
+ text_far _CeruleanCityCooltrainerF1ElectrodeWithdrawText
text_end
-CeruleanCitySlowbroText:
+CeruleanCityElectrodeText:
text_asm
ldh a, [hRandomAdd]
cp 180 ; 76/256 chance of 1st dialogue
@@ -420,19 +401,19 @@ CeruleanCitySlowbroText:
jp TextScriptEnd
.TookASnoozeText:
- text_far _CeruleanCitySlowbroTookASnoozeText
+ text_far _CeruleanCityElectrodeTookASnoozeText
text_end
.IsLoafingAroundText:
- text_far _CeruleanCitySlowbroIsLoafingAroundText
+ text_far _CeruleanCityElectrodeIsLoafingAroundText
text_end
.TurnedAwayText:
- text_far _CeruleanCitySlowbroTurnedAwayText
+ text_far _CeruleanCityElectrodeTurnedAwayText
text_end
.IgnoredOrdersText:
- text_far _CeruleanCitySlowbroIgnoredOrdersText
+ text_far _CeruleanCityElectrodeIgnoredOrdersText
text_end
CeruleanCityCooltrainerF2Text:
diff --git a/scripts/CeruleanGym.asm b/scripts/CeruleanGym.asm
index 752891f9..a899fcc0 100644
--- a/scripts/CeruleanGym.asm
+++ b/scripts/CeruleanGym.asm
@@ -147,8 +147,6 @@ CeruleanGymMistyTM11NoRoomText:
CeruleanGymMistyReceivedCascadeBadgeText:
text_far _CeruleanGymMistyReceivedCascadeBadgeText
- sound_get_key_item ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
- text_promptbutton
text_end
CeruleanGymCooltrainerFText:
diff --git a/scripts/CeruleanMelaniesHouse.asm b/scripts/CeruleanMelaniesHouse.asm
new file mode 100644
index 00000000..1d2b817d
--- /dev/null
+++ b/scripts/CeruleanMelaniesHouse.asm
@@ -0,0 +1,107 @@
+CeruleanMelaniesHouse_Script:
+ call EnableAutoTextBoxDrawing
+ ret
+
+CeruleanMelaniesHouse_TextPointers:
+ def_text_pointers
+ dw_const CeruleanMelanieHouseMelanieText, TEXT_CERULEANMELANIESHOUSE_MELANIE
+ dw_const CeruleanMelanieHouseBulbasaurText, TEXT_CERULEANMELANIESHOUSE_BULBASAUR
+ dw_const CeruleanMelanieHouseOddishText, TEXT_CERULEANMELANIESHOUSE_ODDISH
+ dw_const CeruleanMelanieHouseSandshrewText, TEXT_CERULEANMELANIESHOUSE_SANDSHREW
+
+CeruleanMelanieHouseMelanieText:
+ text_asm
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ CheckEvent EVENT_GOT_BULBASAUR_IN_CERULEAN
+ jr nz, .asm_1cfbf
+ ld hl, CeruleanHouse1Text_1cfc8
+ call PrintText
+ ld a, [wPikachuHappiness]
+ cp 147
+ jr c, .asm_1cfb3
+ ld hl, CeruleanHouse1Text_1cfce
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_1cfb6
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, BULBASAUR
+ ld [wNamedObjectIndex], a
+ ld [wCurPartySpecies], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, BULBASAUR, 10
+ call GivePokemon
+ jr nc, .asm_1cfb3
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, CeruleanHouse1Text_1cfd3
+ call PrintText
+ ld a, HS_CERULEAN_BULBASAUR
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ SetEvent EVENT_GOT_BULBASAUR_IN_CERULEAN
+.asm_1cfb3
+ jp TextScriptEnd
+
+.asm_1cfb6
+ ld hl, CeruleanHouse1Text_1cfdf
+ call PrintText
+ jp TextScriptEnd
+
+.asm_1cfbf
+ ld hl, CeruleanHouse1Text_1cfd9
+ call PrintText
+ jp TextScriptEnd
+
+CeruleanHouse1Text_1cfc8:
+ text_far MelanieText1
+ text_waitbutton
+ text_end
+
+CeruleanHouse1Text_1cfce:
+ text_far MelanieText2
+ text_end
+
+CeruleanHouse1Text_1cfd3:
+ text_far MelanieText3
+ text_waitbutton
+ text_end
+
+CeruleanHouse1Text_1cfd9:
+ text_far MelanieText4
+ text_waitbutton
+ text_end
+
+CeruleanHouse1Text_1cfdf:
+ text_far MelanieText5
+ text_waitbutton
+ text_end
+
+CeruleanMelanieHouseBulbasaurText:
+ text_far MelanieBulbasaurText
+ text_asm
+ ld a, BULBASAUR
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanMelanieHouseOddishText:
+ text_far MelanieOddishText
+ text_asm
+ ld a, ODDISH
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanMelanieHouseSandshrewText:
+ text_far MelanieSandshrewText
+ text_asm
+ ld a, SANDSHREW
+ call PlayCry
+ jp TextScriptEnd
diff --git a/scripts/CeruleanPokecenter.asm b/scripts/CeruleanPokecenter.asm
index e143efb2..65154e43 100644
--- a/scripts/CeruleanPokecenter.asm
+++ b/scripts/CeruleanPokecenter.asm
@@ -8,6 +8,7 @@ CeruleanPokecenter_TextPointers:
dw_const CeruleanPokecenterSuperNerdText, TEXT_CERULEANPOKECENTER_SUPER_NERD
dw_const CeruleanPokecenterGentlemanText, TEXT_CERULEANPOKECENTER_GENTLEMAN
dw_const CeruleanPokecenterLinkReceptionistText, TEXT_CERULEANPOKECENTER_LINK_RECEPTIONIST
+ dw_const CeruleanPokecenterChanseyText, TEXT_CERULEANPOKECENTER_CHANSEY
CeruleanPokecenterLinkReceptionistText:
script_cable_club_receptionist
@@ -22,3 +23,8 @@ CeruleanPokecenterSuperNerdText:
CeruleanPokecenterGentlemanText:
text_far _CeruleanPokecenterGentlemanText
text_end
+
+CeruleanPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/CeruleanTradeHouse.asm b/scripts/CeruleanTradeHouse.asm
deleted file mode 100644
index d2301693..00000000
--- a/scripts/CeruleanTradeHouse.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-CeruleanTradeHouse_Script:
- jp EnableAutoTextBoxDrawing
-
-CeruleanTradeHouse_TextPointers:
- def_text_pointers
- dw_const CeruleanTradeHouseGrannyText, TEXT_CERULEANTRADEHOUSE_GRANNY
- dw_const CeruleanTradeHouseGamblerText, TEXT_CERULEANTRADEHOUSE_GAMBLER
-
-CeruleanTradeHouseGrannyText:
- text_far _CeruleanTradeHouseGrannyText
- text_end
-
-CeruleanTradeHouseGamblerText:
- text_asm
- ld a, TRADE_FOR_LOLA
- ld [wWhichTrade], a
- predef DoInGameTradeDialogue
- jp TextScriptEnd
diff --git a/scripts/ChampionsRoom.asm b/scripts/ChampionsRoom.asm
index 68448b3d..8db95e56 100644
--- a/scripts/ChampionsRoom.asm
+++ b/scripts/ChampionsRoom.asm
@@ -2,7 +2,8 @@ ChampionsRoom_Script:
call EnableAutoTextBoxDrawing
ld hl, ChampionsRoom_ScriptPointers
ld a, [wChampionsRoomCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
ResetRivalScript:
xor a ; SCRIPT_CHAMPIONSROOM_DEFAULT
@@ -70,18 +71,7 @@ ChampionsRoomRivalReadyToBattleScript:
; select which team to use during the encounter
ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotStarter2
- ld a, $1
- jr .saveTrainerId
-.NotStarter2
- cp STARTER3
- jr nz, .NotStarter3
- ld a, $2
- jr .saveTrainerId
-.NotStarter3
- ld a, $3
-.saveTrainerId
+ add $0 ; Wow GameFreak
ld [wTrainerNo], a
xor a
diff --git a/scripts/CinnabarGym.asm b/scripts/CinnabarGym.asm
index a4fc3c9d..fd3ceda1 100644
--- a/scripts/CinnabarGym.asm
+++ b/scripts/CinnabarGym.asm
@@ -42,6 +42,9 @@ CinnabarGymSetTrainerHeader:
ld [wTrainerHeaderFlagBit], a
ret
+CinnabarGymFlagAction:
+ predef_jump FlagActionPredef
+
CinnabarGym_ScriptPointers:
def_script_pointers
dw_const CinnabarGymDefaultScript, SCRIPT_CINNABARGYM_DEFAULT
@@ -58,12 +61,18 @@ CinnabarGymDefaultScript:
jr nz, .not_super_nerd3
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
+ ld hl, PikachuMovementData_74f97
+ ld b, SPRITE_FACING_DOWN
+ call CinnabarGymScript_74fa3
ld de, MovementNpcToLeftAndUp
jr .MoveSprite
.not_super_nerd3
- ld de, MovementNpcToLeft
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
+ ld hl, PikachuMovementData_74f9e
+ ld b, SPRITE_FACING_RIGHT
+ call CinnabarGymScript_74fa3
+ ld de, MovementNpcToLeft
.MoveSprite
call MoveSprite
ld a, SCRIPT_CINNABARGYM_GET_OPPONENT_TEXT
@@ -76,10 +85,39 @@ MovementNpcToLeftAndUp:
db NPC_MOVEMENT_UP
db -1 ; end
+PikachuMovementData_74f97:
+ db $00
+ db $20
+ db $1e
+ db $35
+ db $3f
+
MovementNpcToLeft:
db NPC_MOVEMENT_LEFT
db -1 ; end
+PikachuMovementData_74f9e:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
+
+CinnabarGymScript_74fa3:
+ ld a, [wd471]
+ bit 7, a
+ ret z
+ push hl
+ push bc
+ callfar GetPikachuFacingDirectionAndReturnToE
+ pop bc
+ pop hl
+ ld a, b
+ cp e
+ ret nz
+ call ApplyPikachuMovementData
+ ret
+
CinnabarGymGetOpponentTextScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
@@ -91,52 +129,74 @@ CinnabarGymGetOpponentTextScript:
ldh [hTextID], a
jp DisplayTextID
-CinnabarGymFlagAction:
- predef_jump FlagActionPredef
-
CinnabarGymOpenGateScript:
+ call CinnabarGymScript_753e9
ld a, [wIsInBattle]
cp $ff
jp z, CinnabarGymResetScripts
ld a, [wTrainerHeaderFlagBit]
- ldh [hGymGateIndex], a
- AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
+ sub $2
ld c, a
ld b, FLAG_TEST
- EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
+ EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
call CinnabarGymFlagAction
ld a, c
and a
jr nz, .no_sound
+ ld a, [wTrainerHeaderFlagBit]
+ cp 2
+ jr z, .no_sound
+ ld c, 30
+ call DelayFrames
+ call CinnabarGymScript_75023
+ call CinnabarGymScript_75041
call WaitForSoundToFinish
ld a, SFX_GO_INSIDE
call PlaySound
call WaitForSoundToFinish
+ jr .asm_75013
.no_sound
+ call CinnabarGymScript_75023
+ call CinnabarGymScript_75041
+.asm_75013
+ xor a
+ ld [wJoyIgnore], a
+ ld [wOpponentAfterWrongAnswer], a
+ ld a, SCRIPT_CINNABARGYM_DEFAULT
+ ld [wCinnabarGymCurScript], a
+ ld [wCurMapScript], a
+ ret
+
+CinnabarGymScript_75023:
ld a, [wTrainerHeaderFlagBit]
ldh [hGymGateIndex], a
- AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
ld c, a
ld b, FLAG_SET
EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
call CinnabarGymFlagAction
+ ret
+
+CinnabarGymScript_75032:
ld a, [wTrainerHeaderFlagBit]
- sub $2
- AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
+ ldh [hGymGateIndex], a
+ ld c, a
+ ld b, FLAG_TEST
+ EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
+ call CinnabarGymFlagAction
+ ret
+
+CinnabarGymScript_75041:
+ ld a, [wTrainerHeaderFlagBit]
+ sub 2
ld c, a
ld b, FLAG_SET
EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
call CinnabarGymFlagAction
call UpdateCinnabarGymGateTileBlocks
- xor a
- ld [wJoyIgnore], a
- ld [wOpponentAfterWrongAnswer], a
- ld a, SCRIPT_CINNABARGYM_DEFAULT
- ld [wCinnabarGymCurScript], a
- ld [wCurMapScript], a
ret
CinnabarGymBlainePostBattleScript:
+ call CinnabarGymScript_753e9
ld a, [wIsInBattle]
cp $ff
jp z, CinnabarGymResetScripts
@@ -293,6 +353,13 @@ CinnabarGymSuperNerd2:
call CinnabarGymSetTrainerHeader
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_1
jr nz, .defeated
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75196
+ CheckEvent EVENT_CINNABAR_GYM_GATE1_UNLOCKED
+ jr nz, .asm_75196
+ ld e, $00
+ jp CinnabarGymScript_753de
+.asm_75196
ld hl, .BattleText
call PrintText
ld hl, .EndBattleText
@@ -321,6 +388,13 @@ CinnabarGymSuperNerd3:
call CinnabarGymSetTrainerHeader
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_2
jr nz, .defeated
+ call CinnabarGymScript_753f3
+ jr nz, .asm_751dc
+ CheckEvent EVENT_CINNABAR_GYM_GATE2_UNLOCKED
+ jr nz, .asm_751dc
+ ld e, $1
+ jp CinnabarGymScript_753de
+.asm_751dc
ld hl, .BattleText
call PrintText
ld hl, .EndBattleText
@@ -349,6 +423,13 @@ CinnabarGymSuperNerd4:
call CinnabarGymSetTrainerHeader
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_3
jr nz, .defeated
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75222
+ CheckEvent EVENT_CINNABAR_GYM_GATE3_UNLOCKED
+ jr nz, .asm_75222
+ ld e, $2
+ jp CinnabarGymScript_753de
+.asm_75222
ld hl, .BattleText
call PrintText
ld hl, .EndBattleText
@@ -377,6 +458,13 @@ CinnabarGymSuperNerd5:
call CinnabarGymSetTrainerHeader
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_4
jr nz, .defeated
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75222
+ CheckEvent EVENT_CINNABAR_GYM_GATE4_UNLOCKED
+ jr nz, .asm_75222
+ ld e, $3
+ jp CinnabarGymScript_753de
+.asm_75222
ld hl, .BattleText
call PrintText
ld hl, .EndBattleText
@@ -405,6 +493,13 @@ CinnabarGymSuperNerd6:
call CinnabarGymSetTrainerHeader
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_5
jr nz, .defeated
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75222
+ CheckEvent EVENT_CINNABAR_GYM_GATE5_UNLOCKED
+ jr nz, .asm_75222
+ ld e, $4
+ jp CinnabarGymScript_753de
+.asm_75222
ld hl, .BattleText
call PrintText
ld hl, .EndBattleText
@@ -433,6 +528,13 @@ CinnabarGymSuperNerd7:
call CinnabarGymSetTrainerHeader
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_6
jr nz, .defeated
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75222
+ CheckEvent EVENT_CINNABAR_GYM_GATE6_UNLOCKED
+ jr nz, .asm_75222
+ ld e, $5
+ jp CinnabarGymScript_753de
+.asm_75222
ld hl, .BattleText
call PrintText
ld hl, .EndBattleText
@@ -458,20 +560,5 @@ CinnabarGymSuperNerd7:
CinnabarGymGymGuideText:
text_asm
- CheckEvent EVENT_BEAT_BLAINE
- jr nz, .afterBeat
- ld hl, .ChampInMakingText
- jr .done
-.afterBeat
- ld hl, .BeatBlaineText
-.done
- call PrintText
+ callfar CinnabarGymPrintGymGuideText
jp TextScriptEnd
-
-.ChampInMakingText:
- text_far _CinnabarGymGymGuideChampInMakingText
- text_end
-
-.BeatBlaineText:
- text_far _CinnabarGymGymGuideBeatBlaineText
- text_end
diff --git a/scripts/CinnabarGym_2.asm b/scripts/CinnabarGym_2.asm
new file mode 100644
index 00000000..9a59eec4
--- /dev/null
+++ b/scripts/CinnabarGym_2.asm
@@ -0,0 +1,18 @@
+CinnabarGymScript_753de:
+ callfar Func_f2150
+ jp TextScriptEnd
+
+CinnabarGymScript_753e9:
+ push hl
+ ld hl, wd474
+ bit 7, [hl]
+ res 7, [hl]
+ pop hl
+ ret
+
+CinnabarGymScript_753f3:
+ push hl
+ ld hl, wd474
+ bit 7, [hl]
+ pop hl
+ ret
diff --git a/scripts/CinnabarGym_3.asm b/scripts/CinnabarGym_3.asm
new file mode 100644
index 00000000..a738de89
--- /dev/null
+++ b/scripts/CinnabarGym_3.asm
@@ -0,0 +1,64 @@
+CinnabarGymPrintGymGuideText::
+ CheckEvent EVENT_BEAT_BLAINE
+ jr nz, .afterBeat
+ ld hl, .ChampInMakingText
+ jr .done
+.afterBeat
+ ld hl, .BeatBlaineText
+.done
+ call PrintText
+ ret
+
+.ChampInMakingText:
+ text_far _CinnabarGymGymGuideChampInMakingText
+ text_end
+
+.BeatBlaineText:
+ text_far _CinnabarGymGymGuideBeatBlaineText
+ text_end
+
+Func_f2150::
+ ld hl, TextPointers_f215d
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp PrintText
+
+TextPointers_f215d:
+ dw CinnabarGymText_f2169
+ dw CinnabarGymText_f216e
+ dw CinnabarGymText_f2173
+ dw CinnabarGymText_f2178
+ dw CinnabarGymText_f217d
+ dw CinnabarGymText_f2182
+
+CinnabarGymText_f2169:
+ text_far _CinnabarGymText_1
+ text_end
+
+CinnabarGymText_f216e:
+ text_far _CinnabarGymText_2
+ text_end
+
+CinnabarGymText_f2173:
+ text_far _CinnabarGymText_3
+ text_end
+
+CinnabarGymText_f2178:
+ text_far _CinnabarGymText_4
+ text_end
+
+CinnabarGymText_f217d:
+ text_far _CinnabarGymText_5
+ text_end
+
+CinnabarGymText_f2182:
+ text_far _CinnabarGymText_6
+ text_end
+
+CinnabarGymText_f2187:
+ text_far _CinnabarGymText_7 ; unused
+ text_end
diff --git a/scripts/CinnabarLabFossilRoom.asm b/scripts/CinnabarLabFossilRoom.asm
index e5928144..daa14412 100644
--- a/scripts/CinnabarLabFossilRoom.asm
+++ b/scripts/CinnabarLabFossilRoom.asm
@@ -100,7 +100,7 @@ CinnabarLabFossilRoomScientist1Text:
CinnabarLabFossilRoomScientist2Text:
text_asm
- ld a, TRADE_FOR_SAILOR
+ ld a, TRADE_FOR_STICKY
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
diff --git a/scripts/CinnabarLabTradeRoom.asm b/scripts/CinnabarLabTradeRoom.asm
index ad40f2fe..452aff5d 100644
--- a/scripts/CinnabarLabTradeRoom.asm
+++ b/scripts/CinnabarLabTradeRoom.asm
@@ -13,13 +13,13 @@ CinnabarLabTradeRoomSuperNerdText:
CinnabarLabTradeRoomGrampsText:
text_asm
- ld a, TRADE_FOR_DORIS
+ ld a, TRADE_FOR_BUFFY
ld [wWhichTrade], a
jr CinnabarLabTradeRoomDoTrade
CinnabarLabTradeRoomBeautyText:
text_asm
- ld a, TRADE_FOR_CRINKLES
+ ld a, TRADE_FOR_CEZANNE
ld [wWhichTrade], a
CinnabarLabTradeRoomDoTrade:
predef DoInGameTradeDialogue
diff --git a/scripts/CinnabarPokecenter.asm b/scripts/CinnabarPokecenter.asm
index 736d4a8c..8197a94d 100644
--- a/scripts/CinnabarPokecenter.asm
+++ b/scripts/CinnabarPokecenter.asm
@@ -8,6 +8,7 @@ CinnabarPokecenter_TextPointers:
dw_const CinnabarPokecenterCooltrainerFText, TEXT_CINNABARPOKECENTER_COOLTRAINER_F
dw_const CinnabarPokecenterGentlemanText, TEXT_CINNABARPOKECENTER_GENTLEMAN
dw_const CinnabarPokecenterLinkReceptionistText, TEXT_CINNABARPOKECENTER_LINK_RECEPTIONIST
+ dw_const CinnabarPokecenterChanseyText, TEXT_CINNABARPOKECENTER_CHANSEY
CinnabarPokecenterNurseText:
script_pokecenter_nurse
@@ -22,3 +23,8 @@ CinnabarPokecenterGentlemanText:
CinnabarPokecenterLinkReceptionistText:
script_cable_club_receptionist
+
+CinnabarPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/Daycare.asm b/scripts/Daycare.asm
index 05b69935..f9c41edf 100644
--- a/scripts/Daycare.asm
+++ b/scripts/Daycare.asm
@@ -51,11 +51,21 @@ DaycareGentlemanText:
ld a, PARTY_TO_DAYCARE
ld [wMoveMonType], a
call MoveMon
+ callfar IsThisPartyMonStarterPikachu
+ push af
xor a
ld [wRemoveMonFromBox], a
call RemovePokemon
+ pop af
+ jr c, .depositedPikachuIntoDayCare
ld a, [wCurPartySpecies]
call PlayCry
+ jr .asm_562e3
+
+.depositedPikachuIntoDayCare
+ ldpikacry e, PikachuCry28
+ callfar PlayPikachuSoundClip
+.asm_562e3
ld hl, .ComeSeeMeInAWhileText
jp .done
@@ -198,8 +208,27 @@ DaycareGentlemanText:
ld a, [hl]
ld [de], a
+ ld a, [wPartyCount]
+ dec a
+ ld [wWhichPokemon], a
+ callfar IsThisPartyMonStarterPikachu
+ jr c, .withdrewPikachuFromDayCare
ld a, [wCurPartySpecies]
call PlayCry
+ jr .asm_56430
+
+.withdrewPikachuFromDayCare
+ ld a, $6
+ ld [wPikachuSpawnState], a
+
+ ; GameFreak... TriHard
+ ld hl, SchedulePikachuSpawnForAfterText
+ ld b, BANK(SchedulePikachuSpawnForAfterText)
+ ld hl, Bankswitch
+
+ ldpikacry e, PikachuCry35
+ callfar PlayPikachuSoundClip
+.asm_56430
ld hl, .GotMonBackText
jr .done
diff --git a/scripts/FuchsiaMart.asm b/scripts/FuchsiaMart.asm
index abb61302..b575d4b3 100644
--- a/scripts/FuchsiaMart.asm
+++ b/scripts/FuchsiaMart.asm
@@ -1,5 +1,6 @@
FuchsiaMart_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
FuchsiaMart_TextPointers:
def_text_pointers
diff --git a/scripts/FuchsiaPokecenter.asm b/scripts/FuchsiaPokecenter.asm
index 7c0d3def..6b13e224 100644
--- a/scripts/FuchsiaPokecenter.asm
+++ b/scripts/FuchsiaPokecenter.asm
@@ -8,6 +8,7 @@ FuchsiaPokecenter_TextPointers:
dw_const FuchsiaPokecenterRockerText, TEXT_FUCHSIAPOKECENTER_ROCKER
dw_const FuchsiaPokecenterCooltrainerFText, TEXT_FUCHSIAPOKECENTER_COOLTRAINER_F
dw_const FuchsiaPokecenterLinkReceptionistText, TEXT_FUCHSIAPOKECENTER_LINK_RECEPTIONIST
+ dw_const FuchsiaPokecenterChanseyText, TEXT_FUCHSIAPOKECENTER_CHANSEY
FuchsiaPokecenterNurseText:
script_pokecenter_nurse
@@ -22,3 +23,8 @@ FuchsiaPokecenterCooltrainerFText:
FuchsiaPokecenterLinkReceptionistText:
script_cable_club_receptionist
+
+FuchsiaPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/GameCorner.asm b/scripts/GameCorner.asm
index 028b5c88..5aaa998c 100644
--- a/scripts/GameCorner.asm
+++ b/scripts/GameCorner.asm
@@ -72,8 +72,12 @@ GameCornerRocketBattleScript:
.not_direct_movement
ld a, [wXCoord]
cp 8
- jr nz, .got_rocket_movement
+ jr nz, .pikachu
ld de, GameCornerMovement_Rocket_WalkDirect
+ jr .got_rocket_movement
+.pikachu
+ callfar GameCornerPikachuMovementScript
+ ld de, GameCornerMovement_Rocket_WalkAroundPlayer
.got_rocket_movement
ld a, GAMECORNER_ROCKET
ldh [hSpriteIndex], a
@@ -86,8 +90,8 @@ GameCornerMovement_Rocket_WalkAroundPlayer:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_UP
db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_UP
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
@@ -120,15 +124,15 @@ GameCornerRocketExitScript:
GameCorner_TextPointers:
def_text_pointers
dw_const GameCornerBeauty1Text, TEXT_GAMECORNER_BEAUTY1
- dw_const GameCornerClerk1Text, TEXT_GAMECORNER_CLERK1
+ dw_const GameCornerClerkText, TEXT_GAMECORNER_CLERK
dw_const GameCornerMiddleAgedMan1Text, TEXT_GAMECORNER_MIDDLE_AGED_MAN1
dw_const GameCornerBeauty2Text, TEXT_GAMECORNER_BEAUTY2
- dw_const GameCornerFishingGuruText, TEXT_GAMECORNER_FISHING_GURU
+ dw_const GameCornerFishingGuru1Text, TEXT_GAMECORNER_FISHING_GURU1
dw_const GameCornerMiddleAgedWomanText, TEXT_GAMECORNER_MIDDLE_AGED_WOMAN
dw_const GameCornerGymGuideText, TEXT_GAMECORNER_GYM_GUIDE
dw_const GameCornerGamblerText, TEXT_GAMECORNER_GAMBLER
- dw_const GameCornerClerk2Text, TEXT_GAMECORNER_CLERK2
- dw_const GameCornerGentlemanText, TEXT_GAMECORNER_GENTLEMAN
+ dw_const GameCornerMiddleAgedMan2Text, TEXT_GAMECORNER_MIDDLE_AGED_MAN2
+ dw_const GameCornerFishingGuru2Text, TEXT_GAMECORNER_FISHING_GURU2
dw_const GameCornerRocketText, TEXT_GAMECORNER_ROCKET
dw_const GameCornerPosterText, TEXT_GAMECORNER_POSTER
dw_const GameCornerRocketAfterBattleText, TEXT_GAMECORNER_ROCKET_AFTER_BATTLE
@@ -137,7 +141,7 @@ GameCornerBeauty1Text:
text_far _GameCornerBeauty1Text
text_end
-GameCornerClerk1Text:
+GameCornerClerkText:
text_asm
; Show player's coins
call GameCornerDrawCoinBox
@@ -203,27 +207,27 @@ GameCornerClerk1Text:
jp TextScriptEnd
.DoYouNeedSomeGameCoins:
- text_far _GameCornerClerk1DoYouNeedSomeGameCoinsText
+ text_far _GameCornerClerkDoYouNeedSomeGameCoinsText
text_end
.ThanksHereAre50Coins:
- text_far _GameCornerClerk1ThanksHereAre50CoinsText
+ text_far _GameCornerClerkThanksHereAre50CoinsText
text_end
.PleaseComePlaySometime:
- text_far _GameCornerClerk1PleaseComePlaySometimeText
+ text_far _GameCornerClerkPleaseComePlaySometimeText
text_end
.CantAffordTheCoins:
- text_far _GameCornerClerk1CantAffordTheCoinsText
+ text_far _GameCornerClerkCantAffordTheCoinsText
text_end
.CoinCaseIsFull:
- text_far _GameCornerClerk1CoinCaseIsFullText
+ text_far _GameCornerClerkCoinCaseIsFullText
text_end
.DontHaveCoinCase:
- text_far _GameCornerClerk1DontHaveCoinCaseText
+ text_far _GameCornerClerkDontHaveCoinCaseText
text_end
GameCornerMiddleAgedMan1Text:
@@ -234,7 +238,7 @@ GameCornerBeauty2Text:
text_far _GameCornerBeauty2Text
text_end
-GameCornerFishingGuruText:
+GameCornerFishingGuru1Text:
text_asm
CheckEvent EVENT_GOT_10_COINS
jr nz, .alreadyGotNpcCoins
@@ -272,20 +276,20 @@ GameCornerFishingGuruText:
jp TextScriptEnd
.WantToPlayText:
- text_far _GameCornerFishingGuruWantToPlayText
+ text_far _GameCornerFishingGuru1WantToPlayText
text_end
.Received10CoinsText:
- text_far _GameCornerFishingGuruReceived10CoinsText
+ text_far _GameCornerFishingGuru1Received10CoinsText
sound_get_item_1
text_end
.DontNeedMyCoinsText:
- text_far _GameCornerFishingGuruDontNeedMyCoinsText
+ text_far _GameCornerFishingGuru1DontNeedMyCoinsText
text_end
.WinsComeAndGoText:
- text_far _GameCornerFishingGuruWinsComeAndGoText
+ text_far _GameCornerFishingGuru1WinsComeAndGoText
text_end
GameCornerMiddleAgedWomanText:
@@ -314,7 +318,7 @@ GameCornerGamblerText:
text_far _GameCornerGamblerText
text_end
-GameCornerClerk2Text:
+GameCornerMiddleAgedMan2Text:
text_asm
CheckEvent EVENT_GOT_20_COINS_2
jr nz, .alreadyGotNpcCoins
@@ -350,23 +354,23 @@ GameCornerClerk2Text:
jp TextScriptEnd
.WantSomeCoinsText:
- text_far _GameCornerClerk2WantSomeCoinsText
+ text_far _GameCornerMiddleAgedMan2WantSomeCoinsText
text_end
.Received20CoinsText:
- text_far _GameCornerClerk2Received20CoinsText
+ text_far _GameCornerMiddleAgedMan2Received20CoinsText
sound_get_item_1
text_end
.YouHaveLotsOfCoinsText:
- text_far _GameCornerClerk2YouHaveLotsOfCoinsText
+ text_far _GameCornerMiddleAgedMan2YouHaveLotsOfCoinsText
text_end
.INeedMoreCoinsText:
- text_far _GameCornerClerk2INeedMoreCoinsText
+ text_far _GameCornerMiddleAgedMan2INeedMoreCoinsText
text_end
-GameCornerGentlemanText:
+GameCornerFishingGuru2Text:
text_asm
CheckEvent EVENT_GOT_20_COINS
jr nz, .alreadyGotNpcCoins
@@ -402,20 +406,20 @@ GameCornerGentlemanText:
jp TextScriptEnd
.ThrowingMeOffText:
- text_far _GameCornerGentlemanThrowingMeOffText
+ text_far _GameCornerFishingGuru2ThrowingMeOffText
text_end
.Received20CoinsText:
- text_far _GameCornerGentlemanReceived20CoinsText
+ text_far _GameCornerFishingGuru2Received20CoinsText
sound_get_item_1
text_end
.YouGotYourOwnCoinsText:
- text_far _GameCornerGentlemanYouGotYourOwnCoinsText
+ text_far _GameCornerFishingGuru2YouGotYourOwnCoinsText
text_end
.CloselyWatchTheReelsText:
- text_far _GameCornerGentlemanCloselyWatchTheReelsText
+ text_far _GameCornerFishingGuru2CloselyWatchTheReelsText
text_end
GameCornerRocketText:
@@ -485,13 +489,11 @@ GameCornerDrawCoinBox:
ld hl, wStatusFlags5
set BIT_NO_TEXT_DELAY, [hl]
hlcoord 11, 0
- ld b, 5
- ld c, 7
+ lb bc, 5, 7
call TextBoxBorder
call UpdateSprites
hlcoord 12, 1
- ld b, 4
- ld c, 7
+ lb bc, 4, 7
call ClearScreenArea
hlcoord 12, 2
ld de, GameCornerMoneyText
diff --git a/scripts/GameCorner_2.asm b/scripts/GameCorner_2.asm
new file mode 100644
index 00000000..0569ec0f
--- /dev/null
+++ b/scripts/GameCorner_2.asm
@@ -0,0 +1,12 @@
+GameCornerPikachuMovementScript::
+ ld hl, GameCornerPikachuMovementData
+ ld b, SPRITE_FACING_DOWN
+ call TryApplyPikachuMovementData
+ ret
+
+GameCornerPikachuMovementData:
+ db $00
+ db $20
+ db $1e
+ db $35
+ db $3f
diff --git a/scripts/IndigoPlateauLobby.asm b/scripts/IndigoPlateauLobby.asm
index 8ac87030..ee757ef7 100644
--- a/scripts/IndigoPlateauLobby.asm
+++ b/scripts/IndigoPlateauLobby.asm
@@ -21,6 +21,7 @@ IndigoPlateauLobby_TextPointers:
dw_const IndigoPlateauLobbyCooltrainerFText, TEXT_INDIGOPLATEAULOBBY_COOLTRAINER_F
dw_const IndigoPlateauLobbyClerkText, TEXT_INDIGOPLATEAULOBBY_CLERK
dw_const IndigoPlateauLobbyLinkReceptionistText, TEXT_INDIGOPLATEAULOBBY_LINK_RECEPTIONIST
+ dw_const IndigoPlateauLobbyChanseyText, TEXT_INDIGOPLATEAULOBBY_CHANSEY
IndigoPlateauLobbyNurseText:
script_pokecenter_nurse
@@ -35,3 +36,8 @@ IndigoPlateauLobbyCooltrainerFText:
IndigoPlateauLobbyLinkReceptionistText:
script_cable_club_receptionist
+
+IndigoPlateauLobbyChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/LancesRoom.asm b/scripts/LancesRoom.asm
index 0a040ea6..f54a0511 100644
--- a/scripts/LancesRoom.asm
+++ b/scripts/LancesRoom.asm
@@ -109,7 +109,7 @@ WalkToLance:
ret
WalkToLance_RLEList:
- db PAD_UP, 12
+ db PAD_UP, 13
db PAD_LEFT, 12
db PAD_DOWN, 7
db PAD_LEFT, 6
diff --git a/scripts/LavenderPokecenter.asm b/scripts/LavenderPokecenter.asm
index 6bcc330b..8d92c3af 100644
--- a/scripts/LavenderPokecenter.asm
+++ b/scripts/LavenderPokecenter.asm
@@ -8,6 +8,7 @@ LavenderPokecenter_TextPointers:
dw_const LavenderPokecenterGentlemanText, TEXT_LAVENDERPOKECENTER_GENTLEMAN
dw_const LavenderPokecenterLittleGirlText, TEXT_LAVENDERPOKECENTER_LITTLE_GIRL
dw_const LavenderPokecenterLinkReceptionistText, TEXT_LAVENDERPOKECENTER_LINK_RECEPTIONIST
+ dw_const LavenderPokecenterChanseyText, TEXT_LAVENDERPOKECENTER_CHANSEY
LavenderPokecenterLinkReceptionistText:
script_cable_club_receptionist
@@ -22,3 +23,8 @@ LavenderPokecenterGentlemanText:
LavenderPokecenterLittleGirlText:
text_far _LavenderPokecenterLittleGirlText
text_end
+
+LavenderPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/MtMoon1F.asm b/scripts/MtMoon1F.asm
index 43ab3e3f..260f7b93 100644
--- a/scripts/MtMoon1F.asm
+++ b/scripts/MtMoon1F.asm
@@ -51,42 +51,37 @@ MtMoon1TrainerHeader6:
MtMoon1FHikerText:
text_asm
ld hl, MtMoon1TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1FYoungster1Text:
text_asm
ld hl, MtMoon1TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1FCooltrainerF1Text:
text_asm
ld hl, MtMoon1TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1FSuperNerdText:
text_asm
ld hl, MtMoon1TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1FCooltrainerF2Text:
text_asm
ld hl, MtMoon1TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1FYoungster2Text:
text_asm
ld hl, MtMoon1TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1FYoungster3Text:
text_asm
ld hl, MtMoon1TrainerHeader6
+MtMoon1TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
diff --git a/scripts/MtMoonB2F.asm b/scripts/MtMoonB2F.asm
index 34f11d99..4b82ea12 100644
--- a/scripts/MtMoonB2F.asm
+++ b/scripts/MtMoonB2F.asm
@@ -38,12 +38,22 @@ MtMoonB2FFossilAreaCoords:
db -1 ; end
MtMoonB2FResetScripts:
- xor a ; SCRIPT_MTMOONB2F_DEFAULT
+ CheckAndResetEvent EVENT_57E
+ call nz, MtMoonB2FScript_HideJessieJames
+ xor a
ld [wJoyIgnore], a
+MtMoonB2FSetScript:
ld [wMtMoonB2FCurScript], a
ld [wCurMapScript], a
ret
+MtMoonB2FScript_HideJessieJames:
+ ld a, HS_MT_MOON_B2F_JESSIE
+ call MtMoonB2FScript_HideObject
+ ld a, HS_MT_MOON_B2F_JAMES
+ call MtMoonB2FScript_HideObject
+ ret
+
MtMoonB2F_ScriptPointers:
def_script_pointers
dw_const MtMoonB2FDefaultScript, SCRIPT_MTMOONB2F_DEFAULT
@@ -52,23 +62,45 @@ MtMoonB2F_ScriptPointers:
dw_const MtMoonB2FDefeatedSuperNerdScript, SCRIPT_MTMOONB2F_DEFEATED_SUPER_NERD
dw_const MtMoonB2FMoveSuperNerdScript, SCRIPT_MTMOONB2F_MOVE_SUPER_NERD
dw_const MtMoonB2FSuperNerdTakesOtherFossilScript, SCRIPT_MTMOONB2F_SUPER_NERD_TAKES_OTHER_FOSSIL
+ dw_const MtMoonB2FScript6, SCRIPT_MTMOONB2F_SCRIPT6
+ dw_const MtMoonB2FScript7, SCRIPT_MTMOONB2F_SCRIPT7
+ dw_const MtMoonB2FScript8, SCRIPT_MTMOONB2F_SCRIPT8
+ dw_const MtMoonB2FScript9, SCRIPT_MTMOONB2F_SCRIPT9
+ dw_const MtMoonB2FScript10, SCRIPT_MTMOONB2F_SCRIPT10
+ dw_const MtMoonB2FScript11, SCRIPT_MTMOONB2F_SCRIPT11
+ dw_const MtMoonB2FScript12, SCRIPT_MTMOONB2F_SCRIPT12
+ dw_const MtMoonB2FScript13, SCRIPT_MTMOONB2F_SCRIPT13
+ dw_const MtMoonB2FScript14, SCRIPT_MTMOONB2F_SCRIPT14
+ dw_const MtMoonB2FScript15, SCRIPT_MTMOONB2F_SCRIPT15
MtMoonB2FDefaultScript:
+IF DEF(_DEBUG)
+ call DebugPressedOrHeldB
+ ret nz
+ENDC
+ CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
+ call z, MtMoonB2FScript_49d28
+ CheckEvent EVENT_BEAT_MT_MOON_3_JESSIE_JAMES
+ call z, MtMoonB2FScript_49e15
+ ret
+
+MtMoonB2FScript_49d28:
CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
- jp nz, MtMoonB2FCheckGotAFossil
+ jp nz, .asm_49d4b
ld a, [wYCoord]
cp 8
- jp nz, MtMoonB2FCheckGotAFossil
+ jp nz, .asm_49d4b
ld a, [wXCoord]
cp 13
- jp nz, MtMoonB2FCheckGotAFossil
+ jp nz, .asm_49d4b
xor a
ldh [hJoyHeld], a
ld a, TEXT_MTMOONB2F_SUPER_NERD
ldh [hTextID], a
- jp DisplayTextID
+ call DisplayTextID
+ ret
-MtMoonB2FCheckGotAFossil:
+.asm_49d4b
CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
jp z, CheckFightingMapTrainers
ret
@@ -83,48 +115,84 @@ MtMoonB2FDefeatedSuperNerdScript:
xor a
ld [wJoyIgnore], a
ld a, SCRIPT_MTMOONB2F_DEFAULT
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoonB2FSetScript
ret
MtMoonB2FMoveSuperNerdScript:
ld a, MTMOONB2F_SUPER_NERD
ldh [hSpriteIndex], a
call SetSpriteMovementBytesToFF
- ld hl, MtMoonB2FPlayerNearDomeFossilCoords
+ ld hl, CoordsData_49dc7
+ call ArePlayerCoordsInArray
+ jr c, .asm_49da8
+ ld hl, CoordsData_49dc0
+ call ArePlayerCoordsInArray
+ jr c, .asm_49db0
+ ld hl, CoordsData_49dd5
call ArePlayerCoordsInArray
- jr c, .player_near_dome_fossil
- ld hl, MtMoonB2FPlayerNearHelixFossilCoords
+ jr c, .asm_49d9b
+ ld hl, CoordsData_49dce
call ArePlayerCoordsInArray
- jp nc, CheckFightingMapTrainers
- ld de, MtMoon3FSuperNerdMoveUpMovementData
- jr .continue
-.player_near_dome_fossil
- ld de, MtMoon3FSuperNerdMoveRightMovementData
-.continue
+ jr c, .asm_49da3
+ jp CheckFightingMapTrainers
+
+.asm_49d9b
+ ld b, SPRITE_FACING_LEFT
+ ld hl, PikachuMovementData_49dd8
+ call MtMoonB2FScript_ApplyPikachuMovementData
+.asm_49da3
+ ld de, MovementData_49ddd
+ jr .asm_49db3
+
+.asm_49da8
+ ld b, SPRITE_FACING_RIGHT
+ ld hl, PikachuMovementData_49dca
+ call MtMoonB2FScript_ApplyPikachuMovementData
+.asm_49db0
+ ld de, MovementData_49ddc
+.asm_49db3
ld a, MTMOONB2F_SUPER_NERD
ldh [hSpriteIndex], a
call MoveSprite
ld a, SCRIPT_MTMOONB2F_SUPER_NERD_TAKES_OTHER_FOSSIL
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoonB2FSetScript
ret
-MtMoonB2FPlayerNearDomeFossilCoords:
+CoordsData_49dc0:
dbmapcoord 12, 7
dbmapcoord 11, 6
dbmapcoord 12, 5
db -1 ; end
-MtMoonB2FPlayerNearHelixFossilCoords:
+CoordsData_49dc7:
+ dbmapcoord 12, 7
+ db -1 ; end
+
+PikachuMovementData_49dca:
+ db $00
+ db $35
+ db $33
+ db $3f
+
+CoordsData_49dce:
dbmapcoord 13, 7
dbmapcoord 14, 6
dbmapcoord 14, 5
db -1 ; end
-MtMoon3FSuperNerdMoveRightMovementData:
+CoordsData_49dd5:
+ dbmapcoord 13, 7
+ db -1 ; end
+
+PikachuMovementData_49dd8:
+ db $00
+ db $35
+ db $34
+ db $3f
+
+MovementData_49ddc:
db NPC_MOVEMENT_RIGHT
-MtMoon3FSuperNerdMoveUpMovementData:
+MovementData_49ddd:
db NPC_MOVEMENT_UP
db -1 ; end
@@ -139,47 +207,273 @@ MtMoonB2FSuperNerdTakesOtherFossilScript:
ld a, TEXT_MTMOONB2F_SUPER_NERD_THEN_THIS_IS_MINE
ldh [hTextID], a
call DisplayTextID
- CheckEvent EVENT_GOT_DOME_FOSSIL
- jr z, .got_dome_fossil
- ld a, HS_MT_MOON_B2F_FOSSIL_2
- jr .continue
-.got_dome_fossil
+ CheckEvent EVENT_GOT_HELIX_FOSSIL
+ jr z, .asm_49e1d
ld a, HS_MT_MOON_B2F_FOSSIL_1
-.continue
+ jr .asm_49e1f
+.asm_49e1d
+ ld a, HS_MT_MOON_B2F_FOSSIL_2
+.asm_49e1f
ld [wMissableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
ld a, SCRIPT_MTMOONB2F_DEFAULT
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoonB2FSetScript
+ ret
+
+MtMoonB2FScript_49e15:
+ ld a, [wXCoord]
+ cp $3
+ ret nz
+ ld a, [wYCoord]
+ cp $5
+ ret nz
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, HS_MT_MOON_B2F_JESSIE
+ call MtMoonB2FScript_ShowObject
+ ld a, HS_MT_MOON_B2F_JAMES
+ call MtMoonB2FScript_ShowObject
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, TEXT_MTMOONB2F_TEXT12
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, PAD_UP
+ ld [wSimulatedJoypadStatesEnd], a
+ call StartSimulatingJoypadStates
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_MTMOONB2F_SCRIPT6
+ call MtMoonB2FSetScript
+ ret
+
+MovementData_f9e65:
+ db $06
+MovementData_f9e66:
+ db $06
+ db $06
+ db $06
+ db $06
+ db $06
+ db $FF
+
+MtMoonB2FScript6:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ call Delay3
+ ld a, MTMOONB2F_JESSIE
+ ldh [hSpriteIndex], a
+ ld de, MovementData_f9e65
+ call MoveSprite
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_MTMOONB2F_SCRIPT7
+ call MtMoonB2FSetScript
+ ret
+
+MtMoonB2FScript7:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wStatusFlags5]
+ bit BIT_SCRIPTED_NPC_MOVEMENT, a
+ ret nz
+MtMoonB2FScript8:
+ ld a, $2
+ ld [wSprite02StateData1MovementStatus], a
+ ld a, SPRITE_FACING_DOWN
+ ld [wSprite02StateData1FacingDirection], a
+MtMoonB2FScript9:
+ ld a, MTMOONB2F_JAMES
+ ldh [hSpriteIndex], a
+ ld de, MovementData_f9e66
+ call MoveSprite
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_MTMOONB2F_SCRIPT10
+ call MtMoonB2FSetScript
+ ret
+
+MtMoonB2FScript10:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wStatusFlags5]
+ bit BIT_SCRIPTED_NPC_MOVEMENT, a
+ ret nz
+MtMoonB2FScript11:
+ ld a, $2
+ ld [wSprite06StateData1MovementStatus], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSprite06StateData1FacingDirection], a
+ call Delay3
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, TEXT_MTMOONB2F_TEXT13
+ ldh [hTextID], a
+ call DisplayTextID
+MtMoonB2FScript12:
+ ld hl, wStatusFlags3
+ set BIT_TALKED_TO_TRAINER, [hl]
+ set BIT_PRINT_END_BATTLE_TEXT, [hl]
+ ld hl, MtMoonB2FJessieJamesEndBattleText
+ ld de, MtMoonB2FJessieJamesEndBattleText
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2a
+ ld [wTrainerNo], a
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_57E
+ ld a, SCRIPT_MTMOONB2F_SCRIPT13
+ call MtMoonB2FSetScript
+ ret
+
+MtMoonB2FScript13:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, MtMoonB2FResetScripts
+ ld a, $2
+ ld [wSprite02StateData1MovementStatus], a
+ ld [wSprite06StateData1MovementStatus], a
+ xor a
+ ld [wSprite02StateData1FacingDirection], a
+ ld [wSprite06StateData1FacingDirection], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, TEXT_MTMOONB2F_TEXT14
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_MTMOONB2F_SCRIPT14
+ call MtMoonB2FSetScript
+ ret
+
+MtMoonB2FScript14:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_MT_MOON_B2F_JESSIE
+ call MtMoonB2FScript_HideObject
+ ld a, HS_MT_MOON_B2F_JAMES
+ call MtMoonB2FScript_HideObject
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, SCRIPT_MTMOONB2F_SCRIPT15
+ call MtMoonB2FSetScript
+ ret
+
+MtMoonB2FScript15:
+ call PlayDefaultMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_BEAT_MT_MOON_3_JESSIE_JAMES
+ ResetEventReuseHL EVENT_57E
+ ld a, SCRIPT_MTMOONB2F_DEFAULT
+ call MtMoonB2FSetScript
+ ret
+
+MtMoonB2FScript_ShowObject:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+MtMoonB2FScript_HideObject:
+ ld [wMissableObjectIndex], a
+ predef HideObject
ret
MtMoonB2F_TextPointers:
def_text_pointers
- dw_const MtMoonB2FSuperNerdText, TEXT_MTMOONB2F_SUPER_NERD
- dw_const MtMoonB2FRocket1Text, TEXT_MTMOONB2F_ROCKET1
- dw_const MtMoonB2FRocket2Text, TEXT_MTMOONB2F_ROCKET2
- dw_const MtMoonB2FRocket3Text, TEXT_MTMOONB2F_ROCKET3
- dw_const MtMoonB2FRocket4Text, TEXT_MTMOONB2F_ROCKET4
- dw_const MtMoonB2FDomeFossilText, TEXT_MTMOONB2F_DOME_FOSSIL
- dw_const MtMoonB2FHelixFossilText, TEXT_MTMOONB2F_HELIX_FOSSIL
- dw_const PickUpItemText, TEXT_MTMOONB2F_HP_UP
- dw_const PickUpItemText, TEXT_MTMOONB2F_TM_MEGA_PUNCH
- dw_const MtMoonB2FSuperNerdThenThisIsMineText, TEXT_MTMOONB2F_SUPER_NERD_THEN_THIS_IS_MINE
+ dw_const MtMoonB2FSuperNerdText, TEXT_MTMOONB2F_SUPER_NERD
+ dw_const MtMoonB2FJessieJamesText, TEXT_MTMOONB2F_JESSIE
+ dw_const MtMoonB2FRocket1Text, TEXT_MTMOONB2F_ROCKET1
+ dw_const MtMoonB2FRocket2Text, TEXT_MTMOONB2F_ROCKET2
+ dw_const MtMoonB2FRocket3Text, TEXT_MTMOONB2F_ROCKET3
+ dw_const MtMoonB2FJessieJamesText, TEXT_MTMOONB2F_JAMES
+ dw_const MtMoonB2FDomeFossilText, TEXT_MTMOONB2F_DOME_FOSSIL
+ dw_const MtMoonB2FHelixFossilText, TEXT_MTMOONB2F_HELIX_FOSSIL
+ dw_const PickUpItemText, TEXT_MTMOONB2F_HP_UP
+ dw_const PickUpItemText, TEXT_MTMOONB2F_TM_MEGA_PUNCH
+ dw_const MtMoonB2FSuperNerdThenThisIsMineText, TEXT_MTMOONB2F_SUPER_NERD_THEN_THIS_IS_MINE
+ dw_const MtMoonB2FText12, TEXT_MTMOONB2F_TEXT12
+ dw_const MtMoonB2FText13, TEXT_MTMOONB2F_TEXT13
+ dw_const MtMoonB2FText14, TEXT_MTMOONB2F_TEXT14
MtMoon3TrainerHeaders:
- def_trainers 2
+ def_trainers 3
MtMoon3TrainerHeader0:
- trainer EVENT_BEAT_MT_MOON_3_TRAINER_0, 4, MtMoonB2FRocket1BattleText, MtMoonB2FRocket1EndBattleText, MtMoonB2FRocket1AfterBattleText
+ trainer EVENT_BEAT_MT_MOON_3_TRAINER_0, 4, MtMoonB2FRocket2BattleText, MtMoonB2FRocket2EndBattleText, MtMoonB2FRocket2AfterBattleText
MtMoon3TrainerHeader1:
- trainer EVENT_BEAT_MT_MOON_3_TRAINER_1, 4, MtMoonB2FRocket2BattleText, MtMoonB2FRocket2EndBattleText, MtMoonB2FRocket2AfterBattleText
+ trainer EVENT_BEAT_MT_MOON_3_TRAINER_1, 4, MtMoonB2FRocket3BattleText, MtMoonB2FRocket3EndBattleText, MtMoonB2FRocket3AfterBattleText
MtMoon3TrainerHeader2:
- trainer EVENT_BEAT_MT_MOON_3_TRAINER_2, 4, MtMoonB2FRocket3BattleText, MtMoonB2FRocket3EndBattleText, MtMoonB2FRocket3AfterBattleText
-MtMoon3TrainerHeader3:
- trainer EVENT_BEAT_MT_MOON_3_TRAINER_3, 4, MtMoonB2FRocket4BattleText, MtMoonB2FRocket4EndBattleText, MtMoonB2FRocket4AfterBattleText
+ trainer EVENT_BEAT_MT_MOON_3_TRAINER_2, 4, MtMoonB2FRocket4BattleText, MtMoonB2FRocket4EndBattleText, MtMoonB2FRocket4AfterBattleText
db -1 ; end
+MtMoonB2FJessieJamesText:
+ text_end
+
+MtMoonB2FText12:
+ text_far _MtMoonJessieJamesText1
+ text_asm
+ ld c, 10
+ call DelayFrames
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+MtMoonB2FText13:
+ text_far _MtMoonJessieJamesText2
+ text_end
+
+MtMoonB2FJessieJamesEndBattleText:
+ text_far _MtMoonJessieJamesText3
+ text_end
+
+MtMoonB2FText14:
+ text_far _MtMoonJessieJamesText4
+ text_asm
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
+
MtMoonB2FSuperNerdText:
text_asm
CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
@@ -203,8 +497,7 @@ MtMoonB2FSuperNerdText:
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, SCRIPT_MTMOONB2F_DEFEATED_SUPER_NERD
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoonB2FSetScript
jr .done
.got_a_fossil
ld hl, MtMoonB2FSuperNerdTheresAPokemonLabText
@@ -215,24 +508,17 @@ MtMoonB2FSuperNerdText:
MtMoonB2FRocket1Text:
text_asm
ld hl, MtMoon3TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoonB2FTalkToTrainer
MtMoonB2FRocket2Text:
text_asm
ld hl, MtMoon3TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoonB2FTalkToTrainer
MtMoonB2FRocket3Text:
text_asm
ld hl, MtMoon3TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
-
-MtMoonB2FRocket4Text:
- text_asm
- ld hl, MtMoon3TrainerHeader3
+MtMoonB2FTalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
@@ -255,8 +541,7 @@ MtMoonB2FDomeFossilText:
predef HideObject
SetEvent EVENT_GOT_DOME_FOSSIL
ld a, SCRIPT_MTMOONB2F_MOVE_SUPER_NERD
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoonB2FSetScript
.done
jp TextScriptEnd
@@ -283,8 +568,7 @@ MtMoonB2FHelixFossilText:
predef HideObject
SetEvent EVENT_GOT_HELIX_FOSSIL
ld a, SCRIPT_MTMOONB2F_MOVE_SUPER_NERD
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoonB2FSetScript
.done
jp TextScriptEnd
@@ -333,18 +617,6 @@ MtMoonB2FSuperNerdThenThisIsMineText:
sound_get_key_item
text_end
-MtMoonB2FRocket1BattleText:
- text_far _MtMoonB2FRocket1BattleText
- text_end
-
-MtMoonB2FRocket1EndBattleText:
- text_far _MtMoonB2FRocket1EndBattleText
- text_end
-
-MtMoonB2FRocket1AfterBattleText:
- text_far _MtMoonB2FRocket1AfterBattleText
- text_end
-
MtMoonB2FRocket2BattleText:
text_far _MtMoonB2FRocket2BattleText
text_end
diff --git a/scripts/MtMoonB2F_2.asm b/scripts/MtMoonB2F_2.asm
new file mode 100644
index 00000000..c2515abd
--- /dev/null
+++ b/scripts/MtMoonB2F_2.asm
@@ -0,0 +1,28 @@
+MtMoonB2FScript_ApplyPikachuMovementData:
+ ld a, [wd471]
+ bit 7, a
+ ret z
+ ld a, [wWalkBikeSurfState]
+ and a
+ ret nz
+
+ push hl
+ push bc
+ callfar GetPikachuFacingDirectionAndReturnToE
+ pop bc
+ pop hl
+ ld a, b
+ cp e
+ ret nz
+
+ push hl
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ callfar LoadPikachuShadowIntoVRAM
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ pop hl
+ call ApplyPikachuMovementData
+ ret
diff --git a/scripts/MtMoonPokecenter.asm b/scripts/MtMoonPokecenter.asm
index da3d3bc5..acf05548 100644
--- a/scripts/MtMoonPokecenter.asm
+++ b/scripts/MtMoonPokecenter.asm
@@ -10,6 +10,7 @@ MtMoonPokecenter_TextPointers:
dw_const MtMoonPokecenterMagikarpSalesmanText, TEXT_MTMOONPOKECENTER_MAGIKARP_SALESMAN
dw_const MtMoonPokecenterClipboardText, TEXT_MTMOONPOKECENTER_CLIPBOARD
dw_const MtMoonPokecenterLinkReceptionistText, TEXT_MTMOONPOKECENTER_LINK_RECEPTIONIST
+ dw_const MtMoonPokecenterChanseyText, TEXT_MTMOONPOKECENTER_CHANSEY
MtMoonPokecenterNurseText:
script_pokecenter_nurse
@@ -24,72 +25,17 @@ MtMoonPokecenterGentlemanText:
MtMoonPokecenterMagikarpSalesmanText:
text_asm
- CheckEvent EVENT_BOUGHT_MAGIKARP, 1
- jp c, .alreadyBoughtMagikarp
- ld hl, .IGotADealText
- call PrintText
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jp nz, .choseNo
- ldh [hMoney], a
- ldh [hMoney + 2], a
- ld a, $5
- ldh [hMoney + 1], a
- call HasEnoughMoney
- jr nc, .enoughMoney
- ld hl, .NoMoneyText
- jr .printText
-.enoughMoney
- lb bc, MAGIKARP, 5
- call GivePokemon
- jr nc, .done
- xor a
- ld [wPriceTemp], a
- ld [wPriceTemp + 2], a
- ld a, $5
- ld [wPriceTemp + 1], a
- ld hl, wPriceTemp + 2
- ld de, wPlayerMoney + 2
- ld c, $3
- predef SubBCDPredef
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- SetEvent EVENT_BOUGHT_MAGIKARP
- jr .done
-.choseNo
- ld hl, .NoText
- jr .printText
-.alreadyBoughtMagikarp
- ld hl, .NoRefundsText
-.printText
- call PrintText
-.done
+ callfar MagikarpSalesman
jp TextScriptEnd
-.IGotADealText
- text_far _MtMoonPokecenterMagikarpSalesmanIGotADealText
- text_end
-
-.NoText
- text_far _MtMoonPokecenterMagikarpSalesmanNoText
- text_end
-
-.NoMoneyText
- text_far _MtMoonPokecenterMagikarpSalesmanNoMoneyText
- text_end
-
-.NoRefundsText
- text_far _MtMoonPokecenterMagikarpSalesmanNoRefundsText
- text_end
-
MtMoonPokecenterClipboardText:
text_far _MtMoonPokecenterClipboardText
text_end
MtMoonPokecenterLinkReceptionistText:
script_cable_club_receptionist
+
+MtMoonPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/MtMoonPokecenter_2.asm b/scripts/MtMoonPokecenter_2.asm
new file mode 100644
index 00000000..ba5650a2
--- /dev/null
+++ b/scripts/MtMoonPokecenter_2.asm
@@ -0,0 +1,64 @@
+MagikarpSalesman::
+ CheckEvent EVENT_BOUGHT_MAGIKARP, 1
+ jp c, .alreadyBoughtMagikarp
+ ld hl, .IGotADealText
+ call PrintText
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jp nz, .choseNo
+ xor a
+ ldh [hMoney], a
+ ldh [hMoney + 2], a
+ ld a, $5
+ ldh [hMoney + 1], a
+ call HasEnoughMoney
+ jr nc, .enoughMoney
+ ld hl, .NoMoneyText
+ jr .printText
+.enoughMoney
+ lb bc, MAGIKARP, 5
+ call GivePokemon
+ jr nc, .done
+ xor a
+ ld [wPriceTemp], a
+ ld [wPriceTemp + 2], a
+ ld a, $5
+ ld [wPriceTemp + 1], a
+ ld hl, wPriceTemp + 2
+ ld de, wPlayerMoney + 2
+ ld c, $3
+ predef SubBCDPredef
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ SetEvent EVENT_BOUGHT_MAGIKARP
+ jr .done
+.choseNo
+ ld hl, .NoText
+ jr .printText
+.alreadyBoughtMagikarp
+ ld hl, .NoRefundsText
+.printText
+ call PrintText
+.done
+ ret
+
+.IGotADealText
+ text_far _MtMoonPokecenterMagikarpSalesmanIGotADealText
+ text_end
+
+.NoText
+ text_far _MtMoonPokecenterMagikarpSalesmanNoText
+ text_end
+
+.NoMoneyText
+ text_far _MtMoonPokecenterMagikarpSalesmanNoMoneyText
+ text_end
+
+.NoRefundsText
+ text_far _MtMoonPokecenterMagikarpSalesmanNoRefundsText
+ text_end
diff --git a/scripts/Museum1F.asm b/scripts/Museum1F.asm
index 6cb6889a..0e65accd 100644
--- a/scripts/Museum1F.asm
+++ b/scripts/Museum1F.asm
@@ -5,7 +5,8 @@ Museum1F_Script:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, Museum1F_ScriptPointers
ld a, [wMuseum1FCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
Museum1F_ScriptPointers:
def_script_pointers
@@ -42,208 +43,25 @@ Museum1F_TextPointers:
Museum1FScientist1Text:
text_asm
- ld a, [wYCoord]
- cp 4
- jr nz, .not_right_of_scientist
- ld a, [wXCoord]
- cp 13
- jp z, .behind_counter
- jr .check_ticket
-.not_right_of_scientist
- cp 3
- jr nz, .not_behind_counter
- ld a, [wXCoord]
- cp 12
- jp z, .behind_counter
-.not_behind_counter
- CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
- jr nz, .already_bought_ticket
- ld hl, .GoToOtherSideText
- call PrintText
- jp .done
-.check_ticket
- CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
- jr z, .no_ticket
-.already_bought_ticket
- ld hl, .TakePlentyOfTimeText
- call PrintText
- jp .done
-.no_ticket
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- xor a
- ldh [hJoyHeld], a
- ld hl, .WouldYouLikeToComeInText
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .deny_entry
- xor a
- ldh [hMoney], a
- ldh [hMoney + 1], a
- ld a, $50
- ldh [hMoney + 2], a
- call HasEnoughMoney
- jr nc, .buy_ticket
- ld hl, .DontHaveEnoughMoneyText
- call PrintText
- jp .deny_entry
-.buy_ticket
- ld hl, .ThankYouText
- call PrintText
- SetEvent EVENT_BOUGHT_MUSEUM_TICKET
- xor a
- ld [wPriceTemp], a
- ld [wPriceTemp + 1], a
- ld a, $50
- ld [wPriceTemp + 2], a
- ld hl, wPriceTemp + 2
- ld de, wPlayerMoney + 2
- ld c, $3
- predef SubBCDPredef
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- ld a, SFX_PURCHASE
- call PlaySoundWaitForCurrent
- call WaitForSoundToFinish
- jr .allow_entry
-.deny_entry
- ld hl, .ComeAgainText
- call PrintText
- ld a, $1
- ld [wSimulatedJoypadStatesIndex], a
- ld a, PAD_DOWN
- ld [wSimulatedJoypadStatesEnd], a
- call StartSimulatingJoypadStates
- call UpdateSprites
- jr .done
-.allow_entry
- ld a, SCRIPT_MUSEUM1F_NOOP
- ld [wMuseum1FCurScript], a
- jr .done
-
-.behind_counter
- ld hl, .DoYouKnowWhatAmberIsText
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- cp $0
- jr nz, .explain_amber
- ld hl, .TheresALabSomewhereText
- call PrintText
- jr .done
-.explain_amber
- ld hl, .AmberIsFossilizedTreeSapText
- call PrintText
-.done
+ farcall Museum1FPrintScientist1Text
jp TextScriptEnd
-.ComeAgainText:
- text_far _Museum1FScientist1ComeAgainText
- text_end
-
-.WouldYouLikeToComeInText:
- text_far _Museum1FScientist1WouldYouLikeToComeInText
- text_end
-
-.ThankYouText:
- text_far _Museum1FScientist1ThankYouText
- text_end
-
-.DontHaveEnoughMoneyText:
- text_far _Museum1FScientist1DontHaveEnoughMoneyText
- text_end
-
-.DoYouKnowWhatAmberIsText:
- text_far _Museum1FScientist1DoYouKnowWhatAmberIsText
- text_end
-
-.TheresALabSomewhereText:
- text_far _Museum1FScientist1TheresALabSomewhereText
- text_end
-
-.AmberIsFossilizedTreeSapText:
- text_far _Museum1FScientist1AmberIsFossilizedTreeSapText
- text_end
-
-.GoToOtherSideText:
- text_far _Museum1FScientist1GoToOtherSideText
- text_end
-
-.TakePlentyOfTimeText:
- text_far _Museum1FScientist1TakePlentyOfTimeText
- text_end
-
Museum1FGamblerText:
text_asm
- ld hl, .Text
- call PrintText
+ farcall Museum1FPrintGamblerText
jp TextScriptEnd
-.Text:
- text_far _Museum1FGamblerText
- text_end
-
Museum1FScientist2Text:
text_asm
- CheckEvent EVENT_GOT_OLD_AMBER
- jr nz, .got_item
- ld hl, .TakeThisToAPokemonLabText
- call PrintText
- lb bc, OLD_AMBER, 1
- call GiveItem
- jr nc, .bag_full
- SetEvent EVENT_GOT_OLD_AMBER
- ld a, HS_OLD_AMBER
- ld [wMissableObjectIndex], a
- predef HideObject
- ld hl, .ReceivedOldAmberText
- jr .done
-.bag_full
- ld hl, .YouDontHaveSpaceText
- jr .done
-.got_item
- ld hl, .GetTheOldAmberCheckText
-.done
- call PrintText
+ farcall Museum1FPrintScientist2Text
jp TextScriptEnd
-.TakeThisToAPokemonLabText:
- text_far _Museum1FScientist2TakeThisToAPokemonLabText
- text_end
-
-.ReceivedOldAmberText:
- text_far _Museum1FScientist2ReceivedOldAmberText
- sound_get_item_1
- text_end
-
-.GetTheOldAmberCheckText:
- text_far _Museum1FScientist2GetTheOldAmberCheckText
- text_end
-
-.YouDontHaveSpaceText:
- text_far _Museum1FScientist2YouDontHaveSpaceText
- text_end
-
Museum1FScientist3Text:
text_asm
- ld hl, .Text
- call PrintText
+ farcall Museum1FPrintScientist3Text
jp TextScriptEnd
-.Text:
- text_far _Museum1FScientist3Text
- text_end
-
Museum1FOldAmberText:
text_asm
- ld hl, .Text
- call PrintText
+ farcall Museum1FPrintOldAmberText
jp TextScriptEnd
-
-.Text:
- text_far _Museum1FOldAmberText
- text_end
diff --git a/scripts/Museum1F_2.asm b/scripts/Museum1F_2.asm
new file mode 100644
index 00000000..9a848f50
--- /dev/null
+++ b/scripts/Museum1F_2.asm
@@ -0,0 +1,202 @@
+Museum1FPrintScientist1Text::
+ ld a, [wYCoord]
+ cp 4
+ jr nz, .not_right_of_scientist
+ ld a, [wXCoord]
+ cp 13
+ jp z, .behind_counter
+ jr .check_ticket
+.not_right_of_scientist
+ cp 3
+ jr nz, .not_behind_counter
+ ld a, [wXCoord]
+ cp 12
+ jp z, .behind_counter
+.not_behind_counter
+ CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
+ jr nz, .already_bought_ticket
+ ld hl, .GoToOtherSideText
+ call PrintText
+ jp .done
+.check_ticket
+ CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
+ jr z, .no_ticket
+.already_bought_ticket
+ ld hl, .TakePlentyOfTimeText
+ call PrintText
+ jp .done
+.no_ticket
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ xor a
+ ldh [hJoyHeld], a
+ ld hl, .WouldYouLikeToComeInText
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .deny_entry
+ xor a
+ ldh [hMoney], a
+ ldh [hMoney + 1], a
+ ld a, $50
+ ldh [hMoney + 2], a
+ call HasEnoughMoney
+ jr nc, .buy_ticket
+ ld hl, .DontHaveEnoughMoneyText
+ call PrintText
+ jp .deny_entry
+.buy_ticket
+ ld hl, .ThankYouText
+ call PrintText
+ SetEvent EVENT_BOUGHT_MUSEUM_TICKET
+ xor a
+ ld [wPriceTemp], a
+ ld [wPriceTemp + 1], a
+ ld a, $50
+ ld [wPriceTemp + 2], a
+ ld hl, wPriceTemp + 2
+ ld de, wPlayerMoney + 2
+ ld c, $3
+ predef SubBCDPredef
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ ld a, SFX_PURCHASE
+ call PlaySoundWaitForCurrent
+ call WaitForSoundToFinish
+ jr .allow_entry
+.deny_entry
+ ld hl, .ComeAgainText
+ call PrintText
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, PAD_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
+ call StartSimulatingJoypadStates
+ call UpdateSprites
+ jr .done
+.allow_entry
+ ld a, SCRIPT_MUSEUM1F_NOOP
+ ld [wMuseum1FCurScript], a
+ jr .done
+
+.behind_counter
+ ld hl, .DoYouKnowWhatAmberIsText
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ cp $0
+ jr nz, .explain_amber
+ ld hl, .TheresALabSomewhereText
+ call PrintText
+ jr .done
+.explain_amber
+ ld hl, .AmberIsFossilizedTreeSapText
+ call PrintText
+.done
+ ret
+
+.ComeAgainText:
+ text_far _Museum1FScientist1ComeAgainText
+ text_end
+
+.WouldYouLikeToComeInText:
+ text_far _Museum1FScientist1WouldYouLikeToComeInText
+ text_end
+
+.ThankYouText:
+ text_far _Museum1FScientist1ThankYouText
+ text_end
+
+.DontHaveEnoughMoneyText:
+ text_far _Museum1FScientist1DontHaveEnoughMoneyText
+ text_end
+
+.DoYouKnowWhatAmberIsText:
+ text_far _Museum1FScientist1DoYouKnowWhatAmberIsText
+ text_end
+
+.TheresALabSomewhereText:
+ text_far _Museum1FScientist1TheresALabSomewhereText
+ text_end
+
+.AmberIsFossilizedTreeSapText:
+ text_far _Museum1FScientist1AmberIsFossilizedTreeSapText
+ text_end
+
+.GoToOtherSideText:
+ text_far _Museum1FScientist1GoToOtherSideText
+ text_end
+
+.TakePlentyOfTimeText:
+ text_far _Museum1FScientist1TakePlentyOfTimeText
+ text_end
+
+Museum1FPrintGamblerText::
+ ld hl, .Text
+ call PrintText
+ ret
+
+.Text:
+ text_far _Museum1FGamblerText
+ text_end
+
+Museum1FPrintScientist2Text::
+ CheckEvent EVENT_GOT_OLD_AMBER
+ jr nz, .got_item
+ ld hl, .TakeThisToAPokemonLabText
+ call PrintText
+ lb bc, OLD_AMBER, 1
+ call GiveItem
+ jr nc, .bag_full
+ SetEvent EVENT_GOT_OLD_AMBER
+ ld a, HS_OLD_AMBER
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ld hl, .ReceivedOldAmberText
+ jr .done
+.bag_full
+ ld hl, .YouDontHaveSpaceText
+ jr .done
+.got_item
+ ld hl, .GetTheOldAmberCheckText
+.done
+ call PrintText
+ ret
+
+.TakeThisToAPokemonLabText:
+ text_far _Museum1FScientist2TakeThisToAPokemonLabText
+ text_end
+
+.ReceivedOldAmberText:
+ text_far _Museum1FScientist2ReceivedOldAmberText
+ sound_get_item_1
+ text_end
+
+.GetTheOldAmberCheckText:
+ text_far _Museum1FScientist2GetTheOldAmberCheckText
+ text_end
+
+.YouDontHaveSpaceText:
+ text_far _Museum1FScientist2YouDontHaveSpaceText
+ text_end
+
+Museum1FPrintScientist3Text::
+ ld hl, .Text
+ call PrintText
+ ret
+
+.Text:
+ text_far _Museum1FScientist3Text
+ text_end
+
+Museum1FPrintOldAmberText::
+ ld hl, .Text
+ call PrintText
+ ret
+
+.Text:
+ text_far _Museum1FOldAmberText
+ text_end
diff --git a/scripts/Museum2F.asm b/scripts/Museum2F.asm
index 28bffa0c..6a0a15a4 100644
--- a/scripts/Museum2F.asm
+++ b/scripts/Museum2F.asm
@@ -1,5 +1,6 @@
Museum2F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Museum2F_TextPointers:
def_text_pointers
@@ -28,9 +29,40 @@ Museum2FBrunetteGirlText:
text_end
Museum2FHikerText:
+ text_asm
+ ld a, [wd471]
+ bit 7, a
+ jr nz, .asm_5c1f6
+ ld hl, Museum2FText_5c20e
+ call PrintText
+ jr .asm_5c20b
+
+.asm_5c1f6
+ ld a, [wPikachuHappiness]
+ cp 101
+ jr c, .asm_5c205
+ ld hl, Museum2FText_5c218
+ call PrintText
+ jr .asm_5c20b
+
+.asm_5c205
+ ld hl, Museum2FText_5c213
+ call PrintText
+.asm_5c20b
+ jp TextScriptEnd
+
+Museum2FText_5c20e:
text_far _Museum2FHikerText
text_end
+Museum2FText_5c213:
+ text_far _Museum2FPikachuText1
+ text_end
+
+Museum2FText_5c218:
+ text_far _Museum2FPikachuText2
+ text_end
+
Museum2FSpaceShuttleSignText:
text_far _Museum2FSpaceShuttleSignText
text_end
diff --git a/scripts/OaksLab.asm b/scripts/OaksLab.asm
index 9695b99e..c7197cb9 100644
--- a/scripts/OaksLab.asm
+++ b/scripts/OaksLab.asm
@@ -7,7 +7,8 @@ OaksLab_Script:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, OaksLab_ScriptPointers
ld a, [wOaksLabCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
OaksLab_ScriptPointers:
def_script_pointers
@@ -20,12 +21,16 @@ OaksLab_ScriptPointers:
dw_const OaksLabPlayerDontGoAwayScript, SCRIPT_OAKSLAB_PLAYER_DONT_GO_AWAY_SCRIPT
dw_const OaksLabPlayerForcedToWalkBackScript, SCRIPT_OAKSLAB_PLAYER_FORCED_TO_WALK_BACK_SCRIPT
dw_const OaksLabChoseStarterScript, SCRIPT_OAKSLAB_CHOSE_STARTER_SCRIPT
- dw_const OaksLabRivalChoosesStarterScript, SCRIPT_OAKSLAB_RIVAL_CHOOSES_STARTER
+ dw_const OaksLabRivalTakesPokeballScript, SCRIPT_OAKSLAB_RIVAL_TAKES_POKEBALL
+ dw_const OaksLabPlayerWalksToOakScript, SCRIPT_OAKSLAB_PLAYER_WALKS_TO_OAK
+ dw_const OaksLabPlayerReceivesPikachuScript, SCRIPT_OAKSLAB_PLAYER_RECEIVES_PIKACHU
dw_const OaksLabRivalChallengesPlayerScript, SCRIPT_OAKSLAB_RIVAL_CHALLENGES_PLAYER
dw_const OaksLabRivalStartBattleScript, SCRIPT_OAKSLAB_RIVAL_START_BATTLE
dw_const OaksLabRivalEndBattleScript, SCRIPT_OAKSLAB_RIVAL_END_BATTLE
dw_const OaksLabRivalStartsExitScript, SCRIPT_OAKSLAB_RIVAL_STARTS_EXIT
dw_const OaksLabPlayerWatchRivalExitScript, SCRIPT_OAKSLAB_PLAYER_WATCH_RIVAL_EXIT
+ dw_const OaksLabPikachuEscapesPokeballScript, SCRIPT_OAKSLAB_PIKACHU_ESCAPES_POKEBALL
+ dw_const OaksLabPikachuDislikesPokeballsScript, SCRIPT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS
dw_const OaksLabRivalArrivesAtOaksRequestScript, SCRIPT_OAKSLAB_RIVAL_ARRIVES_AT_OAKS_REQUEST
dw_const OaksLabOakGivesPokedexScript, SCRIPT_OAKSLAB_OAK_GIVES_POKEDEX
dw_const OaksLabRivalLeavesWithPokedexScript, SCRIPT_OAKSLAB_RIVAL_LEAVES_WITH_POKEDEX
@@ -116,7 +121,6 @@ OaksLabFollowedOakScript:
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- call UpdateSprites
ld hl, wStatusFlags7
res BIT_NO_MAP_MUSIC, [hl]
call PlayDefaultMusic
@@ -126,6 +130,7 @@ OaksLabFollowedOakScript:
ret
OaksLabOakChooseMonSpeechScript:
+ SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING
@@ -136,6 +141,10 @@ OaksLabOakChooseMonSpeechScript:
ldh [hTextID], a
call DisplayTextID
call Delay3
+ ld a, $2
+ ld [wSprite01StateData1MovementStatus], a
+ ld a, SPRITE_FACING_UP
+ ld [wSprite01StateData1FacingDirection], a
ld a, TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME
ldh [hTextID], a
call DisplayTextID
@@ -143,7 +152,6 @@ OaksLabOakChooseMonSpeechScript:
ld a, TEXT_OAKSLAB_OAK_BE_PATIENT
ldh [hTextID], a
call DisplayTextID
- SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
xor a
ld [wJoyIgnore], a
@@ -162,7 +170,7 @@ OaksLabPlayerDontGoAwayScript:
call SetSpriteFacingDirectionAndDelay
ld a, OAKSLAB_RIVAL
ldh [hSpriteIndex], a
- xor a ; SPRITE_FACING_DOWN
+ xor a
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call UpdateSprites
@@ -192,147 +200,101 @@ OaksLabPlayerForcedToWalkBackScript:
ret
OaksLabChoseStarterScript:
- ld a, [wPlayerStarter]
- cp STARTER1
- jr z, .Charmander
- cp STARTER2
- jr z, .Squirtle
- jr .Bulbasaur
-.Charmander
- ld de, .MiddleBallMovement1
- ld a, [wYCoord]
- cp 4 ; is the player standing below the table?
- jr z, .moveBlue
- ld de, .MiddleBallMovement2
- jr .moveBlue
-
-.MiddleBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_UP
- db -1 ; end
-
-.MiddleBallMovement2
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db -1 ; end
-
-.Squirtle
- ld de, .RightBallMovement1
- ld a, [wYCoord]
- cp 4 ; is the player standing below the table?
- jr z, .moveBlue
- ld de, .RightBallMovement2
- jr .moveBlue
-
-.RightBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_UP
- db -1 ; end
-
-.RightBallMovement2
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db -1 ; end
-
-.Bulbasaur
- ld de, .LeftBallMovement1
- ld a, [wXCoord]
- cp 9 ; is the player standing to the right of the table?
- jr nz, .moveBlue
- push hl
- ld a, OAKSLAB_RIVAL
- ldh [hSpriteIndex], a
- ld a, SPRITESTATEDATA1_YPIXELS
- ldh [hSpriteDataOffset], a
- call GetPointerWithinSpriteStateData1
- push hl
- ld [hl], $4c ; SPRITESTATEDATA1_YPIXELS
- inc hl
- inc hl
- ld [hl], $0 ; SPRITESTATEDATA1_XPIXELS
- pop hl
- inc h
- ld [hl], 8 ; SPRITESTATEDATA2_MAPY
- inc hl
- ld [hl], 9 ; SPRITESTATEDATA2_MAPX
- ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that
- pop hl
- jr .moveBlue
-
-.LeftBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
-.LeftBallMovement2
- db NPC_MOVEMENT_RIGHT
- db -1 ; end
-
-.moveBlue
ld a, OAKSLAB_RIVAL
ldh [hSpriteIndex], a
+ ld de, .RivalPushesPlayerAwayFromEeveeBall
call MoveSprite
-
- ld a, SCRIPT_OAKSLAB_RIVAL_CHOOSES_STARTER
+ ld a, SCRIPT_OAKSLAB_RIVAL_TAKES_POKEBALL
ld [wOaksLabCurScript], a
ret
-OaksLabRivalChoosesStarterScript:
+.RivalPushesPlayerAwayFromEeveeBall
+ db $00
+ db $07
+ db $07
+ db $07
+ db $FF
+
+OaksLabRivalTakesPokeballScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
- ret nz
- ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
- ld [wJoyIgnore], a
- ld a, OAKSLAB_RIVAL
- ldh [hSpriteIndex], a
- ld a, SPRITE_FACING_UP
- ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
- ld a, TEXT_OAKSLAB_RIVAL_ILL_TAKE_THIS_ONE
- ldh [hTextID], a
- call DisplayTextID
- ld a, [wRivalStarterBallSpriteIndex]
- cp OAKSLAB_CHARMANDER_POKE_BALL
- jr nz, .not_charmander
+ jr nz, .asm_1c564
ld a, HS_STARTER_BALL_1
- jr .hideBallAndContinue
-.not_charmander
- cp OAKSLAB_SQUIRTLE_POKE_BALL
- jr nz, .not_squirtle
- ld a, HS_STARTER_BALL_2
- jr .hideBallAndContinue
-.not_squirtle
- ld a, HS_STARTER_BALL_3
-.hideBallAndContinue
ld [wMissableObjectIndex], a
predef HideObject
- call Delay3
- ld a, [wRivalStarterTemp]
- ld [wRivalStarter], a
- ld [wCurPartySpecies], a
- ld [wNamedObjectIndex], a
- call GetMonName
ld a, OAKSLAB_RIVAL
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
+ ld a, RIVAL_STARTER_JOLTEON
+ ld [wRivalStarter], a
+ ld a, EEVEE
+ ld [wNamedObjectIndex], a
+ call GetMonName
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
ld a, TEXT_OAKSLAB_RIVAL_RECEIVED_MON
ldh [hTextID], a
call DisplayTextID
- SetEvent EVENT_GOT_STARTER
+
+ ld a, SCRIPT_OAKSLAB_PLAYER_WALKS_TO_OAK
+ ld [wOaksLabCurScript], a
+ ret
+
+.asm_1c564
+ ld a, [wYCoord]
+ cp 4
+ ret nz
+ ld a, [wNPCNumScriptedSteps]
+ cp 1
+ ret nz
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
+ ld a, $2
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, PAD_RIGHT
+ ld [wSimulatedJoypadStatesEnd], a
+ ld [wSimulatedJoypadStatesEnd + 1], a
+ call StartSimulatingJoypadStates
+ ret
+
+OaksLabPlayerWalksToOakScript:
+ ld a, [wYCoord]
+ cp 4
+ jr z, .asm_1c599
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, PAD_LEFT
+ ld [wSimulatedJoypadStatesEnd], a
+ jr .asm_1c5a6
+
+.asm_1c599
+ ld hl, wSimulatedJoypadStatesEnd
+ ld de, OaksLabRLE_PlayerWalksToOak
+ call DecodeRLEList
+ dec a
+ ld [wSimulatedJoypadStatesIndex], a
+.asm_1c5a6
+ call StartSimulatingJoypadStates
+ ld a, SCRIPT_OAKSLAB_PLAYER_RECEIVES_PIKACHU
+ ld [wOaksLabCurScript], a
+ ret
+
+OaksLabRLE_PlayerWalksToOak:
+ db PAD_UP, 2
+ db PAD_LEFT, 3
+ db PAD_DOWN, 1
+ db PAD_LEFT, 1
+ db $FF
+
+OaksLabPlayerReceivesPikachuScript:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ ld a, TEXT_OAKSLAB_PLAYER_RECEIVED_MON
+ ldh [hTextID], a
+ call DisplayTextID
xor a
ld [wJoyIgnore], a
@@ -344,13 +306,13 @@ OaksLabRivalChallengesPlayerScript:
ld a, [wYCoord]
cp 6
ret nz
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
ld a, OAKSLAB_RIVAL
ldh [hSpriteIndex], a
xor a ; SPRITE_FACING_DOWN
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, PLAYER_DIR_UP
- ld [wPlayerMovingDirection], a
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -361,7 +323,7 @@ OaksLabRivalChallengesPlayerScript:
ldh [hNPCPlayerRelativePosPerspective], a
ld a, $1
swap a
- ldh [hNPCSpriteOffset], a
+ ldh [hNPCPlayerYDistance], a
predef CalcPositionOfPlayerRelativeToNPC
ldh a, [hNPCPlayerYDistance]
dec a
@@ -371,7 +333,6 @@ OaksLabRivalChallengesPlayerScript:
ld a, OAKSLAB_RIVAL
ldh [hSpriteIndex], a
call MoveSprite
-
ld a, SCRIPT_OAKSLAB_RIVAL_START_BATTLE
ld [wOaksLabCurScript], a
ret
@@ -381,26 +342,13 @@ OaksLabRivalStartBattleScript:
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ; define which team rival uses, and fight it
+ ld a, OAKSLAB_RIVAL
+ ld [wSpriteIndex], a
+ call GetSpritePosition1
ld a, OPP_RIVAL1
ld [wCurOpponent], a
- ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .not_squirtle
ld a, $1
- jr .done
-.not_squirtle
- cp STARTER3
- jr nz, .not_bulbasaur
- ld a, $2
- jr .done
-.not_bulbasaur
- ld a, $3
-.done
ld [wTrainerNo], a
- ld a, OAKSLAB_RIVAL
- ld [wSpriteIndex], a
- call GetSpritePosition1
ld hl, OaksLabRivalIPickedTheWrongPokemonText
ld de, OaksLabRivalAmIGreatOrWhatText
call SaveEndBattleTextPointers
@@ -416,7 +364,23 @@ OaksLabRivalStartBattleScript:
ret
OaksLabRivalEndBattleScript:
- ld a, PAD_CTRL_PAD
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+
+ ; If you beat your rival here, his Eevee will evolve into
+ ; Jolteon if you beat him on Route 22, or Flareon if you
+ ; skip or lose that battle.
+ ; Otherwise, it will evolve into Vaporeon.
+ ld a, [wBattleResult]
+ and a
+ ld b, RIVAL_STARTER_VAPOREON
+ jr nz, .got_rival_starter
+ ld b, RIVAL_STARTER_FLAREON
+.got_rival_starter
+ ld a, b
+ ld [wRivalStarter], a
+
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
@@ -424,11 +388,10 @@ OaksLabRivalEndBattleScript:
ld a, OAKSLAB_RIVAL
ld [wSpriteIndex], a
call SetSpritePosition1
- ld a, OAKSLAB_RIVAL
- ldh [hSpriteIndex], a
- xor a ; SPRITE_FACING_DOWN
- ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
+ ld a, $2
+ ld [wSprite01StateData1MovementStatus], a
+ xor a
+ ld [wSprite01StateData1FacingDirection], a
predef HealParty
SetEvent EVENT_BATTLED_RIVAL_IN_OAKS_LAB
@@ -465,25 +428,26 @@ OaksLabRivalStartsExitScript:
.RivalExitMovement
db NPC_CHANGE_FACING
db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
+ db $04
+ db $04
+ db $04
+ db $04
+ db $04
db -1 ; end
OaksLabPlayerWatchRivalExitScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
jr nz, .checkRivalPosition
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
ld a, HS_OAKS_LAB_RIVAL
ld [wMissableObjectIndex], a
predef HideObject
- xor a
- ld [wJoyIgnore], a
- call PlayDefaultMusic ; reset to map music
- ld a, SCRIPT_OAKSLAB_NOOP
+ call PlayDefaultMusic
+ ld a, SCRIPT_OAKSLAB_PIKACHU_ESCAPES_POKEBALL
ld [wOaksLabCurScript], a
- jr .done
+ ret
; make the player keep facing the rival as he walks away
.checkRivalPosition
ld a, [wNPCNumScriptedSteps]
@@ -493,31 +457,53 @@ OaksLabPlayerWatchRivalExitScript:
cp 4
jr nz, .turnPlayerLeft
ld a, SPRITE_FACING_RIGHT
- ld [wSpritePlayerStateData1FacingDirection], a
jr .done
.turnPlayerLeft
ld a, SPRITE_FACING_LEFT
- ld [wSpritePlayerStateData1FacingDirection], a
jr .done
.turnPlayerDown
cp $4
ret nz
xor a ; ld a, SPRITE_FACING_DOWN
- ld [wSpritePlayerStateData1FacingDirection], a
.done
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ret
+
+OaksLabPikachuEscapesPokeballScript:
+; Pikachu comes out
+ ld a, SPRITE_FACING_UP
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, $2
+ ld [wPikachuSpawnState], a
+ farcall SchedulePikachuSpawnForAfterText
+ call EnablePikachuOverworldSpriteDrawing
+ ld a, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS1
+ ldh [hTextID], a
+ call DisplayTextID
+ ld a, SCRIPT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS
+ ld [wOaksLabCurScript], a
+ ret
+
+OaksLabPikachuDislikesPokeballsScript:
+ ld a, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS2
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_OAKSLAB_NOOP
+ ld [wOaksLabCurScript], a
ret
OaksLabRivalArrivesAtOaksRequestScript:
xor a
ldh [hJoyHeld], a
call EnableAutoTextBoxDrawing
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, TEXT_OAKSLAB_RIVAL_GRAMPS
ldh [hTextID], a
call DisplayTextID
+ callfar OaksLabPikachuMovementScript
call OaksLabCalcRivalMovementScript
ld a, HS_OAKS_LAB_RIVAL
ld [wMissableObjectIndex], a
@@ -549,7 +535,8 @@ OaksLabRivalFaceUpOakFaceDownScript:
ldh [hSpriteIndex], a
xor a ; SPRITE_FACING_DOWN
ldh [hSpriteFacingDirection], a
- jp SetSpriteFacingDirectionAndDelay
+ call SetSpriteFacingDirectionAndDelay
+ ret
OaksLabOakGivesPokedexScript:
ld a, [wStatusFlags5]
@@ -560,7 +547,7 @@ OaksLabOakGivesPokedexScript:
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
call OaksLabRivalFaceUpOakFaceDownScript
- ld a, TEXT_OAKSLAB_RIVAL_WHAT_DID_YOU_CALL_ME_FOR
+ ld a, TEXT_OAKSLAB_RIVAL_MY_POKEMON_HAS_GROWN_STRONGER
ldh [hTextID], a
call DisplayTextID
call DelayFrame
@@ -598,11 +585,13 @@ OaksLabOakGivesPokedexScript:
ldh [hTextID], a
call DisplayTextID
SetEvent EVENT_GOT_POKEDEX
+ ld a, SCRIPT_VIRIDIANCITY_AFTER_POKEDEX
+ ld [wViridianCityCurScript], a
SetEvent EVENT_OAK_GOT_PARCEL
ld a, HS_LYING_OLD_MAN
ld [wMissableObjectIndex], a
predef HideObject
- ld a, HS_OLD_MAN
+ ld a, HS_OLD_MAN_2
ld [wMissableObjectIndex], a
predef ShowObject
ld a, [wSavedNPCMovementDirections2Index]
@@ -612,9 +601,7 @@ OaksLabOakGivesPokedexScript:
xor a ; NPC_MOVEMENT_DOWN
call FillMemory
ld [hl], $ff
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, OAKSLAB_RIVAL
ldh [hSpriteIndex], a
@@ -639,8 +626,6 @@ OaksLabRivalLeavesWithPokedexScript:
ld a, HS_ROUTE_22_RIVAL_1
ld [wMissableObjectIndex], a
predef ShowObject
- ld a, SCRIPT_PALLETTOWN_DAISY
- ld [wPalletTownCurScript], a
xor a
ld [wJoyIgnore], a
@@ -669,7 +654,8 @@ OaksLabScript_RemoveParcel:
ld [wWhichPokemon], a
ld a, 1
ld [wItemQuantity], a
- jp RemoveItemFromInventory
+ call RemoveItemFromInventory
+ ret
OaksLabCalcRivalMovementScript:
ld a, $7c
@@ -722,39 +708,37 @@ OaksLabLoadTextPointers2Script:
OaksLab_TextPointers:
def_text_pointers
- dw_const OaksLabRivalText, TEXT_OAKSLAB_RIVAL
- dw_const OaksLabCharmanderPokeBallText, TEXT_OAKSLAB_CHARMANDER_POKE_BALL
- dw_const OaksLabSquirtlePokeBallText, TEXT_OAKSLAB_SQUIRTLE_POKE_BALL
- dw_const OaksLabBulbasaurPokeBallText, TEXT_OAKSLAB_BULBASAUR_POKE_BALL
- dw_const OaksLabOak1Text, TEXT_OAKSLAB_OAK1
- dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX1
- dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX2
- dw_const OaksLabOak2Text, TEXT_OAKSLAB_OAK2
- dw_const OaksLabGirlText, TEXT_OAKSLAB_GIRL
- dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST1
- dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST2
- dw_const OaksLabOakDontGoAwayYetText, TEXT_OAKSLAB_OAK_DONT_GO_AWAY_YET
- dw_const OaksLabRivalIllTakeThisOneText, TEXT_OAKSLAB_RIVAL_ILL_TAKE_THIS_ONE
- dw_const OaksLabRivalReceivedMonText, TEXT_OAKSLAB_RIVAL_RECEIVED_MON
- dw_const OaksLabRivalIllTakeYouOnText, TEXT_OAKSLAB_RIVAL_ILL_TAKE_YOU_ON
- dw_const OaksLabRivalSmellYouLaterText, TEXT_OAKSLAB_RIVAL_SMELL_YOU_LATER
- dw_const OaksLabRivalFedUpWithWaitingText, TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING
- dw_const OaksLabOakChooseMonText, TEXT_OAKSLAB_OAK_CHOOSE_MON
- dw_const OaksLabRivalWhatAboutMeText, TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME
- dw_const OaksLabOakBePatientText, TEXT_OAKSLAB_OAK_BE_PATIENT
- dw_const OaksLabRivalGrampsText, TEXT_OAKSLAB_RIVAL_GRAMPS
- dw_const OaksLabRivalWhatDidYouCallMeForText, TEXT_OAKSLAB_RIVAL_WHAT_DID_YOU_CALL_ME_FOR
- dw_const OaksLabOakIHaveARequestText, TEXT_OAKSLAB_OAK_I_HAVE_A_REQUEST
- dw_const OaksLabOakMyInventionPokedexText, TEXT_OAKSLAB_OAK_MY_INVENTION_POKEDEX
- dw_const OaksLabOakGotPokedexText, TEXT_OAKSLAB_OAK_GOT_POKEDEX
- dw_const OaksLabOakThatWasMyDreamText, TEXT_OAKSLAB_OAK_THAT_WAS_MY_DREAM
- dw_const OaksLabRivalLeaveItAllToMeText, TEXT_OAKSLAB_RIVAL_LEAVE_IT_ALL_TO_ME
+ dw_const OaksLabRivalText, TEXT_OAKSLAB_RIVAL
+ dw_const OaksLabEeveePokeBallText, TEXT_OAKSLAB_EEVEE_POKE_BALL
+ dw_const OaksLabOak1Text, TEXT_OAKSLAB_OAK1
+ dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX1
+ dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX2
+ dw_const OaksLabOak2Text, TEXT_OAKSLAB_OAK2
+ dw_const OaksLabGirlText, TEXT_OAKSLAB_GIRL
+ dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST1
+ dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST2
+ dw_const OaksLabOakDontGoAwayYetText, TEXT_OAKSLAB_OAK_DONT_GO_AWAY_YET
+ dw_const OaksLabRivalIllTakeYouOnText, TEXT_OAKSLAB_RIVAL_ILL_TAKE_YOU_ON
+ dw_const OaksLabRivalSmellYouLaterText, TEXT_OAKSLAB_RIVAL_SMELL_YOU_LATER
+ dw_const OaksLabRivalFedUpWithWaitingText, TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING
+ dw_const OaksLabOakChooseMonText, TEXT_OAKSLAB_OAK_CHOOSE_MON
+ dw_const OaksLabRivalWhatAboutMeText, TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME
+ dw_const OaksLabOakBePatientText, TEXT_OAKSLAB_OAK_BE_PATIENT
+ dw_const OaksLabRivalReceivedMonText, TEXT_OAKSLAB_RIVAL_RECEIVED_MON
+ dw_const OaksLabPlayerReceivedMonText, TEXT_OAKSLAB_PLAYER_RECEIVED_MON
+ dw_const OaksLabRivalGrampsText, TEXT_OAKSLAB_RIVAL_GRAMPS
+ dw_const OaksLabRivalMyPokemonHasGrownStrongerText, TEXT_OAKSLAB_RIVAL_MY_POKEMON_HAS_GROWN_STRONGER
+ dw_const OaksLabOakIHaveARequestText, TEXT_OAKSLAB_OAK_I_HAVE_A_REQUEST
+ dw_const OaksLabOakMyInventionPokedexText, TEXT_OAKSLAB_OAK_MY_INVENTION_POKEDEX
+ dw_const OaksLabOakGotPokedexText, TEXT_OAKSLAB_OAK_GOT_POKEDEX
+ dw_const OaksLabOakThatWasMyDreamText, TEXT_OAKSLAB_OAK_THAT_WAS_MY_DREAM
+ dw_const OaksLabRivalLeaveItAllToMeText, TEXT_OAKSLAB_RIVAL_LEAVE_IT_ALL_TO_ME
+ dw_const OaksLabPikachuDislikesPokeballsText1, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS1
+ dw_const OaksLabPikachuDislikesPokeballsText2, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS2
OaksLab_TextPointers2:
dw OaksLabRivalText
- dw OaksLabCharmanderPokeBallText
- dw OaksLabSquirtlePokeBallText
- dw OaksLabBulbasaurPokeBallText
+ dw OaksLabEeveePokeBallText
dw OaksLabOak1Text
dw OaksLabPokedexText
dw OaksLabPokedexText
@@ -773,7 +757,7 @@ OaksLabRivalText:
.beforeChooseMon
CheckEventReuseA EVENT_GOT_STARTER
jr nz, .afterChooseMon
- ld hl, .GoAheadAndChooseText
+ ld hl, .IllGetABetterPokemonThanYou
call PrintText
jr .done
.afterChooseMon
@@ -786,182 +770,40 @@ OaksLabRivalText:
text_far _OaksLabRivalGrampsIsntAroundText
text_end
-.GoAheadAndChooseText:
- text_far _OaksLabRivalGoAheadAndChooseText
+.IllGetABetterPokemonThanYou:
+ text_far _OaksLabRivalIllGetABetterPokemonThanYou
text_end
.MyPokemonLooksStrongerText:
text_far _OaksLabRivalMyPokemonLooksStrongerText
text_end
-OaksLabCharmanderPokeBallText:
- text_asm
- ld a, STARTER2
- ld [wRivalStarterTemp], a
- ld a, OAKSLAB_SQUIRTLE_POKE_BALL
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER1
- ld b, OAKSLAB_CHARMANDER_POKE_BALL
- jr OaksLabSelectedPokeBallScript
-
-OaksLabSquirtlePokeBallText:
+OaksLabEeveePokeBallText:
text_asm
- ld a, STARTER3
- ld [wRivalStarterTemp], a
- ld a, OAKSLAB_BULBASAUR_POKE_BALL
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER2
- ld b, OAKSLAB_SQUIRTLE_POKE_BALL
- jr OaksLabSelectedPokeBallScript
-
-OaksLabBulbasaurPokeBallText:
- text_asm
- ld a, STARTER1
- ld [wRivalStarterTemp], a
- ld a, OAKSLAB_CHARMANDER_POKE_BALL
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER3
- ld b, OAKSLAB_BULBASAUR_POKE_BALL
-
-OaksLabSelectedPokeBallScript:
- ld [wCurPartySpecies], a
- ld [wPokedexNum], a
- ld a, b
- ld [wSpriteIndex], a
- CheckEvent EVENT_GOT_STARTER
- jp nz, OaksLabLastMonScript
- CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON
- jr nz, OaksLabShowPokeBallPokemonScript
- ld hl, OaksLabThoseArePokeBallsText
- call PrintText
- jp TextScriptEnd
-
-OaksLabThoseArePokeBallsText:
- text_far _OaksLabThoseArePokeBallsText
- text_end
-
-OaksLabShowPokeBallPokemonScript:
- ld a, OAKSLAB_OAK1
- ldh [hSpriteIndex], a
- ld a, SPRITESTATEDATA1_FACINGDIRECTION
- ldh [hSpriteDataOffset], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_DOWN
- ld a, OAKSLAB_RIVAL
- ldh [hSpriteIndex], a
- ld a, SPRITESTATEDATA1_FACINGDIRECTION
- ldh [hSpriteDataOffset], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_RIGHT
- ld hl, wStatusFlags5
- set BIT_NO_TEXT_DELAY, [hl]
- predef StarterDex
- ld hl, wStatusFlags5
- res BIT_NO_TEXT_DELAY, [hl]
- call ReloadMapData
- ld c, 10
- call DelayFrames
- ld a, [wSpriteIndex]
- cp OAKSLAB_CHARMANDER_POKE_BALL
- jr z, OaksLabYouWantCharmanderText
- cp OAKSLAB_SQUIRTLE_POKE_BALL
- jr z, OaksLabYouWantSquirtleText
- jr OaksLabYouWantBulbasaurText
-
-OaksLabYouWantCharmanderText:
- ld hl, .Text
- jr OaksLabMonChoiceMenu
-.Text:
- text_far _OaksLabYouWantCharmanderText
- text_end
-
-OaksLabYouWantSquirtleText:
- ld hl, .Text
- jr OaksLabMonChoiceMenu
-.Text:
- text_far _OaksLabYouWantSquirtleText
- text_end
-
-OaksLabYouWantBulbasaurText:
- ld hl, .Text
- jr OaksLabMonChoiceMenu
-.Text:
- text_far _OaksLabYouWantBulbasaurText
- text_end
-
-OaksLabMonChoiceMenu:
- call PrintText
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- call YesNoChoice ; yes/no menu
- ld a, [wCurrentMenuItem]
- and a
- jr nz, OaksLabMonChoiceEnd
- ld a, [wCurPartySpecies]
- ld [wPlayerStarter], a
- ld [wNamedObjectIndex], a
- call GetMonName
- ld a, [wSpriteIndex]
- cp OAKSLAB_CHARMANDER_POKE_BALL
- jr nz, .not_charmander
- ld a, HS_STARTER_BALL_1
- jr .continue
-.not_charmander
- cp OAKSLAB_SQUIRTLE_POKE_BALL
- jr nz, .not_squirtle
- ld a, HS_STARTER_BALL_2
- jr .continue
-.not_squirtle
- ld a, HS_STARTER_BALL_3
-.continue
- ld [wMissableObjectIndex], a
- predef HideObject
- ld a, $1
+ CheckEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
+ jr nz, OaksLabRivalExclamationScript
+ ld a, $0
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, OaksLabMonEnergeticText
- call PrintText
- ld hl, OaksLabReceivedMonText
+ ld hl, .Text
call PrintText
- xor a ; PLAYER_PARTY_DATA
- ld [wMonDataLocation], a
- ld a, 5
- ld [wCurEnemyLevel], a
- ld a, [wCurPartySpecies]
- ld [wPokedexNum], a
- call AddPartyMon
- ld hl, wStatusFlags4
- set BIT_GOT_STARTER, [hl]
- ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
- ld [wJoyIgnore], a
- ld a, SCRIPT_OAKSLAB_CHOSE_STARTER_SCRIPT
- ld [wOaksLabCurScript], a
-OaksLabMonChoiceEnd:
jp TextScriptEnd
-OaksLabMonEnergeticText:
- text_far _OaksLabMonEnergeticText
- text_end
-
-OaksLabReceivedMonText:
- text_far _OaksLabReceivedMonText
- sound_get_key_item
+.Text:
+ text_far _OaksLabThatsAPokeball
text_end
-OaksLabLastMonScript:
- ld a, OAKSLAB_OAK1
- ldh [hSpriteIndex], a
- ld a, SPRITESTATEDATA1_FACINGDIRECTION
- ldh [hSpriteDataOffset], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_DOWN
- ld hl, OaksLabLastMonText
- call PrintText
+OaksLabRivalExclamationScript:
+ ld a, OAKSLAB_RIVAL
+ ld [wEmotionBubbleSpriteIndex], a
+ xor a ; EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld a, SCRIPT_OAKSLAB_CHOSE_STARTER_SCRIPT
+ ld [wOaksLabCurScript], a
jp TextScriptEnd
-OaksLabLastMonText:
- text_far _OaksLabLastMonText
- text_end
-
OaksLabOak1Text:
text_asm
CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
@@ -972,8 +814,6 @@ OaksLabOak1Text:
ld a, [wNumSetBits]
cp 2
jr c, .check_for_poke_balls
- CheckEvent EVENT_GOT_POKEDEX
- jr z, .check_for_poke_balls
.already_got_poke_balls
ld hl, .HowIsYourPokedexComingText
call PrintText
@@ -985,6 +825,12 @@ OaksLabOak1Text:
ld b, POKE_BALL
call IsItemInBag
jr nz, .come_see_me_sometimes
+ ld hl, wPokedexOwned
+ ld b, wPokedexOwnedEnd - wPokedexOwned
+ call CountSetBits
+ ld a, [wNumSetBits]
+ cp 2
+ jr nc, .come_see_me_sometimes
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
jr nz, .give_poke_balls
CheckEvent EVENT_GOT_POKEDEX
@@ -994,7 +840,7 @@ OaksLabOak1Text:
ld a, [wStatusFlags4]
bit BIT_GOT_STARTER, a
jr nz, .already_got_pokemon
- ld hl, .WhichPokemonDoYouWantText
+ ld hl, .GoAheadItsYours
call PrintText
jr .done
.already_got_pokemon
@@ -1005,7 +851,7 @@ OaksLabOak1Text:
ld b, OAKS_PARCEL
call IsItemInBag
jr nz, .got_parcel
- ld hl, .RaiseYourYoungPokemonText
+ ld hl, .YouShouldTalkToIt
call PrintText
jr .done
.got_parcel
@@ -1033,16 +879,16 @@ OaksLabOak1Text:
.done
jp TextScriptEnd
-.WhichPokemonDoYouWantText:
- text_far _OaksLabOak1WhichPokemonDoYouWantText
+.GoAheadItsYours:
+ text_far _OaksLabOak1GoAheadItsYours
text_end
.YourPokemonCanFightText:
text_far _OaksLabOak1YourPokemonCanFightText
text_end
-.RaiseYourYoungPokemonText:
- text_far _OaksLabOak1RaiseYourYoungPokemonText
+.YouShouldTalkToIt:
+ text_far _OaksLabOak1YouShouldTalkToIt
text_end
.DeliverParcelText:
@@ -1133,35 +979,86 @@ OaksLabOakBePatientText:
text_far _OaksLabOakBePatientText
text_end
-OaksLabOakDontGoAwayYetText:
+OaksLabRivalReceivedMonText:
text_asm
- ld hl, .Text
+ ld hl, OaksLabRivalTakesText1
+ call PrintText
+ ld hl, OaksLabRivalTakesText2
+ call PrintText
+ ld hl, OaksLabRivalTakesText3
+ call PrintText
+ ld hl, OaksLabRivalTakesText4
+ call PrintText
+ ld hl, OaksLabRivalTakesText5
call PrintText
jp TextScriptEnd
-.Text:
- text_far _OaksLabOakDontGoAwayYetText
+OaksLabRivalTakesText1:
+ text_far _OaksLabRivalTakesText1
+ text_end
+
+OaksLabRivalTakesText2:
+ text_far _OaksLabRivalTakesText2
+ sound_get_key_item
+ text_end
+
+OaksLabRivalTakesText3:
+ text_far _OaksLabRivalTakesText3
text_end
-OaksLabRivalIllTakeThisOneText:
+OaksLabRivalTakesText4:
+ text_far _OaksLabRivalTakesText4
+ text_end
+
+OaksLabRivalTakesText5:
+ text_far _OaksLabRivalTakesText5
+ text_end
+
+OaksLabPlayerReceivedMonText:
text_asm
- ld hl, .Text
+ ld a, STARTER_PIKACHU
+ ld [wPlayerStarter], a
+ ld [wNamedObjectIndex], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OaksLabOakGivesText
+ call PrintText
+ ld hl, OaksLabReceivedText
call PrintText
+ xor a
+ ld [wMonDataLocation], a
+ ld a, 5
+ ld [wCurEnemyLevel], a
+ ld a, STARTER_PIKACHU
+ ld [wPokedexNum], a
+ ld [wCurPartySpecies], a
+ call AddPartyMon
+ ld a, LIGHT_BALL_GSC
+ ld [wPartyMon1CatchRate], a
+ call DisablePikachuOverworldSpriteDrawing
+ SetEvent EVENT_GOT_STARTER
+ ld hl, wStatusFlags4
+ set BIT_GOT_STARTER, [hl]
jp TextScriptEnd
-.Text:
- text_far _OaksLabRivalIllTakeThisOneText
+OaksLabOakGivesText:
+ text_far _OaksLabOakGivesText
text_end
-OaksLabRivalReceivedMonText:
+OaksLabReceivedText:
+ text_far _OaksLabReceivedText
+ sound_get_key_item
+ text_end
+
+OaksLabOakDontGoAwayYetText:
text_asm
ld hl, .Text
call PrintText
jp TextScriptEnd
.Text:
- text_far _OaksLabRivalReceivedMonText
- sound_get_key_item
+ text_far _OaksLabOakDontGoAwayYetText
text_end
OaksLabRivalIllTakeYouOnText:
@@ -1192,12 +1089,34 @@ OaksLabRivalSmellYouLaterText:
text_far _OaksLabRivalSmellYouLaterText
text_end
+OaksLabPikachuDislikesPokeballsText1:
+ text_asm
+ ldpikacry e, PikachuCry2
+ callfar PlayPikachuSoundClip
+ ld hl, .Text
+ call PrintText
+ jp TextScriptEnd
+
+.Text:
+ text_far _OaksLabPikachuDislikesPokeballsText1
+ text_end
+
+OaksLabPikachuDislikesPokeballsText2:
+ text_asm
+ ld hl, .Text
+ call PrintText
+ jp TextScriptEnd
+
+.Text:
+ text_far _OaksLabPikachuDislikesPokeballsText2
+ text_end
+
OaksLabRivalGrampsText:
text_far _OaksLabRivalGrampsText
text_end
-OaksLabRivalWhatDidYouCallMeForText:
- text_far _OaksLabRivalWhatDidYouCallMeForText
+OaksLabRivalMyPokemonHasGrownStrongerText:
+ text_far _OaksLabRivalMyPokemonHasGrownStrongerText
text_end
OaksLabOakIHaveARequestText:
diff --git a/scripts/OaksLab_2.asm b/scripts/OaksLab_2.asm
new file mode 100644
index 00000000..f642aa7b
--- /dev/null
+++ b/scripts/OaksLab_2.asm
@@ -0,0 +1,28 @@
+OaksLabPikachuMovementScript::
+ ld a, [wYCoord]
+ cp 3
+ jr z, .movement2
+ ld b, SPRITE_FACING_DOWN
+ ld hl, OaksLabPikachuMovementData1
+ call TryApplyPikachuMovementData
+ ret
+
+.movement2
+ ld b, SPRITE_FACING_LEFT
+ ld hl, OaksLabPikachuMovementData2
+ call TryApplyPikachuMovementData
+ ret
+
+OaksLabPikachuMovementData1:
+ db $00
+ db $1f
+ db $1e
+ db $38
+ db $3f
+
+OaksLabPikachuMovementData2:
+ db $00
+ db $1d
+ db $20
+ db $36
+ db $3f
diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm
index 57c231fa..42e3ea3e 100644
--- a/scripts/PalletTown.asm
+++ b/scripts/PalletTown.asm
@@ -13,6 +13,9 @@ PalletTown_ScriptPointers:
dw_const PalletTownDefaultScript, SCRIPT_PALLETTOWN_DEFAULT
dw_const PalletTownOakHeyWaitScript, SCRIPT_PALLETTOWN_OAK_HEY_WAIT
dw_const PalletTownOakWalksToPlayerScript, SCRIPT_PALLETTOWN_OAK_WALKS_TO_PLAYER
+ dw_const PalletTownOakGreetsPlayerScript, SCRIPT_PALLETTOWN_OAK_GREETS_PLAYER
+ dw_const PalletTownPikachuBattleScript, SCRIPT_PALLETTOWN_PIKACHU_BATTLE
+ dw_const PalletTownAfterPikachuBattleScript, SCRIPT_PALLETTOWN_AFTER_PIKACHU_BATTLE
dw_const PalletTownOakNotSafeComeWithMeScript, SCRIPT_PALLETTOWN_OAK_NOT_SAFE_COME_WITH_ME
dw_const PalletTownPlayerFollowsOakScript, SCRIPT_PALLETTOWN_PLAYER_FOLLOWS_OAK
dw_const PalletTownDaisyScript, SCRIPT_PALLETTOWN_DAISY
@@ -22,20 +25,25 @@ PalletTownDefaultScript:
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB
ret nz
ld a, [wYCoord]
- cp 1 ; is player near north exit?
+ cp 0 ; is player at north exit?
ret nz
+ ResetEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+ ld a, [wXCoord]
+ cp 10
+ jr z, .asm_18e40
+ SetEventReuseHL EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+.asm_18e40
xor a
ldh [hJoyHeld], a
- ld a, PLAYER_DIR_DOWN
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
- ld a, SFX_STOP_ALL_MUSIC
- call PlaySound
+ call StopAllMusic
ld a, BANK(Music_MeetProfOak)
ld c, a
ld a, MUSIC_MEET_PROF_OAK ; "oak appears" music
call PlayMusic
- ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
- ld [wJoyIgnore], a
SetEvent EVENT_OAK_APPEARED_IN_PALLET
; trigger the next script
@@ -44,6 +52,8 @@ PalletTownDefaultScript:
ret
PalletTownOakHeyWaitScript:
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
xor a
ld [wOakWalkedToPlayer], a
ld a, TEXT_PALLETTOWN_OAK
@@ -51,9 +61,18 @@ PalletTownOakHeyWaitScript:
call DisplayTextID
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
+ ld hl, wSprite01StateData2MapY
+ ld a, 8
+ ld [hli], a ; SPRITESTATEDATA2_MAPY
+ ld a, 14
+ ld [hl], a ; SPRITESTATEDATA2_MAPX
ld a, HS_PALLET_TOWN_OAK
ld [wMissableObjectIndex], a
predef ShowObject
+ ld a, $2
+ ld [wSprite01StateData1MovementStatus], a
+ ld a, SPRITE_FACING_UP
+ ld [wSprite01StateData1FacingDirection], a
; trigger the next script
ld a, SCRIPT_PALLETTOWN_OAK_WALKS_TO_PLAYER
@@ -61,13 +80,8 @@ PalletTownOakHeyWaitScript:
ret
PalletTownOakWalksToPlayerScript:
- ld a, PALLETTOWN_OAK
- ldh [hSpriteIndex], a
- ld a, SPRITE_FACING_UP
- ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
call Delay3
- ld a, 1
+ ld a, 0
ld [wYCoord], a
ld a, 1
ldh [hNPCPlayerRelativePosPerspective], a
@@ -82,30 +96,86 @@ PalletTownOakWalksToPlayerScript:
ld a, PALLETTOWN_OAK
ldh [hSpriteIndex], a
call MoveSprite
- ld a, PAD_BUTTONS | PAD_CTRL_PAD
- ld [wJoyIgnore], a
; trigger the next script
- ld a, SCRIPT_PALLETTOWN_OAK_NOT_SAFE_COME_WITH_ME
+ ld a, SCRIPT_PALLETTOWN_OAK_GREETS_PLAYER
ld [wPalletTownCurScript], a
ret
-PalletTownOakNotSafeComeWithMeScript:
+PalletTownOakGreetsPlayerScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- xor a ; ld a, SPRITE_FACING_DOWN
- ld [wSpritePlayerStateData1FacingDirection], a
- ld a, TRUE
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, 1
ld [wOakWalkedToPlayer], a
+ ld a, $2
+ ld [wSprite01StateData1MovementStatus], a
+ ld a, SPRITE_FACING_UP
+ ld [wSprite01StateData1FacingDirection], a
+ ld a, TEXT_PALLETTOWN_OAK
+ ldh [hTextID], a
+ call DisplayTextID
+ ; oak faces the horizontally adjacent patch of grass to face pikachu
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, $2
+ ld [wSprite01StateData1MovementStatus], a
+ CheckEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+ ld a, SPRITE_FACING_RIGHT
+ jr z, .asm_18f01
+ ld a, SPRITE_FACING_LEFT
+.asm_18f01
+ ld [wSprite01StateData1FacingDirection], a
+
+ ; trigger the next script
+ ld a, SCRIPT_PALLETTOWN_PIKACHU_BATTLE
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownPikachuBattleScript:
+ ; start the pikachu battle
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
+ xor a
+ ld [wListScrollOffset], a
+ ld a, BATTLE_TYPE_PIKACHU
+ ld [wBattleType], a
+ ld a, STARTER_PIKACHU
+ ld [wCurOpponent], a
+ ld a, 5
+ ld [wCurEnemyLevel], a
+
+ ; trigger the next script
+ ld a, SCRIPT_PALLETTOWN_AFTER_PIKACHU_BATTLE
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownAfterPikachuBattleScript:
+ ld a, 2
+ ld [wOakWalkedToPlayer], a
ld a, TEXT_PALLETTOWN_OAK
ldh [hTextID], a
call DisplayTextID
-; set up movement script that causes the player to follow Oak to his lab
+ ld a, $2
+ ld [wSprite01StateData1MovementStatus], a
+ ld a, SPRITE_FACING_UP
+ ld [wSprite01StateData1FacingDirection], a
+ ld a, TEXT_PALLETTOWN_OAK_COME_WITH_ME
+ ldh [hTextID], a
+ call DisplayTextID
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
+
+ ; trigger the next script
+ ld a, SCRIPT_PALLETTOWN_OAK_NOT_SAFE_COME_WITH_ME
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownOakNotSafeComeWithMeScript:
+ xor a
+ ld [wSpritePlayerStateData1FacingDirection], a
ld a, PALLETTOWN_OAK
ld [wSpriteIndex], a
xor a
@@ -158,6 +228,7 @@ PalletTown_TextPointers:
dw_const PalletTownSignText, TEXT_PALLETTOWN_SIGN
dw_const PalletTownPlayersHouseSignText, TEXT_PALLETTOWN_PLAYERSHOUSE_SIGN
dw_const PalletTownRivalsHouseSignText, TEXT_PALLETTOWN_RIVALSHOUSE_SIGN
+ dw_const PalletTownOakComeWithMe, TEXT_PALLETTOWN_OAK_COME_WITH_ME
PalletTownOakText:
text_asm
@@ -169,7 +240,12 @@ PalletTownOakText:
ld hl, .HeyWaitDontGoOutText
jr .done
.next
- ld hl, .ItsUnsafeText
+ dec a
+ jr nz, .whew
+ ld hl, .ThatWasCloseText
+ jr .done
+.whew
+ ld hl, .WhewText
.done
call PrintText
jp TextScriptEnd
@@ -179,16 +255,25 @@ PalletTownOakText:
text_asm
ld c, 10
call DelayFrames
- xor a
- ld [wEmotionBubbleSpriteIndex], a ; player's sprite
- ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE
- predef EmotionBubble
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
+ ld a, 0
+ ld [wEmotionBubbleSpriteIndex], a ; player's sprite
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
jp TextScriptEnd
-.ItsUnsafeText:
- text_far _PalletTownOakItsUnsafeText
+.ThatWasCloseText:
+ text_far _PalletTownOakThatWasCloseText
+ text_end
+
+.WhewText:
+ text_far _PalletTownOakWhewText
+ text_end
+
+PalletTownOakComeWithMe:
+ text_far _PalletTownOakComeWithMe
text_end
PalletTownGirlText:
@@ -204,8 +289,23 @@ PalletTownOaksLabSignText:
text_end
PalletTownSignText:
+IF DEF(_DEBUG)
+ text_asm
+ ld a, 239
+ inc a
+ ld [wWhichPewterGuy], a
+ ld hl, .Text
+ call PrintText
+ jp TextScriptEnd
+
+.Text:
+ text_decimal wWhichPewterGuy, 1, 3
+ text "bit"
+ done
+ELSE
text_far _PalletTownSignText
text_end
+ENDC
PalletTownPlayersHouseSignText:
text_far _PalletTownPlayersHouseSignText
diff --git a/scripts/PewterCity.asm b/scripts/PewterCity.asm
index 9693b88f..ffe546ca 100644
--- a/scripts/PewterCity.asm
+++ b/scripts/PewterCity.asm
@@ -1,8 +1,11 @@
PewterCity_Script:
call EnableAutoTextBoxDrawing
+ ld hl, wd492
+ res 7, [hl]
ld hl, PewterCity_ScriptPointers
ld a, [wPewterCityCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
PewterCity_ScriptPointers:
def_script_pointers
@@ -31,7 +34,7 @@ ENDC
ld hl, PewterCityPlayerLeavingEastCoords
call ArePlayerCoordsInArray
ret nc
- ld a, PAD_CTRL_PAD
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, TEXT_PEWTERCITY_YOUNGSTER
ldh [hTextID], a
@@ -53,9 +56,9 @@ PewterCitySuperNerd1ShowsPlayerMuseumScript:
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, ($3 << 4) | SPRITE_FACING_UP
+ ld a, SPRITE_FACING_UP
ldh [hSpriteImageIndex], a
- call SetSpriteImageIndexAfterSettingFacingDirection
+ call SpriteFunc_34a1
call PlayDefaultMusic
ld hl, wMiscFlags
set BIT_NO_SPRITE_UPDATES, [hl]
@@ -120,10 +123,7 @@ PewterCityYoungsterShowsPlayerGymScript:
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_LEFT
ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
- ld a, ($1 << 4) | SPRITE_FACING_LEFT
- ldh [hSpriteImageIndex], a
- call SetSpriteImageIndexAfterSettingFacingDirection
+ call SpriteFunc_34a1
call PlayDefaultMusic
ld hl, wMiscFlags
set BIT_NO_SPRITE_UPDATES, [hl]
diff --git a/scripts/PewterGym.asm b/scripts/PewterGym.asm
index 0f4b9ebe..4cb13fa4 100644
--- a/scripts/PewterGym.asm
+++ b/scripts/PewterGym.asm
@@ -14,7 +14,8 @@ PewterGym_Script:
.LoadNames:
ld hl, .CityName
ld de, .LeaderName
- jp LoadGymLeaderAndCityName
+ call LoadGymLeaderAndCityName
+ ret
.CityName:
db "PEWTER CITY@"
@@ -155,7 +156,7 @@ PewterGymTM34NoRoomText:
PewterGymBrockReceivedBoulderBadgeText:
text_far _PewterGymBrockReceivedBoulderBadgeText
- sound_level_up ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
+ sound_get_item_1
text_far _PewterGymBrockBoulderBadgeInfoText ; Text to tell that the flash technique can be used
text_end
@@ -188,6 +189,9 @@ PewterGymGuideText:
ld a, [wCurrentMenuItem]
and a
jr nz, .PewterGymGuideBeginAdviceText
+ ld a, [wd471]
+ bit 7, a
+ jp nz, .asm_5c3fa
ld hl, PewterGymGuideBeginAdviceText
call PrintText
jr .PewterGymGuideAdviceText
@@ -203,6 +207,10 @@ PewterGymGuideText:
call PrintText
.done
jp TextScriptEnd
+.asm_5c3fa
+ ld hl, PewterGymText_5c41c
+ call PrintText
+ jp TextScriptEnd
PewterGymGuidePreAdviceText:
text_far _PewterGymGuidePreAdviceText
@@ -223,3 +231,7 @@ PewterGymGuideFreeServiceText:
PewterGymGuidePostBattleText:
text_far _PewterGymGuidePostBattleText
text_end
+
+PewterGymText_5c41c:
+ text_far _PewterGymGuyText
+ text_end
diff --git a/scripts/PewterNidoranHouse.asm b/scripts/PewterNidoranHouse.asm
index bd2de197..6c5820ab 100644
--- a/scripts/PewterNidoranHouse.asm
+++ b/scripts/PewterNidoranHouse.asm
@@ -1,5 +1,6 @@
PewterNidoranHouse_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterNidoranHouse_TextPointers:
def_text_pointers
diff --git a/scripts/PewterPokecenter.asm b/scripts/PewterPokecenter.asm
index e5bda65e..ae5c6349 100644
--- a/scripts/PewterPokecenter.asm
+++ b/scripts/PewterPokecenter.asm
@@ -1,6 +1,9 @@
PewterPokecenter_Script:
+ ld hl, wd492
+ set 7, [hl]
call Serial_TryEstablishingExternallyClockedConnection
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterPokecenter_TextPointers:
def_text_pointers
@@ -8,6 +11,8 @@ PewterPokecenter_TextPointers:
dw_const PewterPokecenterGentlemanText, TEXT_PEWTERPOKECENTER_GENTLEMAN
dw_const PewterPokecenterJigglypuffText, TEXT_PEWTERPOKECENTER_JIGGLYPUFF
dw_const PewterPokecenterLinkReceptionistText, TEXT_PEWTERPOKECENTER_LINK_RECEPTIONIST
+ dw_const PewterPokecenterCooltrainerFText, TEXT_PEWTERPOKECENTER_COOLTRAINER_F
+ dw_const PewterPokecenterChanseyText, TEXT_PEWTERPOKECENTER_CHANSEY
PewterPokecenterNurseText:
script_pokecenter_nurse
@@ -18,70 +23,18 @@ PewterPokecenterGentlemanText:
PewterPokecenterJigglypuffText:
text_asm
- ld a, TRUE
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, .Text
- call PrintText
-
- ld a, SFX_STOP_ALL_MUSIC
- call PlaySound
- ld c, 32
- call DelayFrames
-
- ld hl, .FacingDirections
- ld de, wJigglypuffFacingDirections
- ld bc, .FacingDirectionsEnd - .FacingDirections
- call CopyData
-
- ld a, [wSprite03StateData1ImageIndex]
- ld hl, wJigglypuffFacingDirections
-.findMatchingFacingDirectionLoop
- cp [hl]
- inc hl
- jr nz, .findMatchingFacingDirectionLoop
- dec hl
-
- push hl
- ld c, BANK(Music_JigglypuffSong)
- ld a, MUSIC_JIGGLYPUFF_SONG
- call PlayMusic
- pop hl
-
-.spinMovementLoop
- ld a, [hl]
- ld [wSprite03StateData1ImageIndex], a
-; rotate the array
- push hl
- ld hl, wJigglypuffFacingDirections
- ld de, wJigglypuffFacingDirections - 1
- ld bc, .FacingDirectionsEnd - .FacingDirections
- call CopyData
- ld a, [wJigglypuffFacingDirections - 1]
- ld [wJigglypuffFacingDirections + 3], a
- pop hl
- ld c, 24
- call DelayFrames
- ld a, [wChannelSoundIDs]
- ld b, a
- ld a, [wChannelSoundIDs + CHAN2]
- or b
- jr nz, .spinMovementLoop
-
- ld c, 48
- call DelayFrames
- call PlayDefaultMusic
+ farcall PewterJigglypuff
jp TextScriptEnd
-.Text:
- text_far _PewterPokecenterJigglypuffText
- text_end
-
-.FacingDirections:
- db $30 | SPRITE_FACING_DOWN
- db $30 | SPRITE_FACING_LEFT
- db $30 | SPRITE_FACING_UP
- db $30 | SPRITE_FACING_RIGHT
-.FacingDirectionsEnd:
-
PewterPokecenterLinkReceptionistText:
script_cable_club_receptionist
+
+PewterPokecenterCooltrainerFText:
+ text_asm
+ farcall PewterPokecenterPrintCooltrainerFText
+ jp TextScriptEnd
+
+PewterPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/PewterPokecenter_2.asm b/scripts/PewterPokecenter_2.asm
new file mode 100644
index 00000000..2aeb23f7
--- /dev/null
+++ b/scripts/PewterPokecenter_2.asm
@@ -0,0 +1,79 @@
+PewterPokecenterPrintCooltrainerFText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _PewterPokecenterText3
+ text_end
+
+PewterJigglypuff::
+ ld a, TRUE
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .Text
+ call PrintText
+
+ call StopAllMusic
+ ld c, 32
+ call DelayFrames
+
+ ld hl, .FacingDirections
+ ld de, wJigglypuffFacingDirections
+ ld bc, .FacingDirectionsEnd - .FacingDirections
+ call CopyData
+
+ ld a, [wSprite03StateData1ImageIndex]
+ ld hl, wJigglypuffFacingDirections
+.findMatchingFacingDirectionLoop
+ cp [hl]
+ inc hl
+ jr nz, .findMatchingFacingDirectionLoop
+ dec hl
+
+ push hl
+ ld c, BANK(Music_JigglypuffSong)
+ ld a, MUSIC_JIGGLYPUFF_SONG
+ call PlayMusic
+ pop hl
+
+.spinMovementLoop
+ ld a, [hl]
+ ld [wSprite03StateData1ImageIndex], a
+; rotate the array
+ push hl
+ ld hl, wJigglypuffFacingDirections
+ ld de, wJigglypuffFacingDirections - 1
+ ld bc, .FacingDirectionsEnd - .FacingDirections
+ call CopyData
+ ld a, [wJigglypuffFacingDirections - 1]
+ ld [wJigglypuffFacingDirections + 3], a
+ pop hl
+ ld c, 24
+ call DelayFrames
+ ld a, [wChannelSoundIDs]
+ ld b, a
+ ld a, [wChannelSoundIDs + CHAN2]
+ or b
+ jr nz, .spinMovementLoop
+
+ ld c, 48
+ call DelayFrames
+ call PlayDefaultMusic
+ ld a, [wd471]
+ bit 7, a
+ ret z
+ callfar CheckPikachuStatusCondition
+ ret c
+ call DisablePikachuFollowingPlayer
+ ret
+
+.Text:
+ text_far _PewterPokecenterJigglypuffText
+ text_end
+
+.FacingDirections:
+ db $40 | SPRITE_FACING_DOWN
+ db $40 | SPRITE_FACING_LEFT
+ db $40 | SPRITE_FACING_UP
+ db $40 | SPRITE_FACING_RIGHT
+.FacingDirectionsEnd:
diff --git a/scripts/PokemonFanClub.asm b/scripts/PokemonFanClub.asm
index e14eb7ed..4c8acd39 100644
--- a/scripts/PokemonFanClub.asm
+++ b/scripts/PokemonFanClub.asm
@@ -1,84 +1,162 @@
PokemonFanClub_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ld hl, PokemonFanClub_ScriptPointers
+ ld a, [wPokemonFanClubCurScript]
+ call CallFunctionInTable
+ ret
-PokemonFanClub_CheckBikeInBag:
-; check if any bike paraphernalia in bag
- CheckEvent EVENT_GOT_BIKE_VOUCHER
- ret nz
- ld b, BICYCLE
- call IsItemInBag
- ret nz
- ld b, BIKE_VOUCHER
- jp IsItemInBag
+PokemonFanClub_ScriptPointers:
+ def_script_pointers
+ dw_const PokemonFanClubScript0, SCRIPT_POKEMONFANCLUB_SCRIPT0
+ dw_const PokemonFanClubScript1, SCRIPT_POKEMONFANCLUB_SCRIPT1
+
+PokemonFanClubScript0:
+ ld hl, wd492
+ bit 7, [hl]
+ call z, PokemonFanClubScript_59a44
+ ld hl, wd492
+ set 7, [hl]
+ ret
+
+PokemonFanClubScript1:
+ ld hl, wd492
+ bit 7, [hl]
+ call z, PokemonFanClubScript_59a39
+ ld hl, wd492
+ set 7, [hl]
+ ret
+
+PokemonFanClubScript_59a39:
+ call Random
+ ldh a, [hRandomAdd]
+ cp 25
+ call c, PokemonFanClubScript_59a44
+ ret
+
+PokemonFanClubScript_59a44:
+ ld a, [wd471]
+ bit 7, a
+ ret z
+ callfar CheckPikachuStatusCondition
+ ret c
+ ld a, SCRIPT_POKEMONFANCLUB_SCRIPT1
+ ld [wPokemonFanClubCurScript], a
+ xor a
+ ld [wPlayerMovingDirection], a
+ call UpdateSprites
+ call UpdateSprites
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ ld a, $f ; Pikachu
+ ld [wEmotionBubbleSpriteIndex], a
+ predef EmotionBubble
+ ld hl, PokemonFanClubPikachuMovementData
+ call ApplyPikachuMovementData
+ ld a, $2 ; Seel
+ ld [wSprite03StateData1MovementStatus], a
+ xor a ; SPRITE_FACING_DOWN
+ ld [wSprite03StateData1FacingDirection], a
+ callfar InitializePikachuTextID
+ call DisablePikachuFollowingPlayer
+ ret
+
+PokemonFanClubPikachuMovementData:
+ db $00
+ db $26
+ db $20
+ db $20
+ db $20
+ db $1e
+ db $3f
PokemonFanClub_TextPointers:
def_text_pointers
- dw_const PokemonFanClubPikachuFanText, TEXT_POKEMONFANCLUB_PIKACHU_FAN
+ dw_const PokemonFanClubClefairyFanText, TEXT_POKEMONFANCLUB_CLEFAIRY_FAN
dw_const PokemonFanClubSeelFanText, TEXT_POKEMONFANCLUB_SEEL_FAN
- dw_const PokemonFanClubPikachuText, TEXT_POKEMONFANCLUB_PIKACHU
+ dw_const PokemonFanClubClefairyText, TEXT_POKEMONFANCLUB_CLEFAIRY
dw_const PokemonFanClubSeelText, TEXT_POKEMONFANCLUB_SEEL
dw_const PokemonFanClubChairmanText, TEXT_POKEMONFANCLUB_CHAIRMAN
dw_const PokemonFanClubReceptionistText, TEXT_POKEMONFANCLUB_RECEPTIONIST
- dw_const PokemonFanClubSign1Text, TEXT_POKEMONFANCLUB_SIGN_1
- dw_const PokemonFanClubSign2Text, TEXT_POKEMONFANCLUB_SIGN_2
-PokemonFanClubPikachuFanText:
+PokemonFanClubClefairyFanText:
text_asm
- CheckEvent EVENT_PIKACHU_FAN_BOAST
+ CheckEventHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER
+ jr z, .asm_59aaf
+ ld hl, .yellowtext
+ call PrintText
+ jr .done
+
+.asm_59aaf
+ CheckEventReuseHL EVENT_PIKACHU_FAN_BOAST
jr nz, .mineisbetter
- ld hl, .NormalText
+ SetEventReuseHL EVENT_SEEL_FAN_BOAST
+ ld hl, .normaltext
call PrintText
- SetEvent EVENT_SEEL_FAN_BOAST
jr .done
.mineisbetter
- ld hl, .BetterText
+ ResetEventReuseHL EVENT_PIKACHU_FAN_BOAST
+ ld hl, .bettertext
call PrintText
- ResetEvent EVENT_PIKACHU_FAN_BOAST
.done
jp TextScriptEnd
-.NormalText:
- text_far _PokemonFanClubPikachuFanNormalText
+.normaltext
+ text_far _PokemonFanClubClefairyFanNormalText
+ text_end
+
+.bettertext
+ text_far _PokemonFanClubClefairyFanBetterText
text_end
-.BetterText:
- text_far _PokemonFanClubPikachuFanBetterText
+.yellowtext
+ text_far _PokemonFanClubClefairyFanText
text_end
PokemonFanClubSeelFanText:
text_asm
- CheckEvent EVENT_SEEL_FAN_BOAST
+ CheckEventHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER
+ jr z, .asm_59ae7
+ ld hl, .yellowtext
+ call PrintText
+ jr .done
+
+.asm_59ae7
+ CheckEventReuseHL EVENT_SEEL_FAN_BOAST
jr nz, .mineisbetter
- ld hl, .NormalText
+ SetEventReuseHL EVENT_PIKACHU_FAN_BOAST
+ ld hl, .normaltext
call PrintText
- SetEvent EVENT_PIKACHU_FAN_BOAST
jr .done
.mineisbetter
- ld hl, .BetterText
+ ResetEventReuseHL EVENT_SEEL_FAN_BOAST
+ ld hl, .bettertext
call PrintText
- ResetEvent EVENT_SEEL_FAN_BOAST
.done
jp TextScriptEnd
-.NormalText:
+.normaltext
text_far _PokemonFanClubSeelFanNormalText
text_end
-.BetterText:
+.bettertext
text_far _PokemonFanClubSeelFanBetterText
text_end
-PokemonFanClubPikachuText:
+.yellowtext
+ text_far _PokemonFanClubSeelFanText
+ text_end
+
+PokemonFanClubClefairyText:
text_asm
ld hl, .Text
call PrintText
- ld a, PIKACHU
+ ld a, CLEFAIRY
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
.Text
- text_far _PokemonFanClubPikachuText
+ text_far _PokemonFanClubClefairyText
text_end
PokemonFanClubSeelText:
@@ -90,15 +168,26 @@ PokemonFanClubSeelText:
call WaitForSoundToFinish
jp TextScriptEnd
-.Text:
+.Text
text_far _PokemonFanClubSeelText
text_end
PokemonFanClubChairmanText:
text_asm
- call PokemonFanClub_CheckBikeInBag
- jr nz, .nothingleft
+ CheckEventHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER
+ jr z, .check_bike_voucher
+ ld hl, Text_59c1f
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr z, .select_mon_to_print
+ ld hl, Text_59c24
+ jr .gbpals_print_text
+.check_bike_voucher
+ CheckEvent EVENT_GOT_BIKE_VOUCHER
+ jr nz, .nothingleft
ld hl, .IntroText
call PrintText
call YesNoChoice
@@ -115,21 +204,58 @@ PokemonFanClubChairmanText:
ld hl, .BikeVoucherText
call PrintText
SetEvent EVENT_GOT_BIKE_VOUCHER
- jr .done
+ jp TextScriptEnd
.bag_full
ld hl, .BagFullText
- call PrintText
- jr .done
+ jr .gbpals_print_text
.nothanks
ld hl, .NoStoryText
- call PrintText
- jr .done
+ jr .gbpals_print_text
.nothingleft
ld hl, .FinalText
+.gbpals_print_text
+ push hl
+ call LoadGBPal
+ pop hl
call PrintText
-.done
jp TextScriptEnd
+.select_mon_to_print
+ call GBPalWhiteOutWithDelay3
+ call LoadCurrentMapView
+ call SaveScreenTilesToBuffer2
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ ld a, $00
+ ld [wTempTilesetNumTiles], a
+ call DisplayPartyMenu
+ jp nc, .print
+ call GBPalWhiteOutWithDelay3
+ call RestoreScreenTilesAndReloadTilePatterns
+ ld hl, Text_59c24
+ jr .gbpals_print_text
+
+.print
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wStatusFlags5
+ set BIT_NO_TEXT_DELAY, [hl]
+ callfar PrintFanClubPortrait
+ ld hl, wStatusFlags5
+ res BIT_NO_TEXT_DELAY, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, Text_59c2e
+ ldh a, [hOaksAideResult]
+ and a
+ jr nz, .gbpals_print_text
+ ld hl, Text_59c29
+ jr .gbpals_print_text
+
.IntroText:
text_far _PokemonFanClubChairmanIntroText
text_end
@@ -156,14 +282,22 @@ PokemonFanClubChairmanText:
text_far _PokemonFanClubBagFullText
text_end
-PokemonFanClubReceptionistText:
- text_far _PokemonFanClubReceptionistText
+Text_59c1f:
+ text_far FanClubChairPrintText1
+ text_end
+
+Text_59c24:
+ text_far FanClubChairPrintText2
+ text_end
+
+Text_59c29:
+ text_far FanClubChairPrintText3
text_end
-PokemonFanClubSign1Text:
- text_far _PokemonFanClubSign1Text
+Text_59c2e:
+ text_far FanClubChairPrintText4
text_end
-PokemonFanClubSign2Text:
- text_far _PokemonFanClubSign2Text
+PokemonFanClubReceptionistText:
+ text_far _PokemonFanClubReceptionistText
text_end
diff --git a/scripts/PokemonTower1F.asm b/scripts/PokemonTower1F.asm
index 72509f52..011627ed 100644
--- a/scripts/PokemonTower1F.asm
+++ b/scripts/PokemonTower1F.asm
@@ -1,5 +1,6 @@
PokemonTower1F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PokemonTower1F_TextPointers:
def_text_pointers
diff --git a/scripts/PokemonTower2F.asm b/scripts/PokemonTower2F.asm
index d3b6c9a4..d5fbd932 100644
--- a/scripts/PokemonTower2F.asm
+++ b/scripts/PokemonTower2F.asm
@@ -27,9 +27,7 @@ ENDC
ld hl, PokemonTower2FRivalEncounterEventCoords
call ArePlayerCoordsInArray
ret nc
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -76,14 +74,13 @@ PokemonTower2FDefeatedRivalScript:
ld de, PokemonTower2FRivalDownThenRightMovement
CheckEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
jr nz, .got_movement
+ callfar PokemonTower2FPikachuMovementScript
ld de, PokemonTower2FRivalRightThenDownMovement
.got_movement
ld a, POKEMONTOWER2F_RIVAL
ldh [hSpriteIndex], a
call MoveSprite
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, SCRIPT_POKEMONTOWER2F_RIVAL_EXITS
ld [wPokemonTower2FCurScript], a
@@ -150,21 +147,8 @@ PokemonTower2FRivalText:
call SaveEndBattleTextPointers
ld a, OPP_RIVAL2
ld [wCurOpponent], a
-
- ; select which team to use during the encounter
ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotSquirtle
- ld a, $4
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $5
- jr .done
-.Charmander
- ld a, $6
-.done
+ add $1
ld [wTrainerNo], a
ld a, SCRIPT_POKEMONTOWER2F_DEFEATED_RIVAL
diff --git a/scripts/PokemonTower2F_2.asm b/scripts/PokemonTower2F_2.asm
new file mode 100644
index 00000000..9e801efa
--- /dev/null
+++ b/scripts/PokemonTower2F_2.asm
@@ -0,0 +1,12 @@
+PokemonTower2FPikachuMovementScript::
+ ld hl, PokemonTower2FPikachuMovement
+ ld b, SPRITE_FACING_RIGHT
+ call TryApplyPikachuMovementData
+ ret
+
+PokemonTower2FPikachuMovement:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
diff --git a/scripts/PokemonTower7F.asm b/scripts/PokemonTower7F.asm
index 3d8cd636..3e30db56 100644
--- a/scripts/PokemonTower7F.asm
+++ b/scripts/PokemonTower7F.asm
@@ -1,67 +1,237 @@
PokemonTower7F_Script:
call EnableAutoTextBoxDrawing
- ld hl, PokemonTower7TrainerHeaders
- ld de, PokemonTower7F_ScriptPointers
+ ld hl, PokemonTower7F_ScriptPointers
ld a, [wPokemonTower7FCurScript]
- call ExecuteCurMapScriptInTable
- ld [wPokemonTower7FCurScript], a
+ call CallFunctionInTable
ret
PokemonTower7FSetDefaultScript:
xor a
ld [wJoyIgnore], a
- ld [wPokemonTower7FCurScript], a ; SCRIPT_POKEMONTOWER7F_DEFAULT
- ld [wCurMapScript], a ; SCRIPT_POKEMONTOWER7F_DEFAULT
+PokemonTower7FSetScript:
+ ld [wPokemonTower7FCurScript], a
ret
PokemonTower7F_ScriptPointers:
def_script_pointers
- dw_const CheckFightingMapTrainers, SCRIPT_POKEMONTOWER7F_DEFAULT
- dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_POKEMONTOWER7F_START_BATTLE
- dw_const PokemonTower7FEndBattleScript, SCRIPT_POKEMONTOWER7F_END_BATTLE
- dw_const PokemonTower7FHideNPCScript, SCRIPT_POKEMONTOWER7F_HIDE_NPC
+ dw_const PokemonTower7FScript0, SCRIPT_POKEMONTOWER7F_SCRIPT0
+ dw_const PokemonTower7FScript1, SCRIPT_POKEMONTOWER7F_SCRIPT1
+ dw_const PokemonTower7FScript2, SCRIPT_POKEMONTOWER7F_SCRIPT2
+ dw_const PokemonTower7FScript3, SCRIPT_POKEMONTOWER7F_SCRIPT3
+ dw_const PokemonTower7FScript4, SCRIPT_POKEMONTOWER7F_SCRIPT4
+ dw_const PokemonTower7FScript5, SCRIPT_POKEMONTOWER7F_SCRIPT5
+ dw_const PokemonTower7FScript6, SCRIPT_POKEMONTOWER7F_SCRIPT6
+ dw_const PokemonTower7FScript7, SCRIPT_POKEMONTOWER7F_SCRIPT7
+ dw_const PokemonTower7FScript8, SCRIPT_POKEMONTOWER7F_SCRIPT8
+ dw_const PokemonTower7FScript9, SCRIPT_POKEMONTOWER7F_SCRIPT9
+ dw_const PokemonTower7FScript10, SCRIPT_POKEMONTOWER7F_SCRIPT10
dw_const PokemonTower7FWarpToMrFujiHouseScript, SCRIPT_POKEMONTOWER7F_WARP_TO_MR_FUJI_HOUSE
-PokemonTower7FEndBattleScript:
- ld hl, wMiscFlags
- res BIT_SEEN_BY_TRAINER, [hl]
- ld a, [wIsInBattle]
- cp $ff
- jp z, PokemonTower7FSetDefaultScript
- call EndTrainerBattle
- ld a, PAD_CTRL_PAD
+PokemonTower7FScript0:
+IF DEF(_DEBUG)
+ call DebugPressedOrHeldB
+ ret nz
+ENDC
+ CheckEvent EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES
+ call z, PokemonTower7FScript_60d2a
+ ret
+
+PokemonTower7FScript_60d2a:
+ ld a, [wYCoord]
+ cp $c
+ ret nz
+ ResetEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
+ ld a, [wXCoord]
+ cp $a
+ jr z, .asm_60d47
+ ld a, [wXCoord] ; why?
+ cp $b
+ ret nz
+ SetEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
+.asm_60d47
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
- ld a, [wSpriteIndex]
- ldh [hSpriteIndex], a
+ ld a, HS_POKEMON_TOWER_7F_JESSIE
+ call PokemonTower7FScript_ShowObject
+ ld a, HS_POKEMON_TOWER_7F_JAMES
+ call PokemonTower7FScript_ShowObject
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, TEXT_POKEMONTOWER7F_TEXT4
+ ldh [hTextID], a
call DisplayTextID
- call PokemonTower7FRocketLeaveMovementScript
- ld a, SCRIPT_POKEMONTOWER7F_HIDE_NPC
- ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_POKEMONTOWER7F_SCRIPT1
+ call PokemonTower7FSetScript
ret
-PokemonTower7FHideNPCScript:
+PokemonTower7FMovementData_60d7a:
+ db $4
+PokemonTower7FMovementData_60d7b:
+ db $4
+ db $4
+ db $4
+ db $FF
+
+PokemonTower7FScript1:
+ ld de, PokemonTower7FMovementData_60d7b
+ CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
+ jr z, .asm_60d8c
+ ld de, PokemonTower7FMovementData_60d7a
+.asm_60d8c
+ ld a, POKEMONTOWER7F_JESSIE
+ ldh [hSpriteIndex], a
+ call MoveSprite
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_POKEMONTOWER7F_SCRIPT2
+ call PokemonTower7FSetScript
+ ret
+
+PokemonTower7FScript2:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
- ld hl, wMissableObjectList
- ld a, [wSpriteIndex]
- ld b, a
-.missableObjectsListLoop
- ld a, [hli]
- cp b ; search for sprite ID in missing objects list
- ld a, [hli]
- jr nz, .missableObjectsListLoop
- ld [wMissableObjectIndex], a ; remove missable object
- predef HideObject
+PokemonTower7FScript3:
+ ld a, SPRITE_FACING_DOWN
+ ld [wSprite01StateData1FacingDirection], a
+ CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
+ jr z, .asm_60dba
+ ld a, SPRITE_FACING_RIGHT
+ ld [wSprite01StateData1FacingDirection], a
+.asm_60dba
+ ld a, $2
+ ld [wSprite01StateData1MovementStatus], a
+PokemonTower7FScript4:
+ ld de, PokemonTower7FMovementData_60d7a
+ CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
+ jr z, .asm_60dcc
+ ld de, PokemonTower7FMovementData_60d7b
+.asm_60dcc
+ ld a, POKEMONTOWER7F_JAMES
+ ldh [hSpriteIndex], a
+ call MoveSprite
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_POKEMONTOWER7F_SCRIPT5
+ call PokemonTower7FSetScript
+ ret
+
+PokemonTower7FScript5:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wStatusFlags5]
+ bit BIT_SCRIPTED_NPC_MOVEMENT, a
+ ret nz
+PokemonTower7FScript6:
+ ld a, $2
+ ld [wSprite02StateData1MovementStatus], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSprite02StateData1FacingDirection], a
+ CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
+ jr z, .asm_60dff
+ ld a, SPRITE_FACING_DOWN
+ ld [wSprite02StateData1FacingDirection], a
+.asm_60dff
+ call Delay3
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, TEXT_POKEMONTOWER7F_TEXT5
+ ldh [hTextID], a
+ call DisplayTextID
+PokemonTower7FScript7:
+ ld hl, wStatusFlags3
+ set BIT_TALKED_TO_TRAINER, [hl]
+ set BIT_PRINT_END_BATTLE_TEXT, [hl]
+ ld hl, PokemonTower7FJessieJamesEndBattleText
+ ld de, PokemonTower7FJessieJamesEndBattleText
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2c
+ ld [wTrainerNo], a
xor a
+ ldh [hJoyHeld], a
ld [wJoyIgnore], a
- ld [wSpriteIndex], a
- ld [wTrainerHeaderFlagBit], a
- ld [wOpponentAfterWrongAnswer], a ; not used here; likely a mistake copied from maps/CinnabarGym.asm
- ld a, SCRIPT_POKEMONTOWER7F_DEFAULT
- ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
+ ld a, SCRIPT_POKEMONTOWER7F_SCRIPT8
+ call PokemonTower7FSetScript
+ ret
+
+PokemonTower7FScript8:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, PokemonTower7FSetDefaultScript
+ ld a, $2
+ ld [wSprite01StateData1MovementStatus], a
+ ld [wSprite02StateData1MovementStatus], a
+ xor a
+ ld [wSprite01StateData1FacingDirection], a
+ ld [wSprite02StateData1FacingDirection], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, TEXT_POKEMONTOWER7F_TEXT6
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_POKEMONTOWER7F_SCRIPT9
+ call PokemonTower7FSetScript
+ ret
+
+PokemonTower7FScript9:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_POKEMON_TOWER_7F_JESSIE
+ call PokemonTower7FScript_HideObject
+ ld a, HS_POKEMON_TOWER_7F_JAMES
+ call PokemonTower7FScript_HideObject
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, SCRIPT_POKEMONTOWER7F_SCRIPT10
+ call PokemonTower7FSetScript
+ ret
+
+PokemonTower7FScript10:
+ call PlayDefaultMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES
+ ld a, SCRIPT_POKEMONTOWER7F_SCRIPT0
+ call PokemonTower7FSetScript
+ ret
+
+PokemonTower7FScript_ShowObject:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+PokemonTower7FScript_HideObject:
+ ld [wMissableObjectIndex], a
+ predef HideObject
ret
PokemonTower7FWarpToMrFujiHouseScript:
@@ -80,146 +250,51 @@ PokemonTower7FWarpToMrFujiHouseScript:
ld [wLastMap], a
ld hl, wStatusFlags3
set BIT_WARP_FROM_CUR_SCRIPT, [hl]
- ld a, SCRIPT_POKEMONTOWER7F_DEFAULT
+ ld a, SCRIPT_POKEMONTOWER7F_SCRIPT0
ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
ret
-PokemonTower7FRocketLeaveMovementScript:
- ld hl, PokemonTower7FNPCCoordMovementTable
- ld a, [wSpriteIndex]
- dec a
- swap a
- ld d, $0
- ld e, a
- add hl, de
- ld a, [wYCoord]
- ld b, a
- ld a, [wXCoord]
- ld c, a
-.loop
- ld a, [hli]
- cp b
- jr nz, .inc_and_skip
- ld a, [hli]
- cp c
- jr nz, .skip
- ld a, [hli]
- ld d, [hl]
- ld e, a
- ld a, [wSpriteIndex]
- ldh [hSpriteIndex], a
- jp MoveSprite
-.inc_and_skip
- inc hl
-.skip
- inc hl
- inc hl
- jr .loop
-
-PokemonTower7FNPCCoordMovementTable:
- map_coord_movement 9, 12, PokemonTower7FRocket1ExitRightDownMovement
- map_coord_movement 10, 11, PokemonTower7FRocket1ExitDownRightMovement
- map_coord_movement 11, 11, PokemonTower7FRocketExitDownMovement
- map_coord_movement 12, 11, PokemonTower7FRocketExitDownMovement
- map_coord_movement 12, 10, PokemonTower7FRocket2ExitLeftDownMovement
- map_coord_movement 11, 9, PokemonTower7FRocket2ExitDownLeftMovement
- map_coord_movement 10, 9, PokemonTower7FRocketExitDownMovement
- map_coord_movement 9, 9, PokemonTower7FRocketExitDownMovement
- map_coord_movement 9, 8, PokemonTower7FRocket3ExitRightDownMovement
- map_coord_movement 10, 7, PokemonTower7FRocketExitDownMovement
- map_coord_movement 11, 7, PokemonTower7FRocketExitDownMovement
- map_coord_movement 12, 7, PokemonTower7FRocketExitDownMovement
-
-PokemonTower7FRocket1ExitRightDownMovement:
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_LEFT
- db -1 ; end
-
-PokemonTower7FRocket1ExitDownRightMovement:
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
-PokemonTower7FRocketExitDownMovement:
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
-PokemonTower7FRocket2ExitLeftDownMovement:
- db NPC_MOVEMENT_LEFT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
-PokemonTower7FRocket2ExitDownLeftMovement:
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_LEFT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
-PokemonTower7FRocket3ExitRightDownMovement:
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
PokemonTower7F_TextPointers:
def_text_pointers
- dw_const PokemonTower7FRocket1Text, TEXT_POKEMONTOWER7F_ROCKET1
- dw_const PokemonTower7FRocket2Text, TEXT_POKEMONTOWER7F_ROCKET2
- dw_const PokemonTower7FRocket3Text, TEXT_POKEMONTOWER7F_ROCKET3
- dw_const PokemonTower7FMrFujiText, TEXT_POKEMONTOWER7F_MR_FUJI
+ dw_const PokemonTower7FJessieJamesText, TEXT_POKEMONTOWER7F_JESSIE
+ dw_const PokemonTower7FJessieJamesText, TEXT_POKEMONTOWER7F_JAMES
+ dw_const PokemonTower7FMrFujiText, TEXT_POKEMONTOWER7F_MR_FUJI
+ dw_const PokemonTower7FText4, TEXT_POKEMONTOWER7F_TEXT4
+ dw_const PokemonTower7FText5, TEXT_POKEMONTOWER7F_TEXT5
+ dw_const PokemonTower7FText6, TEXT_POKEMONTOWER7F_TEXT6
-PokemonTower7TrainerHeaders:
- def_trainers
-PokemonTower7TrainerHeader0:
- trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_0, 3, PokemonTower7FRocket1BattleText, PokemonTower7FRocket1EndBattleText, PokemonTower7FRocket1AfterBattleText
-PokemonTower7TrainerHeader1:
- trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_1, 3, PokemonTower7FRocket2BattleText, PokemonTower7FRocket2EndBattleText, PokemonTower7FRocket2AfterBattleText
-PokemonTower7TrainerHeader2:
- trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_2, 3, PokemonTower7FRocket3BattleText, PokemonTower7FRocket3EndBattleText, PokemonTower7FRocket3AfterBattleText
- db -1 ; end
+PokemonTower7FJessieJamesText:
+ text_end
-PokemonTower7FRocket1Text:
+PokemonTower7FText4:
+ text_far _PokemonTowerJessieJamesText1
text_asm
- ld hl, PokemonTower7TrainerHeader0
- call TalkToTrainer
+ ld c, 10
+ call DelayFrames
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
jp TextScriptEnd
-PokemonTower7FRocket2Text:
- text_asm
- ld hl, PokemonTower7TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+PokemonTower7FText5:
+ text_far _PokemonTowerJessieJamesText2
+ text_end
-PokemonTower7FRocket3Text:
+PokemonTower7FJessieJamesEndBattleText:
+ text_far _PokemonTowerJessieJamesText3
+ text_end
+
+PokemonTower7FText6:
+ text_far _PokemonTowerJessieJamesText4
text_asm
- ld hl, PokemonTower7TrainerHeader2
- call TalkToTrainer
+ ld c, 64
+ call DelayFrames
jp TextScriptEnd
PokemonTower7FMrFujiText:
@@ -239,45 +314,8 @@ PokemonTower7FMrFujiText:
predef ShowObject
ld a, SCRIPT_POKEMONTOWER7F_WARP_TO_MR_FUJI_HOUSE
ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
jp TextScriptEnd
.RescueText:
text_far _PokemonTower7FMrFujiRescueText
text_end
-
-PokemonTower7FRocket1BattleText:
- text_far _PokemonTower7FRocket1BattleText
- text_end
-
-PokemonTower7FRocket1EndBattleText:
- text_far _PokemonTower7FRocket1EndBattleText
- text_end
-
-PokemonTower7FRocket1AfterBattleText:
- text_far _PokemonTower7FRocket1AfterBattleText
- text_end
-
-PokemonTower7FRocket2BattleText:
- text_far _PokemonTower7FRocket2BattleText
- text_end
-
-PokemonTower7FRocket2EndBattleText:
- text_far _PokemonTower7FRocket2EndBattleText
- text_end
-
-PokemonTower7FRocket2AfterBattleText:
- text_far _PokemonTower7FRocket2AfterBattleText
- text_end
-
-PokemonTower7FRocket3BattleText:
- text_far _PokemonTower7FRocket3BattleText
- text_end
-
-PokemonTower7FRocket3EndBattleText:
- text_far _PokemonTower7FRocket3EndBattleText
- text_end
-
-PokemonTower7FRocket3AfterBattleText:
- text_far _PokemonTower7FRocket3AfterBattleText
- text_end
diff --git a/scripts/RedsHouse1F.asm b/scripts/RedsHouse1F.asm
index a91ede80..84ace5ad 100644
--- a/scripts/RedsHouse1F.asm
+++ b/scripts/RedsHouse1F.asm
@@ -1,5 +1,6 @@
RedsHouse1F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
RedsHouse1F_TextPointers:
def_text_pointers
@@ -8,63 +9,10 @@ RedsHouse1F_TextPointers:
RedsHouse1FMomText:
text_asm
- ld a, [wStatusFlags4]
- bit BIT_GOT_STARTER, a
- jr nz, .heal
- ld hl, .WakeUpText
- call PrintText
- jr .done
-.heal
- call RedsHouse1FMomHealScript
-.done
+ callfar RedsHouse1FPrintMomText
jp TextScriptEnd
-.WakeUpText:
- text_far _RedsHouse1FMomWakeUpText
- text_end
-
-RedsHouse1FMomHealScript:
- ld hl, RedsHouse1FMomYouShouldRestText
- call PrintText
- call GBFadeOutToWhite
- call ReloadMapData
- predef HealParty
- ld a, MUSIC_PKMN_HEALED
- ld [wNewSoundID], a
- call PlaySound
-.next
- ld a, [wChannelSoundIDs]
- cp MUSIC_PKMN_HEALED
- jr z, .next
- ld a, [wMapMusicSoundID]
- ld [wNewSoundID], a
- call PlaySound
- call GBFadeInFromWhite
- ld hl, RedsHouse1FMomLookingGreatText
- jp PrintText
-
-RedsHouse1FMomYouShouldRestText:
- text_far _RedsHouse1FMomYouShouldRestText
- text_end
-RedsHouse1FMomLookingGreatText:
- text_far _RedsHouse1FMomLookingGreatText
- text_end
-
RedsHouse1FTVText:
text_asm
- ld a, [wSpritePlayerStateData1FacingDirection]
- cp SPRITE_FACING_UP
- ld hl, .WrongSideText
- jr nz, .got_text
- ld hl, .StandByMeMovieText
-.got_text
- call PrintText
+ callfar RedsHouse1FPrintTVText
jp TextScriptEnd
-
-.StandByMeMovieText:
- text_far _RedsHouse1FTVStandByMeMovieText
- text_end
-
-.WrongSideText:
- text_far _RedsHouse1FTVWrongSideText
- text_end
diff --git a/scripts/RedsHouse1F_2.asm b/scripts/RedsHouse1F_2.asm
new file mode 100644
index 00000000..a7c8d051
--- /dev/null
+++ b/scripts/RedsHouse1F_2.asm
@@ -0,0 +1,57 @@
+RedsHouse1FPrintMomText::
+ ld a, [wStatusFlags4]
+ bit BIT_GOT_STARTER, a
+ jp nz, RedsHouse1FMomHealScript
+ ld hl, .WakeUpText
+ call PrintText
+ ret
+
+.WakeUpText:
+ text_far _RedsHouse1FMomWakeUpText
+ text_end
+
+RedsHouse1FMomHealScript:
+ ld hl, RedsHouse1FMomYouShouldRestText
+ call PrintText
+ call GBFadeOutToWhite
+ call ReloadMapData
+ predef HealParty
+ ld a, MUSIC_PKMN_HEALED
+ ld [wNewSoundID], a
+ call PlaySound
+.next
+ ld a, [wChannelSoundIDs]
+ cp MUSIC_PKMN_HEALED
+ jr z, .next
+ ld a, [wMapMusicSoundID]
+ ld [wNewSoundID], a
+ call PlaySound
+ call GBFadeInFromWhite
+ ld hl, RedsHouse1FMomLookingGreatText
+ call PrintText
+ ret
+
+RedsHouse1FMomYouShouldRestText:
+ text_far _RedsHouse1FMomYouShouldRestText
+ text_end
+RedsHouse1FMomLookingGreatText:
+ text_far _RedsHouse1FMomLookingGreatText
+ text_end
+
+RedsHouse1FPrintTVText::
+ ld hl, .WrongSideText
+ ld a, [wSpritePlayerStateData1FacingDirection]
+ cp SPRITE_FACING_UP
+ jp nz, .got_text
+ ld hl, .StandByMeMovieText
+.got_text
+ call PrintText
+ ret
+
+.StandByMeMovieText:
+ text_far _RedsHouse1FTVStandByMeMovieText
+ text_end
+
+.WrongSideText:
+ text_far _RedsHouse1FTVWrongSideText
+ text_end
diff --git a/scripts/RedsHouse2F.asm b/scripts/RedsHouse2F.asm
index 9b2575b7..6e8bd2dd 100644
--- a/scripts/RedsHouse2F.asm
+++ b/scripts/RedsHouse2F.asm
@@ -1,24 +1,19 @@
RedsHouse2F_Script:
call EnableAutoTextBoxDrawing
ld hl, RedsHouse2F_ScriptPointers
- ld a, [wRedsHouse2FCurScript]
- jp CallFunctionInTable
+ ld a, 0
+ call CallFunctionInTable
+ ret
RedsHouse2F_ScriptPointers:
def_script_pointers
- dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT
- dw_const RedsHouse2FNoopScript, SCRIPT_REDSHOUSE2F_NOOP
+ dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT0
+ dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT1
+ dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT2
+ dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT3
+ dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT4
RedsHouse2FDefaultScript:
- xor a
- ldh [hJoyHeld], a
- ld a, PLAYER_DIR_UP
- ld [wPlayerMovingDirection], a
- ld a, SCRIPT_REDSHOUSE2F_NOOP
- ld [wRedsHouse2FCurScript], a
- ret
-
-RedsHouse2FNoopScript:
ret
RedsHouse2F_TextPointers:
diff --git a/scripts/RockTunnelPokecenter.asm b/scripts/RockTunnelPokecenter.asm
index 89aad6a3..8a980490 100644
--- a/scripts/RockTunnelPokecenter.asm
+++ b/scripts/RockTunnelPokecenter.asm
@@ -8,6 +8,7 @@ RockTunnelPokecenter_TextPointers:
dw_const RockTunnelPokecenterGentlemanText, TEXT_ROCKTUNNELPOKECENTER_GENTLEMAN
dw_const RockTunnelPokecenterFisherText, TEXT_ROCKTUNNELPOKECENTER_FISHER
dw_const RockTunnelPokecenterLinkReceptionistText, TEXT_ROCKTUNNELPOKECENTER_LINK_RECEPTIONIST
+ dw_const RockTunnelPokecenterChanseyText, TEXT_ROCKTUNNELPOKECENTER_CHANSEY
RockTunnelPokecenterNurseText:
script_pokecenter_nurse
@@ -22,3 +23,8 @@ RockTunnelPokecenterFisherText:
RockTunnelPokecenterLinkReceptionistText:
script_cable_club_receptionist
+
+RockTunnelPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/RocketHideoutB4F.asm b/scripts/RocketHideoutB4F.asm
index edc51351..15a98853 100644
--- a/scripts/RocketHideoutB4F.asm
+++ b/scripts/RocketHideoutB4F.asm
@@ -1,5 +1,4 @@
RocketHideoutB4F_Script:
- call RocketHideoutB4FDoorCallbackScript
call EnableAutoTextBoxDrawing
ld hl, RocketHideout4TrainerHeaders
ld de, RocketHideoutB4F_ScriptPointers
@@ -8,48 +7,45 @@ RocketHideoutB4F_Script:
ld [wRocketHideoutB4FCurScript], a
ret
-RocketHideoutB4FDoorCallbackScript:
- ld hl, wCurrentMapScriptFlags
- bit BIT_CUR_MAP_LOADED_1, [hl]
- res BIT_CUR_MAP_LOADED_1, [hl]
- ret z
- CheckEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED
- jr nz, .door_already_unlocked
- CheckBothEventsSet EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1, 1
- jr z, .unlock_door
- ld a, $2d ; Door block
- jr .set_block
-.unlock_door
- ld a, SFX_GO_INSIDE
- call PlaySound
- SetEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED
-.door_already_unlocked
- ld a, $e ; Floor block
-.set_block
- ld [wNewTileBlockID], a
- lb bc, 5, 12
- predef_jump ReplaceTileBlock
-
-RocketHideoutB4FSetDefaultScript:
+RocketHideoutB4FResetScripts:
+ CheckAndResetEvent EVENT_6A0
+ call nz, RocketHideoutB4FScript_HideJessieJames
xor a
ld [wJoyIgnore], a
+RocketHideoutB4FSetScript:
ld [wRocketHideoutB4FCurScript], a
ld [wCurMapScript], a
ret
+RocketHideoutB4FScript_HideJessieJames:
+ ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ call RocketHideoutB4FScript_HideObject
+ ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ call RocketHideoutB4FScript_HideObject
+ ret
+
RocketHideoutB4F_ScriptPointers:
def_script_pointers
- dw_const CheckFightingMapTrainers, SCRIPT_ROCKETHIDEOUTB4F_DEFAULT
- dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_ROCKETHIDEOUTB4F_START_BATTLE
- dw_const EndTrainerBattle, SCRIPT_ROCKETHIDEOUTB4F_END_BATTLE
+ dw_const RocketHideoutB4FDefaultScript, SCRIPT_ROCKETHIDEOUTB4F_DEFAULT
+ dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT1
+ dw_const EndTrainerBattle, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT2
dw_const RocketHideoutB4FBeatGiovanniScript, SCRIPT_ROCKETHIDEOUTB4F_BEAT_GIOVANNI
+ dw_const RocketHideoutB4FScript4, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT4
+ dw_const RocketHideoutB4FScript5, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT5
+ dw_const RocketHideoutB4FScript6, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT6
+ dw_const RocketHideoutB4FScript7, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT7
+ dw_const RocketHideoutB4FScript8, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT8
+ dw_const RocketHideoutB4FScript9, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT9
+ dw_const RocketHideoutB4FScript10, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT10
+ dw_const RocketHideoutB4FScript11, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT11
+ dw_const RocketHideoutB4FScript12, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT12
+ dw_const RocketHideoutB4FScript13, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT13
RocketHideoutB4FBeatGiovanniScript:
ld a, [wIsInBattle]
cp $ff
- jp z, RocketHideoutB4FSetDefaultScript
- call UpdateSprites
- ld a, PAD_CTRL_PAD
+ jp z, RocketHideoutB4FResetScripts
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI
ld a, TEXT_ROCKETHIDEOUTB4F_GIOVANNI_HOPE_WE_MEET_AGAIN
@@ -73,29 +69,281 @@ RocketHideoutB4FBeatGiovanniScript:
ld [wCurMapScript], a
ret
+RocketHideoutB4FDefaultScript:
+IF DEF(_DEBUG)
+ call DebugPressedOrHeldB
+ ret nz
+ENDC
+ CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_JESSIE_JAMES
+ call z, RocketHideoutB4FScript_455a5
+ CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
+ call z, CheckFightingMapTrainers
+ ret
+
+RocketHideoutB4FScript_455a5:
+ ld a, [wYCoord]
+ cp $e
+ ret nz
+ ResetEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT
+ ld a, [wXCoord]
+ cp $18
+ jr z, .asm_455c2
+ ld a, [wXCoord]
+ cp $19
+ ret nz
+ SetEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT
+.asm_455c2
+ xor a
+ ldh [hJoyHeld], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ call UpdateSprites
+ call Delay3
+ call UpdateSprites
+ call Delay3
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, TEXT_ROCKETHIDEOUTB4F_TEXT11
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ call RocketHideoutB4FScript_ShowObject
+ ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ call RocketHideoutB4FScript_ShowObject
+ ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT4
+ call RocketHideoutB4FSetScript
+ ret
+
+RocketHideoutB4FJessieJamesMovementData_45605:
+ db $4
+RocketHideoutB4FJessieJamesMovementData_45606:
+ db $4
+ db $4
+ db $4
+ db $ff
+
+RocketHideoutB4FScript4:
+ ld de, RocketHideoutB4FJessieJamesMovementData_45605
+ CheckEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT
+ jr z, .asm_45617
+ ld de, RocketHideoutB4FJessieJamesMovementData_45606
+.asm_45617
+ ld a, ROCKETHIDEOUTB4F_JAMES
+ ldh [hSpriteIndex], a
+ call MoveSprite
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT5
+ call RocketHideoutB4FSetScript
+ ret
+
+RocketHideoutB4FScript5:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wStatusFlags5]
+ bit BIT_SCRIPTED_NPC_MOVEMENT, a
+ ret nz
+RocketHideoutB4FScript6:
+ ld a, $2
+ ld [wSprite02StateData1MovementStatus], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSprite02StateData1FacingDirection], a
+ CheckEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT
+ jr z, .asm_4564a
+ ld a, SPRITE_FACING_DOWN
+ ld [wSprite02StateData1FacingDirection], a
+.asm_4564a
+ call Delay3
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+RocketHideoutB4FScript7:
+ ld de, RocketHideoutB4FJessieJamesMovementData_45606
+ CheckEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT
+ jr z, .asm_4565f
+ ld de, RocketHideoutB4FJessieJamesMovementData_45605
+.asm_4565f
+ ld a, ROCKETHIDEOUTB4F_JESSIE
+ ldh [hSpriteIndex], a
+ call MoveSprite
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT8
+ call RocketHideoutB4FSetScript
+ ret
+
+RocketHideoutB4FScript8:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wStatusFlags5]
+ bit BIT_SCRIPTED_NPC_MOVEMENT, a
+ ret nz
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+RocketHideoutB4FScript9:
+ ld a, $2
+ ld [wSprite03StateData1MovementStatus], a
+ ld a, SPRITE_FACING_DOWN
+ ld [wSprite03StateData1FacingDirection], a
+ CheckEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT
+ jr z, .asm_45697
+ ld a, SPRITE_FACING_RIGHT
+ ld [wSprite03StateData1FacingDirection], a
+.asm_45697
+ call Delay3
+ ld a, TEXT_ROCKETHIDEOUTB4F_TEXT12
+ ldh [hTextID], a
+ call DisplayTextID
+RocketHideoutB4FScript10:
+ ld hl, wStatusFlags3
+ set BIT_TALKED_TO_TRAINER, [hl]
+ set BIT_PRINT_END_BATTLE_TEXT, [hl]
+ ld hl, RocketHideoutB4FJessieJamesEndBattleText
+ ld de, RocketHideoutB4FJessieJamesEndBattleText
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2b
+ ld [wTrainerNo], a
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_6A0
+ ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT11
+ call RocketHideoutB4FSetScript
+ ret
+
+RocketHideoutB4FScript11:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, RocketHideoutB4FResetScripts
+ ld a, $2
+ ld [wSprite02StateData1MovementStatus], a
+ ld [wSprite03StateData1MovementStatus], a
+ xor a
+ ld [wSprite02StateData1FacingDirection], a
+ ld [wSprite03StateData1FacingDirection], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, TEXT_ROCKETHIDEOUTB4F_TEXT13
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT12
+ call RocketHideoutB4FSetScript
+ ret
+
+RocketHideoutB4FScript12:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ call RocketHideoutB4FScript_HideObject
+ ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ call RocketHideoutB4FScript_HideObject
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT13
+ call RocketHideoutB4FSetScript
+ ret
+
+RocketHideoutB4FScript13:
+ call PlayDefaultMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_JESSIE_JAMES
+ ld a, SCRIPT_ROCKETHIDEOUTB4F_DEFAULT
+ call RocketHideoutB4FSetScript
+ ret
+
+RocketHideoutB4FScript_ShowObject:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+RocketHideoutB4FScript_HideObject:
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ret
+
RocketHideoutB4F_TextPointers:
def_text_pointers
dw_const RocketHideoutB4FGiovanniText, TEXT_ROCKETHIDEOUTB4F_GIOVANNI
- dw_const RocketHideoutB4FRocket1Text, TEXT_ROCKETHIDEOUTB4F_ROCKET1
- dw_const RocketHideoutB4FRocket2Text, TEXT_ROCKETHIDEOUTB4F_ROCKET2
- dw_const RocketHideoutB4FRocket3Text, TEXT_ROCKETHIDEOUTB4F_ROCKET3
+ dw_const RocketHideoutB4FJessieJamesText, TEXT_ROCKETHIDEOUTB4F_JAMES
+ dw_const RocketHideoutB4FJessieJamesText, TEXT_ROCKETHIDEOUTB4F_JESSIE
+ dw_const RocketHideoutB4FRocketText, TEXT_ROCKETHIDEOUTB4F_ROCKET
dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_HP_UP
dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_TM_RAZOR_WIND
dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_IRON
dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_SILPH_SCOPE
dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_LIFT_KEY
dw_const RocketHideoutB4FGiovanniHopeWeMeetAgainText, TEXT_ROCKETHIDEOUTB4F_GIOVANNI_HOPE_WE_MEET_AGAIN
+ dw_const RocketHideoutB4FText11, TEXT_ROCKETHIDEOUTB4F_TEXT11
+ dw_const RocketHideoutB4FText12, TEXT_ROCKETHIDEOUTB4F_TEXT12
+ dw_const RocketHideoutB4FText13, TEXT_ROCKETHIDEOUTB4F_TEXT13
RocketHideout4TrainerHeaders:
- def_trainers 2
+ def_trainers 4
RocketHideout4TrainerHeader0:
- trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, 0, RocketHideoutB4FRocket1BattleText, RocketHideoutB4FRocket1EndBattleText, RocketHideoutB4FRocket1AfterBattleText
-RocketHideout4TrainerHeader1:
- trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1, 0, RocketHideoutB4FRocket2BattleText, RocketHideoutB4FRocket2EndBattleText, RocketHideoutB4FRocket2AfterBattleText
-RocketHideout4TrainerHeader2:
- trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1, RocketHideoutB4FRocket3BattleText, RocketHideoutB4FRocket3EndBattleText, RocketHideoutB4FRocket3AfterBattleText
+ trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1, RocketHideoutB4FRocketBattleText, RocketHideoutB4FRocketEndBattleText, RocketHideoutB4FRocketAfterBattleText
db -1 ; end
+RocketHideoutB4FJessieJamesText:
+ text_end
+
+RocketHideoutB4FText11:
+ text_far _RocketHideoutJessieJamesText1
+ text_asm
+ ld c, 10
+ call DelayFrames
+ ld a, $8
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+RocketHideoutB4FText12:
+ text_far _RocketHideoutJessieJamesText2
+ text_end
+
+RocketHideoutB4FJessieJamesEndBattleText:
+ text_far _RocketHideoutJessieJamesText3
+ text_end
+
+RocketHideoutB4FText13:
+ text_far _RocketHideoutJessieJamesText4
+ text_asm
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
+
RocketHideoutB4FGiovanniText:
text_asm
CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI
@@ -136,68 +384,32 @@ RocketHideoutB4FGiovanniHopeWeMeetAgainText:
text_far _RocketHideoutB4FGiovanniHopeWeMeetAgainText
text_end
-RocketHideoutB4FRocket1Text:
+RocketHideoutB4FRocketText:
text_asm
ld hl, RocketHideout4TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
-RocketHideoutB4FRocket1BattleText:
- text_far _RocketHideoutB4FRocket1BattleText
- text_end
-
-RocketHideoutB4FRocket1EndBattleText:
- text_far _RocketHideoutB4FRocket1EndBattleText
+RocketHideoutB4FRocketBattleText:
+ text_far _RocketHideoutB4FRocketBattleText
text_end
-RocketHideoutB4FRocket1AfterBattleText:
- text_far _RocketHideoutB4FRocket1AfterBattleText
- text_end
-
-RocketHideoutB4FRocket2Text:
+RocketHideoutB4FRocketEndBattleText:
+ text_far _RocketHideoutB4FRocketEndBattleText
+ text_promptbutton
text_asm
- ld hl, RocketHideout4TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
-
-RocketHideoutB4FRocket2BattleText:
- text_far _RocketHideoutB4FRocket2BattleText
- text_end
-
-RocketHideoutB4FRocket2EndBattleText:
- text_far _RocketHideoutB4FRocket2EndBattleText
- text_end
-
-RocketHideoutB4FRocket2AfterBattleText:
- text_far _RocketHideoutB4FRocket2AfterBattleText
- text_end
-
-RocketHideoutB4FRocket3Text:
- text_asm
- ld hl, RocketHideout4TrainerHeader2
- call TalkToTrainer
+ SetEvent EVENT_ROCKET_DROPPED_LIFT_KEY
+ ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_5
+ ld [wMissableObjectIndex], a
+ predef ShowObject
jp TextScriptEnd
-RocketHideoutB4FRocket3BattleText:
- text_far _RocketHideoutB4FRocket3BattleText
- text_end
-
-RocketHideoutB4FRocket3EndBattleText:
- text_far _RocketHideoutB4FRocket3EndBattleText
- text_end
-
-RocketHideoutB4FRocket3AfterBattleText:
+RocketHideoutB4FRocketAfterBattleText:
text_asm
ld hl, .Text
call PrintText
- CheckAndSetEvent EVENT_ROCKET_DROPPED_LIFT_KEY
- jr nz, .done
- ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_5
- ld [wMissableObjectIndex], a
- predef ShowObject
-.done
jp TextScriptEnd
.Text:
- text_far _RocketHideoutB4FRocket3AfterBattleText
+ text_far _RocketHideoutB4FRocketAfterBattleText
text_end
diff --git a/scripts/Route1.asm b/scripts/Route1.asm
index 4b9be6e7..a784d0a8 100644
--- a/scripts/Route1.asm
+++ b/scripts/Route1.asm
@@ -1,5 +1,6 @@
Route1_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Route1_TextPointers:
def_text_pointers
@@ -9,45 +10,15 @@ Route1_TextPointers:
Route1Youngster1Text:
text_asm
- CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
- jr nz, .got_item
- ld hl, .MartSampleText
- call PrintText
- lb bc, POTION, 1
- call GiveItem
- jr nc, .bag_full
- ld hl, .GotPotionText
- jr .done
-.bag_full
- ld hl, .NoRoomText
- jr .done
-.got_item
- ld hl, .AlsoGotPokeballsText
-.done
- call PrintText
+ farcall Route1PrintYoungster1Text
jp TextScriptEnd
-.MartSampleText:
- text_far _Route1Youngster1MartSampleText
- text_end
-
-.GotPotionText:
- text_far _Route1Youngster1GotPotionText
- sound_get_item_1
- text_end
-
-.AlsoGotPokeballsText:
- text_far _Route1Youngster1AlsoGotPokeballsText
- text_end
-
-.NoRoomText:
- text_far _Route1Youngster1NoRoomText
- text_end
-
Route1Youngster2Text:
- text_far _Route1Youngster2Text
- text_end
+ text_asm
+ farcall Route1PrintYoungster2Text
+ jp TextScriptEnd
Route1SignText:
- text_far _Route1SignText
- text_end
+ text_asm
+ farcall Route1PrintSignText
+ jp TextScriptEnd
diff --git a/scripts/Route11Gate2F.asm b/scripts/Route11Gate2F.asm
index bc1e2e90..c9f183e1 100644
--- a/scripts/Route11Gate2F.asm
+++ b/scripts/Route11Gate2F.asm
@@ -10,7 +10,7 @@ Route11Gate2F_TextPointers:
Route11Gate2FYoungsterText:
text_asm
- xor a ; TRADE_FOR_TERRY
+ ld a, TRADE_FOR_GURIO
ld [wWhichTrade], a
predef DoInGameTradeDialogue
Route11Gate2FScriptEnd:
diff --git a/scripts/Route18Gate2F.asm b/scripts/Route18Gate2F.asm
index 0300966e..5065b696 100644
--- a/scripts/Route18Gate2F.asm
+++ b/scripts/Route18Gate2F.asm
@@ -3,13 +3,13 @@ Route18Gate2F_Script:
Route18Gate2F_TextPointers:
def_text_pointers
- dw_const Route18Gate2FYoungsterText, TEXT_ROUTE18GATE2F_YOUNGSTER
+ dw_const Route18Gate2FCookText, TEXT_ROUTE18GATE2F_COOK
dw_const Route18Gate2FLeftBinocularsText, TEXT_ROUTE18GATE2F_LEFT_BINOCULARS
dw_const Route18Gate2FRightBinocularsText, TEXT_ROUTE18GATE2F_RIGHT_BINOCULARS
-Route18Gate2FYoungsterText:
+Route18Gate2FCookText:
text_asm
- ld a, TRADE_FOR_MARC
+ ld a, TRADE_FOR_SPIKE
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
diff --git a/scripts/Route19.asm b/scripts/Route19.asm
index ef289b5f..9733ca05 100644
--- a/scripts/Route19.asm
+++ b/scripts/Route19.asm
@@ -32,7 +32,7 @@ Route19TrainerHeaders:
Route19TrainerHeader0:
trainer EVENT_BEAT_ROUTE_19_TRAINER_0, 4, Route19CooltrainerM1BattleText, Route19CooltrainerM1EndBattleText, Route19CooltrainerM1AfterBattleText
Route19TrainerHeader1:
- trainer EVENT_BEAT_ROUTE_19_TRAINER_1, 3, Route19CooltrainerM2BattleText, Route19CooltrainerM2EndBattleText, Route19CooltrainerM2AfterBattleText
+ trainer EVENT_BEAT_ROUTE_19_TRAINER_1, 4, Route19CooltrainerM2BattleText, Route19CooltrainerM2EndBattleText, Route19CooltrainerM2AfterBattleText
Route19TrainerHeader2:
trainer EVENT_BEAT_ROUTE_19_TRAINER_2, 3, Route19Swimmer1BattleText, Route19Swimmer1EndBattleText, Route19Swimmer1AfterBattleText
Route19TrainerHeader3:
@@ -54,60 +54,52 @@ Route19TrainerHeader9:
Route19CooltrainerM1Text:
text_asm
ld hl, Route19TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19CooltrainerM2Text:
text_asm
ld hl, Route19TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Swimmer1Text:
text_asm
ld hl, Route19TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Swimmer2Text:
text_asm
ld hl, Route19TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Swimmer3Text:
text_asm
ld hl, Route19TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Swimmer4Text:
text_asm
ld hl, Route19TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Swimmer5Text:
text_asm
ld hl, Route19TrainerHeader6
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Swimmer6Text:
text_asm
ld hl, Route19TrainerHeader7
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Swimmer7Text:
text_asm
ld hl, Route19TrainerHeader8
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Swimmer8Text:
text_asm
ld hl, Route19TrainerHeader9
+Route19_TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
diff --git a/scripts/Route1_2.asm b/scripts/Route1_2.asm
new file mode 100644
index 00000000..24cabbde
--- /dev/null
+++ b/scripts/Route1_2.asm
@@ -0,0 +1,53 @@
+Route1PrintYoungster1Text::
+ CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
+ jr nz, .got_item
+ ld hl, .MartSampleText
+ call PrintText
+ lb bc, POTION, 1
+ call GiveItem
+ jr nc, .bag_full
+ ld hl, .GotPotionText
+ jr .done
+.bag_full
+ ld hl, .NoRoomText
+ jr .done
+.got_item
+ ld hl, .AlsoGotPokeballsText
+.done
+ call PrintText
+ ret
+
+.MartSampleText:
+ text_far _Route1Youngster1MartSampleText
+ text_end
+
+.GotPotionText:
+ text_far _Route1Youngster1GotPotionText
+ sound_get_item_1
+ text_end
+
+.AlsoGotPokeballsText:
+ text_far _Route1Youngster1AlsoGotPokeballsText
+ text_end
+
+.NoRoomText:
+ text_far _Route1Youngster1NoRoomText
+ text_end
+
+Route1PrintYoungster2Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _Route1Youngster2Text
+ text_end
+
+Route1PrintSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _Route1SignText
+ text_end
diff --git a/scripts/Route22.asm b/scripts/Route22.asm
index 80f54290..77ad1ad0 100644
--- a/scripts/Route22.asm
+++ b/scripts/Route22.asm
@@ -22,17 +22,18 @@ Route22SetDefaultScript:
Route22NoopScript:
ret
-Route22GetRivalTrainerNoByStarterScript:
+Route22Script_50ed6:
+ ld a, OPP_RIVAL1
+ ld [wCurOpponent], a
+ ld a, $2
+ ld [wTrainerNo], a
+ ret
+
+Route22Script_50ee1:
+ ld a, OPP_RIVAL2
+ ld [wCurOpponent], a
ld a, [wRivalStarter]
- ld b, a
-.next_trainer_no
- ld a, [hli]
- cp b
- jr z, .got_trainer_no
- inc hl
- jr .next_trainer_no
-.got_trainer_no
- ld a, [hl]
+ add 7
ld [wTrainerNo], a
ret
@@ -89,9 +90,7 @@ Route22FirstRivalBattleScript:
ld a, [wWalkBikeSurfState]
and a
jr z, .walking
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.walking
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
@@ -132,24 +131,29 @@ Route22Rival1StartBattleScript:
ld hl, Route22Rival1DefeatedText
ld de, Route22Rival1VictoryText
call SaveEndBattleTextPointers
- ld a, OPP_RIVAL1
- ld [wCurOpponent], a
- ld hl, .StarterTable
- call Route22GetRivalTrainerNoByStarterScript
+ call Route22Script_50ed6
ld a, SCRIPT_ROUTE22_RIVAL1_AFTER_BATTLE
ld [wRoute22CurScript], a
ret
-.StarterTable:
-; starter the rival picked, rival trainer number
- db STARTER2, 4
- db STARTER3, 5
- db STARTER1, 6
+Route22Rival1DefeatedText:
+ text_far _Route22Rival1DefeatedText
+ text_end
+
+Route22Rival1VictoryText:
+ text_far _Route22Rival1VictoryText
+ text_end
Route22Rival1AfterBattleScript:
ld a, [wIsInBattle]
cp $ff
jp z, Route22SetDefaultScript
+ ld a, [wRivalStarter]
+ cp RIVAL_STARTER_FLAREON
+ jr nz, .keep_rival_starter
+ ld a, RIVAL_STARTER_JOLTEON
+ ld [wRivalStarter], a
+.keep_rival_starter
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
jr nz, .not_facing_down
@@ -168,9 +172,7 @@ Route22Rival1AfterBattleScript:
ld a, TEXT_ROUTE22_RIVAL1
ldh [hTextID], a
call DisplayTextID
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, [wSavedCoordIndex]
cp 1 ; index of second, lower entry in Route22DefaultScript.Route22RivalBattleCoords
@@ -242,13 +244,9 @@ Route22SecondRivalBattleScript:
ld a, [wWalkBikeSurfState]
and a
jr z, .walking
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.walking
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateTempo
ld a, ROUTE22_RIVAL2
ldh [hSpriteIndex], a
@@ -288,18 +286,18 @@ Route22Rival2StartBattleScript:
ld hl, Route22Rival2DefeatedText
ld de, Route22Rival2VictoryText
call SaveEndBattleTextPointers
- ld a, OPP_RIVAL2
- ld [wCurOpponent], a
- ld hl, .StarterTable
- call Route22GetRivalTrainerNoByStarterScript
+ call Route22Script_50ee1
ld a, SCRIPT_ROUTE22_RIVAL2_AFTER_BATTLE
ld [wRoute22CurScript], a
ret
-.StarterTable:
- db STARTER2, 10
- db STARTER3, 11
- db STARTER1, 12
+Route22Rival2DefeatedText:
+ text_far _Route22Rival2DefeatedText
+ text_end
+
+Route22Rival2VictoryText:
+ text_far _Route22Rival2VictoryText
+ text_end
Route22Rival2AfterBattleScript:
ld a, [wIsInBattle]
@@ -327,9 +325,7 @@ Route22Rival2AfterBattleScript:
ld a, TEXT_ROUTE22_RIVAL2
ldh [hTextID], a
call DisplayTextID
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStartAndTempo
ld a, [wSavedCoordIndex]
cp 1 ; index of second, lower entry in Route22DefaultScript.Route22RivalBattleCoords
@@ -385,62 +381,15 @@ Route22_TextPointers:
Route22Rival1Text:
text_asm
- CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
- jr z, .before_battle
- ld hl, Route22RivalAfterBattleText1
- call PrintText
- jr .text_script_end
-.before_battle
- ld hl, Route22RivalBeforeBattleText1
- call PrintText
-.text_script_end
+ farcall Route22PrintRival1Text
jp TextScriptEnd
Route22Rival2Text:
text_asm
- CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
- jr z, .before_battle
- ld hl, Route22RivalAfterBattleText2
- call PrintText
- jr .text_script_end
-.before_battle
- ld hl, Route22RivalBeforeBattleText2
- call PrintText
-.text_script_end
+ farcall Route22PrintRival2Text
jp TextScriptEnd
-Route22RivalBeforeBattleText1:
- text_far _Route22RivalBeforeBattleText1
- text_end
-
-Route22RivalAfterBattleText1:
- text_far _Route22RivalAfterBattleText1
- text_end
-
-Route22Rival1DefeatedText:
- text_far _Route22Rival1DefeatedText
- text_end
-
-Route22Rival1VictoryText:
- text_far _Route22Rival1VictoryText
- text_end
-
-Route22RivalBeforeBattleText2:
- text_far _Route22RivalBeforeBattleText2
- text_end
-
-Route22RivalAfterBattleText2:
- text_far _Route22RivalAfterBattleText2
- text_end
-
-Route22Rival2DefeatedText:
- text_far _Route22Rival2DefeatedText
- text_end
-
-Route22Rival2VictoryText:
- text_far _Route22Rival2VictoryText
- text_end
-
Route22PokemonLeagueSignText:
- text_far _Route22PokemonLeagueSignText
- text_end
+ text_asm
+ farcall Route22PrintPokemonLeagueSignText
+ jp TextScriptEnd
diff --git a/scripts/Route22Gate.asm b/scripts/Route22Gate.asm
index e8e13b3c..b8ff0ed2 100644
--- a/scripts/Route22Gate.asm
+++ b/scripts/Route22Gate.asm
@@ -24,9 +24,12 @@ Route22GateDefaultScript:
ret nc
xor a
ldh [hJoyHeld], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSprite01StateData1FacingDirection], a
ld a, TEXT_ROUTE22GATE_GUARD
ldh [hTextID], a
- jp DisplayTextID
+ call DisplayTextID
+ ret
Route22GateScriptCoords:
dbmapcoord 4, 2
diff --git a/scripts/Route22_2.asm b/scripts/Route22_2.asm
new file mode 100644
index 00000000..9d40bafc
--- /dev/null
+++ b/scripts/Route22_2.asm
@@ -0,0 +1,48 @@
+Route22PrintRival1Text::
+ CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
+ jr z, .before_battle
+ ld hl, Route22RivalAfterBattleText1
+ call PrintText
+ jr .text_script_end
+.before_battle
+ ld hl, Route22RivalBeforeBattleText1
+ call PrintText
+.text_script_end
+ ret
+
+Route22RivalBeforeBattleText1:
+ text_far _Route22RivalBeforeBattleText1
+ text_end
+
+Route22RivalAfterBattleText1:
+ text_far _Route22RivalAfterBattleText1
+ text_end
+
+Route22PrintRival2Text::
+ CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
+ jr z, .before_battle
+ ld hl, Route22RivalAfterBattleText2
+ call PrintText
+ jr .text_script_end
+.before_battle
+ ld hl, Route22RivalBeforeBattleText2
+ call PrintText
+.text_script_end
+ ret
+
+Route22RivalBeforeBattleText2:
+ text_far _Route22RivalBeforeBattleText2
+ text_end
+
+Route22RivalAfterBattleText2:
+ text_far _Route22RivalAfterBattleText2
+ text_end
+
+Route22PrintPokemonLeagueSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _Route22PokemonLeagueSignText
+ text_end
diff --git a/scripts/Route24.asm b/scripts/Route24.asm
index b66e6703..24a5281a 100644
--- a/scripts/Route24.asm
+++ b/scripts/Route24.asm
@@ -87,6 +87,7 @@ Route24_TextPointers:
dw_const Route24CooltrainerF2Text, TEXT_ROUTE24_COOLTRAINER_F2
dw_const Route24Youngster2Text, TEXT_ROUTE24_YOUNGSTER2
dw_const PickUpItemText, TEXT_ROUTE24_TM_THUNDER_WAVE
+ dw_const Route24CooltrainerM4Text, TEXT_ROUTE24_COOLTRAINER_M4
Route24TrainerHeaders:
def_trainers 2
@@ -153,7 +154,7 @@ Route24CooltrainerM1Text:
.ReceivedNuggetText:
text_far _Route24CooltrainerM1ReceivedNuggetText
- sound_get_item_1
+ sound_get_key_item
text_promptbutton
text_end
@@ -280,3 +281,59 @@ Route24Youngster2EndBattleText:
Route24Youngster2AfterBattleText:
text_far _Route24Youngster2AfterBattleText
text_end
+
+Route24CooltrainerM4Text:
+ text_asm
+ CheckEvent EVENT_54F
+ jr nz, .asm_515d5
+ ld hl, Route24Text_515de
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_515d0
+ ld a, CHARMANDER
+ ld [wNamedObjectIndex], a
+ ld [wCurPartySpecies], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, CHARMANDER, 10
+ call GivePokemon
+ jp nc, TextScriptEnd
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, Route24Text_515e3
+ call PrintText
+ SetEvent EVENT_54F
+ jp TextScriptEnd
+
+.asm_515d0
+ ld hl, Route24Text_515e9
+ jr .asm_515d8
+
+.asm_515d5
+ ld hl, Route24Text_515ee
+.asm_515d8
+ call PrintText
+ jp TextScriptEnd
+
+Route24Text_515de:
+ text_far _Route24DamianText1
+ text_end
+
+Route24Text_515e3:
+ text_far _Route24DamianText2
+ text_waitbutton
+ text_end
+
+Route24Text_515e9:
+ text_far _Route24DamianText3
+ text_end
+
+Route24Text_515ee:
+ text_far _Route24DamianText4
+ text_end
diff --git a/scripts/Route25.asm b/scripts/Route25.asm
index a85144a8..8cb59c30 100644
--- a/scripts/Route25.asm
+++ b/scripts/Route25.asm
@@ -1,14 +1,21 @@
Route25_Script:
- call Route25ShowHideBillScript
call EnableAutoTextBoxDrawing
ld hl, Route25TrainerHeaders
ld de, Route25_ScriptPointers
ld a, [wRoute25CurScript]
call ExecuteCurMapScriptInTable
ld [wRoute25CurScript], a
+ call Route25ShowHideBillScript
ret
Route25ShowHideBillScript:
+ ld hl, wd492
+ res 2, [hl]
+ res 3, [hl]
+ res 4, [hl]
+ res 7, [hl]
+ xor a
+ ld [wBillsHouseCurScript], a
ld hl, wCurrentMapScriptFlags
bit BIT_CUR_MAP_LOADED_2, [hl]
res BIT_CUR_MAP_LOADED_2, [hl]
@@ -20,10 +27,11 @@ Route25ShowHideBillScript:
ResetEventReuseHL EVENT_BILL_SAID_USE_CELL_SEPARATOR
ld a, HS_BILL_POKEMON
ld [wMissableObjectIndex], a
- predef_jump ShowObject
+ predef ShowObject
+ jr .done
.met_bill
CheckEventAfterBranchReuseHL EVENT_GOT_SS_TICKET, EVENT_MET_BILL_2
- ret z
+ jr z, .done
SetEventReuseHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
ld a, HS_NUGGET_BRIDGE_GUY
ld [wMissableObjectIndex], a
@@ -33,7 +41,9 @@ Route25ShowHideBillScript:
predef HideObject
ld a, HS_BILL_2
ld [wMissableObjectIndex], a
- predef_jump ShowObject
+ predef ShowObject
+.done
+ ret
Route25_ScriptPointers:
def_script_pointers
diff --git a/scripts/Route2TradeHouse.asm b/scripts/Route2TradeHouse.asm
index f439db7b..0e5fcff3 100644
--- a/scripts/Route2TradeHouse.asm
+++ b/scripts/Route2TradeHouse.asm
@@ -12,7 +12,7 @@ Route2TradeHouseScientistText:
Route2TradeHouseGameboyKidText:
text_asm
- ld a, TRADE_FOR_MARCEL
+ ld a, TRADE_FOR_MILES
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
diff --git a/scripts/Route6.asm b/scripts/Route6.asm
index 0151c924..5fb24bac 100644
--- a/scripts/Route6.asm
+++ b/scripts/Route6.asm
@@ -26,9 +26,9 @@ Route6_TextPointers:
Route6TrainerHeaders:
def_trainers
Route6TrainerHeader0:
- trainer EVENT_BEAT_ROUTE_6_TRAINER_0, 0, Route6CooltrainerM1BattleText, Route6CooltrainerM1EndBattleText, Route6CooltrainerAfterBattleText
+ trainer EVENT_BEAT_ROUTE_6_TRAINER_0, 0, Route6CooltrainerM1BattleText, Route6CooltrainerM1EndBattleText, Route6CooltrainerM1AfterBattleText
Route6TrainerHeader1:
- trainer EVENT_BEAT_ROUTE_6_TRAINER_1, 0, Route6CooltrainerF1BattleText, Route6CooltrainerF1EndBattleText, Route6CooltrainerAfterBattleText
+ trainer EVENT_BEAT_ROUTE_6_TRAINER_1, 0, Route6CooltrainerF1BattleText, Route6CooltrainerF1EndBattleText, Route6CooltrainerF1AfterBattleText
Route6TrainerHeader2:
trainer EVENT_BEAT_ROUTE_6_TRAINER_2, 4, Route6Youngster1BattleText, Route6Youngster1EndBattleText, Route6Youngster1AfterBattleText
Route6TrainerHeader3:
@@ -53,8 +53,8 @@ Route6CooltrainerM1EndBattleText:
text_far _Route6CooltrainerM1EndBattleText
text_end
-Route6CooltrainerAfterBattleText: ; used by both COOLTRAINER_M1 and COOLTRAINER_F1
- text_far _Route6CooltrainerAfterBattleText
+Route6CooltrainerM1AfterBattleText:
+ text_far _Route6CooltrainerM1AfterBattleText
text_end
Route6CooltrainerF1Text:
@@ -71,6 +71,10 @@ Route6CooltrainerF1EndBattleText:
text_far _Route6CooltrainerF1EndBattleText
text_end
+Route6CooltrainerF1AfterBattleText:
+ text_far _Route6CooltrainerF1AfterBattleText
+ text_end
+
Route6Youngster1Text:
text_asm
ld hl, Route6TrainerHeader2
diff --git a/scripts/Route7.asm b/scripts/Route7.asm
index f49822b3..7270a83c 100644
--- a/scripts/Route7.asm
+++ b/scripts/Route7.asm
@@ -1,5 +1,6 @@
Route7_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Route7_TextPointers:
def_text_pointers
diff --git a/scripts/Route8Gate.asm b/scripts/Route8Gate.asm
index 533e45f6..d1204f74 100644
--- a/scripts/Route8Gate.asm
+++ b/scripts/Route8Gate.asm
@@ -28,7 +28,7 @@ Route8GateDefaultScript:
ld hl, .PlayerInCoordsArray
call ArePlayerCoordsInArray
ret nc
- ld a, PLAYER_DIR_LEFT
+ ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
xor a
ldh [hJoyHeld], a
diff --git a/scripts/Route9.asm b/scripts/Route9.asm
index a2bb6abb..281a44f3 100644
--- a/scripts/Route9.asm
+++ b/scripts/Route9.asm
@@ -16,7 +16,7 @@ Route9_ScriptPointers:
Route9_TextPointers:
def_text_pointers
dw_const Route9CooltrainerF1Text, TEXT_ROUTE9_COOLTRAINER_F1
- dw_const Route9CooltrainerM1Text, TEXT_ROUTE9_COOLTRAINER_M1
+ dw_const Route9AJText, TEXT_ROUTE9_COOLTRAINER_M1
dw_const Route9CooltrainerM2Text, TEXT_ROUTE9_COOLTRAINER_M2
dw_const Route9CooltrainerF2Text, TEXT_ROUTE9_COOLTRAINER_F2
dw_const Route9Hiker1Text, TEXT_ROUTE9_HIKER1
@@ -32,7 +32,7 @@ Route9TrainerHeaders:
Route9TrainerHeader0:
trainer EVENT_BEAT_ROUTE_9_TRAINER_0, 3, Route9CooltrainerF1BattleText, Route9CooltrainerF1EndBattleText, Route9CooltrainerF1AfterBattleText
Route9TrainerHeader1:
- trainer EVENT_BEAT_ROUTE_9_TRAINER_1, 2, Route9CooltrainerM1BattleText, Route9CooltrainerM1EndBattleText, Route9CooltrainerM1AfterBattleText
+ trainer EVENT_BEAT_ROUTE_9_TRAINER_1, 2, Route9AJBattleText, Route9AJEndBattleText, Route9AJAfterBattleText
Route9TrainerHeader2:
trainer EVENT_BEAT_ROUTE_9_TRAINER_2, 4, Route9CooltrainerM2BattleText, Route9CooltrainerM2EndBattleText, Route9CooltrainerM2AfterBattleText
Route9TrainerHeader3:
@@ -54,7 +54,7 @@ Route9CooltrainerF1Text:
ld hl, Route9TrainerHeader0
jr Route9TalkToTrainer
-Route9CooltrainerM1Text:
+Route9AJText:
text_asm
ld hl, Route9TrainerHeader1
jr Route9TalkToTrainer
@@ -108,16 +108,16 @@ Route9CooltrainerF1AfterBattleText:
text_far _Route9CooltrainerF1AfterBattleText
text_end
-Route9CooltrainerM1BattleText:
- text_far _Route9CooltrainerM1BattleText
+Route9AJBattleText:
+ text_far _Route9AJBattleText
text_end
-Route9CooltrainerM1EndBattleText:
- text_far _Route9CooltrainerM1EndBattleText
+Route9AJEndBattleText:
+ text_far _Route9AJEndBattleText
text_end
-Route9CooltrainerM1AfterBattleText:
- text_far _Route9CooltrainerM1AfterBattleText
+Route9AJAfterBattleText:
+ text_far _Route9AJAfterBattleText
text_end
Route9CooltrainerM2BattleText:
diff --git a/scripts/SSAnne2F.asm b/scripts/SSAnne2F.asm
index ee860fd9..2d98c513 100644
--- a/scripts/SSAnne2F.asm
+++ b/scripts/SSAnne2F.asm
@@ -25,9 +25,7 @@ SSAnne2FDefaultScript:
ld hl, .PlayerCoordinatesArray
call ArePlayerCoordsInArray
ret nc
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -99,23 +97,8 @@ SSAnne2FRivalStartBattleScript:
call Delay3
ld a, OPP_RIVAL2
ld [wCurOpponent], a
-
- ; select which team to use during the encounter
- ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotSquirtle
ld a, $1
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $2
- jr .done
-.Charmander
- ld a, $3
-.done
ld [wTrainerNo], a
-
call SSAnne2FSetFacingDirectionScript
ld a, SCRIPT_SSANNE2F_RIVAL_AFTER_BATTLE
ld [wSSAnne2FCurScript], a
@@ -145,9 +128,7 @@ SSAnne2FRivalAfterBattleScript:
ld a, SSANNE2F_RIVAL
ldh [hSpriteIndex], a
call MoveSprite
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, SCRIPT_SSANNE2F_RIVAL_EXIT
ld [wSSAnne2FCurScript], a
diff --git a/scripts/SSAnne2FRooms.asm b/scripts/SSAnne2FRooms.asm
index 3358759d..30266610 100644
--- a/scripts/SSAnne2FRooms.asm
+++ b/scripts/SSAnne2FRooms.asm
@@ -1,8 +1,5 @@
SSAnne2FRooms_Script:
- ld a, 1 << BIT_NO_AUTO_TEXT_BOX
- ld [wAutoTextBoxDrawingControl], a
- xor a
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call DisableAutoTextBoxDrawing
ld hl, SSAnne9TrainerHeaders
ld de, SSAnne2FRooms_ScriptPointers
ld a, [wSSAnne2FRoomsCurScript]
@@ -104,44 +101,24 @@ SSAnne2FRoomsGrampsText:
SSAnne2FRoomsGentleman5Text:
text_asm
- ld hl, .Text
- call PrintText
+ farcall SSAnne2FRoomsPrintGentleman5Text
jp TextScriptEnd
-.Text:
- text_far _SSAnne2FRoomsGentleman5Text
- text_end
-
SSAnne2FRoomsLittleBoyText:
text_asm
- ld hl, .Text
- call PrintText
+ farcall SSAnne2FRoomsPrintLittleBoyText
jp TextScriptEnd
-.Text:
- text_far _SSAnne2FRoomsLittleBoyText
- text_end
-
SSAnne2FRoomsBrunetteGirlText:
text_asm
- ld hl, .Text
- call PrintText
+ farcall SSAnne2FRoomsPrintBrunetteGirlText
jp TextScriptEnd
-.Text:
- text_far _SSAnne2FRoomsBrunetteGirlText
- text_end
-
SSAnne2FRoomsBeautyText:
text_asm
- ld hl, .Text
- call PrintText
+ farcall SSAnne2FRoomsPrintBeautyText
jp TextScriptEnd
-.Text:
- text_far _SSAnne2FRoomsBeautyText
- text_end
-
SSAnne2FRoomsGentleman1BattleText:
text_far _SSAnne2FRoomsGentleman1BattleText
text_end
diff --git a/scripts/SSAnne2FRooms_2.asm b/scripts/SSAnne2FRooms_2.asm
new file mode 100644
index 00000000..a6029ac2
--- /dev/null
+++ b/scripts/SSAnne2FRooms_2.asm
@@ -0,0 +1,35 @@
+SSAnne2FRoomsPrintGentleman5Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _SSAnne2FRoomsGentleman5Text
+ text_end
+
+SSAnne2FRoomsPrintLittleBoyText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _SSAnne2FRoomsLittleBoyText
+ text_end
+
+SSAnne2FRoomsPrintBrunetteGirlText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _SSAnne2FRoomsBrunetteGirlText
+ text_end
+
+SSAnne2FRoomsPrintBeautyText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _SSAnne2FRoomsBeautyText
+ text_end
diff --git a/scripts/SSAnneCaptainsRoom.asm b/scripts/SSAnneCaptainsRoom.asm
index bac424e8..1c49245b 100644
--- a/scripts/SSAnneCaptainsRoom.asm
+++ b/scripts/SSAnneCaptainsRoom.asm
@@ -3,7 +3,7 @@ SSAnneCaptainsRoom_Script:
jp EnableAutoTextBoxDrawing
SSAnneCaptainsRoomEventScript:
- CheckEvent EVENT_RUBBED_CAPTAINS_BACK
+ CheckEvent EVENT_GOT_HM01
ret nz
ld hl, wStatusFlags3
set BIT_NO_NPC_FACE_PLAYER, [hl]
@@ -29,12 +29,12 @@ SSAnneCaptainsRoomCaptainText:
ld hl, SSAnneCaptainsRoomCaptainReceivedHM01Text
call PrintText
SetEvent EVENT_GOT_HM01
+ ld hl, wStatusFlags3
+ res BIT_NO_NPC_FACE_PLAYER, [hl]
jr .done
.bag_full
ld hl, SSAnneCaptainsRoomCaptainHM01NoRoomText
call PrintText
- ld hl, wStatusFlags3
- set BIT_NO_NPC_FACE_PLAYER, [hl]
jr .done
.got_item
ld hl, SSAnneCaptainsRoomCaptainNotSickAnymoreText
@@ -49,9 +49,7 @@ SSAnneCaptainsRoomRubCaptainsBackText:
cp BANK("Audio Engine 3")
ld [wAudioSavedROMBank], a
jr nz, .not_audio_engine_3
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld a, BANK(Music_PkmnHealed)
ld [wAudioROMBank], a
.not_audio_engine_3
diff --git a/scripts/SafariZoneGate.asm b/scripts/SafariZoneGate.asm
index 3052cac9..0e1a05bf 100644
--- a/scripts/SafariZoneGate.asm
+++ b/scripts/SafariZoneGate.asm
@@ -2,7 +2,8 @@ SafariZoneGate_Script:
call EnableAutoTextBoxDrawing
ld hl, SafariZoneGate_ScriptPointers
ld a, [wSafariZoneGateCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
SafariZoneGate_ScriptPointers:
def_script_pointers
@@ -87,6 +88,8 @@ SafariZoneGateLeavingSafariScript:
call DisplayTextID
xor a
ld [wNumSafariBalls], a
+ ld [wSafariSteps], a
+ ld [wSafariSteps], a ; ?????
ld a, PAD_DOWN
ld c, 3
call SafariZoneEntranceAutoWalk
@@ -146,84 +149,10 @@ SafariZoneGateSafariZoneWorker1Text:
text_end
SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText:
- text_far _SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText
text_asm
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jp nz, .PleaseComeAgain
- xor a
- ldh [hMoney], a
- ld a, $05
- ldh [hMoney + 1], a
- ld a, $00
- ldh [hMoney + 2], a
- call HasEnoughMoney
- jr nc, .success
- ld hl, .NotEnoughMoneyText
- call PrintText
- jr .CantPayWalkDown
-
-.success
- xor a
- ld [wPriceTemp], a
- ld a, $05
- ld [wPriceTemp + 1], a
- ld a, $00
- ld [wPriceTemp + 2], a
- ld hl, wPriceTemp + 2
- ld de, wPlayerMoney + 2
- ld c, 3
- predef SubBCDPredef
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- ld hl, .MakePaymentText
- call PrintText
- ld a, 30
- ld [wNumSafariBalls], a
- ld a, HIGH(502)
- ld [wSafariSteps], a
- ld a, LOW(502)
- ld [wSafariSteps + 1], a
- ld a, PAD_UP
- ld c, 3
- call SafariZoneEntranceAutoWalk
- SetEvent EVENT_IN_SAFARI_ZONE
- ResetEventReuseHL EVENT_SAFARI_GAME_OVER
- ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING
- ld [wSafariZoneGateCurScript], a
- jr .done
-
-.PleaseComeAgain
- ld hl, .PleaseComeAgainText
- call PrintText
-.CantPayWalkDown
- ld a, PAD_DOWN
- ld c, 1
- call SafariZoneEntranceAutoWalk
- ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_DOWN
- ld [wSafariZoneGateCurScript], a
-.done
+ callfar SafariZoneGatePrintSafariZoneWorker1WouldYouLikeToJoinText
jp TextScriptEnd
-.MakePaymentText
- text_far _SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText
- sound_get_item_1
- text_far _SafariZoneGateSafariZoneWorker1CallYouOnThePAText
- text_end
-
-.PleaseComeAgainText
- text_far _SafariZoneGateSafariZoneWorker1PleaseComeAgainText
- text_end
-
-.NotEnoughMoneyText
- text_far _SafariZoneGateSafariZoneWorker1NotEnoughMoneyText
- text_end
-
SafariZoneGateSafariZoneWorker1LeavingEarlyText:
text_far _SafariZoneGateSafariZoneWorker1LeavingEarlyText
text_asm
@@ -271,26 +200,5 @@ SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText:
SafariZoneGateSafariZoneWorker2Text:
text_asm
- ld hl, .FirstTimeHereText
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- ld hl, .YoureARegularHereText
- jr nz, .print_text
- ld hl, .SafariZoneExplanationText
-.print_text
- call PrintText
+ callfar SafariZoneGatePrintSafariZoneWorker2Text
jp TextScriptEnd
-
-.FirstTimeHereText
- text_far _SafariZoneGateSafariZoneWorker2FirstTimeHereText
- text_end
-
-.SafariZoneExplanationText
- text_far _SafariZoneGateSafariZoneWorker2SafariZoneExplanationText
- text_end
-
-.YoureARegularHereText
- text_far _SafariZoneGateSafariZoneWorker2YoureARegularHereText
- text_end
diff --git a/scripts/SafariZoneGate_2.asm b/scripts/SafariZoneGate_2.asm
new file mode 100644
index 00000000..819c2cc2
--- /dev/null
+++ b/scripts/SafariZoneGate_2.asm
@@ -0,0 +1,252 @@
+SafariZoneGatePrintSafariZoneWorker1WouldYouLikeToJoinText::
+ ld hl, .WelcomeText
+ call PrintText
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jp nz, .PleaseComeAgain
+ ld hl, wPlayerMoney
+ ld a, [hli]
+ or [hl]
+ inc hl
+ or [hl]
+ jr nz, .has_positive_balance
+ call SafariZoneEntranceGetLowCostAdmissionText
+ jr c, .CantPayWalkDown
+ jr .poor_mans_discount
+
+.has_positive_balance
+ xor a
+ ldh [hMoney], a
+ ld a, $05
+ ldh [hMoney + 1], a
+ ld a, $00
+ ldh [hMoney + 2], a
+ call HasEnoughMoney
+ jr nc, .success
+ ld hl, .NotEnoughMoneyText
+ call PrintText
+ call SafariZoneEntranceCalculateLowCostAdmission
+ jr c, .CantPayWalkDown
+ jr .poor_mans_discount
+
+.success
+ xor a
+ ld [wPriceTemp], a
+ ld a, $05
+ ld [wPriceTemp + 1], a
+ ld a, $00
+ ld [wPriceTemp + 2], a
+ ld hl, wPriceTemp + 2
+ ld de, wPlayerMoney + 2
+ ld c, 3
+ predef SubBCDPredef
+ ld a, SFX_PURCHASE
+ call PlaySoundWaitForCurrent
+ call WaitForSoundToFinish
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ ld hl, .MakePaymentText
+ call PrintText
+ ld a, 30
+ ld hl, 502
+.poor_mans_discount
+ ld [wNumSafariBalls], a
+ ld a, h
+ ld [wSafariSteps], a
+ ld a, l
+ ld [wSafariSteps + 1], a
+ ld a, PAD_UP
+ ld c, 3
+ call SafariZoneEntranceAutoWalk2
+ SetEvent EVENT_IN_SAFARI_ZONE
+ ResetEventReuseHL EVENT_SAFARI_GAME_OVER
+ ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING
+ ld [wSafariZoneGateCurScript], a
+ jr .done
+
+.PleaseComeAgain
+ ld hl, .PleaseComeAgainText
+ call PrintText
+.CantPayWalkDown
+ ld a, PAD_DOWN
+ ld c, 1
+ call SafariZoneEntranceAutoWalk2
+ ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_DOWN
+ ld [wSafariZoneGateCurScript], a
+.done
+ ret
+
+.WelcomeText
+ text_far _SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText
+ text_end
+
+.MakePaymentText
+ text_far _SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText
+ sound_get_item_1
+ text_far _SafariZoneGateSafariZoneWorker1CallYouOnThePAText
+ text_end
+
+.PleaseComeAgainText
+ text_far _SafariZoneGateSafariZoneWorker1PleaseComeAgainText
+ text_end
+
+.NotEnoughMoneyText
+ text_far _SafariZoneGateSafariZoneWorker1NotEnoughMoneyText
+ text_end
+
+SafariZoneGatePrintSafariZoneWorker2Text::
+ ld hl, .FirstTimeHereText
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ ld hl, .YoureARegularHereText
+ jr nz, .print_text
+ ld hl, .SafariZoneExplanationText
+.print_text
+ call PrintText
+ ret
+
+.FirstTimeHereText
+ text_far _SafariZoneGateSafariZoneWorker2FirstTimeHereText
+ text_end
+
+.SafariZoneExplanationText
+ text_far _SafariZoneGateSafariZoneWorker2SafariZoneExplanationText
+ text_end
+
+.YoureARegularHereText
+ text_far _SafariZoneGateSafariZoneWorker2YoureARegularHereText
+ text_end
+
+SafariZoneEntranceAutoWalk2:
+ push af
+ ld b, 0
+ ld a, c
+ ld [wSimulatedJoypadStatesIndex], a
+ ld hl, wSimulatedJoypadStatesEnd
+ pop af
+ call FillMemory
+ jp StartSimulatingJoypadStates
+
+SafariZoneEntranceCalculateLowCostAdmission:
+ ld hl, wPlayerMoney
+ ld de, hMoney
+ ld bc, $3
+ call CopyData
+ xor a
+ ldh [hDivideBCDDivisor], a
+ ldh [hDivideBCDDivisor + 1], a
+ ld a, 23
+ ldh [hDivideBCDDivisor + 2], a
+ predef DivideBCDPredef3
+ ldh a, [hDivideBCDQuotient + 2]
+ call SafariZoneEntranceConvertBCDtoNumber
+ push af
+ ld hl, wPlayerMoney
+ xor a
+ ld bc, $3
+ call FillMemory
+ ld hl, SafariZoneEntranceText_f20c4
+ call PrintText_NoCreatingTextBox
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ ld hl, SafariZoneEntranceText_f20c9
+ call PrintText
+ pop af
+ inc a
+ jr z, .max_balls
+ cp 29
+ jr c, .load_balls
+.max_balls
+ ld a, 29
+.load_balls
+ ld hl, 502
+ and a
+ ret
+
+SafariZoneEntranceText_f20c4:
+ text_far _SafariZoneLowCostText1
+ text_end
+
+SafariZoneEntranceText_f20c9:
+ text_far _SafariZoneLowCostText2
+ text_end
+
+SafariZoneEntranceGetLowCostAdmissionText:
+ ld hl, wSafariSteps
+ ld a, [hl]
+ push af
+ inc [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Pointers_f2100
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call PrintText
+ pop af
+ cp $3
+ jr z, .give_one_ball
+ scf
+ ret
+
+.give_one_ball
+ ld hl, SafariZoneEntranceText_f20f6
+ call PrintText_NoCreatingTextBox
+ ld a, $1
+ ld hl, 502
+ and a
+ ret
+
+SafariZoneEntranceText_f20f6:
+ text_far _SafariZoneLowCostText3
+ sound_get_item_1
+ text_far _SafariZoneLowCostText4
+ text_end
+
+Pointers_f2100:
+ dw SafariZoneEntranceText_f210a
+ dw SafariZoneEntranceText_f210f
+ dw SafariZoneEntranceText_f2114
+ dw SafariZoneEntranceText_f2119
+ dw SafariZoneEntranceText_f2119
+
+SafariZoneEntranceText_f210a:
+ text_far _SafariZoneLowCostText5
+ text_end
+
+SafariZoneEntranceText_f210f:
+ text_far _SafariZoneLowCostText6
+ text_end
+
+SafariZoneEntranceText_f2114:
+ text_far _SafariZoneLowCostText7
+ text_end
+
+SafariZoneEntranceText_f2119:
+ text_far _SafariZoneLowCostText8
+ text_end
+
+SafariZoneEntranceConvertBCDtoNumber:
+ push hl
+ ld c, a
+ and $f
+ ld l, a
+ ld h, $0
+ ld a, c
+ and $f0
+ swap a
+ ld bc, 10
+ call AddNTimes
+ ld a, l
+ pop hl
+ ret
diff --git a/scripts/SaffronPokecenter.asm b/scripts/SaffronPokecenter.asm
index 4a21b463..6b116aee 100644
--- a/scripts/SaffronPokecenter.asm
+++ b/scripts/SaffronPokecenter.asm
@@ -8,6 +8,7 @@ SaffronPokecenter_TextPointers:
dw_const SaffronPokecenterBeautyText, TEXT_SAFFRONPOKECENTER_BEAUTY
dw_const SaffronPokecenterGentlemanText, TEXT_SAFFRONPOKECENTER_GENTLEMAN
dw_const SaffronPokecenterLinkReceptionistText, TEXT_SAFFRONPOKECENTER_LINK_RECEPTIONIST
+ dw_const SaffronPokecenterChanseyText, TEXT_SAFFRONPOKECENTER_CHANSEY
SaffronPokecenterNurseText:
script_pokecenter_nurse
@@ -22,3 +23,8 @@ SaffronPokecenterGentlemanText:
SaffronPokecenterLinkReceptionistText:
script_cable_club_receptionist
+
+SaffronPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/SeafoamIslandsB4F.asm b/scripts/SeafoamIslandsB4F.asm
index 40ecee0a..e4df261d 100644
--- a/scripts/SeafoamIslandsB4F.asm
+++ b/scripts/SeafoamIslandsB4F.asm
@@ -6,8 +6,9 @@ SeafoamIslandsB4F_Script:
SeafoamIslandsB4FResetScript:
xor a
- ld [wSeafoamIslandsB4FCurScript], a
ld [wJoyIgnore], a
+ ld [wSeafoamIslandsB4FCurScript], a
+ ld [wCurMapScript], a
ret
SeafoamIslandsB4F_ScriptPointers:
diff --git a/scripts/SilphCo11F.asm b/scripts/SilphCo11F.asm
index 75c545e3..5b72e3f8 100644
--- a/scripts/SilphCo11F.asm
+++ b/scripts/SilphCo11F.asm
@@ -21,7 +21,8 @@ SilphCo11FGateCallbackScript:
ld a, $20
ld [wNewTileBlockID], a
lb bc, 6, 3
- predef_jump ReplaceTileBlock
+ predef ReplaceTileBlock
+ ret
SilphCo11GateCoords:
dbmapcoord 3, 6
@@ -70,81 +71,6 @@ SilphCo11FSetUnlockedDoorEventScript:
SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
ret
-SilphCo11FTeamRocketLeavesScript:
- ld hl, .HideMissableObjectIDs
-.hide_loop
- ld a, [hli]
- cp $ff
- jr z, .done_hiding
- push hl
- ld [wMissableObjectIndex], a
- predef HideObject
- pop hl
- jr .hide_loop
-.done_hiding
- ld hl, .ShowMissableObjectIDs
-.show_loop
- ld a, [hli]
- cp -1
- ret z
- push hl
- ld [wMissableObjectIndex], a
- predef ShowObject
- pop hl
- jr .show_loop
-
-.ShowMissableObjectIDs:
- db HS_SAFFRON_CITY_8
- db HS_SAFFRON_CITY_9
- db HS_SAFFRON_CITY_A
- db HS_SAFFRON_CITY_B
- db HS_SAFFRON_CITY_C
- db HS_SAFFRON_CITY_D
- db -1 ; end
-
-.HideMissableObjectIDs:
- db HS_SAFFRON_CITY_1
- db HS_SAFFRON_CITY_2
- db HS_SAFFRON_CITY_3
- db HS_SAFFRON_CITY_4
- db HS_SAFFRON_CITY_5
- db HS_SAFFRON_CITY_6
- db HS_SAFFRON_CITY_7
- db HS_SAFFRON_CITY_E
- db HS_SAFFRON_CITY_F
- db HS_SILPH_CO_2F_2
- db HS_SILPH_CO_2F_3
- db HS_SILPH_CO_2F_4
- db HS_SILPH_CO_2F_5
- db HS_SILPH_CO_3F_1
- db HS_SILPH_CO_3F_2
- db HS_SILPH_CO_4F_1
- db HS_SILPH_CO_4F_2
- db HS_SILPH_CO_4F_3
- db HS_SILPH_CO_5F_1
- db HS_SILPH_CO_5F_2
- db HS_SILPH_CO_5F_3
- db HS_SILPH_CO_5F_4
- db HS_SILPH_CO_6F_1
- db HS_SILPH_CO_6F_2
- db HS_SILPH_CO_6F_3
- db HS_SILPH_CO_7F_1
- db HS_SILPH_CO_7F_2
- db HS_SILPH_CO_7F_3
- db HS_SILPH_CO_7F_4
- db HS_SILPH_CO_8F_1
- db HS_SILPH_CO_8F_2
- db HS_SILPH_CO_8F_3
- db HS_SILPH_CO_9F_1
- db HS_SILPH_CO_9F_2
- db HS_SILPH_CO_9F_3
- db HS_SILPH_CO_10F_1
- db HS_SILPH_CO_10F_2
- db HS_SILPH_CO_11F_1
- db HS_SILPH_CO_11F_2
- db HS_SILPH_CO_11F_3
- db -1 ; end
-
SilphCo11FResetCurScript:
xor a
ld [wJoyIgnore], a
@@ -159,13 +85,33 @@ SilphCo11F_ScriptPointers:
dw_const SilphCo11FDefaultScript, SCRIPT_SILPHCO11F_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_SILPHCO11F_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_SILPHCO11F_END_BATTLE
- dw_const SilphCo11FGiovanniBattleFacingScript, SCRIPT_SILPHCO11F_GIOVANNI_FACING
- dw_const SilphCo11FGiovanniStartBattleScript, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE
dw_const SilphCo11FGiovanniAfterBattleScript, SCRIPT_SILPHCO11F_GIOVANNI_AFTER_BATTLE
+ dw_const SilphCo11FGiovanniStartBattleScript, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE
+ dw_const SilphCo11FScript5, SCRIPT_SILPHCO11F_SCRIPT5
+ dw_const SilphCo11FScript6, SCRIPT_SILPHCO11F_SCRIPT6
+ dw_const SilphCo11FScript7, SCRIPT_SILPHCO11F_SCRIPT7
+ dw_const SilphCo11FScript8, SCRIPT_SILPHCO11F_SCRIPT8
+ dw_const SilphCo11FScript9, SCRIPT_SILPHCO11F_SCRIPT9
+ dw_const SilphCo11FScript10, SCRIPT_SILPHCO11F_SCRIPT10
+ dw_const SilphCo11FScript11, SCRIPT_SILPHCO11F_SCRIPT11
+ dw_const SilphCo11FScript12, SCRIPT_SILPHCO11F_SCRIPT12
+ dw_const SilphCo11FScript13, SCRIPT_SILPHCO11F_SCRIPT13
+ dw_const SilphCo11FScript14, SCRIPT_SILPHCO11F_SCRIPT14
SilphCo11FDefaultScript:
- CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
+IF DEF(_DEBUG)
+ call DebugPressedOrHeldB
+ ret nz
+ENDC
+ CheckEvent EVENT_BEAT_SILPH_CO_11F_JESSIE_JAMES
+ call z, SilphCo11FScript_6229c
+ CheckEvent EVENT_782
ret nz
+ CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
+ call z, SilphCo11FScript_621c5
+ ret
+
+SilphCo11FScript_621c5:
ld hl, .PlayerCoordsArray
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
@@ -183,8 +129,9 @@ SilphCo11FDefaultScript:
call SetSpriteMovementBytesToFF
ld de, .GiovanniMovement
call MoveSprite
- ld a, SCRIPT_SILPHCO11F_GIOVANNI_FACING
- jp SilphCo11FSetCurScript
+ ld a, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE
+ call SilphCo11FSetCurScript
+ ret
.PlayerCoordsArray:
dbmapcoord 6, 13
@@ -197,13 +144,13 @@ SilphCo11FDefaultScript:
db NPC_MOVEMENT_DOWN
db -1 ; end
-SilphCo11FSetPlayerAndSpriteFacingDirectionScript:
+SilphCo11FScript_621ff:
ld [wPlayerMovingDirection], a
- ld a, SILPHCO11F_GIOVANNI
- ldh [hSpriteIndex], a
ld a, b
- ldh [hSpriteFacingDirection], a
- jp SetSpriteFacingDirectionAndDelay
+ ld [wSprite03StateData1FacingDirection], a
+ ld a, $2
+ ld [wSprite03StateData1MovementStatus], a
+ ret
SilphCo11FGiovanniAfterBattleScript:
ld a, [wIsInBattle]
@@ -219,14 +166,14 @@ SilphCo11FGiovanniAfterBattleScript:
ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
.continue
- call SilphCo11FSetPlayerAndSpriteFacingDirectionScript
+ call SilphCo11FScript_621ff
ld a, PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, TEXT_SILPHCO11F_GIOVANNI_YOU_RUINED_OUR_PLANS
ldh [hTextID], a
call DisplayTextID
call GBFadeOutToBlack
- call SilphCo11FTeamRocketLeavesScript
+ farcall SilphCo11FTeamRocketLeavesScript
call UpdateSprites
call Delay3
call GBFadeInFromBlack
@@ -235,7 +182,7 @@ SilphCo11FGiovanniAfterBattleScript:
ld [wJoyIgnore], a
jp SilphCo11FSetCurScript
-SilphCo11FGiovanniBattleFacingScript:
+SilphCo11FGiovanniStartBattleScript:
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
@@ -252,12 +199,10 @@ SilphCo11FGiovanniBattleFacingScript:
ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
.continue
- call SilphCo11FSetPlayerAndSpriteFacingDirectionScript
+ call SilphCo11FScript_621ff
call Delay3
- ld a, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE
- jp SilphCo11FSetCurScript
-
-SilphCo11FGiovanniStartBattleScript:
+ xor a
+ ld [wJoyIgnore], a
ld hl, wStatusFlags3
set BIT_TALKED_TO_TRAINER, [hl]
set BIT_PRINT_END_BATTLE_TEXT, [hl]
@@ -268,28 +213,312 @@ SilphCo11FGiovanniStartBattleScript:
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
- xor a
- ld [wJoyIgnore], a
ld a, SCRIPT_SILPHCO11F_GIOVANNI_AFTER_BATTLE
jp SilphCo11FSetCurScript
+SilphCo11FScript_6229c:
+ ld a, [wYCoord]
+ cp $3
+ ret nz
+ ld a, [wXCoord]
+ cp $4
+ ret nc
+ ResetEvents EVENT_780, EVENT_781
+ ld a, [wXCoord]
+ cp $3
+ jr z, .asm_622c3
+ SetEventReuseHL EVENT_780
+ ld a, [wXCoord]
+ cp $2
+ jr z, .asm_622c3
+ ResetEventReuseHL EVENT_780
+ SetEventReuseHL EVENT_781
+.asm_622c3
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, TEXT_SILPHCO11F_TEXT8
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ SetEvent EVENT_782
+ ld a, SCRIPT_SILPHCO11F_SCRIPT5
+ call SilphCo11FSetCurScript
+ ret
+
+SilphCo11FMovementData_622f5:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11FMovementData_622fb:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11FMovementData_62300:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11FMovementData_62305:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11FMovementData_6230b:
+ db $5
+ db $5
+ db $6
+ db $5
+ db $5
+ db $ff
+
+SilphCo11FMovementData_62311:
+ db $5
+ db $5
+ db $5
+ db $6
+ db $5
+ db $5
+ db $ff
+
+SilphCo11FScript5:
+ ld de, SilphCo11FMovementData_622f5
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6232d
+ ld de, SilphCo11FMovementData_62300
+ cp $1
+ jr z, .asm_6232d
+ ld de, SilphCo11FMovementData_6230b
+.asm_6232d
+ ld a, SILPHCO11F_JAMES
+ ldh [hSpriteIndex], a
+ call MoveSprite
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_SILPHCO11F_SCRIPT6
+ call SilphCo11FSetCurScript
+ ret
+
+SilphCo11FScript6:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wStatusFlags5]
+ bit BIT_SCRIPTED_NPC_MOVEMENT, a
+ ret nz
+SilphCo11FScript7:
+ ld a, $2
+ ld [wSprite04StateData1MovementStatus], a
+ ld hl, wSprite04StateData1FacingDirection
+ ld [hl], SPRITE_FACING_RIGHT
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6235e
+ ld [hl], SPRITE_FACING_UP
+.asm_6235e
+ call Delay3
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+SilphCo11FScript8:
+ ld de, SilphCo11FMovementData_622fb
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6237b
+ ld de, SilphCo11FMovementData_62305
+ cp $1
+ jr z, .asm_6237b
+ ld de, SilphCo11FMovementData_62311
+.asm_6237b
+ ld a, SILPHCO11F_JESSIE
+ ldh [hSpriteIndex], a
+ call MoveSprite
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_SILPHCO11F_SCRIPT9
+ call SilphCo11FSetCurScript
+ ret
+
+SilphCo11FScript9:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wStatusFlags5]
+ bit BIT_SCRIPTED_NPC_MOVEMENT, a
+ ret nz
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+SilphCo11FScript10:
+ ld a, $2
+ ld [wSprite06StateData1MovementStatus], a
+ ld hl, wSprite06StateData1FacingDirection
+ ld [hl], SPRITE_FACING_UP
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_623b1
+ ld [hl], SPRITE_FACING_LEFT
+.asm_623b1
+ call Delay3
+ ld a, TEXT_SILPHCO11F_TEXT9
+ ldh [hTextID], a
+ call DisplayTextID
+SilphCo11FScript11:
+ ld hl, wStatusFlags3
+ set BIT_TALKED_TO_TRAINER, [hl]
+ set BIT_PRINT_END_BATTLE_TEXT, [hl]
+ ld hl, SilphCo11FText_624c2
+ ld de, SilphCo11FText_624c2
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2d
+ ld [wTrainerNo], a
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_SILPHCO11F_SCRIPT12
+ call SilphCo11FSetCurScript
+ ret
+
+SilphCo11FScript12:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, SilphCo11FResetCurScript
+ ld a, $2
+ ld [wSprite04StateData1MovementStatus], a
+ ld [wSprite06StateData1MovementStatus], a
+ xor a
+ ld [wSprite04StateData1FacingDirection], a
+ ld [wSprite06StateData1FacingDirection], a
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, TEXT_SILPHCO11F_TEXT10
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_SILPHCO11F_SCRIPT13
+ call SilphCo11FSetCurScript
+ ret
+
+SilphCo11FScript13:
+ ld a, PAD_BUTTONS | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_SILPH_CO_11F_JAMES
+ call SilphCo11FScript_HideObject
+ ld a, HS_SILPH_CO_11F_JESSIE
+ call SilphCo11FScript_HideObject
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, SCRIPT_SILPHCO11F_SCRIPT14
+ call SilphCo11FSetCurScript
+ ret
+
+SilphCo11FScript14:
+ call PlayDefaultMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ ResetEvent EVENT_782
+ SetEventReuseHL EVENT_BEAT_SILPH_CO_11F_JESSIE_JAMES
+ ld a, SCRIPT_SILPHCO11F_DEFAULT
+ call SilphCo11FSetCurScript
+ ret
+
+SilphCo11FScript_ShowObject:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+SilphCo11FScript_HideObject:
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ret
+
SilphCo11F_TextPointers:
def_text_pointers
dw_const SilphCo11FSilphPresidentText, TEXT_SILPHCO11F_SILPH_PRESIDENT
dw_const SilphCo11FBeautyText, TEXT_SILPHCO11F_BEAUTY
dw_const SilphCo11FGiovanniText, TEXT_SILPHCO11F_GIOVANNI
- dw_const SilphCo11FRocket1Text, TEXT_SILPHCO11F_ROCKET1
- dw_const SilphCo11FRocket2Text, TEXT_SILPHCO11F_ROCKET2
+ dw_const SilphCo11FJessieJamesText, TEXT_SILPHCO11F_JAMES
+ dw_const SilphCo11FRocketText, TEXT_SILPHCO11F_ROCKET
+ dw_const SilphCo11FJessieJamesText, TEXT_SILPHCO11F_JESSIE
dw_const SilphCo11FGiovanniYouRuinedOurPlansText, TEXT_SILPHCO11F_GIOVANNI_YOU_RUINED_OUR_PLANS
+ dw_const SilphCo11FJessieJamesText, TEXT_SILPHCO11F_TEXT8
+ dw_const SilphCo11FText9, TEXT_SILPHCO11F_TEXT9
+ dw_const SilphCo11FText10, TEXT_SILPHCO11F_TEXT10
SilphCo11TrainerHeaders:
- def_trainers 4
+ def_trainers 5
SilphCo11TrainerHeader0:
- trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 4, SilphCo11FRocket1BattleText, SilphCo11FRocket1EndBattleText, SilphCo11FRocket1AfterBattleText
-SilphCo11TrainerHeader1:
- trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11FRocket2BattleText, SilphCo11FRocket2EndBattleText, SilphCo11FRocket2AfterBattleText
+ trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 3, SilphCo11FRocketBattleText, SilphCo11FRocketEndBattleText, SilphCo11FRocketAfterBattleText
db -1 ; end
+SilphCo11FJessieJamesText:
+ text_far _SilphCoJessieJamesText1
+ text_asm
+ ld c, 10
+ call DelayFrames
+ ld a, $4
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+SilphCo11FText9:
+ text_far _SilphCoJessieJamesText2
+ text_end
+
+SilphCo11FText_624c2:
+ text_far _SilphCoJessieJamesText3
+ text_end
+
+SilphCo11FText10:
+ text_far _SilphCoJessieJamesText4
+ text_asm
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
+
SilphCo11FSilphPresidentText:
text_asm
CheckEvent EVENT_GOT_MASTER_BALL
@@ -346,50 +575,20 @@ SilphCo11FGiovanniYouRuinedOurPlansText:
text_far _SilphCo11FGiovanniYouRuinedOurPlansText
text_end
-SilphCo11FRocket1Text:
+SilphCo11FRocketText:
text_asm
ld hl, SilphCo11TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
-SilphCo11FRocket1BattleText:
- text_far _SilphCo11FRocket1BattleText
- text_end
-
-SilphCo11FRocket1EndBattleText:
- text_far _SilphCo11FRocket1EndBattleText
- text_end
-
-SilphCo11FRocket1AfterBattleText:
- text_far _SilphCo11FRocket1AfterBattleText
- text_end
-
-SilphCo11FRocket2Text:
- text_asm
- ld hl, SilphCo11TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
-
-SilphCo11FRocket2BattleText:
+SilphCo11FRocketBattleText:
text_far _SilphCo11FRocket2BattleText
text_end
-SilphCo11FRocket2EndBattleText:
+SilphCo11FRocketEndBattleText:
text_far _SilphCo11FRocket2EndBattleText
text_end
-SilphCo11FRocket2AfterBattleText:
+SilphCo11FRocketAfterBattleText:
text_far _SilphCo11FRocket2AfterBattleText
text_end
-
-SilphCo10FPorygonText: ; unreferenced
- text_asm
- ld hl, .Text
- call PrintText
- ld a, PORYGON
- call DisplayPokedex
- jp TextScriptEnd
-
-.Text:
- text_far _SilphCo10FPorygonText
- text_end
diff --git a/scripts/SilphCo11F_2.asm b/scripts/SilphCo11F_2.asm
new file mode 100644
index 00000000..fbc5bb1b
--- /dev/null
+++ b/scripts/SilphCo11F_2.asm
@@ -0,0 +1,75 @@
+SilphCo11FTeamRocketLeavesScript::
+ ld hl, .HideMissableObjectIDs
+.hide_loop
+ ld a, [hli]
+ cp $ff
+ jr z, .done_hiding
+ push hl
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ pop hl
+ jr .hide_loop
+.done_hiding
+ ld hl, .ShowMissableObjectIDs
+.show_loop
+ ld a, [hli]
+ cp -1
+ ret z
+ push hl
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ pop hl
+ jr .show_loop
+
+.ShowMissableObjectIDs:
+ db HS_SAFFRON_CITY_8
+ db HS_SAFFRON_CITY_9
+ db HS_SAFFRON_CITY_A
+ db HS_SAFFRON_CITY_B
+ db HS_SAFFRON_CITY_C
+ db HS_SAFFRON_CITY_D
+ db -1 ; end
+
+.HideMissableObjectIDs:
+ db HS_SAFFRON_CITY_1
+ db HS_SAFFRON_CITY_2
+ db HS_SAFFRON_CITY_3
+ db HS_SAFFRON_CITY_4
+ db HS_SAFFRON_CITY_5
+ db HS_SAFFRON_CITY_6
+ db HS_SAFFRON_CITY_7
+ db HS_SAFFRON_CITY_E
+ db HS_SAFFRON_CITY_F
+ db HS_SILPH_CO_2F_2
+ db HS_SILPH_CO_2F_3
+ db HS_SILPH_CO_2F_4
+ db HS_SILPH_CO_2F_5
+ db HS_SILPH_CO_3F_1
+ db HS_SILPH_CO_3F_2
+ db HS_SILPH_CO_4F_1
+ db HS_SILPH_CO_4F_2
+ db HS_SILPH_CO_4F_3
+ db HS_SILPH_CO_5F_1
+ db HS_SILPH_CO_5F_2
+ db HS_SILPH_CO_5F_3
+ db HS_SILPH_CO_5F_4
+ db HS_SILPH_CO_6F_1
+ db HS_SILPH_CO_6F_2
+ db HS_SILPH_CO_6F_3
+ db HS_SILPH_CO_7F_1
+ db HS_SILPH_CO_7F_2
+ db HS_SILPH_CO_7F_3
+ db HS_SILPH_CO_7F_4
+ db HS_SILPH_CO_8F_1
+ db HS_SILPH_CO_8F_2
+ db HS_SILPH_CO_8F_3
+ db HS_SILPH_CO_9F_1
+ db HS_SILPH_CO_9F_2
+ db HS_SILPH_CO_9F_3
+ db HS_SILPH_CO_10F_1
+ db HS_SILPH_CO_10F_2
+ db HS_SILPH_CO_11F_1
+ db HS_SILPH_CO_11F_JAMES
+ db HS_SILPH_CO_11F_2
+ db HS_SILPH_CO_11F_JESSIE
+ db -1 ; end
diff --git a/scripts/SilphCo7F.asm b/scripts/SilphCo7F.asm
index 29e5fdd3..dd67a6a2 100644
--- a/scripts/SilphCo7F.asm
+++ b/scripts/SilphCo7F.asm
@@ -131,9 +131,7 @@ SilphCo7FDefaultScript:
ld [wJoyIgnore], a
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -187,21 +185,11 @@ SilphCo7FRivalStartBattleScript:
ld a, OPP_RIVAL2
ld [wCurOpponent], a
ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .not_starter_2
- ld a, $7
- jr .set_trainer_no
-.not_starter_2
- cp STARTER3
- jr nz, .no_starter_3
- ld a, $8
- jr .set_trainer_no
-.no_starter_3
- ld a, $9
-.set_trainer_no
+ add 4
ld [wTrainerNo], a
ld a, SCRIPT_SILPHCO7F_RIVAL_AFTER_BATTLE
- jp SilphCo7FSetCurScript
+ call SilphCo7FSetCurScript
+ ret
SilphCo7FRivalAfterBattleScript:
ld a, [wIsInBattle]
@@ -220,9 +208,7 @@ SilphCo7FRivalAfterBattleScript:
ld a, TEXT_SILPHCO7F_RIVAL_GOOD_LUCK_TO_YOU
ldh [hTextID], a
call DisplayTextID
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld de, .RivalWalkAroundPlayerMovement
ld a, [wSavedCoordIndex]
diff --git a/scripts/SummerBeachHouse.asm b/scripts/SummerBeachHouse.asm
new file mode 100644
index 00000000..3842b45c
--- /dev/null
+++ b/scripts/SummerBeachHouse.asm
@@ -0,0 +1,209 @@
+SummerBeachHouse_Script:
+ call EnableAutoTextBoxDrawing
+ ret
+
+SummerBeachHouse_TextPointers:
+ def_text_pointers
+ dw_const SummerBeachHouseSurfinDudeText, TEXT_SUMMERBEACHHOUSE_SURFINDUDE
+ dw_const SummerBeachHousePikachuText, TEXT_SUMMERBEACHHOUSE_PIKACHU
+ dw_const SummerBeachHousePoster1Text, TEXT_SUMMERBEACHHOUSE_POSTER1
+ dw_const SummerBeachHousePoster2Text, TEXT_SUMMERBEACHHOUSE_POSTER2
+ dw_const SummerBeachHousePoster3Text, TEXT_SUMMERBEACHHOUSE_POSTER3
+ dw_const SummerBeachHousePrinterText, TEXT_SUMMERBEACHHOUSE_PRINTER
+
+SummerBeachHouseSurfinDudeText:
+ text_asm
+ ld a, [wd471]
+ vc_patch Bypass_need_Pikachu_with_Surf_for_minigame
+IF DEF (_YELLOW_VC)
+ bit 7, a
+ELSE
+ bit 6, a
+ENDC
+ vc_patch_end
+ jr nz, .next
+ ld hl, .SurfinDudeText4
+ call PrintText
+ jr .done
+.next
+ ld hl, wd492
+ bit 0, [hl]
+ set 0, [hl]
+ jr nz, .next2
+ ld hl, .SurfinDudeText1
+ jr .next3
+.next2
+ ld hl, .SurfinDudeText3
+.next3
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f226b
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ farcall SurfingPikachuMinigame
+ ld hl, wd492
+ set 1, [hl]
+ jr .done
+.asm_f226b
+ ld hl, .SurfinDudeText2
+ call PrintText
+.done
+ jp TextScriptEnd
+
+.SurfinDudeText1
+ text_far _SummerBeachHouseSurfinDudeText1
+ text_end
+.SurfinDudeText2
+ text_far _SummerBeachHouseSurfinDudeText2
+ text_end
+.SurfinDudeText3
+ text_far _SummerBeachHouseSurfinDudeText3
+ text_end
+.SurfinDudeText4
+ text_far _SummerBeachHouseSurfinDudeText4
+ text_end
+
+SummerBeachHousePikachuText:
+ text_asm
+ ld hl, .SummerBeachHousePikachuText
+ call PrintText
+ ld a, PIKACHU
+ call PlayCry
+ call WaitForSoundToFinish
+ jp TextScriptEnd
+
+.SummerBeachHousePikachuText
+ text_far _SummerBeachHousePikachuText
+ text_end
+
+SummerBeachHousePoster1Text:
+ text_asm
+ ld hl, .SummerBeachHousePoster1Text2
+ ld a, [wd471]
+ bit 6, a
+ jr z, .next
+ ld hl, .SummerBeachHousePoster1Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.SummerBeachHousePoster1Text1
+ text_far _SummerBeachHousePoster1Text1
+ text_end
+.SummerBeachHousePoster1Text2
+ text_far _SummerBeachHousePoster1Text2
+ text_end
+
+SummerBeachHousePoster2Text:
+ text_asm
+ ld hl, .SummerBeachHousePoster2Text2
+ ld a, [wd471]
+ bit 6, a
+ jr z, .next
+ ld hl, .SummerBeachHousePoster2Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.SummerBeachHousePoster2Text1
+ text_far _SummerBeachHousePoster2Text1
+ text_end
+.SummerBeachHousePoster2Text2
+ text_far _SummerBeachHousePoster2Text2
+ text_end
+
+SummerBeachHousePoster3Text:
+ text_asm
+ ld hl, .SummerBeachHousePoster3Text2
+ ld a, [wd471]
+ bit 6, a
+ jr z, .next
+ ld hl, .SummerBeachHousePoster3Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.SummerBeachHousePoster3Text1
+ text_far _SummerBeachHousePoster3Text1
+ text_end
+.SummerBeachHousePoster3Text2
+ text_far _SummerBeachHousePoster3Text2
+ text_end
+
+SummerBeachHousePrinterText:
+ text_asm
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, [wd471]
+ vc_patch Bypass_need_Pikachu_with_Surf_for_high_score
+IF DEF(_YELLOW_VC)
+ bit 7, a
+ELSE
+ bit 6, a
+ENDC
+ vc_patch_end
+ jr z, .asm_f2369
+
+ ld hl, wd492
+ bit 1, [hl]
+ jr z, .next2
+ ld a, 0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+.next2
+ ld hl, .SummerBeachHousePrinterText2
+ call PrintText
+ ld a, [wd492]
+ bit 1, a
+ jr z, .asm_f236f
+
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .SummerBeachHousePrinterText3
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jp z, Func_f23d0
+ call SaveScreenTilesToBuffer2
+ ld hl, wStatusFlags5
+ set BIT_NO_TEXT_DELAY, [hl]
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ callfar Printer_PrepareSurfingMinigameHighScoreTileMap
+ call WaitForTextScrollButtonPress
+ ld hl, wStatusFlags5
+ res BIT_NO_TEXT_DELAY, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld a, 1
+ ld [wUpdateSpritesEnabled], a
+ jr .asm_f236f
+.asm_f2369
+ ld hl, .SummerBeachHousePrinterText1
+ call PrintText
+.asm_f236f
+ jp TextScriptEnd
+
+.SummerBeachHousePrinterText1
+ text_far _SummerBeachHousePrinterText1
+ text_waitbutton
+ text_end
+
+.SummerBeachHousePrinterText2
+ text_far _SummerBeachHousePrinterText2
+ text_waitbutton
+ text_end
+
+.SummerBeachHousePrinterText3
+ text_far _SummerBeachHousePrinterText3
+ text_end
+
+.SummerBeachHousePrinterText4
+ text_far _SummerBeachHousePrinterText4
+ text_end
diff --git a/scripts/SummerBeachHouse_2.asm b/scripts/SummerBeachHouse_2.asm
new file mode 100644
index 00000000..6349a479
--- /dev/null
+++ b/scripts/SummerBeachHouse_2.asm
@@ -0,0 +1,33 @@
+Func_f23d0:
+ call SaveScreenTilesToBuffer2
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wStatusFlags5
+ set BIT_NO_TEXT_DELAY, [hl]
+ callfar PrintSurfingMinigameHighScore
+ ld hl, wStatusFlags5
+ res BIT_NO_TEXT_DELAY, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, Text_f2412
+ ldh a, [hOaksAideResult]
+ and a
+ jr nz, .asm_f2406
+ ld hl, Text_f240c
+.asm_f2406
+ call PrintText
+ jp TextScriptEnd
+
+Text_f240c:
+ text_far _SummerBeachHousePrinterText5
+ text_waitbutton
+ text_end
+
+Text_f2412:
+ text_far _SummerBeachHousePrinterText6
+ text_waitbutton
+ text_end
diff --git a/scripts/UndergroundPathRoute5.asm b/scripts/UndergroundPathRoute5.asm
index 6959c5a8..dead20ce 100644
--- a/scripts/UndergroundPathRoute5.asm
+++ b/scripts/UndergroundPathRoute5.asm
@@ -12,7 +12,7 @@ UndergroundPathRoute5_TextPointers:
UndergroundPathRoute5LittleGirlText:
text_asm
- ld a, TRADE_FOR_SPOT
+ ld a, TRADE_FOR_RICKY
ld [wWhichTrade], a
predef DoInGameTradeDialogue
ld hl, UndergroundPathEntranceRoute5_TextScriptEndingText
diff --git a/scripts/VermilionCity.asm b/scripts/VermilionCity.asm
index 591e180c..1d9d790d 100644
--- a/scripts/VermilionCity.asm
+++ b/scripts/VermilionCity.asm
@@ -1,5 +1,7 @@
VermilionCity_Script:
call EnableAutoTextBoxDrawing
+ ld hl, wd492
+ res 7, [hl]
ld hl, wCurrentMapScriptFlags
bit BIT_CUR_MAP_LOADED_2, [hl]
res BIT_CUR_MAP_LOADED_2, [hl]
@@ -11,11 +13,24 @@ VermilionCity_Script:
call nz, .setFirstLockTrashCanIndex
ld hl, VermilionCity_ScriptPointers
ld a, [wVermilionCityCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ call .vermilionCityScript_19869
+ ret
+
+.vermilionCityScript_19869
+ CheckEventHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER
+ ret nz
+ CheckEventReuseHL EVENT_GOT_BIKE_VOUCHER
+ ret z
+ SetEventReuseHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER
+ ret
.setFirstLockTrashCanIndex
call Random
+ ldh a, [hRandomAdd]
+ ld b, a
ldh a, [hRandomSub]
+ adc b
and $e
ld [wFirstLockTrashCanIndex], a
ret
@@ -41,10 +56,10 @@ VermilionCity_ScriptPointers:
VermilionCityDefaultScript:
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
- ret nz
+ jr nz, .return
ld hl, SSAnneTicketCheckCoords
call ArePlayerCoordsInArray
- ret nc
+ jr nc, .return
xor a
ldh [hJoyHeld], a
ld [wSavedCoordIndex], a ; unnecessary
@@ -68,6 +83,9 @@ VermilionCityDefaultScript:
ld [wVermilionCityCurScript], a
ret
+.return
+ ret
+
SSAnneTicketCheckCoords:
dbmapcoord 18, 30
db -1 ; end
@@ -122,6 +140,7 @@ VermilionCity_TextPointers:
dw_const VermilionCityGambler2Text, TEXT_VERMILIONCITY_GAMBLER2
dw_const VermilionCityMachopText, TEXT_VERMILIONCITY_MACHOP
dw_const VermilionCitySailor2Text, TEXT_VERMILIONCITY_SAILOR2
+ dw_const VermilionCityOfficerJennyText, TEXT_VERMILIONCITY_OFFICER_JENNY
dw_const VermilionCitySignText, TEXT_VERMILIONCITY_SIGN
dw_const VermilionCityNoticeSignText, TEXT_VERMILIONCITY_NOTICE_SIGN
dw_const MartSignText, TEXT_VERMILIONCITY_MART_SIGN
@@ -239,21 +258,31 @@ VermilionCitySailor2Text:
text_end
VermilionCitySignText:
- text_far _VermilionCitySignText
- text_end
+ text_asm
+ farcall VermilionCityPrintSignText
+ jp TextScriptEnd
VermilionCityNoticeSignText:
- text_far _VermilionCityNoticeSignText
- text_end
+ text_asm
+ farcall VermilionCityPrintNoticeSignText
+ jp TextScriptEnd
VermilionCityPokemonFanClubSignText:
- text_far _VermilionCityPokemonFanClubSignText
- text_end
+ text_asm
+ farcall VermilionCityPrintPokemonFanClubSignText
+ jp TextScriptEnd
VermilionCityGymSignText:
- text_far _VermilionCityGymSignText
- text_end
+ text_asm
+ farcall VermilionCityPrintGymSignText
+ jp TextScriptEnd
VermilionCityHarborSignText:
- text_far _VermilionCityHarborSignText
- text_end
+ text_asm
+ farcall VermilionCityPrintHarborSignText
+ jp TextScriptEnd
+
+VermilionCityOfficerJennyText:
+ text_asm
+ farcall VermilionCityPrintOfficerJennyText
+ jp TextScriptEnd
diff --git a/scripts/VermilionCity_2.asm b/scripts/VermilionCity_2.asm
new file mode 100644
index 00000000..c6cd9478
--- /dev/null
+++ b/scripts/VermilionCity_2.asm
@@ -0,0 +1,111 @@
+VermilionCityPrintOfficerJennyText::
+ CheckEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY
+ jr nz, .asm_f1a69
+ ld a, [wBeatGymFlags]
+ bit BIT_THUNDERBADGE, a
+ jr nz, .asm_f1a24
+ ld hl, OfficerJennyText1
+ call PrintText
+ ret
+
+.asm_f1a24
+ ld hl, OfficerJennyText2
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f1a62
+ ld a, SQUIRTLE
+ ld [wNamedObjectIndex], a
+ ld [wCurPartySpecies], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, SQUIRTLE, 10
+ call GivePokemon
+ ret nc
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OfficerJennyText3
+ call PrintText
+ SetEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY
+ ret
+
+.asm_f1a62
+ ld hl, OfficerJennyText4
+ call PrintText
+ ret
+
+.asm_f1a69
+ ld hl, OfficerJennyText5
+ call PrintText
+ ret
+
+OfficerJennyText1:
+ text_far _OfficerJennyText1
+ text_end
+
+OfficerJennyText2:
+ text_far _OfficerJennyText2
+ text_end
+
+OfficerJennyText3:
+ text_far _OfficerJennyText3
+ text_waitbutton
+ text_end
+
+OfficerJennyText4:
+ text_far _OfficerJennyText4
+ text_end
+
+OfficerJennyText5:
+ text_far _OfficerJennyText5
+ text_end
+
+VermilionCityPrintSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _VermilionCitySignText
+ text_end
+
+VermilionCityPrintNoticeSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _VermilionCityNoticeSignText
+ text_end
+
+VermilionCityPrintPokemonFanClubSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _VermilionCityPokemonFanClubSignText
+ text_end
+
+VermilionCityPrintGymSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _VermilionCityGymSignText
+ text_end
+
+VermilionCityPrintHarborSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _VermilionCityHarborSignText
+ text_end
diff --git a/scripts/VermilionDock.asm b/scripts/VermilionDock.asm
index 237b4175..3cd26619 100644
--- a/scripts/VermilionDock.asm
+++ b/scripts/VermilionDock.asm
@@ -38,10 +38,9 @@ VermilionDock_Script:
VermilionDockSSAnneLeavesScript:
SetEventForceReuseHL EVENT_SS_ANNE_LEFT
- ld a, SFX_STOP_ALL_MUSIC
+ ld a, $ff
ld [wJoyIgnore], a
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_Surfing)
ld a, MUSIC_SURFING
call PlayMusic
@@ -63,6 +62,7 @@ VermilionDockSSAnneLeavesScript:
ldh [hAutoBGTransferEnabled], a
ld [wSSAnneSmokeDriftAmount], a
ldh [rOBP1], a
+ call UpdateCGBPal_OBP1
ld a, 88
ld [wSSAnneSmokeX], a
ld hl, wMapViewVRAMPointer
diff --git a/scripts/VermilionPokecenter.asm b/scripts/VermilionPokecenter.asm
index 481a8148..0db74128 100644
--- a/scripts/VermilionPokecenter.asm
+++ b/scripts/VermilionPokecenter.asm
@@ -8,6 +8,7 @@ VermilionPokecenter_TextPointers:
dw_const VermilionPokecenterFishingGuruText, TEXT_VERMILIONPOKECENTER_FISHING_GURU
dw_const VermilionPokecenterSailorText, TEXT_VERMILIONPOKECENTER_SAILOR
dw_const VermilionPokecenterLinkReceptionistText, TEXT_VERMILIONPOKECENTER_LINK_RECEPTIONIST
+ dw_const VermilionPokecenterChanseyText, TEXT_VERMILIONPOKECENTER_CHANSEY
VermilionPokecenterNurseText:
script_pokecenter_nurse
@@ -22,3 +23,8 @@ VermilionPokecenterSailorText:
VermilionPokecenterLinkReceptionistText:
script_cable_club_receptionist
+
+VermilionPokecenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/VermilionTradeHouse.asm b/scripts/VermilionTradeHouse.asm
index 67ce62ee..f190eded 100644
--- a/scripts/VermilionTradeHouse.asm
+++ b/scripts/VermilionTradeHouse.asm
@@ -3,11 +3,8 @@ VermilionTradeHouse_Script:
VermilionTradeHouse_TextPointers:
def_text_pointers
- dw_const VermilionTradeHouseLittleGirlText, TEXT_VERMILIONTRADEHOUSE_LITTLE_GIRL
+ dw_const VermilionTradeHouseGentlemanText, TEXT_VERMILIONTRADEHOUSE_GENTLEMAN
-VermilionTradeHouseLittleGirlText:
- text_asm
- ld a, TRADE_FOR_DUX
- ld [wWhichTrade], a
- predef DoInGameTradeDialogue
- jp TextScriptEnd
+VermilionTradeHouseGentlemanText:
+ text_far TeachingHMsText
+ text_end
diff --git a/scripts/VictoryRoad1F.asm b/scripts/VictoryRoad1F.asm
index 554ae39f..1ba1a069 100644
--- a/scripts/VictoryRoad1F.asm
+++ b/scripts/VictoryRoad1F.asm
@@ -30,6 +30,9 @@ VictoryRoad1FDefaultScript:
ld hl, .SwitchCoords
call CheckBoulderCoords
jp nc, CheckFightingMapTrainers
+ ldh a, [hSpriteIndex]
+ cp PIKACHU_SPRITE_INDEX
+ jp z, CheckFightingMapTrainers
ld hl, wCurrentMapScriptFlags
set BIT_CUR_MAP_LOADED_1, [hl]
SetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
diff --git a/scripts/VictoryRoad2F.asm b/scripts/VictoryRoad2F.asm
index 85356247..0d91ce33 100644
--- a/scripts/VictoryRoad2F.asm
+++ b/scripts/VictoryRoad2F.asm
@@ -46,6 +46,9 @@ VictoryRoad2FDefaultScript:
ld hl, .SwitchCoords
call CheckBoulderCoords
jp nc, CheckFightingMapTrainers
+ ldh a, [hSpriteIndex]
+ cp PIKACHU_SPRITE_INDEX
+ jp z, CheckFightingMapTrainers
EventFlagAddress hl, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
ld a, [wCoordIndex]
cp $2
diff --git a/scripts/VictoryRoad3F.asm b/scripts/VictoryRoad3F.asm
index 2b1b11c0..ec042e48 100644
--- a/scripts/VictoryRoad3F.asm
+++ b/scripts/VictoryRoad3F.asm
@@ -37,6 +37,9 @@ VictoryRoad3FDefaultScript:
ld a, [wCoordIndex]
cp $1
jr nz, .handle_hole
+ ldh a, [hSpriteIndex]
+ cp $f ; Pikachu
+ jp z, .check_switch_hole
ld hl, wCurrentMapScriptFlags
set BIT_CUR_MAP_LOADED_1, [hl]
SetEvent EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1
diff --git a/scripts/ViridianCity.asm b/scripts/ViridianCity.asm
index e30f41f1..07646f1a 100644
--- a/scripts/ViridianCity.asm
+++ b/scripts/ViridianCity.asm
@@ -2,18 +2,33 @@ ViridianCity_Script:
call EnableAutoTextBoxDrawing
ld hl, ViridianCity_ScriptPointers
ld a, [wViridianCityCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
ViridianCity_ScriptPointers:
def_script_pointers
- dw_const ViridianCityDefaultScript, SCRIPT_VIRIDIANCITY_DEFAULT
- dw_const ViridianCityOldManStartCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING
- dw_const ViridianCityOldManEndCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING
- dw_const ViridianCityPlayerMovingDownScript, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN
+ dw_const ViridianCityDefaultScript, SCRIPT_VIRIDIANCITY_DEFAULT
+ dw_const ViridianCityAfterPokedexScript, SCRIPT_VIRIDIANCITY_AFTER_POKEDEX
+ dw_const ViridianCityPostCatchTraining, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING
+ dw_const ViridianCityOldManStartCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING
+ dw_const ViridianCityOldManEndCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING
+ dw_const ViridianCityPlayerMovingDownScript, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN
+ dw_const ViridianCityPlayerMovingDownPostTrainingScript, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN_POST_TRAINING
+ dw_const ViridianCityOldManInitialCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_INITIAL_CATCH_TRAINING
+ dw_const ViridianCityOldManEndInitialCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_END_INITIAL_CATCH_TRAINING
+ dw_const ViridianCityPostInitialCatchTraining, SCRIPT_VIRIDIANCITY_POST_INITIAL_CATCH_TRAINING
+ dw_const ViridianCityOldManMovingDownScript, SCRIPT_VIRIDIANCITY_OLD_MAN_MOVING_DOWN
ViridianCityDefaultScript:
call ViridianCityCheckGymOpenScript
- jp ViridianCityCheckGotPokedexScript
+ call ViridianCityCheckSleepingOldMan
+ ret
+
+ViridianCityAfterPokedexScript:
+ call ViridianCityCheckWaitingOldMan
+ViridianCityPostCatchTraining:
+ call ViridianCityCheckGymOpenScript
+ ret
ViridianCityCheckGymOpenScript:
CheckEvent EVENT_VIRIDIAN_GYM_OPEN
@@ -33,16 +48,29 @@ ViridianCityCheckGymOpenScript:
ld a, TEXT_VIRIDIANCITY_GYM_LOCKED
ldh [hTextID], a
call DisplayTextID
+ call StartSimulatingJoypadStates
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, PAD_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
xor a
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld [wJoyIgnore], a
ldh [hJoyHeld], a
- call ViridianCityMovePlayerDownScript
- ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN
+ ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN_POST_TRAINING
ld [wViridianCityCurScript], a
ret
-ViridianCityCheckGotPokedexScript:
- CheckEvent EVENT_GOT_POKEDEX
+ViridianCityPlayerMovingDownPostTrainingScript:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
ret nz
+ call Delay3
+ ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityCheckSleepingOldMan:
ld a, [wYCoord]
cp 9
ret nz
@@ -60,6 +88,25 @@ ViridianCityCheckGotPokedexScript:
ret
ViridianCityOldManStartCatchTrainingScript:
+ call .SetupSprite
+ call .SetupBattle
+ ResetEvent EVENT_INITIAL_CATCH_TRAINING
+ ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING
+ ld [wViridianCityCurScript], a
+ ret
+
+.SetupBattle:
+ xor a
+ ld [wListScrollOffset], a
+ ld a, BATTLE_TYPE_OLD_MAN
+ ld [wBattleType], a
+ ld a, 5
+ ld [wCurEnemyLevel], a
+ ld a, RATTATA
+ ld [wCurOpponent], a
+ ret
+
+.SetupSprite:
ld a, [wSprite03StateData1YPixels]
ldh [hSpriteScreenYCoord], a
ld a, [wSprite03StateData1XPixels]
@@ -68,31 +115,13 @@ ViridianCityOldManStartCatchTrainingScript:
ldh [hSpriteMapYCoord], a
ld a, [wSprite03StateData2MapX]
ldh [hSpriteMapXCoord], a
- xor a
- ld [wListScrollOffset], a
-
- ; set up battle for Old Man
- ld a, BATTLE_TYPE_OLD_MAN
- ld [wBattleType], a
- ld a, 5
- ld [wCurEnemyLevel], a
- ld a, WEEDLE
- ld [wCurOpponent], a
- ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING
- ld [wViridianCityCurScript], a
ret
ViridianCityOldManEndCatchTrainingScript:
- ldh a, [hSpriteScreenYCoord]
- ld [wSprite03StateData1YPixels], a
- ldh a, [hSpriteScreenXCoord]
- ld [wSprite03StateData1XPixels], a
- ldh a, [hSpriteMapYCoord]
- ld [wSprite03StateData2MapY], a
- ldh a, [hSpriteMapXCoord]
- ld [wSprite03StateData2MapX], a
+ call .SetupSprite
call UpdateSprites
call Delay3
+ SetEvent EVENT_COMPLETED_CATCH_TRAINING_AGAIN
xor a
ld [wJoyIgnore], a
ld a, TEXT_VIRIDIANCITY_OLD_MAN_YOU_NEED_TO_WEAKEN_THE_TARGET
@@ -101,10 +130,21 @@ ViridianCityOldManEndCatchTrainingScript:
xor a
ld [wBattleType], a
ld [wJoyIgnore], a
- ld a, SCRIPT_VIRIDIANCITY_DEFAULT
+ ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING
ld [wViridianCityCurScript], a
ret
+.SetupSprite:
+ ldh a, [hSpriteScreenYCoord]
+ ld [wSprite03StateData1YPixels], a
+ ldh a, [hSpriteScreenXCoord]
+ ld [wSprite03StateData1XPixels], a
+ ldh a, [hSpriteMapYCoord]
+ ld [wSprite03StateData2MapY], a
+ ldh a, [hSpriteMapXCoord]
+ ld [wSprite03StateData2MapX], a
+ ret
+
ViridianCityPlayerMovingDownScript:
ld a, [wSimulatedJoypadStatesIndex]
and a
@@ -125,6 +165,96 @@ ViridianCityMovePlayerDownScript:
ld [wJoyIgnore], a
ret
+ViridianCityCheckWaitingOldMan:
+ CheckEvent EVENT_COMPLETED_CATCH_TRAINING
+ ret nz
+ ld a, [wYCoord]
+ cp 9
+ ret nz
+ ld a, [wXCoord]
+ cp 19
+ ret nz
+ ld a, VIRIDIANCITY_OLD_MAN2
+ ldh [hSpriteIndex], a
+ ld a, SPRITE_FACING_RIGHT
+ ldh [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ ld a, SPRITE_FACING_LEFT
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, TEXT_VIRIDIANCITY_OLD_MAN2
+ ldh [hTextID], a
+ call DisplayTextID
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ret
+
+ViridianCityOldManInitialCatchTrainingScript:
+ call ViridianCityOldManStartCatchTrainingScript.SetupSprite
+ call ViridianCityOldManStartCatchTrainingScript.SetupBattle
+ SetEvent EVENT_INITIAL_CATCH_TRAINING
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_END_INITIAL_CATCH_TRAINING
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityOldManEndInitialCatchTrainingScript:
+ call ViridianCityOldManEndCatchTrainingScript.SetupSprite
+ call UpdateSprites
+ call Delay3
+ SetEvent EVENT_COMPLETED_CATCH_TRAINING
+ ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
+ ld [wJoyIgnore], a
+ ld a, TEXT_VIRIDIANCITY_OLD_MAN2
+ ldh [hTextID], a
+ call DisplayTextID
+ xor a
+ ld [wBattleType], a
+ dec a
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_VIRIDIANCITY_POST_INITIAL_CATCH_TRAINING
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityPostInitialCatchTraining:
+ ld de, ViridianCityOldManMovementData2
+ ld a, [wXCoord]
+ cp 19
+ jr z, .move_old_man
+ callfar ViridianCityMovePikachu
+ ld de, ViridianCityOldManMovementData1
+.move_old_man
+ ld a, VIRIDIANCITY_OLD_MAN2
+ ldh [hSpriteIndex], a
+ call MoveSprite
+ ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_MOVING_DOWN
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityOldManMovementData1:
+ db NPC_MOVEMENT_RIGHT
+ViridianCityOldManMovementData2:
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db $ff
+
+ViridianCityOldManMovingDownScript:
+ ld a, [wStatusFlags5]
+ bit BIT_SCRIPTED_NPC_MOVEMENT, a
+ ret nz
+ ld a, HS_OLD_MAN_2
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ xor a
+ ld [wJoyIgnore], a
+ ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING
+ ld [wViridianCityCurScript], a
+ ret
+
ViridianCity_TextPointers:
def_text_pointers
dw_const ViridianCityYoungster1Text, TEXT_VIRIDIANCITY_YOUNGSTER1
@@ -134,6 +264,7 @@ ViridianCity_TextPointers:
dw_const ViridianCityOldManSleepyText, TEXT_VIRIDIANCITY_OLD_MAN_SLEEPY
dw_const ViridianCityFisherText, TEXT_VIRIDIANCITY_FISHER
dw_const ViridianCityOldManText, TEXT_VIRIDIANCITY_OLD_MAN
+ dw_const ViridianCityOldMan2Text, TEXT_VIRIDIANCITY_OLD_MAN2
dw_const ViridianCitySignText, TEXT_VIRIDIANCITY_SIGN
dw_const ViridianCityTrainerTips1Text, TEXT_VIRIDIANCITY_TRAINER_TIPS1
dw_const ViridianCityTrainerTips2Text, TEXT_VIRIDIANCITY_TRAINER_TIPS2
@@ -144,150 +275,58 @@ ViridianCity_TextPointers:
dw_const ViridianCityOldManYouNeedToWeakenTheTargetText, TEXT_VIRIDIANCITY_OLD_MAN_YOU_NEED_TO_WEAKEN_THE_TARGET
ViridianCityYoungster1Text:
- text_far _ViridianCityYoungster1Text
- text_end
+ text_asm
+ farcall ViridianCityPrintYoungster1Text
+ jp TextScriptEnd
ViridianCityGambler1Text:
text_asm
- ld a, [wObtainedBadges]
- cp ~(1 << BIT_EARTHBADGE)
- ld hl, .GymLeaderReturnedText
- jr z, .print_text
- CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
- jr nz, .print_text
- ld hl, .GymAlwaysClosedText
-.print_text
- call PrintText
+ farcall ViridianCityPrintGambler1Text
jp TextScriptEnd
-.GymAlwaysClosedText:
- text_far _ViridianCityGambler1GymAlwaysClosedText
- text_end
-
-.GymLeaderReturnedText:
- text_far _ViridianCityGambler1GymLeaderReturnedText
- text_end
-
ViridianCityYoungster2Text:
text_asm
- ld hl, .YouWantToKnowAboutText
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .no
- ld hl, .CaterpieAndWeedleDescriptionText
- call PrintText
- jr .text_script_end
-.no
- ld hl, .OkThenText
- call PrintText
-.text_script_end
+ farcall ViridianCityPrintYoungster2Text
jp TextScriptEnd
-.YouWantToKnowAboutText:
- text_far _ViridianCityYoungster2YouWantToKnowAboutText
- text_end
-
-.OkThenText:
- text_far ViridianCityYoungster2OkThenText
- text_end
-
-.CaterpieAndWeedleDescriptionText:
- text_far ViridianCityYoungster2CaterpieAndWeedleDescriptionText
- text_end
-
ViridianCityGirlText:
text_asm
- CheckEvent EVENT_GOT_POKEDEX
- jr nz, .got_pokedex
- ld hl, .HasntHadHisCoffeeYetText
- call PrintText
- jr .text_script_end
-.got_pokedex
- ld hl, .WhenIGoShopText
- call PrintText
-.text_script_end
+ farcall ViridianCityPrintGirlText
jp TextScriptEnd
-.HasntHadHisCoffeeYetText:
- text_far _ViridianCityGirlHasntHadHisCoffeeYetText
- text_end
-
-.WhenIGoShopText:
- text_far _ViridianCityGirlWhenIGoShopText
- text_end
-
ViridianCityOldManSleepyText:
text_asm
- ld hl, .PrivatePropertyText
- call PrintText
- call ViridianCityMovePlayerDownScript
- ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN
- ld [wViridianCityCurScript], a
+ farcall ViridianCityPrintOldManSleepyText
jp TextScriptEnd
-.PrivatePropertyText:
- text_far _ViridianCityOldManSleepyPrivatePropertyText
- text_end
-
ViridianCityFisherText:
text_asm
- CheckEvent EVENT_GOT_TM42
- jr nz, .got_item
- ld hl, .YouCanHaveThisText
- call PrintText
- lb bc, TM_DREAM_EATER, 1
- call GiveItem
- jr nc, .bag_full
- ld hl, .ReceivedTM42Text
- call PrintText
- SetEvent EVENT_GOT_TM42
- jr .done
-.bag_full
- ld hl, .TM42NoRoomText
- call PrintText
- jr .done
-.got_item
- ld hl, .TM42ExplanationText
- call PrintText
-.done
+ farcall ViridianCityPrintFisherText
jp TextScriptEnd
-.YouCanHaveThisText:
- text_far ViridianCityFisherYouCanHaveThisText
- text_end
-
-.ReceivedTM42Text:
- text_far _ViridianCityFisherReceivedTM42Text
- sound_get_item_2
- text_end
-
-.TM42ExplanationText:
- text_far _ViridianCityFisherTM42ExplanationText
- text_end
+ViridianCityOldManText:
+ text_asm
+ farcall ViridianCityPrintOldManText
+ jp TextScriptEnd
-.TM42NoRoomText:
- text_far _ViridianCityFisherTM42NoRoomText
+ViridianCityOldManYouNeedToWeakenTheTargetText:
+ text_far _ViridianCityOldManYouNeedToWeakenTheTargetText
text_end
-ViridianCityOldManText:
+ViridianCityOldMan2Text:
text_asm
+ CheckEvent EVENT_COMPLETED_CATCH_TRAINING
+ jr nz, .completed_training
ld hl, .HadMyCoffeeNowText
call PrintText
ld c, 2
call DelayFrames
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr z, .refused
- ld hl, .KnowHowToCatchPokemonText
- call PrintText
- ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING
+ ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_INITIAL_CATCH_TRAINING
ld [wViridianCityCurScript], a
jr .done
-.refused
- ld hl, .TimeIsMoneyText
+
+.completed_training
+ ld hl, .LosingMyTouchText
call PrintText
.done
jp TextScriptEnd
@@ -296,34 +335,31 @@ ViridianCityOldManText:
text_far _ViridianCityOldManHadMyCoffeeNowText
text_end
-.KnowHowToCatchPokemonText:
- text_far _ViridianCityOldManKnowHowToCatchPokemonText
- text_end
-
-.TimeIsMoneyText:
- text_far _ViridianCityOldManTimeIsMoneyText
- text_end
-
-ViridianCityOldManYouNeedToWeakenTheTargetText:
- text_far _ViridianCityOldManYouNeedToWeakenTheTargetText
+.LosingMyTouchText:
+ text_far _ViridianCityOldManLosingMyTouchText
text_end
ViridianCitySignText:
- text_far _ViridianCitySignText
- text_end
+ text_asm
+ farcall ViridianCityPrintSignText
+ jp TextScriptEnd
ViridianCityTrainerTips1Text:
- text_far _ViridianCityTrainerTips1Text
- text_end
+ text_asm
+ farcall ViridianCityPrintTrainerTips1Text
+ jp TextScriptEnd
ViridianCityTrainerTips2Text:
- text_far _ViridianCityTrainerTips2Text
- text_end
+ text_asm
+ farcall ViridianCityPrintTrainerTips2Text
+ jp TextScriptEnd
ViridianCityGymSignText:
- text_far _ViridianCityGymSignText
- text_end
+ text_asm
+ farcall ViridianCityPrintGymSignText
+ jp TextScriptEnd
ViridianCityGymLockedText:
- text_far _ViridianCityGymLockedText
- text_end
+ text_asm
+ farcall ViridianCityPrintGymLockedText
+ jp TextScriptEnd
diff --git a/scripts/ViridianCity_2.asm b/scripts/ViridianCity_2.asm
new file mode 100644
index 00000000..cd48e67b
--- /dev/null
+++ b/scripts/ViridianCity_2.asm
@@ -0,0 +1,215 @@
+ViridianCityPrintYoungster1Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianCityYoungster1Text
+ text_end
+
+ViridianCityPrintGambler1Text::
+ ld hl, .GymLeaderReturnedText
+ ld a, [wObtainedBadges]
+ cp ~(1 << BIT_EARTHBADGE)
+ jr z, .print_text
+ CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
+ jr nz, .print_text
+ ld hl, .GymAlwaysClosedText
+.print_text
+ call PrintText
+ ret
+
+.GymAlwaysClosedText:
+ text_far _ViridianCityGambler1GymAlwaysClosedText
+ text_end
+
+.GymLeaderReturnedText:
+ text_far _ViridianCityGambler1GymLeaderReturnedText
+ text_end
+
+ViridianCityPrintYoungster2Text::
+ ld hl, .YouWantToKnowAboutText
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ ld hl, .OkThenText
+ jr nz, .no
+ ld hl, .CaterpieAndWeedleDescriptionText
+.no
+ call PrintText
+ ret
+
+.YouWantToKnowAboutText:
+ text_far _ViridianCityYoungster2YouWantToKnowAboutText
+ text_end
+
+.OkThenText:
+ text_far ViridianCityYoungster2OkThenText
+ text_end
+
+.CaterpieAndWeedleDescriptionText:
+ text_far ViridianCityYoungster2CaterpieAndWeedleDescriptionText
+ text_end
+
+ViridianCityPrintGirlText::
+ ld hl, .WhenIGoShopText
+ CheckEvent EVENT_GOT_POKEDEX
+ jr nz, .got_pokedex
+ ld hl, .HasntHadHisCoffeeYetText
+.got_pokedex
+ call PrintText
+ ret
+
+.HasntHadHisCoffeeYetText:
+ text_far _ViridianCityGirlHasntHadHisCoffeeYetText
+ text_end
+
+.WhenIGoShopText:
+ text_far _ViridianCityGirlWhenIGoShopText
+ text_end
+
+ViridianCityPrintOldManSleepyText::
+ ld hl, .PrivatePropertyText
+ call PrintText
+ call StartSimulatingJoypadStates
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, PAD_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
+ ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN
+ ld [wViridianCityCurScript], a
+ ret
+
+.PrivatePropertyText:
+ text_far _ViridianCityOldManSleepyPrivatePropertyText
+ text_end
+
+ViridianCityPrintFisherText::
+ CheckEvent EVENT_GOT_TM42
+ jr nz, .got_item
+ ld hl, .YouCanHaveThisText
+ call PrintText
+ lb bc, TM_DREAM_EATER, 1
+ call GiveItem
+ jr nc, .bag_full
+ ld hl, .ReceivedTM42Text
+ call PrintText
+ SetEvent EVENT_GOT_TM42
+ ret
+.bag_full
+ ld hl, .TM42NoRoomText
+ call PrintText
+ ret
+.got_item
+ ld hl, .TM42ExplanationText
+ call PrintText
+ ret
+
+.YouCanHaveThisText:
+ text_far ViridianCityFisherYouCanHaveThisText
+ text_end
+
+.ReceivedTM42Text:
+ text_far _ViridianCityFisherReceivedTM42Text
+ sound_get_item_2
+ text_end
+
+.TM42ExplanationText:
+ text_far _ViridianCityFisherTM42ExplanationText
+ text_end
+
+.TM42NoRoomText:
+ text_far _ViridianCityFisherTM42NoRoomText
+ text_end
+
+ViridianCityPrintOldManText::
+ ld hl, .WantMeToShowYouAgainText
+ call PrintText
+ ld c, 2
+ call DelayFrames
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .refused
+ ld hl, .WatchCloselyText
+ call PrintText
+ ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING
+ ld [wViridianCityCurScript], a
+ jr .done
+.refused
+ ld hl, .NotGoodEnoughForYouText
+ call PrintText
+.done
+ ret
+
+.WantMeToShowYouAgainText:
+ text_far _ViridianCityOldManWantMeToShowYouAgainText
+ text_end
+
+.WatchCloselyText:
+ text_far _ViridianCityOldManWatchCloselyText
+ text_end
+
+.NotGoodEnoughForYouText:
+ text_far _ViridianCityOldManNotGoodEnoughForYouText
+ text_end
+
+ViridianCityPrintSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianCitySignText
+ text_end
+
+ViridianCityPrintTrainerTips1Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianCityTrainerTips1Text
+ text_end
+
+ViridianCityPrintTrainerTips2Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianCityTrainerTips2Text
+ text_end
+
+ViridianCityPrintGymSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianCityGymSignText
+ text_end
+
+ViridianCityPrintGymLockedText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianCityGymLockedText
+ text_end
+
+
+ViridianCityMovePikachu::
+ ld hl, ViridianCityPikachuMovementData
+ ld b, SPRITE_FACING_RIGHT
+ call TryApplyPikachuMovementData
+ ret
+
+ViridianCityPikachuMovementData:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
diff --git a/scripts/ViridianForest.asm b/scripts/ViridianForest.asm
index 4eeb9226..d8a570cd 100644
--- a/scripts/ViridianForest.asm
+++ b/scripts/ViridianForest.asm
@@ -19,10 +19,12 @@ ViridianForest_TextPointers:
dw_const ViridianForestYoungster2Text, TEXT_VIRIDIANFOREST_YOUNGSTER2
dw_const ViridianForestYoungster3Text, TEXT_VIRIDIANFOREST_YOUNGSTER3
dw_const ViridianForestYoungster4Text, TEXT_VIRIDIANFOREST_YOUNGSTER4
- dw_const PickUpItemText, TEXT_VIRIDIANFOREST_ANTIDOTE
- dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POTION
- dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POKE_BALL
+ dw_const ViridianForestCooltrainerFText, TEXT_VIRIDIANFOREST_COOLTRAINER_F
dw_const ViridianForestYoungster5Text, TEXT_VIRIDIANFOREST_YOUNGSTER5
+ dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POTION1
+ dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POTION2
+ dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POKE_BALL
+ dw_const ViridianForestYoungster6Text, TEXT_VIRIDIANFOREST_YOUNGSTER6
dw_const ViridianForestTrainerTips1Text, TEXT_VIRIDIANFOREST_TRAINER_TIPS1
dw_const ViridianForestUseAntidoteSignText, TEXT_VIRIDIANFOREST_USE_ANTIDOTE_SIGN
dw_const ViridianForestTrainerTips2Text, TEXT_VIRIDIANFOREST_TRAINER_TIPS2
@@ -38,6 +40,10 @@ ViridianForestTrainerHeader1:
trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1, 4, ViridianForestYoungster3BattleText, ViridianForestYoungster3EndBattleText, ViridianForestYoungster3AfterBattleText
ViridianForestTrainerHeader2:
trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2, 1, ViridianForestYoungster4BattleText, ViridianForestYoungster4EndBattleText, ViridianForestYoungster4AfterBattleText
+ViridianForestTrainerHeader3:
+ trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3, 0, ViridianForestCooltrainerFBattleText, ViridianForestCooltrainerFEndBattleText, ViridianForestCooltrainerFAfterBattleText
+ViridianForestTrainerHeader4:
+ trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4, 4, ViridianForestYoungster5BattleText, ViridianForestYoungster5EndBattleText, ViridianForestYoungster5AfterBattleText
db -1 ; end
ViridianForestYoungster1Text:
@@ -47,18 +53,27 @@ ViridianForestYoungster1Text:
ViridianForestYoungster2Text:
text_asm
ld hl, ViridianForestTrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestYoungster3Text:
text_asm
ld hl, ViridianForestTrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestYoungster4Text:
text_asm
ld hl, ViridianForestTrainerHeader2
+ jr ViridianForestTalkToTrainer
+
+ViridianForestCooltrainerFText:
+ text_asm
+ ld hl, ViridianForestTrainerHeader3
+ jr ViridianForestTalkToTrainer
+
+ViridianForestYoungster5Text:
+ text_asm
+ ld hl, ViridianForestTrainerHeader4
+ViridianForestTalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
@@ -98,30 +113,63 @@ ViridianForestYoungster4AfterBattleText:
text_far _ViridianForestYoungster4AfterBattleText
text_end
-ViridianForestYoungster5Text:
- text_far _ViridianForestYoungster5Text
+ViridianForestCooltrainerFBattleText:
+ text_far _ViridianForestCooltrainerFBattleText
text_end
-ViridianForestTrainerTips1Text:
- text_far _ViridianForestTrainerTips1Text
+ViridianForestCooltrainerFEndBattleText:
+ text_far _ViridianForestCooltrainerFEndBattleText
text_end
-ViridianForestUseAntidoteSignText:
- text_far _ViridianForestUseAntidoteSignText
+ViridianForestCooltrainerFAfterBattleText:
+ text_far _ViridianForestCooltrainerFAfterBattleText
text_end
-ViridianForestTrainerTips2Text:
- text_far _ViridianForestTrainerTips2Text
+ViridianForestYoungster5BattleText:
+ text_far _ViridianForestYoungster5BattleText
text_end
-ViridianForestTrainerTips3Text:
- text_far _ViridianForestTrainerTips3Text
+ViridianForestYoungster5EndBattleText:
+ text_far _ViridianForestYoungster5EndBattleText
text_end
-ViridianForestTrainerTips4Text:
- text_far _ViridianForestTrainerTips4Text
+ViridianForestYoungster5AfterBattleText:
+ text_far _ViridianForestYoungster5AfterBattleText
text_end
-ViridianForestLeavingSignText:
- text_far _ViridianForestLeavingSignText
+ViridianForestYoungster6Text:
+ text_far _ViridianForestYoungster6Text
text_end
+
+ViridianForestTrainerTips1Text:
+ text_asm
+ ld hl, ViridianForestPrintTrainerTips1Text
+ jp ViridianForestSign_Common
+
+ViridianForestUseAntidoteSignText:
+ text_asm
+ ld hl, ViridianForestPrintUseAntidoteSignText
+ jp ViridianForestSign_Common
+
+ViridianForestTrainerTips2Text:
+ text_asm
+ ld hl, ViridianForestPrintTrainerTips2Text
+ jp ViridianForestSign_Common
+
+ViridianForestTrainerTips3Text:
+ text_asm
+ ld hl, ViridianForestPrintTrainerTips3Text
+ jp ViridianForestSign_Common
+
+ViridianForestTrainerTips4Text:
+ text_asm
+ ld hl, ViridianForestPrintTrainerTips4Text
+ jp ViridianForestSign_Common
+
+ViridianForestLeavingSignText:
+ text_asm
+ ld hl, ViridianForestPrintTrainerTips1Text ; supposed to be ViridianForestPrintLeavingSignText
+ViridianForestSign_Common:
+ ld b, BANK(ViridianForestPrintTrainerTips1Text)
+ call Bankswitch
+ jp TextScriptEnd
diff --git a/scripts/ViridianForestSouthGate.asm b/scripts/ViridianForestSouthGate.asm
index 29bbd95f..92cf0438 100644
--- a/scripts/ViridianForestSouthGate.asm
+++ b/scripts/ViridianForestSouthGate.asm
@@ -1,5 +1,6 @@
ViridianForestSouthGate_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
ViridianForestSouthGate_TextPointers:
def_text_pointers
diff --git a/scripts/ViridianForest_2.asm b/scripts/ViridianForest_2.asm
new file mode 100644
index 00000000..a9b157d5
--- /dev/null
+++ b/scripts/ViridianForest_2.asm
@@ -0,0 +1,53 @@
+ViridianForestPrintTrainerTips1Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianForestTrainerTips1Text
+ text_end
+
+ViridianForestPrintUseAntidoteSignText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianForestUseAntidoteSignText
+ text_end
+
+ViridianForestPrintTrainerTips2Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianForestTrainerTips2Text
+ text_end
+
+ViridianForestPrintTrainerTips3Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianForestTrainerTips3Text
+ text_end
+
+ViridianForestPrintTrainerTips4Text::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianForestTrainerTips4Text
+ text_end
+
+ViridianForestPrintLeavingSignText:
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianForestLeavingSignText
+ text_end
diff --git a/scripts/ViridianMart.asm b/scripts/ViridianMart.asm
index 34e1281c..f118b475 100644
--- a/scripts/ViridianMart.asm
+++ b/scripts/ViridianMart.asm
@@ -3,7 +3,8 @@ ViridianMart_Script:
call EnableAutoTextBoxDrawing
ld hl, ViridianMart_ScriptPointers
ld a, [wViridianMartCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
ViridianMartCheckParcelDeliveredScript:
CheckEvent EVENT_OAK_GOT_PARCEL
@@ -23,7 +24,7 @@ ViridianMart_ScriptPointers:
def_script_pointers
dw_const ViridianMartDefaultScript, SCRIPT_VIRIDIANMART_DEFAULT
dw_const ViridianMartOaksParcelScript, SCRIPT_VIRIDIANMART_OAKS_PARCEL
- dw_const ViridianMartNoopScript, SCRIPT_VIRIDIANMART_NOOP
+ dw_const ViridianMartScript2, SCRIPT_VIRIDIANMART_SCRIPT2
ViridianMartDefaultScript:
call UpdateSprites
@@ -56,10 +57,21 @@ ViridianMartOaksParcelScript:
lb bc, OAKS_PARCEL, 1
call GiveItem
SetEvent EVENT_GOT_OAKS_PARCEL
- ld a, SCRIPT_VIRIDIANMART_NOOP
+ ld a, SCRIPT_VIRIDIANMART_SCRIPT2
ld [wViridianMartCurScript], a
- ; fallthrough
-ViridianMartNoopScript:
+ ret
+
+ViridianMartScript2:
+ CheckEventHL EVENT_COMPLETED_CATCH_TRAINING
+ ret z
+ CheckAndSetEventReuseHL EVENT_SPAWNED_OLD_MAN_1
+ ret nz
+ ld a, HS_OLD_MAN_2
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ld a, HS_OLD_MAN_1
+ ld [wMissableObjectIndex], a
+ predef ShowObject
ret
ViridianMart_TextPointers:
diff --git a/scripts/ViridianPokecenter.asm b/scripts/ViridianPokecenter.asm
index 37d39ff9..5e6135ac 100644
--- a/scripts/ViridianPokecenter.asm
+++ b/scripts/ViridianPokecenter.asm
@@ -8,6 +8,7 @@ ViridianPokecenter_TextPointers:
dw_const ViridianPokecenterGentlemanText, TEXT_VIRIDIANPOKECENTER_GENTLEMAN
dw_const ViridianPokecenterCooltrainerMText, TEXT_VIRIDIANPOKECENTER_COOLTRAINER_M
dw_const ViridianPokecenterLinkReceptionistText, TEXT_VIRIDIANPOKECENTER_LINK_RECEPTIONIST
+ dw_const ViridianPokeCenterChanseyText, TEXT_VIRIDIANPOKECENTER_CHANSEY
ViridianPokecenterNurseText:
script_pokecenter_nurse
@@ -22,3 +23,8 @@ ViridianPokecenterCooltrainerMText:
ViridianPokecenterLinkReceptionistText:
script_cable_club_receptionist
+
+ViridianPokeCenterChanseyText:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/ViridianSchoolHouse.asm b/scripts/ViridianSchoolHouse.asm
index a7beb1b5..771e970e 100644
--- a/scripts/ViridianSchoolHouse.asm
+++ b/scripts/ViridianSchoolHouse.asm
@@ -1,15 +1,23 @@
ViridianSchoolHouse_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
ViridianSchoolHouse_TextPointers:
def_text_pointers
dw_const ViridianSchoolHouseBrunetteGirlText, TEXT_VIRIDIANSCHOOLHOUSE_BRUNETTE_GIRL
dw_const ViridianSchoolHouseCooltrainerFText, TEXT_VIRIDIANSCHOOLHOUSE_COOLTRAINER_F
+ dw_const ViridianSchoolHouseLittleGirlText, TEXT_VIRIDIANSCHOOLHOUSE_LITTLE_GIRL
ViridianSchoolHouseBrunetteGirlText:
text_far _ViridianSchoolHouseBrunetteGirlText
text_end
ViridianSchoolHouseCooltrainerFText:
- text_far _ViridianSchoolHouseCooltrainerFText
- text_end
+ text_asm
+ farcall ViridianSchoolHousePrintCooltrainerFText
+ jp TextScriptEnd
+
+ViridianSchoolHouseLittleGirlText:
+ text_asm
+ farcall ViridianSchoolHousePrintLittleGirlText
+ jp TextScriptEnd
diff --git a/scripts/ViridianSchoolHouse_2.asm b/scripts/ViridianSchoolHouse_2.asm
new file mode 100644
index 00000000..057b2640
--- /dev/null
+++ b/scripts/ViridianSchoolHouse_2.asm
@@ -0,0 +1,17 @@
+ViridianSchoolHousePrintLittleGirlText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianSchoolHouseLittleGirlText
+ text_end
+
+ViridianSchoolHousePrintCooltrainerFText::
+ ld hl, .text
+ call PrintText
+ ret
+
+.text
+ text_far _ViridianSchoolHouseCooltrainerFText
+ text_end