The Big One.

Whoa, this one's been in the making for a while now. This one has been my attempt to fix as much as I could within a little over a month. Here's what I've got for you.

- Fixed a bug in Silph Gauntlet where the trainers would not see you unless you spoke to them

- Removed the unnecessary Gawarhed and Wugtrio static encounters. In what was once Gawarhed's place is a Rare Candy.

- Implemented a working ferry system (huge thanks to Red++) that allows travelling to Faraway Island and Citrine City with the right tickets. Currently both maps use a copy of the SS Anne, which may be revised later.

- Bittybat, Magnetite and Burgela have been removed to fix a Pokedex bug where entries wouldn't display correctly if the total number wasn't a multiple of 8.

- Fixed a bug where fishing up a Wiglett and Wugtrio would play the trainer battle and Champion battle themes respectively

- Restructured the Pokedex a little. Don't worry, Lickitung's still number 108!

- All references to betamon in the disassembly have had their names updated to match the new Ogasawara ones

- Removed Blastyke as a Game Corner prize, replacing it with Squeamata.

- Garnet Cavern is now properly listed as a dungeon map

- Fixed an issue where trying to leave Bill's House after entering the garden would put you back in the garden

- Moved Silph Gauntlet's Beauty down 1 floor to make the number of trainers on each floor more consistent

- Finished Gauntlet 6F except for the trainer text (PvK please help)

- Gavillain's stats updated to match KEP 1.4 on the Showdown server. It's now a Dragon/Electric type with less Ice coverage.

- Fixed Clefable's and Wigglytuff's starting movesets from an earlier commit

- Fixed an ABSOLUTELY HORRIBLE, EGREGIOUSLY FRUSTRATING BUG that caused the Pokedex's seen counter to rarely update. This is what caused this commit to be delayed for so long. No joke.

- New sprites, courtesy of Albatross, for Sylveon's back sprite, Alolan Marowak, Alolan Muk, Galarian Weezing and Magnezone!

- Fixed a bug preventing the trade for Haunter from being accessed.
This commit is contained in:
Martha Schilling 2023-09-19 23:34:25 +01:00
parent 57186bb2a0
commit 508a4e790e
246 changed files with 2446 additions and 2384 deletions

View file

@ -144,7 +144,7 @@ FakeTreeEvent:
CactusBattleText:
text_far _FakeTreeAttack
text_asm
ld a, CACTUS
ld a, CACTORMUS
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd

View file

@ -101,7 +101,7 @@ Lab4Text_75dd5:
Lab4Text2:
text_asm
ld a, TRADE_FOR_JIMBO
ld a, TRADE_FOR_MICHELLE
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd

View file

@ -0,0 +1,6 @@
CitrineFerryDock_Script:
jp EnableAutoTextBoxDrawing
CitrineFerryDock_TextPointers:
text_end

View file

@ -1,36 +1,6 @@
DiglettsCave_Script:
call EnableAutoTextBoxDrawing
ld hl, DiglettsCaveTrainerHeaders
ld de, DiglettsCave_ScriptPointers
ld a, [wDiglettsCaveCurScript]
call ExecuteCurMapScriptInTable
ld [wDiglettsCaveCurScript], a
ret
DiglettsCave_ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
jp EnableAutoTextBoxDrawing
DiglettsCave_TextPointers:
dw WugtrioText
DiglettsCaveTrainerHeaders:
def_trainers
WugtrioTrainerHeader:
trainer EVENT_BEAT_WUGTRIO, 0, WugtrioBattleText, WugtrioBattleText, WugtrioBattleText
db -1 ; end
WugtrioText:
text_asm
ld hl, WugtrioTrainerHeader
call TalkToTrainer
jp TextScriptEnd
WugtrioBattleText:
text_far _WugtrioBattleText
text_asm
ld a, WUGTRIO
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
text_end ; unused

View file

@ -1,16 +1,8 @@
GiovannisRoom_Script:
call EnableAutoTextBoxDrawing
ld hl, GiovannisRoomTrainerHeaders
ld de, RocketHideoutB1F_ScriptPointers
ld a, [wRocketHideoutB1FCurScript]
call ExecuteCurMapScriptInTable
ld [wRocketHideoutB1FCurScript], a
ret
jp EnableAutoTextBoxDrawing
GiovannisRoom_ScriptPointers:
dw GiovannisRoomScript0
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
dw GiovannisRoomScript4
GiovannisRoomScript0:
@ -127,13 +119,6 @@ GiovannisRoom_TextPointers:
dw GiovannisRoomText4
dw PickUpItemText
dw PickUpItemText
dw GiovannisRoomText7
GiovannisRoomTrainerHeaders:
def_trainers
GiovannisRoomTrainerHeader0:
trainer EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_0, 3, GiovannisRoomBattleText2, GiovannisRoomEndBattleText2, GiovannisRoomAfterBattleTxt2
db -1 ; end
GiovannisRoomText1:
text_far _GiovannisRoomText1
@ -150,21 +135,3 @@ GiovannisRoomText3:
GiovannisRoomText4:
text_far _GiovannisRoomText4
text_end
GiovannisRoomText7:
text_asm
ld hl, GiovannisRoomTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
GiovannisRoomBattleText2:
text_far _GiovannisRoomBattleText2
text_end
GiovannisRoomEndBattleText2:
text_far _GiovannisRoomEndBattleText2
text_end
GiovannisRoomAfterBattleTxt2:
text_far _GiovannisRoomAfterBattleTxt2
text_end

