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

@ -1595,7 +1595,7 @@ TryRunningFromBattle:
jp z, .canEscape ; jump if it's a safari battle
ld a, [wLinkState]
ld a, [wCurOpponent]
cp OMEGA
cp OMEGADGE
jp z, .omegaCantEscape
cp LINK_STATE_BATTLING
jp z, .canEscape
@ -6417,28 +6417,31 @@ LoadEnemyMonData:
ld de, wEnemyMonNick
ld bc, NAME_LENGTH
call CopyData
cp BATTLE_TENT
jr z, .skipSeenFlagAdding ; one of Battle Tower's rules
;ld a, [wCurMap]
;cp BATTLE_TENT
;jr z, .skipSeenFlagAdding ; one of Battle Tower's rules
ld a, [wEnemyMonSpecies2]
ld [wd11e], a
predef IndexToPokedex
call IsGhostBattle ; this prevents it from being identified early
jr nz, .noMarkSeen ; part of the ghost fix
;call IsGhostBattle ; this prevents it from being identified early
;jr nz, .noMarkSeen ; part of the ghost fix
ld a, [wd11e]
dec a
ld c, a
ld b, FLAG_SET
ld hl, wPokedexSeen
predef FlagActionPredef ; mark this mon as seen in the pokedex
.noMarkSeen ; part of the ghost fix
ld hl, wEnemyMonLevel
ld de, wEnemyMonUnmodifiedLevel
ld bc, 1 + NUM_STATS * 2
call CopyData
ld a, $7 ; default stat mod
ld b, NUM_STAT_MODS ; number of stat mods
ld hl, wEnemyMonStatMods
.skipSeenFlagAdding
;.noMarkSeen ; this is supposed to be a ghost fix but it causes the pokedex to just...never update so I'm commenting it out
; ld hl, wEnemyMonLevel
; ld de, wEnemyMonUnmodifiedLevel
; ld bc, 1 + NUM_STATS * 2
; call CopyData
; ld a, $7 ; default stat mod
; ld b, NUM_STAT_MODS ; number of stat mods
; ld hl, wEnemyMonStatMods
;.skipSeenFlagAdding
ld hl, wEnemyMonLevel
ld de, wEnemyMonUnmodifiedLevel
ld bc, $b

View file

@ -228,11 +228,11 @@ BTMonList::
db TRAMPEL
db SNORLAX
db BUTTERFREE
db PURAKKUSU
db TRICULES
db SCIZOR
db PARASECT
; Rock+Fighting set
db GYAOON
db GAWARHED
db KABUTOPS
db RHYPERIOR
db ARCANINE_H
@ -246,7 +246,7 @@ BTMonList::
db LAPRAS
db GYARADOS
db BLASTOISE
db JAGG
db SHARPOON
db POLITOED
db PENDRAKEN
; Electric+Fire set
@ -268,7 +268,7 @@ BTMonList::
db NINETALES_A
db MR_RIME
; Flying+Fire set
db MADAAMU
db LUXWAN
db AERODACTYL
db DRAGONITE
db DODRIO
@ -277,13 +277,13 @@ BTMonList::
db RAPIDASH
db TAUROS_PB
; Normal+Grass set
db DEER
db RAMOOSE
db CHANSEY
db KANGASKHAN
db RATICATE_A
db TANGROWTH
db CACTUS
db TSUBOMITTO
db CACTORMUS
db BELLIGNAN
db VICTREEBEL
; Ghost+Ground+Poison set
db STEELIX
@ -299,9 +299,9 @@ BTMonList::
db PORYGONZ
db CLEFABLE
db RATICATE
db CROCKY
db GAVILLAIN
db EXEGGUTOR_A
db CRYITHAN
db IGUANARCH
db KINGDRA

View file

@ -144,11 +144,10 @@ IF DEF(_DEBUG)
.items_end
; Complete the Pokédex.
; Comment out (except for the event) to test post-game setup.
;ld hl, wPokedexOwned
;call DebugSetPokedexEntries
;ld hl, wPokedexSeen
;call DebugSetPokedexEntries
ld hl, wPokedexOwned
call DebugSetPokedexEntries
ld hl, wPokedexSeen
call DebugSetPokedexEntries
SetEvent EVENT_GOT_POKEDEX
; Test Post-Game Functionality.

View file

@ -203,7 +203,7 @@ HandlePokedexListMenu:
call PlaceString
; find the highest pokedex number among the pokemon the player has seen
ld hl, wPokedexSeenEnd - 1
ld b, (wPokedexSeenEnd - wPokedexSeen) * 8 + 1 - 4 ; this line's causing some issues, so we basically broke it for now
ld b, 249 ; This makes the last number in the dex match up with the last Pokemon in dex order. This makes it look a little odd when incomplete but also allows for Pokemon beyond 248 to display correctly. Setting it as 249 for now (so everything up to Melmetal gets displayed) but may update if we can bring Magnetite and Bittybat back.
.maxSeenPokemonLoop
ld a, [hld]
ld c, 8

View file

