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.
174 lines
3.6 KiB
NASM
174 lines
3.6 KiB
NASM
LoreleisRoom_Script:
|
|
call LoreleiShowOrHideExitBlock
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, LoreleisRoomTrainerHeaders
|
|
ld de, LoreleisRoom_ScriptPointers
|
|
ld a, [wLoreleisRoomCurScript]
|
|
call ExecuteCurMapScriptInTable
|
|
ld [wLoreleisRoomCurScript], a
|
|
ret
|
|
|
|
LoreleiShowOrHideExitBlock:
|
|
; Blocks or clears the exit to the next room.
|
|
ld hl, wCurrentMapScriptFlags
|
|
bit 5, [hl]
|
|
res 5, [hl]
|
|
ret z
|
|
ld hl, wBeatLorelei
|
|
set 1, [hl]
|
|
CheckEitherEventSet EVENT_BEAT_LORELEIS_ROOM_TRAINER_0, EVENT_BEAT_LORELEIS_ROOM_TRAINER_1
|
|
jr z, .blockExitToNextRoom
|
|
ld a, $5
|
|
jr .setExitBlock
|
|
.blockExitToNextRoom
|
|
ld a, $24
|
|
.setExitBlock
|
|
ld [wNewTileBlockID], a
|
|
lb bc, 0, 2
|
|
predef_jump ReplaceTileBlock
|
|
|
|
ResetLoreleiScript:
|
|
xor a
|
|
ld [wLoreleisRoomCurScript], a
|
|
ret
|
|
|
|
LoreleisRoom_ScriptPointers:
|
|
dw LoreleiScript0
|
|
dw DisplayEnemyTrainerTextAndStartBattle
|
|
dw LoreleiScript2
|
|
dw LoreleiScript3
|
|
dw LoreleiScript4
|
|
|
|
LoreleiScript4:
|
|
ret
|
|
|
|
LoreleiScriptWalkIntoRoom:
|
|
; Walk six steps upward.
|
|
ld hl, wSimulatedJoypadStatesEnd
|
|
ld a, D_UP
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld a, $6
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, $3
|
|
ld [wLoreleisRoomCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
LoreleiScript0:
|
|
ld hl, LoreleiEntranceCoords
|
|
call ArePlayerCoordsInArray
|
|
jp nc, CheckFightingMapTrainers
|
|
xor a
|
|
ldh [hJoyPressed], a
|
|
ldh [hJoyHeld], a
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
ld a, [wCoordIndex]
|
|
cp $3 ; Is player standing one tile above the exit?
|
|
jr c, .stopPlayerFromLeaving
|
|
CheckAndSetEvent EVENT_AUTOWALKED_INTO_LORELEIS_ROOM
|
|
jr z, LoreleiScriptWalkIntoRoom
|
|
.stopPlayerFromLeaving
|
|
ld a, $2
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID ; "Don't run away!"
|
|
ld a, D_UP
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
ld a, $1
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, $3
|
|
ld [wLoreleisRoomCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
LoreleiEntranceCoords:
|
|
dbmapcoord 4, 10
|
|
dbmapcoord 5, 10
|
|
dbmapcoord 4, 11
|
|
dbmapcoord 5, 11
|
|
db -1 ; end
|
|
|
|
LoreleiScript3:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
call Delay3
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wLoreleisRoomCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
LoreleiScript2:
|
|
call EndTrainerBattle
|
|
ld a, [wIsInBattle]
|
|
cp $ff
|
|
jp z, ResetLoreleiScript
|
|
ld a, $1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
jp DisplayTextID
|
|
|
|
LoreleisRoom_TextPointers:
|
|
dw LoreleiText1
|
|
dw LoreleiDontRunAwayText
|
|
|
|
LoreleisRoomTrainerHeaders:
|
|
def_trainers
|
|
LoreleisRoomTrainerHeader0:
|
|
trainer EVENT_BEAT_LORELEIS_ROOM_TRAINER_0, 0, LoreleiBeforeBattleText, LoreleiEndBattleText, LoreleiAfterBattleText
|
|
LoreleisRoomTrainerHeader1:
|
|
trainer EVENT_BEAT_LORELEIS_ROOM_TRAINER_1, 0, LoreleiRematchText, LoreleiRematchEndBattleText, LoreleiRematchAfterBattleText
|
|
db -1 ; end
|
|
|
|
LoreleiText1:
|
|
text_asm
|
|
ld hl, LoreleisRoomTrainerHeader0
|
|
CheckEvent EVENT_POST_GAME_ATTAINED
|
|
jr z, .skip
|
|
ld hl, LoreleisRoomTrainerHeader1
|
|
.skip
|
|
call TalkToTrainer
|
|
CheckEvent EVENT_POST_GAME_ATTAINED
|
|
jr z, .skip2
|
|
ld a, [wTrainerNo]
|
|
inc a
|
|
ld [wTrainerNo], a
|
|
.skip2
|
|
jp TextScriptEnd
|
|
|
|
LoreleiBeforeBattleText:
|
|
text_far _LoreleiBeforeBattleText
|
|
text_end
|
|
|
|
LoreleiEndBattleText:
|
|
text_far _LoreleiEndBattleText
|
|
text_end
|
|
|
|
LoreleiAfterBattleText:
|
|
text_far _LoreleiAfterBattleText
|
|
text_end
|
|
|
|
LoreleiDontRunAwayText:
|
|
text_far _LoreleiDontRunAwayText
|
|
text_end
|
|
|
|
LoreleiRematchText:
|
|
text_far _LoreleiRematchText
|
|
text_end
|
|
|
|
LoreleiRematchEndBattleText:
|
|
text_far _LoreleiRematchEndBattleText
|
|
text_end
|
|
|
|
LoreleiRematchAfterBattleText:
|
|
text_far _LoreleiRematchAfterBattleText
|
|
text_end
|
|
|