View file

@ -164,7 +164,7 @@ ResetLegendaryPokemon:
; Omega is special.
; If Omega wasn't caught, it'll be available in the empty room of Silph Co. 11F.
; In my mind, Omega was sent there, pending eventual scrapping for spare parts.
ld a, DEX_OMEGA
ld a, DEX_OMEGADGE
call HoFIsPokemonBitSet
jr nz, .skipOmega
ResetEvent EVENT_BEAT_OMEGA ; Reusing the old event - it's completely free to use.

View file

@ -0,0 +1,47 @@
; All credit to Mateo's Pokemon Red++
SeagallopFerry_Script: ; setup the stuff when you walk inside
ld hl, wCurrentMapScriptFlags
bit 5, [hl]
res 5, [hl]
push hl
call nz, SeagallopFerry_GetLastWarp
pop hl
bit 7, [hl]
res 7, [hl]
call nz, SeagallopFerry_ShakeElevator
xor a
ld [wAutoTextBoxDrawingControl], a
inc a
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ret
SeagallopFerry_GetLastWarp:
ld hl, wWarpEntries
ld a, [wWarpedFromWhichWarp] ; last warped number
ld b, a
ld a, [wWarpedFromWhichMap] ; last warped map
ld c, a
call SeagallopFerry_ApplyWarpData
SeagallopFerry_ApplyWarpData:
inc hl
inc hl
ld a, b
ld [hli], a
ld a, c
ld [hli], a
ret
SeagallopFerry_ShakeElevator:
ld b, BANK(ShakeElevatorFerry)
ld hl, ShakeElevatorFerry
jp Bankswitch
SeagallopFerry_TextPointers:
dw SeagallopFerryText1
SeagallopFerryText1:
text_asm
farcall EventIslandsFerryScript
jp TextScriptEnd

View file

@ -72,7 +72,7 @@ SilphCo11Script_6217b:
ld a, $7
ldh [hSpriteIndex], a ; TODO: Make Omega look at the player.
call MoveOmegaSprite
ld a, OMEGA
ld a, OMEGADGE
ld [wcf91], a
call PlayCry
ld a, SFX_STOP_ALL_MUSIC
@ -93,7 +93,7 @@ SilphCo11ScriptOmegaBattle:
ld a, 11
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, OMEGA
ld a, OMEGADGE
ld [wCurOpponent], a
ld a, 40
ld [wCurEnemyLVL], a
@ -165,16 +165,16 @@ MissableObjectIDs_6219b:
db HS_SAFFRON_CITY_E
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_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_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
@ -630,16 +630,16 @@ SaffronCityRockets:
db HS_SAFFRON_CITY_E
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_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_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
@ -802,7 +802,7 @@ Omega2Text:
Omega2BattleText:
text_far _OmegaBattleText
text_asm
ld a, OMEGA
ld a, OMEGADGE
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd

View file

@ -37,6 +37,42 @@ SilphCo3GateCoords:
dbmapcoord 8, 4
db -1 ; end
SilphCo2Script_59d43:
push hl
ld hl, wCardKeyDoorY
ld a, [hli]
ld b, a
ld a, [hl]
ld c, a
xor a
ldh [hUnlockedSilphCoDoors], a
pop hl
.asm_59d4f
ld a, [hli]
cp $ff
jr z, .asm_59d6b
push hl
ld hl, hUnlockedSilphCoDoors
inc [hl]
pop hl
cp b
jr z, .asm_59d60
inc hl
jr .asm_59d4f
.asm_59d60
ld a, [hli]
cp c
jr nz, .asm_59d4f
ld hl, wCardKeyDoorY
xor a
ld [hli], a
ld [hl], a
ret
.asm_59d6b
xor a
ldh [hUnlockedSilphCoDoors], a
ret
SilphCo3Script_59fad:
EventFlagAddress hl, EVENT_SILPH_CO_3_UNLOCKED_DOOR1
ldh a, [hUnlockedSilphCoDoors]

View file