@ -39,6 +39,47 @@ ShakeElevator::
call UpdateSprites
jp PlayDefaultMusic
ShakeElevatorFerry::
ld de, -$20
call ShakeElevatorRedrawRow
ld de, SCREEN_HEIGHT * $20
call ShakeElevatorRedrawRow
call Delay3
ld a, SFX_STOP_ALL_MUSIC
call PlaySound
ldh a, [hSCY]
ld d, a
ld e, $1
ld b, 100
.shakeLoop ; scroll the BG up and down and play a sound effect
ld a, e
xor $fe
ld e, a
add d
ldh [hSCY], a
push bc
ld c, 0 ; BANK(SFX_Collision_1)
ld a, SFX_COLLISION
call PlaySound
pop bc
ld c, 2
call DelayFrames
dec b
jr nz, .shakeLoop
ld a, d
ldh [hSCY], a
ld a, SFX_STOP_ALL_MUSIC
call PlaySound
ld c, 0 ; BANK(SFX_SS_Anne_Horn)
ld a, SFX_SS_ANNE_HORN
call PlaySound
;.musicLoop
; ld a, [wChannelSoundIDs + CHAN5]
; cp SFX_SAFARI_ZONE_PA
; jr z, .musicLoop
call UpdateSprites
jp PlayDefaultMusic
ShakeElevatorRedrawRow:
; This function is used to redraw certain portions of the screen, but it does
; not appear to ever result in any visible effect, so this function seems to

View file

@ -0,0 +1,230 @@
; New script for Red++
; Based on a combination of Fossil Lab and Elevator Menus
; Allows travel to any Event Island based on which tickets the player has in the pack
EventIslandsFerryScript::
ld hl, WelcomeToSeagallopText
call PrintText
call GetFerryTickets
ld a, [wFilteredBagItemsCount]
and a
jr z, .noTicket
call DoIslandMenu
ret
.noTicket
call ManualTextScroll
ld hl,NoTicketText
call PrintText
ret
GetFerryTickets:
; generate a list in wram of all Event Items the player has
xor a
ld [wFilteredBagItemsCount], a
ld de, wFilteredBagItems
ld hl, TicketList
.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 ticket's in the bag
ld a, [wd11e]
ld [de], a
inc de
push hl
ld hl, wFilteredBagItemsCount
inc [hl]
pop hl
jr .loop
.done
ld hl, wFilteredBagItemsCount
ld a, [hl]
and a
jr z, .endList ; if no items are in the pack, don't add "Go Home" option
; add Vermilion to the list if there is one, to get back home
ld a, FLOOR_11F
ld [de],a
inc de
inc [hl] ; increase item count so GO HOME shows up
.endList
ld a, $ff ; End of list
ld [de], a
ret
TicketList:
db OLD_SEA_MAP
db CITRINE_PASS
db $00
PrintTicketsInBag:
; Print the list of names inside the menu box we drew
ld hl, wFilteredBagItems
xor a
ld [$ffdb], a
.loop
ld a, [hli]
cp $ff
ret z
push hl
ld [wd11e], a
call GetItemName
coord hl, 2, 2
ld a, [$ffdb]
ld bc, $28
call AddNTimes
ld de, wcd6d
call PlaceString
ld hl, $ffdb
inc [hl]
pop hl
jr .loop
DoIslandMenu:
; Display the menu we generated earlier, let the player choose an item to use,
; then do the elevator thing and update the warps accordingly
ld hl, wd730
set 6, [hl]
xor a
ld [wCurrentMenuItem], a
ld a, $3 ; 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
ld hl, wTileMap
call TextBoxBorder
call UpdateSprites
call PrintTicketsInBag
ld hl, wd730
res 6, [hl]
call HandleMenuInput
bit 1, a ; Pressed B?
jr nz, .cancelledChoosingTicket
ld hl, wFilteredBagItems
ld a, [wCurrentMenuItem]
ld d, 0
ld e, a
add hl, de
ld a, [hl]
ld [$ffdb], a
cp OLD_SEA_MAP
jr z, .choseFarawayIsland
cp CITRINE_PASS
jr z, .choseCitrineCity
;choseVermilion
ld b, 1
ld c, VERMILION_FERRY_DOCK
jr .islandSelected
.choseFarawayIsland
ld b, 0
ld c, FARAWAY_ISLAND_OUTSIDE
jr .islandSelected
.choseCitrineCity
ld b, 1
ld c, CITRINE_FERRY_DOCK
jr .islandSelected
.islandSelected
; First, see if we need to update the warps
ld a, [wWarpEntries + 3] ; Map ID of first warp
cp c ; see if we're already at the place we tried to go
jr z, .alreadyThere
; Hold onto the warp entry we selected
push bc
; Mark for it to do the shake animation
ld hl, wCurrentMapScriptFlags
set 7, [hl]
; Announce that we are leaving
ld hl, AllAboardText
call PrintText
; Update the warp entries to match the ones for that island
pop bc ; get the warp IDs back
ld hl, wWarpEntries
call .doWarpStuff
; This is called once to update the first warp, then it falls through to run again and update the second warp
.doWarpStuff
inc hl
inc hl
ld a, b
ld [hli], a
ld a, c
ld [hli], a
ret
.cancelledChoosingTicket
ld hl, GoingNowhereText
call PrintText
ret
.alreadyThere
ld hl, AlreadyThereText
call PrintText
ret
WelcomeToSeagallopText:
text "Welcome aboard"
line "the SEAGALLOP"
cont "FERRY!"
para "Do you have a"
line "ticket to travel"
cont "with us today?@@"
NoTicketText:
text "No? That's too"
line "bad."
para "Come back and see"
line "us later."
prompt
db "@"
GoingNowhereText:
text "Come back and see"
line "us later."
prompt
db "@"
AllAboardText:
text "All aboard!"
prompt
db "@"
AlreadyThereText:
text "We're already"
line "there!"
prompt
db "@"