mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-20 22:28:41 +13:00
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:
parent
57186bb2a0
commit
508a4e790e
246 changed files with 2446 additions and 2384 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
230
engine/overworld/ferry_script.asm
Normal file
230
engine/overworld/ferry_script.asm
Normal 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 "@"
|
||||
Loading…
Add table
Add a link
Reference in a new issue