@ -47,6 +47,42 @@ SilphCo5GateCoords:
dbmapcoord 7, 5
db -1 ; end
SilphCo4Script_19d5d:
push hl
ld hl, wCardKeyDoorY
ld a, [hli]
ld b, a
ld a, [hl]
ld c, a
xor a
ldh [hUnlockedSilphCoDoors], a
pop hl
.asm_19d69
ld a, [hli]
cp $ff
jr z, .asm_19d85
push hl
ld hl, hUnlockedSilphCoDoors
inc [hl]
pop hl
cp b
jr z, .asm_19d7a
inc hl
jr .asm_19d69
.asm_19d7a
ld a, [hli]
cp c
jr nz, .asm_19d69
ld hl, wCardKeyDoorY
xor a
ld [hli], a
ld [hl], a
ret
.asm_19d85
xor a
ldh [hUnlockedSilphCoDoors], a
ret
SilphCo5Script_19f9e:
EventFlagAddress hl, EVENT_SILPH_CO_5_UNLOCKED_DOOR1
ldh a, [hUnlockedSilphCoDoors]
@ -95,6 +131,16 @@ SilphCo5TrainerHeader3:
trainer EVENT_BEAT_SILPH_CO_5F_TRAINER_3, 3, SilphCo5BattleText5, SilphCo5EndBattleText5, SilphCo5AfterBattleText5
db -1 ; end
SilphCo6Script_1a22f:
CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
jr nz, .asm_1a238
jr .asm_1a23a
.asm_1a238
ld h, d
ld l, e
.asm_1a23a
jp PrintText
SilphCo5Text1:
text_asm
ld hl, SilphCo5Text_1a010

View file

@ -59,11 +59,11 @@ SilphCoElevatorFloors:
SilphCoElevatorWarpMaps:
; warp number, map id
db 3, SILPH_CO_1F
db 2, SILPH_CO_2F
;db 2, SILPH_CO_2F
db 2, SILPH_CO_3F
db 2, SILPH_CO_4F
;db 2, SILPH_CO_4F
db 2, SILPH_CO_5F
db 2, SILPH_CO_6F
;db 2, SILPH_CO_6F
db 2, SILPH_CO_7F
;db 2, SILPH_CO_8F
db 2, SILPH_CO_9F

View file

@ -21,17 +21,17 @@ SilphGauntlet2F_TextPointers:
dw SilphGauntlet2FText6
SilphGauntlet2FTrainerHeaders:
def_trainers 7
def_trainers
SilphGauntlet2FTrainerHeader0:
trainer EVENT_BEAT_GAUNTLET_LASS, 2, SilphGauntlet2FBattleText1, SilphGauntlet2FEndBattleText1, SilphGauntlet2FAfterBattleText1
SilphGauntlet2FTrainerHeader1:
trainer EVENT_BEAT_GAUNTLET_JUNIOR, 1, SilphGauntlet2FBattleText2, SilphGauntlet2FEndBattleText2, SilphGauntlet2FAfterBattleText2
trainer EVENT_BEAT_GAUNTLET_HIKER, 1, SilphGauntlet2FBattleText2, SilphGauntlet2FEndBattleText2, SilphGauntlet2FAfterBattleText2
SilphGauntlet2FTrainerHeader2:
trainer EVENT_BEAT_GAUNTLET_HIKER, 1, SilphGauntlet2FBattleText3, SilphGauntlet2FEndBattleText3, SilphGauntlet2FAfterBattleText3
trainer EVENT_BEAT_GAUNTLET_SUPER_NERD, 1, SilphGauntlet2FBattleText3, SilphGauntlet2FEndBattleText3, SilphGauntlet2FAfterBattleText3
SilphGauntlet2FTrainerHeader3:
trainer EVENT_BEAT_GAUNTLET_SUPER_NERD, 1, SilphGauntlet2FBattleText4, SilphGauntlet2FEndBattleText4, SilphGauntlet2FAfterBattleText4
trainer EVENT_BEAT_GAUNTLET_POKEMANIAC, 1, SilphGauntlet2FBattleText4, SilphGauntlet2FEndBattleText4, SilphGauntlet2FAfterBattleText4
SilphGauntlet2FTrainerHeader4:
trainer EVENT_BEAT_GAUNTLET_POKEMANIAC, 3, SilphGauntlet2FBattleText5, SilphGauntlet2FEndBattleText5, SilphGauntlet2FAfterBattleText5
trainer EVENT_BEAT_GAUNTLET_BEAUTY, 3, SilphGauntlet2FBattleText5, SilphGauntlet2FEndBattleText5, SilphGauntlet2FAfterBattleText5
SilphGauntlet2FTrainerHeader5:
trainer EVENT_BEAT_GAUNTLET_BLACK_BELT, 1, SilphGauntlet2FBattleText6, SilphGauntlet2FEndBattleText6, SilphGauntlet2FAfterBattleText6
db -1 ; end

View file

