mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00

This was an interesting thought exercise. As you can see, this code adds a scaling function for when you reach the KEP post-game. These teams are very powerful and a strong test of the player's skills. I did, however, remove the Legendary Pokemon from the first three's teams. They felt a little bit out there and kind of decrease the significance of the player's. Plus, we just went through hell adding conditional Hall of Fame respawns. The Elite Four use refight text based on their LGPE appearances. It's honestly a little odd, so if it's too much, the FRLG conditional text could be used instead. I like the way Agatha's plays out, though... Anyway, stupid hacky implementation done, please don't look at how I did the champion's trainer number.
326 lines
5.5 KiB
NASM
326 lines
5.5 KiB
NASM
ChampionsRoom_Script:
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, ChampionsRoom_ScriptPointers
|
|
ld a, [wChampionsRoomCurScript]
|
|
jp CallFunctionInTable
|
|
|
|
ResetGaryScript:
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
ChampionsRoom_ScriptPointers:
|
|
dw GaryScript0
|
|
dw GaryScript1
|
|
dw GaryScript2
|
|
dw GaryScript3
|
|
dw GaryScript4
|
|
dw GaryScript5
|
|
dw GaryScript6
|
|
dw GaryScript7
|
|
dw GaryScript8
|
|
dw GaryScript9
|
|
dw GaryScript10
|
|
|
|
GaryScript0:
|
|
ret
|
|
|
|
GaryScript1:
|
|
ld a, $ff
|
|
ld [wJoyIgnore], a
|
|
ld hl, wSimulatedJoypadStatesEnd
|
|
ld de, GaryEntrance_RLEMovement
|
|
call DecodeRLEList
|
|
dec a
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, $2
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
GaryEntrance_RLEMovement:
|
|
db D_UP, 1
|
|
db D_RIGHT, 1
|
|
db D_UP, 3
|
|
db -1 ; end
|
|
|
|
GaryScript2:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
call Delay3
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld hl, wOptions
|
|
res 7, [hl] ; Turn on battle animations to make the battle feel more epic.
|
|
ld a, $1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ld hl, GaryDefeatedText
|
|
ld de, GaryVictoryText
|
|
call SaveEndBattleTextPointers
|
|
ld a, OPP_RIVAL3
|
|
ld [wCurOpponent], a
|
|
|
|
; select which team to use during the encounter
|
|
ld a, [wRivalStarter]
|
|
cp STARTER2
|
|
jr nz, .NotSquirtle
|
|
ld a, $1
|
|
jr .saveTrainerId
|
|
.NotSquirtle
|
|
cp STARTER3
|
|
jr nz, .Charmander
|
|
ld a, $2
|
|
jr .saveTrainerId
|
|
.Charmander
|
|
cp STARTER1 ; changes start here
|
|
ld a, $3
|
|
jr nz, .Pikachu
|
|
jr .saveTrainerId
|
|
.Pikachu ;
|
|
cp STARTER4
|
|
jr nz, .Eevee
|
|
ld a, $5
|
|
jr .saveTrainerId
|
|
.Eevee
|
|
ld a, $4
|
|
jr .saveTrainerId
|
|
.saveTrainerId
|
|
ld [wTrainerNo], a
|
|
|
|
CheckEvent EVENT_POST_GAME_ATTAINED
|
|
jr z, .skip
|
|
ld a, [wTrainerNo]
|
|
inc a
|
|
inc a
|
|
inc a
|
|
inc a
|
|
inc a
|
|
; surely there is a better way
|
|
ld [wTrainerNo], a
|
|
.skip
|
|
ld a, 1
|
|
ld [wIsTrainerBattle], a
|
|
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
ld a, $3
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
GaryScript3:
|
|
ld a, [wIsInBattle]
|
|
cp $ff
|
|
jp z, ResetGaryScript
|
|
xor a
|
|
ld [wIsTrainerBattle], a
|
|
call UpdateSprites
|
|
SetEvent EVENT_BEAT_CHAMPION_RIVAL
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
ld a, $1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call GaryScript_760c8
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
call SetSpriteMovementBytesToFF
|
|
ld a, $4
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
GaryScript4:
|
|
farcall Music_Cities1AlternateTempo
|
|
ld a, $2
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call GaryScript_760c8
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
call SetSpriteMovementBytesToFF
|
|
ld de, OakEntranceAfterVictoryMovement
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
call MoveSprite
|
|
ld a, HS_CHAMPIONS_ROOM_OAK
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
ld a, $5
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
OakEntranceAfterVictoryMovement:
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db -1 ; end
|
|
|
|
GaryScript5:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
ld a, PLAYER_DIR_LEFT
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_LEFT
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $3
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call GaryScript_760c8
|
|
ld a, $6
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
GaryScript6:
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_RIGHT
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $4
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call GaryScript_760c8
|
|
ld a, $7
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
GaryScript7:
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
xor a ; SPRITE_FACING_DOWN
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $5
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call GaryScript_760c8
|
|
ld de, OakExitGaryRoomMovement
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
call MoveSprite
|
|
ld a, $8
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
OakExitGaryRoomMovement:
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_UP
|
|
db -1 ; end
|
|
|
|
GaryScript8:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
ld a, HS_CHAMPIONS_ROOM_OAK
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
ld a, $9
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
GaryScript9:
|
|
ld a, $ff
|
|
ld [wJoyIgnore], a
|
|
ld hl, wSimulatedJoypadStatesEnd
|
|
ld de, WalkToHallOfFame_RLEMovment
|
|
call DecodeRLEList
|
|
dec a
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, $a
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
WalkToHallOfFame_RLEMovment:
|
|
db D_UP, 4
|
|
db D_LEFT, 1
|
|
db -1 ; end
|
|
|
|
GaryScript10:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, $0
|
|
ld [wChampionsRoomCurScript], a
|
|
ret
|
|
|
|
GaryScript_760c8:
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
call DisplayTextID
|
|
ld a, $ff
|
|
ld [wJoyIgnore], a
|
|
ret
|
|
|
|
ChampionsRoom_TextPointers:
|
|
dw GaryText1
|
|
dw GaryText2
|
|
dw GaryText3
|
|
dw GaryText4
|
|
dw GaryText5
|
|
|
|
GaryText1:
|
|
text_asm
|
|
CheckEvent EVENT_BEAT_CHAMPION_RIVAL
|
|
ld hl, GaryChampionIntroText
|
|
jr z, .printText
|
|
ld hl, GaryText_76103
|
|
.printText
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
GaryChampionIntroText:
|
|
text_far _GaryChampionIntroText
|
|
text_end
|
|
|
|
GaryDefeatedText:
|
|
text_far _GaryDefeatedText
|
|
text_end
|
|
|
|
GaryVictoryText:
|
|
text_far _GaryVictoryText
|
|
text_end
|
|
|
|
GaryText_76103:
|
|
text_far _GaryText_76103
|
|
text_end
|
|
|
|
GaryText2:
|
|
text_far _GaryText2
|
|
text_end
|
|
|
|
GaryText3:
|
|
text_asm
|
|
ld a, [wPlayerStarter]
|
|
ld [wd11e], a
|
|
call GetMonName
|
|
ld hl, GaryText_76120
|
|
call PrintText
|
|
jp TextScriptEnd
|
|
|
|
GaryText_76120:
|
|
text_far _GaryText_76120
|
|
text_end
|
|
|
|
GaryText4:
|
|
text_far _GaryText_76125
|
|
text_end
|
|
|
|
GaryText5:
|
|
text_far _GaryText_7612a
|
|
text_end
|