mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-17 02:40:50 +12:00

This commit adds a large fundamental change to KEP, that being Gym Rematches. This is achieved alongside a rework to the script that makes those post-game-gating NPCs shift around. If you add a new one, just add its constant to the lists you'll see in the Hall of Fame script. It also fixes a few bugs: - Fixed a bug where Cinnabar Gym loaded a fleet of Blaines. This occurred due to the way he is coded at base, and a misunderstanding I had when implementing his scaling. This is now fixed by standardising his gym script instead, while letting the gym trainers still use the old one. - Fixed a bug where the Up-Grade NPC would not appear after beating Silph Co. 11F. However, Giovanni currently seems to have trouble with his text. This floor needs some re-coding anyway, given we need to add Jessie and James to it. And some misc. changes: - Changed the first Moon Stone in Mt. Moon to a Poison Stone for the Nidoking speedrunners - Debug Mode now has a line of code to set up the post-game easily - Changed Surge's initial battle text to Yellow's - Added Sabrina's more accurate LGPE initial battle text, referring to the spoon she bent by accident
150 lines
2.9 KiB
NASM
150 lines
2.9 KiB
NASM
HallOfFame_Script:
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, HallOfFame_ScriptPointers
|
|
ld a, [wHallOfFameCurScript]
|
|
jp CallFunctionInTable
|
|
|
|
HallofFameRoomScript_5a4aa:
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wHallOfFameCurScript], a
|
|
ret
|
|
|
|
HallOfFame_ScriptPointers:
|
|
dw HallofFameRoomScript0
|
|
dw HallofFameRoomScript1
|
|
dw HallofFameRoomScript2
|
|
dw HallofFameRoomScript3
|
|
|
|
HallofFameRoomScript3:
|
|
ret
|
|
|
|
HallofFameRoomScript2:
|
|
call Delay3
|
|
ld a, [wLetterPrintingDelayFlags]
|
|
push af
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
predef HallOfFamePC
|
|
pop af
|
|
ld [wLetterPrintingDelayFlags], a
|
|
ld hl, wFlags_D733
|
|
res 1, [hl]
|
|
inc hl
|
|
set 0, [hl]
|
|
xor a
|
|
ld hl, wLoreleisRoomCurScript
|
|
ld [hli], a ; wLoreleisRoomCurScript
|
|
ld [hli], a ; wBrunosRoomCurScript
|
|
ld [hl], a ; wAgathasRoomCurScript
|
|
ld [wLancesRoomCurScript], a
|
|
ld [wHallOfFameCurScript], a
|
|
; Elite 4 events
|
|
ResetEventRange INDIGO_PLATEAU_EVENTS_START, INDIGO_PLATEAU_EVENTS_END, 1
|
|
xor a
|
|
ld [wHallOfFameCurScript], a
|
|
ld a, PALLET_TOWN
|
|
ld [wLastBlackoutMap], a
|
|
farcall SaveSAVtoSRAM
|
|
ld b, 5
|
|
.delayLoop
|
|
ld c, 600 / 5
|
|
call DelayFrames
|
|
dec b
|
|
jr nz, .delayLoop
|
|
call WaitForTextScrollButtonPress
|
|
jp Init
|
|
|
|
HallofFameRoomScript0:
|
|
ld a, $ff
|
|
ld [wJoyIgnore], a
|
|
ld hl, wSimulatedJoypadStatesEnd
|
|
ld de, RLEMovement5a528
|
|
call DecodeRLEList
|
|
dec a
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, $1
|
|
ld [wHallOfFameCurScript], a
|
|
ret
|
|
|
|
RLEMovement5a528:
|
|
db D_UP, 5
|
|
db -1 ; end
|
|
|
|
HallofFameRoomScript1:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
ld a, PLAYER_DIR_RIGHT
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
call SetSpriteMovementBytesToFF
|
|
ld a, SPRITE_FACING_LEFT
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
call Delay3
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
inc a ; PLAYER_DIR_RIGHT
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, $1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld a, $ff
|
|
ld [wJoyIgnore], a
|
|
|
|
call PostGameSetup
|
|
|
|
ld a, $2
|
|
ld [wHallOfFameCurScript], a
|
|
ret
|
|
|
|
HallOfFame_TextPointers:
|
|
dw HallofFameRoomText1
|
|
|
|
HallofFameRoomText1:
|
|
text_far _HallofFameRoomText1
|
|
text_end
|
|
|
|
; Post-Game Functionality
|
|
; This script is adapted from the Silph Co. 11F script that reforms Saffron City.
|
|
; It replaces the Cerulean Cave Guard bit, adapting him into the whole ordeal.
|
|
|
|
PostGameSetup:
|
|
SetEvent EVENT_POST_GAME_ATTAINED
|
|
ld hl, ObjectsToHide
|
|
.loop1
|
|
ld a, [hli]
|
|
cp $ff
|
|
jr z, .skip
|
|
push hl
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
pop hl
|
|
jr .loop1
|
|
.skip
|
|
ld hl, ObjectsToShow
|
|
.loop2
|
|
ld a, [hli]
|
|
cp -1
|
|
ret z
|
|
push hl
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
pop hl
|
|
jr .loop2
|
|
|
|
ObjectsToShow:
|
|
db HS_ROUTE_1_OAK ; Oak post-game fight
|
|
db HS_YUJIROU_REMATCH ; Yujirou rematch
|
|
db -1 ; end
|
|
|
|
ObjectsToHide:
|
|
db HS_BILLS_NIDORINO ; Bill's Garden access
|
|
db HS_MANSION_GUARD ; Pokemon Mansion basement access
|
|
db HS_MT_MOON_CRATER_GUARD ; Mt. Moon Crater access
|
|
db HS_CERULEAN_CAVE_GUY ; Cerulean Cave access
|
|
db -1 ; end
|