@ -19,10 +19,9 @@ SilphGauntlet3F_TextPointers:
dw SilphGauntlet3FText4
dw SilphGauntlet3FText5
dw SilphGauntlet3FText6
dw SilphGauntlet3FText7
SilphGauntlet3FTrainerHeaders:
def_trainers 5
def_trainers
SilphGauntlet3FTrainerHeader0:
trainer EVENT_BEAT_GAUNTLET_SAILOR, 1, SilphGauntlet3FBattleText1, SilphGauntlet3FEndBattleText1, SilphGauntlet3FAfterBattleText1
SilphGauntlet3FTrainerHeader1:
@ -35,8 +34,6 @@ SilphGauntlet3FTrainerHeader4:
trainer EVENT_BEAT_GAUNTLET_ROCKER, 1, SilphGauntlet3FBattleText5, SilphGauntlet3FEndBattleText5, SilphGauntlet3FAfterBattleText5
SilphGauntlet3FTrainerHeader5:
trainer EVENT_BEAT_GAUNTLET_FISHER, 2, SilphGauntlet3FBattleText6, SilphGauntlet3FEndBattleText6, SilphGauntlet3FAfterBattleText6
SilphGauntlet3FTrainerHeader6:
trainer EVENT_BEAT_GAUNTLET_BEAUTY, 3, SilphGauntlet3FBattleText7, SilphGauntlet3FEndBattleText7, SilphGauntlet3FAfterBattleText7
db -1 ; end
SilphGauntlet3FText1:
@ -146,23 +143,5 @@ SilphGauntlet3FEndBattleText6:
SilphGauntlet3FAfterBattleText6:
text_far _SilphGauntlet3FAfterBattleText6
text_end
SilphGauntlet3FText7:
text_asm
ld hl, SilphGauntlet3FTrainerHeader6
call TalkToTrainer
jp TextScriptEnd
SilphGauntlet3FBattleText7:
text_far _SilphGauntlet3FBattleText7
text_end
SilphGauntlet3FEndBattleText7:
text_far _SilphGauntlet3FEndBattleText7
text_end
SilphGauntlet3FAfterBattleText7:
text_far _SilphGauntlet3FAfterBattleText7
text_end
text_end

View file

@ -58,7 +58,7 @@ SilphGauntlet4F_TextPointers:
dw PurifiedZoneText
SilphGauntlet4FTrainerHeaders:
def_trainers 4
def_trainers
SilphGauntlet4FTrainerHeader0:
trainer EVENT_BEAT_GAUNTLET_SCIENTIST, 1, SilphGauntlet4FBattleText1, SilphGauntlet4FEndBattleText1, SilphGauntlet4FAfterBattleText1
SilphGauntlet4FTrainerHeader1:

View file

@ -22,7 +22,7 @@ SilphGauntlet5F_TextPointers:
dw SilphGauntlet5FText7
SilphGauntlet5FTrainerHeaders:
def_trainers 2
def_trainers
SilphGauntlet5FTrainerHeader0:
trainer EVENT_BEAT_GAUNTLET_JUGGLER, 3, SilphGauntlet5FBattleText1, SilphGauntlet5FEndBattleText1, SilphGauntlet5FAfterBattleText1
SilphGauntlet5FTrainerHeader1:

View file

