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

This renovates the Celadon Mansion Roof House to feature a faithful restoration of Shinjuku Jack. Notes are in the script file. Also, LuciShrimp's Mewtwo theme is finished!
181 lines
4.3 KiB
NASM
181 lines
4.3 KiB
NASM
; The Hiker in the Roof House is now Shinjuku Jacky. He was a famous Virtua Fighter player and the source of the famous "Jack" sprite.
|
|
; Shinjuku Jack wrote the book "Virtua Fighter Maniax", the first to feature frame data for Virtua Fighter 1 and thus a very notable resource.
|
|
; At the time, many Virtua Fighter players had "geographical names", representing their residences. Shinjuku is notably within Tokyo, near to Shibuya.
|
|
; Because Celadon City is based on Tokyo Metropolis, specifically Shinjuku and Shibuya, and there's a map called JISAN.MAP that featured N64s, I'm placing Jacky here.
|
|
|
|
; This also means you actually have to beat a trainer to get the Eevee/Pikachu, so you have to work for that massive power spike.
|
|
|
|
; It's a lot, but I hope this is the best restoration Jacky can receive.
|
|
|
|
CeladonMansionRoofHouse_Script:
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, CeladonMansionRoofHouse_ScriptPointers
|
|
ld a, [wCeladonMansionRoofHouseCurScript]
|
|
jp CallFunctionInTable
|
|
|
|
CeladonMansionRoofHouse_ScriptPointers:
|
|
dw TheRetONator
|
|
dw JackyBeat
|
|
|
|
JackyBeat:
|
|
SetEvent EVENT_BEAT_JACKY
|
|
ld a, EEVEE ; Getting the Pokemon the player needs before printing the text
|
|
ld a, [wPlayerStarter] ; Load the player's starter after Eevee loads.
|
|
cp EEVEE ; Was your starter Eevee?
|
|
jr nz, .skip ; If not, skip this.
|
|
ld a, PIKACHU ; Load in Pikachu if true
|
|
.skip
|
|
ld [wd11e], a
|
|
call GetMonName
|
|
ld a, $1 ; Load Jacky's NPC ID
|
|
ldh [hSpriteIndex], a ; Slap it in the index
|
|
call DisplayTextID
|
|
ld a, $0
|
|
ld [wCeladonMansionRoofHouseCurScript], a ; kick the player back downstairs
|
|
TheRetONator: ; fallthrough
|
|
ret
|
|
|
|
CeladonMansionRoofHouse_TextPointers:
|
|
dw CeladonMansion5Text1
|
|
dw CeladonMansion5Text2
|
|
dw JackyN64
|
|
dw JackyTVMario
|
|
dw JackyTVWaveRace
|
|
|
|
CeladonMansion5Text1:
|
|
text_asm
|
|
CheckEvent EVENT_GOT_MANSION_GIFT
|
|
jr nz, .gotGift
|
|
CheckEvent EVENT_BEAT_JACKY
|
|
jr nz, .skip
|
|
|
|
ld hl, JackyText1
|
|
call PrintText
|
|
ld a, [wSimulatedJoypadStatesEnd] ; ensuring that the text doesn't autoskip.
|
|
and a ; yep, here too.
|
|
call z, WaitForTextScrollButtonPress ; and here.
|
|
call EnableAutoTextBoxDrawing ; and here. annoying.
|
|
|
|
call YesNoChoice ; Do they want in?
|
|
ld a, [wCurrentMenuItem]
|
|
and a
|
|
jr nz, .refused
|
|
|
|
ld hl, JackyYes
|
|
call PrintText
|
|
ld c, BANK(Music_MeetMaleTrainer)
|
|
ld a, MUSIC_MEET_MALE_TRAINER
|
|
call PlayMusic
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
|
|
call Delay3
|
|
ld a, OPP_JACK
|
|
ld [wCurOpponent], a
|
|
|
|
ld a, 1
|
|
ld [wTrainerNo], a
|
|
ld [wIsTrainerBattle], a
|
|
|
|
ld hl, JackyLossText
|
|
ld de, JackyWinText
|
|
call SaveEndBattleTextPointers
|
|
|
|
ld a, $1
|
|
ld [wCeladonMansionRoofHouseCurScript], a
|
|
jr .done
|
|
.gotGift
|
|
ld hl, JackyGift
|
|
call PrintText
|
|
jr .done
|
|
.skip
|
|
ld hl, JackyPostBeatText
|
|
call PrintText
|
|
jr .done
|
|
.refused
|
|
ld hl, JackyNo
|
|
call PrintText
|
|
; fallthrough
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
CeladonMansion5Text2:
|
|
text_asm
|
|
CheckEvent EVENT_BEAT_JACKY
|
|
jr z, .notBeatenJacky
|
|
lb bc, EEVEE, 25
|
|
|
|
; Because Eevee is a starter, we don't want it to be rendered redundant by this.
|
|
; So when the player has one, we'll give them something else.
|
|
; I chose Pikachu, which matches how in Yellow, the Eevee matches the rival.
|
|
; It doesn't entirely make sense given RB, but I think it's ok, and gives a similar power spike.
|
|
ld a, [wPlayerStarter] ; Load the player's starter after Eevee loads.
|
|
cp EEVEE ; Was your starter Eevee?
|
|
jr nz, .skip ; If not, skip this.
|
|
lb bc, PIKACHU, 25 ; Load in Pikachu if true.
|
|
|
|
.skip ; Return to usual functioning.
|
|
call GivePokemon
|
|
jr nc, .party_full
|
|
ld a, HS_CELADON_MANSION_EEVEE_GIFT
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
SetEvent EVENT_GOT_MANSION_GIFT
|
|
jr .party_full
|
|
.notBeatenJacky
|
|
ld hl, JackyThief
|
|
call PrintText
|
|
; fallthrough
|
|
.party_full
|
|
jp TextScriptEnd
|
|
|
|
JackyText1:
|
|
text_far _CeladonMansion5Text1
|
|
text_end
|
|
|
|
; Unused functionality for a rematch, didn't seem worth it
|
|
;JackyPreBeatText:
|
|
; text_far _JackyPreBeatText
|
|
; text_end
|
|
|
|
JackyPostBeatText:
|
|
text_far _JackyAfterBattle ; using this for now, a rematch for the sake of a rematch seems iffy.
|
|
text_end
|
|
|
|
JackyYes:
|
|
text_far _JackyYes
|
|
text_end
|
|
|
|
JackyNo:
|
|
text_far _JackyNo
|
|
text_end
|
|
|
|
JackyWinText:
|
|
text_far _JackyWinText
|
|
text_end
|
|
|
|
JackyLossText:
|
|
text_far _JackyLossText
|
|
text_end
|
|
|
|
JackyThief:
|
|
text_far _JackyThief
|
|
text_end
|
|
|
|
JackyTVMario:
|
|
text_far _JackyTVMario
|
|
text_end
|
|
|
|
JackyTVWaveRace:
|
|
text_far _JackyTVWaveRace
|
|
text_end
|
|
|
|
JackyN64:
|
|
text_far _JackyN64
|
|
text_end
|
|
|
|
JackyGift:
|
|
text_far _JackyGift
|
|
text_end
|