mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-17 02:40:50 +12:00
Add Prof. Oak post-game fight
This was surprisingly easy to add, albeit a bit awkward. I learned how to add trainer battles without headers this way, so I may go back to CeladonU and restructure with this in mind. This commit adds a fully functioning Professor Oak fight, using the Rival party choice script as a launchpad. You can desynchronise the choices easily, just a few number changes. I used the S. S. Anne 2F and Route 22 scripts to hodgepodge it together. Because of how I did this, Oak is fully re-fightable, taking inspiration from XY Serena's daily re-fights. I tried to add a Yes/No prompt, but it would still pull you into the fight, presumably because it's calling a beforebattle script before the code. It's a bit of a hassle and my CeladonU code sucked, so I decided to leave it out for now. It's intended to be unlocked once you enter the Hall of Fame, thus that change there. That hasn't been tested properly so uhhhh *shrug*
This commit is contained in:
parent
79110d859d
commit
d31edda1da
|
@ -244,4 +244,5 @@ DEF SHOW EQU $15
|
||||||
const HS_OLD_SEA_CHART ; E8 X
|
const HS_OLD_SEA_CHART ; E8 X
|
||||||
const HS_POKEMON_MANSION_B2F_ITEM_1 ; E9
|
const HS_POKEMON_MANSION_B2F_ITEM_1 ; E9
|
||||||
const HS_POKEMON_MANSION_B2F_ITEM_2 ; EA
|
const HS_POKEMON_MANSION_B2F_ITEM_2 ; EA
|
||||||
|
const HS_ROUTE_1_OAK ; EB
|
||||||
DEF NUM_HS_OBJECTS EQU const_value
|
DEF NUM_HS_OBJECTS EQU const_value
|
||||||
|
|
|
@ -15,7 +15,7 @@ MapHSPointers:
|
||||||
dw NoHS
|
dw NoHS
|
||||||
dw SaffronCityHS
|
dw SaffronCityHS
|
||||||
dw NoHS
|
dw NoHS
|
||||||
dw NoHS
|
dw Route1HS
|
||||||
dw Route2HS
|
dw Route2HS
|
||||||
dw NoHS
|
dw NoHS
|
||||||
dw Route4HS
|
dw Route4HS
|
||||||
|
@ -575,6 +575,8 @@ FarawayIslandInsideHS:
|
||||||
PokemonMansionB2FHS:
|
PokemonMansionB2FHS:
|
||||||
db POKEMON_MANSION_B2F, $03, SHOW
|
db POKEMON_MANSION_B2F, $03, SHOW
|
||||||
db POKEMON_MANSION_B2F, $04, SHOW
|
db POKEMON_MANSION_B2F, $04, SHOW
|
||||||
|
Route1HS:
|
||||||
|
db ROUTE_1, $03, HIDE ; PROF OAK fight. To test, change to SHOW. - PvK
|
||||||
db $FF, $01, SHOW ; end
|
db $FF, $01, SHOW ; end
|
||||||
|
|
||||||
assert_table_length NUM_HS_OBJECTS + 1
|
assert_table_length NUM_HS_OBJECTS + 1
|
||||||
|
|
|
@ -9,6 +9,7 @@ Route1_Object:
|
||||||
def_object_events
|
def_object_events
|
||||||
object_event 5, 24, SPRITE_YOUNGSTER, WALK, UP_DOWN, 1 ; person
|
object_event 5, 24, SPRITE_YOUNGSTER, WALK, UP_DOWN, 1 ; person
|
||||||
object_event 15, 13, SPRITE_YOUNGSTER, WALK, LEFT_RIGHT, 2 ; person
|
object_event 15, 13, SPRITE_YOUNGSTER, WALK, LEFT_RIGHT, 2 ; person
|
||||||
|
object_event 10, 25, SPRITE_OAK, STAY, RIGHT, 4 ; oak
|
||||||
|
|
||||||
def_warps_to ROUTE_1
|
def_warps_to ROUTE_1
|
||||||
|
|
||||||
|
|
|
@ -2047,7 +2047,7 @@ wBillsHouseCurScript:: db
|
||||||
wRoute5GateCurScript:: db
|
wRoute5GateCurScript:: db
|
||||||
wPowerPlantCurScript:: ; overload
|
wPowerPlantCurScript:: ; overload
|
||||||
wRoute7GateCurScript:: db
|
wRoute7GateCurScript:: db
|
||||||
ds 1
|
wRoute1CurScript:: db ; pls work - for oak
|
||||||
wSSAnne2FCurScript:: db
|
wSSAnne2FCurScript:: db
|
||||||
wSeafoamIslandsB3FCurScript:: db
|
wSeafoamIslandsB3FCurScript:: db
|
||||||
wRoute23CurScript:: db
|
wRoute23CurScript:: db
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
Exception: STATUS_ACCESS_VIOLATION at rip=00100401246
|
Exception: STATUS_ACCESS_VIOLATION at rip=00100401246
|
||||||
rax=FFFFFFF7FFF8CD51 rbx=0000000000000066 rcx=0000000800000010
|
rax=FFFFFFF7FFF8CD51 rbx=0000000000000818 rcx=0000000800000010
|
||||||
rdx=0000000000000000 rsi=00000008000631C8 rdi=0000000000000000
|
rdx=0000000000000000 rsi=0000000800059544 rdi=0000000000000000
|
||||||
r8 =00000000FFFFC7C4 r9 =0000000000000000 r10=0000000100000000
|
r8 =00000000FFFFC7C4 r9 =0000000000000000 r10=0000000100000000
|
||||||
r11=0000000100401282 r12=00000008000732B0 r13=0000000100403148
|
r11=0000000100401282 r12=00000008000732B0 r13=0000000100403148
|
||||||
r14=0000000000000000 r15=0000000000000001
|
r14=0000000000000000 r15=0000000000000001
|
||||||
rbp=0000000100403156 rsp=00000000FFFFCA60
|
rbp=0000000100403156 rsp=00000000FFFFCA60
|
||||||
program=C:\cygwin64\home\chipp\kep-hack\tools\scan_includes.exe, pid 42, thread main
|
program=C:\cygwin64\home\chipp\kep-hack\tools\scan_includes.exe, pid 2248, thread main
|
||||||
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
|
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
|
||||||
Stack trace:
|
Stack trace:
|
||||||
Frame Function Args
|
Frame Function Args
|
||||||
00100403156 00100401246 (008000631C8, 00000000022, 00100403166, 000FFFFCB90)
|
00100403156 00100401246 (00800059544, 00000000022, 00100403166, 000FFFFCB90)
|
||||||
00100403156 00100401409 (00000000000, 00100000001, 00180227860, 00100407000)
|
00100403156 00100401409 (00000000000, 00100000001, 00180227860, 00100407000)
|
||||||
00100403178 00100401C87 (00000000020, 00000000000, 00180049B11, 00180048A70)
|
00100403178 00100401C87 (00000000020, 00000000000, 00180049B11, 00180048A70)
|
||||||
000FFFFCD30 00180049B7D (00000000000, 00000000000, 00000000000, 00000000000)
|
000FFFFCD30 00180049B7D (00000000000, 00000000000, 00000000000, 00000000000)
|
||||||
|
|
|
@ -97,6 +97,9 @@ HallofFameRoomScript1:
|
||||||
ld a, HS_CERULEAN_CAVE_GUY
|
ld a, HS_CERULEAN_CAVE_GUY
|
||||||
ld [wMissableObjectIndex], a
|
ld [wMissableObjectIndex], a
|
||||||
predef HideObject
|
predef HideObject
|
||||||
|
ld a, HS_ROUTE_1_OAK
|
||||||
|
ld [wMissableObjectIndex], a
|
||||||
|
predef ShowObject
|
||||||
ld a, $2
|
ld a, $2
|
||||||
ld [wHallOfFameCurScript], a
|
ld [wHallOfFameCurScript], a
|
||||||
ret
|
ret
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
Route1_Script:
|
Route1_Script:
|
||||||
jp EnableAutoTextBoxDrawing
|
jp EnableAutoTextBoxDrawing
|
||||||
|
ld hl, Route1_ScriptPointers
|
||||||
|
ld a, [wRoute1CurScript]
|
||||||
|
jp CallFunctionInTable
|
||||||
|
|
||||||
Route1_TextPointers:
|
Route1_TextPointers:
|
||||||
dw Route1Text1
|
dw Route1Text1
|
||||||
dw Route1Text2
|
dw Route1Text2
|
||||||
dw Route1Text3
|
dw Route1Text3
|
||||||
|
dw Route1OakText
|
||||||
|
|
||||||
Route1Text1:
|
Route1Text1:
|
||||||
text_asm
|
text_asm
|
||||||
|
@ -50,3 +54,80 @@ Route1Text2:
|
||||||
Route1Text3:
|
Route1Text3:
|
||||||
text_far _Route1Text3
|
text_far _Route1Text3
|
||||||
text_end
|
text_end
|
||||||
|
|
||||||
|
; oak stuff begins here
|
||||||
|
|
||||||
|
; text
|
||||||
|
Route1OakText:
|
||||||
|
text_asm
|
||||||
|
ld hl, OakBeforeBattleText
|
||||||
|
call PrintText
|
||||||
|
|
||||||
|
; call YesNoChoice ; this whole bit doesn't work for some reason
|
||||||
|
; ld a, [wCurrentMenuItem]
|
||||||
|
; and a
|
||||||
|
; ld hl, OakYes
|
||||||
|
; jr nz, .got_text
|
||||||
|
; ld hl, OakNo
|
||||||
|
;.got_text
|
||||||
|
|
||||||
|
ld hl, wd72d
|
||||||
|
set 6, [hl]
|
||||||
|
set 7, [hl]
|
||||||
|
|
||||||
|
call Delay3
|
||||||
|
ld a, OPP_PROF_OAK
|
||||||
|
ld [wCurOpponent], a
|
||||||
|
|
||||||
|
; select which team to use during the encounter
|
||||||
|
ld a, [wRivalStarter]
|
||||||
|
cp STARTER2
|
||||||
|
jr nz, .NotSquirtle
|
||||||
|
ld a, $3
|
||||||
|
jr .done
|
||||||
|
.NotSquirtle
|
||||||
|
cp STARTER3
|
||||||
|
jr nz, .Charmander
|
||||||
|
ld a, $1
|
||||||
|
jr .done
|
||||||
|
.Charmander
|
||||||
|
ld a, $2
|
||||||
|
.done
|
||||||
|
ld [wTrainerNo], a
|
||||||
|
ld a, 1
|
||||||
|
ld [wIsTrainerBattle], a
|
||||||
|
|
||||||
|
ld a, $2
|
||||||
|
ld [wRoute1CurScript], a
|
||||||
|
|
||||||
|
ld hl, OakDefeatedText
|
||||||
|
ld de, OakWonText
|
||||||
|
call SaveEndBattleTextPointers
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
OakBeforeBattleText:
|
||||||
|
text_far _OakBeforeBattleText
|
||||||
|
text_end
|
||||||
|
|
||||||
|
OakDefeatedText:
|
||||||
|
text_far _OakDefeatedText
|
||||||
|
text_end
|
||||||
|
|
||||||
|
OakWonText:
|
||||||
|
text_far _OakWonText
|
||||||
|
text_end
|
||||||
|
|
||||||
|
OakYes:
|
||||||
|
text_far _OakYes
|
||||||
|
text_end
|
||||||
|
|
||||||
|
OakNo:
|
||||||
|
text_far _OakNo
|
||||||
|
text_end
|
||||||
|
|
||||||
|
; useful thing
|
||||||
|
StarterMons_Oak:
|
||||||
|
; starter the rival picked, oak trainer number. way easier than storing oak's "choice"
|
||||||
|
db STARTER1, 2 ; Venusaur
|
||||||
|
db STARTER2, 3 ; Charizard
|
||||||
|
db STARTER3, 1 ; Totartle
|
|
@ -48,3 +48,53 @@ _Route1Text3::
|
||||||
line "PALLET TOWN -"
|
line "PALLET TOWN -"
|
||||||
cont "VIRIDIAN CITY"
|
cont "VIRIDIAN CITY"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
_OakBeforeBattleText::
|
||||||
|
text "OAK: Oh, my!"
|
||||||
|
|
||||||
|
para "It seems you"
|
||||||
|
line "caught me during"
|
||||||
|
cont "during my lunch"
|
||||||
|
cont "hour!"
|
||||||
|
|
||||||
|
para "<PLAYER>, you"
|
||||||
|
line "have truly come"
|
||||||
|
cont "into your own!"
|
||||||
|
|
||||||
|
para "Your #MON"
|
||||||
|
line "LEAGUE challenge"
|
||||||
|
cont "has reignited"
|
||||||
|
cont "a spirit that"
|
||||||
|
cont "left me a long"
|
||||||
|
cont "time ago..."
|
||||||
|
|
||||||
|
para "How about we"
|
||||||
|
line "spar a bit?"
|
||||||
|
cont "What say you?"
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
_OakDefeatedText::
|
||||||
|
text "Hmm..."
|
||||||
|
|
||||||
|
para "I still have a"
|
||||||
|
line "lot to learn!"
|
||||||
|
prompt
|
||||||
|
|
||||||
|
_OakWonText::
|
||||||
|
text "Back in my day,"
|
||||||
|
line "I was a serious"
|
||||||
|
cont "TRAINER!"
|
||||||
|
prompt
|
||||||
|
|
||||||
|
_OakYes::
|
||||||
|
text "Back in my day,"
|
||||||
|
line "I was a serious"
|
||||||
|
cont "TRAINER! Prepare"
|
||||||
|
cont "yourself, <PLAYER>!"
|
||||||
|
prompt
|
||||||
|
|
||||||
|
_OakNo::
|
||||||
|
text "Maybe another"
|
||||||
|
line "time!"
|
||||||
|
done
|
Loading…
Reference in a new issue