@ -1,6 +1,168 @@
SilphGauntlet6F_Script:
jp EnableAutoTextBoxDrawing
call EnableAutoTextBoxDrawing
ld hl, SilphGauntlet6FTrainerHeaders
ld de, SilphGauntlet6F_ScriptPointers
ld a, [wSilphGauntlet6FCurScript]
call ExecuteCurMapScriptInTable
ld [wSilphGauntlet6FCurScript], a
ret
SilphGauntlet6F_ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
SilphGauntlet6F_TextPointers:
dw SilphGauntlet6FText1
dw SilphGauntlet6FText2
dw SilphGauntlet6FText3
dw SilphGauntlet6FText4
dw SilphGauntlet6FText5
dw SilphGauntlet6FText6
dw SilphGauntlet6FText7
SilphGauntlet6FTrainerHeaders:
def_trainers
SilphGauntlet6FTrainerHeader0:
trainer EVENT_BEAT_GAUNTLET_BROCK, 2, SilphGauntlet6FBattleText1, SilphGauntlet6FEndBattleText1, SilphGauntlet6FAfterBattleText1
SilphGauntlet6FTrainerHeader1:
trainer EVENT_BEAT_GAUNTLET_MISTY, 3, SilphGauntlet6FBattleText2, SilphGauntlet6FEndBattleText2, SilphGauntlet6FAfterBattleText2
SilphGauntlet6FTrainerHeader2:
trainer EVENT_BEAT_GAUNTLET_SURGE, 3, SilphGauntlet6FBattleText3, SilphGauntlet6FEndBattleText3, SilphGauntlet6FAfterBattleText3
SilphGauntlet6FTrainerHeader3:
trainer EVENT_BEAT_GAUNTLET_ERIKA, 3, SilphGauntlet6FBattleText4, SilphGauntlet6FEndBattleText4, SilphGauntlet6FAfterBattleText4
SilphGauntlet6FTrainerHeader4:
trainer EVENT_BEAT_GAUNTLET_KOGA, 3, SilphGauntlet6FBattleText5, SilphGauntlet6FEndBattleText5, SilphGauntlet6FAfterBattleText5
SilphGauntlet6FTrainerHeader5:
trainer EVENT_BEAT_GAUNTLET_SABRINA, 2, SilphGauntlet6FBattleText6, SilphGauntlet6FEndBattleText6, SilphGauntlet6FAfterBattleText6
SilphGauntlet6FTrainerHeader6:
trainer EVENT_BEAT_GAUNTLET_BLAINE, 2, SilphGauntlet6FBattleText7, SilphGauntlet6FEndBattleText7, SilphGauntlet6FAfterBattleText7
db -1 ; end
SilphGauntlet6FText1:
text_asm
ld hl, SilphGauntlet6FTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
SilphGauntlet6FBattleText1:
text_far _SilphGauntlet6FBattleText1
text_end
SilphGauntlet6FEndBattleText1:
text_far _SilphGauntlet6FEndBattleText1
text_end
SilphGauntlet6FAfterBattleText1:
text_far _SilphGauntlet6FAfterBattleText1
text_end
SilphGauntlet6FText2:
text_asm
ld hl, SilphGauntlet6FTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
SilphGauntlet6FBattleText2:
text_far _SilphGauntlet6FBattleText2
text_end
SilphGauntlet6FEndBattleText2:
text_far _SilphGauntlet6FEndBattleText2
text_end
SilphGauntlet6FAfterBattleText2:
text_far _SilphGauntlet6FAfterBattleText2
text_end
SilphGauntlet6FText3:
text_asm
ld hl, SilphGauntlet6FTrainerHeader2
call TalkToTrainer
jp TextScriptEnd
SilphGauntlet6FBattleText3:
text_far _SilphGauntlet6FBattleText3
text_end
SilphGauntlet6FEndBattleText3:
text_far _SilphGauntlet6FEndBattleText3
text_end
SilphGauntlet6FAfterBattleText3:
text_far _SilphGauntlet6FAfterBattleText3
text_end
SilphGauntlet6FText4:
text_asm
ld hl, SilphGauntlet6FTrainerHeader3
call TalkToTrainer
jp TextScriptEnd
SilphGauntlet6FBattleText4:
text_far _SilphGauntlet6FBattleText4
text_end
SilphGauntlet6FEndBattleText4:
text_far _SilphGauntlet6FEndBattleText4
text_end
SilphGauntlet6FAfterBattleText4:
text_far _SilphGauntlet6FAfterBattleText4
text_end
SilphGauntlet6FText5:
text_asm
ld hl, SilphGauntlet6FTrainerHeader4
call TalkToTrainer
jp TextScriptEnd
SilphGauntlet6FBattleText5:
text_far _SilphGauntlet6FBattleText5
text_end
SilphGauntlet6FEndBattleText5:
text_far _SilphGauntlet6FEndBattleText5
text_end
SilphGauntlet6FAfterBattleText5:
text_far _SilphGauntlet6FAfterBattleText5
text_end
SilphGauntlet6FText6:
text_asm
ld hl, SilphGauntlet6FTrainerHeader5
call TalkToTrainer
jp TextScriptEnd
SilphGauntlet6FBattleText6:
text_far _SilphGauntlet6FBattleText6
text_end
SilphGauntlet6FEndBattleText6:
text_far _SilphGauntlet6FEndBattleText6
text_end
SilphGauntlet6FAfterBattleText6:
text_far _SilphGauntlet6FAfterBattleText6
text_end
SilphGauntlet6FText7:
text_asm
ld hl, SilphGauntlet6FTrainerHeader6
call TalkToTrainer
jp TextScriptEnd
SilphGauntlet6FBattleText7:
text_far _SilphGauntlet6FBattleText7
text_end
SilphGauntlet6FEndBattleText7:
text_far _SilphGauntlet6FEndBattleText7
text_end
SilphGauntlet6FAfterBattleText7:
text_far _SilphGauntlet6FAfterBattleText7
text_end
text_end

View file

@ -95,6 +95,7 @@ ChiefScript4:
ld a, HS_CERULEAN_CAVE_GUY
ld [wMissableObjectIndex], a
predef HideObject
; ResetEventRange SILPH_GAUNTLET_EVENTS_START, SILPH_GAUNTLET_EVENTS_END, 1 ; I want this to reset the trainers so you can refight them, but I'm very unsure how this works...
ld a, $0
ld [wSilphGauntlet7FCurScript], a

View file

@ -50,19 +50,11 @@ VermilionCityScript0:
ld a, $3
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, [wObtainedBadges] ; ship returns after obtaining the marsh badge
bit 5, a
CheckEvent EVENT_BEAT_SABRINA
jr nz, .default
CheckEvent EVENT_SS_ANNE_LEFT
jr nz, .shipHasDeparted
.default
ld hl, OldSeaMapCheckCoords
call ArePlayerCoordsInArray
jp c, MovePlayerVermilion
ld hl, CitrineCityCheckCoords
call ArePlayerCoordsInArray
jp c, MovePlayerVermilion
ld b, S_S_TICKET
predef GetQuantityOfItemInBag
ld a, b
@ -78,22 +70,10 @@ VermilionCityScript0:
ld [wVermilionCityCurScript], a
ret
SSAnneTicketCheckCoords: ; Mother coords - use to universally trigger the same event
dbmapcoord 18, 30 ; S. S. Anne
dbmapcoord 10, 30 ; Faraway Island
dbmapcoord 26, 30 ; Citrine City
SSAnneTicketCheckCoords:
dbmapcoord 18, 30
db -1 ; end
; I know it looks awful but I use the individual ones to launch off the new ticket script.
; We don't need an S.S. Anne one, as I'm using a process of elimination check system.
OldSeaMapCheckCoords:
dbmapcoord 10, 30
db -1
CitrineCityCheckCoords:
dbmapcoord 26, 30
db -1
VermilionCityScript4:
ld hl, SSAnneTicketCheckCoords
call ArePlayerCoordsInArray
@ -136,7 +116,6 @@ VermilionCityScript1:
ld [wVermilionCityCurScript], a
ret
; We call these four commands to stop text from autoskipping 4 times, may as well just make this.
TheAutoskipStopinator:
ld a, [wSimulatedJoypadStatesEnd] ; ensuring that the text doesn't autoskip.
and a ; yep, here too.
@ -144,179 +123,6 @@ TheAutoskipStopinator:
call EnableAutoTextBoxDrawing ; and here.
ret
; So get this: If you check multiple tickets, there's a really janky crash.
; I can't be fucked fixing it, so let's force the player through the warp instead.
; Yes, I'm serious.
MovePlayerVermilion:
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
call UpdateSprites
ld a, $ff ; Firstly...
ld [wJoyIgnore], a ; No joypad inputs. No funny business. RLE is weird as fuck without it.
ld hl, wSimulatedJoypadStatesEnd
ld de, WalkIntoWarp_RLEMovement
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates ; By this point, we're auto-moving.
ld a, $0
ld [wVermilionCityCurScript], a ; safety
ret
WalkIntoWarp_RLEMovement:
db D_DOWN, 2
db -1 ; end
; ================================================================
; THIS IS NO LONGER USED, KEPT IN CASE A BETTER WARP SYSTEM COMES UP.
; Alright, so I'll explain the issue.
; For some reason, all the warp methods that exist do not seem to like this system.
; Faraway Island would load but have botched collision and break when you leave.
; Citrine City would outright crash.
; Bank movements and stuff were tried but nothing seemed to work as desired.
; Instead, we use a triple-harbour method, which makes the city look more lively anyway.
;VermillionCityScript_GetPassesInBag:
; Gets a list of Passes in the player's bag.
; Ripped and modified from the fossil guy
; xor a
; ld [wFilteredBagItemsCount], a
; ld de, wFilteredBagItems
; ld hl, PassList
;.loop
; ld a, [hli]
; and a
; jr z, .done
; push hl
; push de
; ld [wd11e], a
; ld b, a
; predef GetQuantityOfItemInBag
; pop de
; pop hl
; ld a, b
; and a
; jr z, .loop
; ; A Pass is in the bag
; ld a, [wd11e]
; ld [de], a
; inc de
; push hl
; ld hl, wFilteredBagItemsCount
; inc [hl]
; pop hl
; jr .loop
;.done
; ld a, $ff
; ld [de], a
; ret
;PassList:
; db S_S_TICKET
; db OLD_SEA_MAP
; db CITRINE_PASS
; ;db RAINBOW_PASS I planned this for a while, but the space wasn't there, and the scope was strange.
; db 0 ; end
;PrintPassesInBag:
; Prints each pass in the player's bag on a separate line in the menu.
; ld hl, wFilteredBagItems
; xor a
; ldh [hItemCounter], a
;.loop
; ld a, [hli]
; cp $ff
; ret z
; push hl
; ld [wd11e], a
; call GetItemName
; hlcoord 2, 2
; ldh a, [hItemCounter]
; ld bc, SCREEN_WIDTH * 2
; call AddNTimes
; ld de, wcd6d
; call PlaceString
; ld hl, hItemCounter
; inc [hl]
; pop hl
; jr .loop
;PassListings:
; ld hl, VermillionCityPassSelectionText
; call PrintText
; call VermillionCityScript_GetPassesInBag
; ld hl, wd730
; set 6, [hl]
; xor a
; ld [wCurrentMenuItem], a
; ld a, A_BUTTON | B_BUTTON
; ld [wMenuWatchedKeys], a
; ld a, [wFilteredBagItemsCount]
; dec a
; ld [wMaxMenuItem], a
; ld a, 2
; ld [wTopMenuItemY], a
; ld a, 1
; ld [wTopMenuItemX], a
; ld a, [wFilteredBagItemsCount]
; dec a
; ld bc, 2
; ld hl, 3
; call AddNTimes
; dec l
; ld b, l
; ld c, $d
; hlcoord 0, 0
; call TextBoxBorder
; call UpdateSprites
; call PrintPassesInBag
; ld hl, wd730
; res 6, [hl]
; call HandleMenuInput
; bit BIT_B_BUTTON, a
; jr nz, .cancelledPass
; ld hl, wFilteredBagItems
; ld a, [wCurrentMenuItem]
; ld d, 0
; ld e, a
; add hl, de
; ld a, [hl]
; ldh [hItemToRemoveID], a
; cp S_S_TICKET
; jp z, VermilionCityText3.playerHasTicket ; Saves time and less risk of bugs
; cp OLD_SEA_MAP
; jr z, .choseFaraway
; cp CITRINE_PASS
; jr z, .choseCitrine
; god bless the safari game and pokemon tower 7f for being the few times a forcewarp exists
; For some reason, these aren't working properly...
;.choseFaraway
; ld hl, EventVermillionCityOldSeaMap
; call PrintText
; ld a, FARAWAY_ISLAND_OUTSIDE
; ld [wDestinationMap], a
; ld hl, wd732
; set 2, [hl] ; fly warp or dungeon warp
; call SpecialWarpIn
; jp SpecialEnterMap
;.choseCitrine
; ld hl, EventVermillionCityCitrinePass
; call PrintText
; ld a, CITRINE_CITY
; ldh [hWarpDestinationMap], a
; ld a, $6
; ld [wDestinationWarpID], a
; call WarpFound2
; jr .done
;.cancelledPass
; ld hl, PassRefuse
; call PrintText
;.done
; ret
;
; ================================================================
VermilionCity_TextPointers:
dw VermilionCityText1
dw VermilionCityText2
@ -326,8 +132,6 @@ VermilionCity_TextPointers:
dw VermilionCityText6
dw OfficerJennySquirtle
dw VermilionBeauty
dw EventVermillionCityOldSeaMapGreeting
dw EventVermillionCityCitrinePassGreeting
dw VermilionCityText7
dw VermilionCityText8
dw MartSignText
@ -362,36 +166,8 @@ VermilionCityTextSSAnneDeparted:
text_end
VermilionCityText3:
text_asm
; Checking the location that the script flagged earlier.
; Instead of using an item checker, this is more effective and easy on memory.
; Also, it doesn't get cross-threaded if you have multiples of the same thing. I had issues working around that one - I ain't a programmer by trade, unfortunately, I'm a TEFL student.
; Anyway, the code kicks you to different versions of the same script; I've had them isolated to call text in a way that's easier architecturally. Otherwise, we're checking the item found every time, and I'm 90% sure that nicks a WRAM entry.
; All in all: Yes, this is suboptimal, but I've been doing this for months. Sue me.
ld hl, OldSeaMapCheckCoords
call ArePlayerCoordsInArray
jr c, HasOldSeaMap
ld hl, CitrineCityCheckCoords
call ArePlayerCoordsInArray
jp c, HasCitrinePass
; If you have neither, this will continue as normal, see?
; This is why we needed the child coords.
; Before the coord system, we used this with the unused pass listing code.
; See where the issues arose? Possibly a neat exercise!
;ld b, OLD_SEA_MAP
;predef GetQuantityOfItemInBag
;ld a, b
;and a
;jp nz, PassListings
;ld b, CITRINE_PASS
;predef GetQuantityOfItemInBag
;ld a, b
;and a
;jp nz, PassListings
text_asm
CheckEvent EVENT_SS_ANNE_LEFT
jr nz, .shipHasDeparted
ld a, [wSpritePlayerStateData1FacingDirection]
@ -428,13 +204,9 @@ VermilionCityText3:
.end
jp TextScriptEnd
.inFrontOfOrBehindGuardCoords ; This can be all at once don't worry.
dbmapcoord 19, 29 ; in front of guard - S. S. Anne
dbmapcoord 19, 31 ; behind guard - S. S. Anne
dbmapcoord 11, 29 ; Faraway Island
dbmapcoord 11, 31 ; Faraway Island
dbmapcoord 27, 29 ; Citrine City
dbmapcoord 27, 31 ; Citrine City
.inFrontOfOrBehindGuardCoords
dbmapcoord 19, 29 ; in front of guard
dbmapcoord 19, 31 ; behind guard
db -1 ; end
SSAnneWelcomeText4:
@ -457,93 +229,6 @@ SSAnneNotHereText:
text_far _SSAnneNotHereText
text_end
HasOldSeaMap:
text_asm
ld a, [wSpritePlayerStateData1FacingDirection]
cp SPRITE_FACING_RIGHT
jr z, .greetPlayer
ld hl, VermilionCityText3.inFrontOfOrBehindGuardCoords
call ArePlayerCoordsInArray
jr nc, .greetPlayerAndCheckTicket
.greetPlayer
ld hl, EventVermillionCityOldSeaMapGreeting
call PrintText
jr .end
.greetPlayerAndCheckTicket
ld hl, EventVermillionCityOldSeaMapGreeting
call PrintText
call TheAutoskipStopinator
ld b, OLD_SEA_MAP
predef GetQuantityOfItemInBag
ld a, b
and a
jr nz, .playerHasTicket
ld hl, EventVermillionCityOldSeaMapGreetCheck
call PrintText
jr .end
.playerHasTicket
ld hl, EventVermillionCityOldSeaMap
call PrintText
ld a, $4
ld [wVermilionCityCurScript], a
.end
jp TextScriptEnd
EventVermillionCityOldSeaMapGreeting:
text "I am looking for"
line "a certain map..."
done
text_end
EventVermillionCityOldSeaMapGreetCheck:
text "Do you have it?"
done
text_end
HasCitrinePass:
text_asm
ld a, [wSpritePlayerStateData1FacingDirection]
cp SPRITE_FACING_RIGHT
jr z, .greetPlayer
ld hl, VermilionCityText3.inFrontOfOrBehindGuardCoords
call ArePlayerCoordsInArray
jr nc, .greetPlayerAndCheckTicket
.greetPlayer
ld hl, EventVermillionCityCitrinePassGreeting
call PrintText
jr .end
.greetPlayerAndCheckTicket
ld hl, EventVermillionCityCitrinePassGreeting
call PrintText
call TheAutoskipStopinator
ld b, CITRINE_PASS
predef GetQuantityOfItemInBag
ld a, b
and a
jr nz, .playerHasTicket
ld hl, EventVermillionCityCitrinePassGreetCheck
call PrintText
jr .end
.playerHasTicket
ld hl, EventVermillionCityCitrinePass
call PrintText
ld a, $4
ld [wVermilionCityCurScript], a
.end
jp TextScriptEnd
EventVermillionCityCitrinePassGreeting:
text "Hah! I only serve"
line "strong TRAINERs!"
done
text_end
EventVermillionCityCitrinePassGreetCheck:
text "Gonna need to see"
line "proof, shrimp!"
done
text_end
VermilionCityText4:
text_far _VermilionCityText4
text_end
@ -563,8 +248,7 @@ VermilionCityText14:
VermilionCityText6:
text_asm
ld a, [wObtainedBadges]
bit 5, a ; after obtaining the marsh badge the ship returns
CheckEvent EVENT_BEAT_SABRINA
jr z, .default
ld hl, VermilionCityText15
ret
@ -665,26 +349,10 @@ OfficerJennyHowDoing:
text_far _OfficerJennyText5
text_end
VermillionCityPassSelectionText:
text_far _VermillionCityPassSelectionText
text_end
EventVermillionCityOldSeaMap:
text_far _VermillionCityOldSeaMap
text_end
EventVermillionCityCitrinePass:
text_far _VermillionCityCitrinePass
text_end
EventVermillionCitySSTicket:
text_far _SSAnneFlashedTicketText
text_end
PassRefuse:
text_far _VermillionCityHarborRefuse
text_end
; LGPE Beauty who gives you a Persian or Arcanine depending on the game.
; Here, we make it a Cats vs Dogs question and change based on that.
; The way it works is it makes the player catch the opposite Pokemon, and then get the one they picked.

View file

@ -0,0 +1,6 @@
VermilionFerryDock_Script:
jp EnableAutoTextBoxDrawing
VermilionFerryDock_TextPointers:
text_end

View file

@ -72,7 +72,7 @@ VictoryRoad2F_TextPointers:
dw VictoryRoad2Text3
dw VictoryRoad2Text4
dw VictoryRoad2Text5
dw GyaoonText
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
@ -94,8 +94,6 @@ VictoryRoad2TrainerHeader3:
trainer EVENT_BEAT_VICTORY_ROAD_2_TRAINER_3, 1, VictoryRoad2BattleText4, VictoryRoad2EndBattleText4, VictoryRoad2AfterBattleText4
VictoryRoad2TrainerHeader4:
trainer EVENT_BEAT_VICTORY_ROAD_2_TRAINER_4, 3, VictoryRoad2BattleText5, VictoryRoad2EndBattleText5, VictoryRoad2AfterBattleText5
GyaoonTrainerHeader:
trainer EVENT_BEAT_GYAOON, 0, GyaoonBattleText, GyaoonBattleText, GyaoonBattleText
db -1 ; end
VictoryRoad2Text1:
@ -128,20 +126,6 @@ VictoryRoad2Text5:
call TalkToTrainer
jp TextScriptEnd
GyaoonText:
text_asm
ld hl, GyaoonTrainerHeader
call TalkToTrainer
jp TextScriptEnd
GyaoonBattleText:
text_far _GyaoonBattleText
text_asm
ld a, GYAOON
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
VictoryRoad2BattleText1:
text_far _VictoryRoad2BattleText1
text_end