mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00
Merge pull request #16 from PlagueVonKarma/post-game-letter-scene
Set up the actual beginning of the post-game
This commit is contained in:
commit
28be1396d1
|
@ -3,12 +3,16 @@
|
|||
; Pallet Town events
|
||||
const_def
|
||||
const EVENT_FOLLOWED_OAK_INTO_LAB
|
||||
const EVENT_GOT_BULBASAUR
|
||||
const EVENT_54F ; Charmander
|
||||
const EVENT_GOT_BULBASAUR ; Day Care Melanie
|
||||
const EVENT_54F ; Route 24, Damien's Charmander
|
||||
const EVENT_HALL_OF_FAME_DEX_RATING
|
||||
const EVENT_GOT_SQUIRTLE
|
||||
const EVENT_GOT_SQUIRTLE ; Vermilion Officer Jenny
|
||||
const EVENT_PALLET_AFTER_GETTING_POKEBALLS
|
||||
const_skip 17
|
||||
const EVENT_LETTER_RECEIVED
|
||||
const EVENT_FUCK ; If you trigger this you're a psychopath. Used for mom and oak post-game scenes.
|
||||
const EVENT_RECEIVED_CITRINE_PASS
|
||||
const EVENT_BEAT_OAK_ONCE
|
||||
const_skip 13
|
||||
const EVENT_GOT_TOWN_MAP
|
||||
const EVENT_ENTERED_BLUES_HOUSE
|
||||
const EVENT_DAISY_WALKING
|
||||
|
|
|
@ -103,6 +103,7 @@ DEF SAFARI_ROCK EQU $16 ; overload
|
|||
const METAL_COAT ; $5C
|
||||
const MYSTERY_BOX ; $5D
|
||||
const TEA ; $5E
|
||||
const SILPHLETTER ; $5F
|
||||
DEF NUM_ITEMS EQU const_value - 1
|
||||
|
||||
; elevator floors use item IDs
|
||||
|
|
|
@ -254,4 +254,4 @@ CredChatot:
|
|||
CredEni:
|
||||
db -3, "ENIGAMI@"
|
||||
CredVort:
|
||||
db -4, "VORTIENE@"
|
||||
db -3, "VORTIENE@"
|
||||
|
|
|
@ -94,6 +94,7 @@ KeyItemFlags:
|
|||
dbit FALSE ; METAL_COAT
|
||||
dbit TRUE ; MYSTERY_BOX
|
||||
dbit TRUE ; TEA
|
||||
dbit TRUE ; SILPHLETTER
|
||||
dbit TRUE ; FLOOR_B2F
|
||||
dbit TRUE ; FLOOR_B1F
|
||||
dbit TRUE ; FLOOR_1F
|
||||
|
|
|
@ -94,6 +94,7 @@ ItemNames::
|
|||
li "METAL COAT"
|
||||
li "MYSTERY BOX"
|
||||
li "TEA"
|
||||
li "SILPH LETTER"
|
||||
assert_list_length NUM_ITEMS
|
||||
li "B2F"
|
||||
li "B1F"
|
||||
|
|
|
@ -94,6 +94,7 @@ ItemPrices::
|
|||
bcd3 3000 ; METAL_COAT
|
||||
bcd3 0 ; MYSTERY_BOX
|
||||
bcd3 0 ; TEA
|
||||
bcd3 0 ; SILPHLETTER
|
||||
assert_table_length NUM_ITEMS
|
||||
bcd3 0 ; FLOOR_B2F
|
||||
bcd3 0 ; FLOOR_B1F
|
||||
|
|
|
@ -4,8 +4,8 @@ IndigoPlateauLobby_Object:
|
|||
def_warp_events
|
||||
warp_event 7, 11, LAST_MAP, 1
|
||||
warp_event 8, 11, LAST_MAP, 2
|
||||
;warp_event 8, 0, HALL_OF_FAME, 1 ; test post-game setup
|
||||
warp_event 8, 0, LORELEIS_ROOM, 1
|
||||
warp_event 8, 0, HALL_OF_FAME, 1 ; test post-game setup
|
||||
;warp_event 8, 0, LORELEIS_ROOM, 1
|
||||
|
||||
def_bg_events
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ MACRO special_warp_spec
|
|||
db \4
|
||||
ENDM
|
||||
|
||||
FirstMapSpec:
|
||||
FirstMapSpec::
|
||||
special_warp_spec REDS_HOUSE_2F, 3, 6, REDS_HOUSE_2
|
||||
TradeCenterSpec1:
|
||||
special_warp_spec TRADE_CENTER, 3, 4, CLUB
|
||||
|
@ -77,6 +77,7 @@ FlyWarpDataPtr:
|
|||
fly_warp_spec CELADON_UNIVERSITY_OUTSIDE, .CeladonUniversityOutside
|
||||
fly_warp_spec ROUTE_4, .Route4
|
||||
fly_warp_spec ROUTE_10, .Route10
|
||||
fly_warp_spec REDS_HOUSE_2F, .RedsHouse2F ; This doesn't show on the Fly map, just used so the post-league warp doesn't have a stroke
|
||||
|
||||
.PalletTown: fly_warp PALLET_TOWN, 5, 6
|
||||
.ViridianCity: fly_warp VIRIDIAN_CITY, 23, 26
|
||||
|
@ -93,3 +94,4 @@ FlyWarpDataPtr:
|
|||
.CeladonUniversityOutside: fly_warp CELADON_UNIVERSITY_OUTSIDE, 15, 26
|
||||
.Route4: fly_warp ROUTE_4, 11, 6
|
||||
.Route10: fly_warp ROUTE_10, 11, 20
|
||||
.RedsHouse2F: fly_warp REDS_HOUSE_2F, 3, 6
|
||||
|
|
|
@ -358,6 +358,11 @@ _TeaDescription::
|
|||
next "quenching thirst."
|
||||
prompt
|
||||
|
||||
_SilphLetterDescription::
|
||||
text "A LETTER from"
|
||||
next "the SILPH CHIEF."
|
||||
prompt
|
||||
|
||||
_HM01Description::
|
||||
text "Cuts using claws,"
|
||||
next "scythes, etc."
|
||||
|
|
|
@ -187,9 +187,9 @@ DebugPikachuEevee:
|
|||
jr .loop
|
||||
|
||||
DebugPikachuEeveeShows:
|
||||
db HS_DAMIEN ; Charmander guy
|
||||
db HS_VERMILION_JENNY ; Squirtle
|
||||
db -1 ; end
|
||||
db HS_DAMIEN ; Charmander guy
|
||||
db HS_VERMILION_JENNY ; Squirtle
|
||||
db -1 ; end
|
||||
|
||||
DebugSetPokedexEntries:
|
||||
ld b, wPokedexOwnedEnd - wPokedexOwned
|
||||
|
@ -203,6 +203,7 @@ DebugSetPokedexEntries:
|
|||
|
||||
DebugItemsList:
|
||||
db MASTER_BALL, 99
|
||||
db SILPHLETTER, 1
|
||||
db MYSTERY_BOX, 1
|
||||
db CANDY_JAR, 1
|
||||
db BICYCLE, 1
|
||||
|
|
|
@ -111,6 +111,7 @@ ItemUsePtrTable:
|
|||
dw ItemUseEvoStone ; METAL_COAT
|
||||
dw ItemUseMysteryBox ; MYSTERY_BOX
|
||||
dw UnusableItem ; TEA
|
||||
dw ItemUseLetter ; SILPHLETTER
|
||||
dw UnusableItem ; FLOOR_B2F
|
||||
dw UnusableItem ; FLOOR_B1F
|
||||
dw UnusableItem ; FLOOR_1F
|
||||
|
@ -126,6 +127,16 @@ ItemUsePtrTable:
|
|||
dw UnusableItem ; FLOOR_11F
|
||||
dw UnusableItem ; FLOOR_14F
|
||||
|
||||
ItemUseLetter:
|
||||
text_asm
|
||||
ld hl, ChiefLetterText
|
||||
call PrintText
|
||||
jp TextScriptEnd
|
||||
|
||||
ChiefLetterText:
|
||||
text_far _ChiefLetterText
|
||||
text_end
|
||||
|
||||
ItemUseMysteryBox:
|
||||
; Mystery Box can't be used in battle.
|
||||
ld a, [wIsInBattle]
|
||||
|
|
|
@ -202,6 +202,8 @@ ItemDescriptionPointers:
|
|||
text_end
|
||||
text_far _TeaDescription
|
||||
text_end
|
||||
text_far _SilphLetterDescription
|
||||
text_end
|
||||
text_far _HM01Description
|
||||
text_end
|
||||
text_far _HM02Description
|
||||
|
|
|
@ -117,7 +117,7 @@ MainMenu:
|
|||
ld a, [wCurMap] ; map ID
|
||||
cp HALL_OF_FAME
|
||||
jp nz, SpecialEnterMap
|
||||
xor a
|
||||
ld a, REDS_HOUSE_2F
|
||||
ld [wDestinationMap], a
|
||||
ld hl, wd732
|
||||
set 2, [hl] ; fly warp or dungeon warp
|
||||
|
|
|
@ -1991,7 +1991,8 @@ wPalletTownCurScript:: db
|
|||
wCitrineRocketHouseCurScript:: db
|
||||
wBluesHouseCurScript:: db
|
||||
wViridianCityCurScript:: db
|
||||
ds 2
|
||||
wRedsHouse1FCurScript:: db
|
||||
ds 1
|
||||
wPewterCityCurScript:: db
|
||||
wRoute3CurScript:: db
|
||||
wRoute4CurScript:: db
|
||||
|
|
|
@ -43,7 +43,8 @@ HallofFameRoomScript2:
|
|||
ResetEventRange INDIGO_PLATEAU_EVENTS_START, INDIGO_PLATEAU_EVENTS_END, 1
|
||||
xor a
|
||||
ld [wHallOfFameCurScript], a
|
||||
ld a, PALLET_TOWN
|
||||
ld hl, FirstMapSpec
|
||||
ld a, [hli]
|
||||
ld [wLastBlackoutMap], a
|
||||
farcall SaveSAVtoSRAM
|
||||
ld b, 5
|
||||
|
|
|
@ -1,5 +1,79 @@
|
|||
RedsHouse1F_Script:
|
||||
jp EnableAutoTextBoxDrawing
|
||||
call EnableAutoTextBoxDrawing
|
||||
ld hl, RedsHouse1F_ScriptPointers
|
||||
ld a, [wRedsHouse1FCurScript]
|
||||
jp CallFunctionInTable
|
||||
|
||||
RedsHouse1F_ScriptPointers:
|
||||
dw ChiefLetter1
|
||||
dw ChiefLetter2
|
||||
|
||||
ChiefLetter1:
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED
|
||||
jr z, .done
|
||||
CheckEvent EVENT_LETTER_RECEIVED
|
||||
jr nz, .done
|
||||
; with the way this is being done, coords will be unnecessary.
|
||||
; this will trigger the minute you enter the house.
|
||||
ld a, PLAYER_DIR_DOWN
|
||||
ld [wPlayerMovingDirection], a
|
||||
call UpdateSprites ; idk most movement scripts use this fsr
|
||||
call PlayerSeeMom ; Show a cute little emotion bubble from the player.
|
||||
jr MovePlayer ; Now kick the player upstairs. If you do this any other way, the game freaks out (eg. constant emotion bubbles, rsts)
|
||||
.done
|
||||
ret
|
||||
|
||||
MovePlayer:
|
||||
ld a, $ff ; Firstly...
|
||||
ld [wJoyIgnore], a ; No joypad inputs. No funny business. RLE is weird as fuck without it.
|
||||
ld hl, wSimulatedJoypadStatesEnd
|
||||
ld de, PlayerSeeMom_RLEMovement
|
||||
call DecodeRLEList
|
||||
dec a
|
||||
ld [wSimulatedJoypadStatesIndex], a
|
||||
call StartSimulatingJoypadStates ; By this point, we're auto-moving.
|
||||
ld a, $1 ; Now...
|
||||
ld [wRedsHouse1FCurScript], a ; Get kicked up another flight to ChiefLetter2.
|
||||
ld [wCurMapScript], a ; Safety.
|
||||
ret
|
||||
|
||||
ChiefLetter2:
|
||||
ld a, [wSimulatedJoypadStatesIndex] ; This ties up the loose ends with the RLE.
|
||||
and a
|
||||
ret nz
|
||||
call Delay3 ; Next...
|
||||
|
||||
xor a ; Now...
|
||||
ld [wJoyIgnore], a ; The player needs to be able to mash A.
|
||||
ld a, $1 ; Load Mom's NPC ID
|
||||
ldh [hSpriteIndex], a ; Slap it in the index
|
||||
ld a, SPRITE_FACING_RIGHT ; Get this ready
|
||||
ldh [hSpriteFacingDirection], a ; Now she'll face right, simulatiung talking to her.
|
||||
call SetSpriteFacingDirectionAndDelay ; Get this all out.
|
||||
call DisplayTextID ; Display her text ID, using the same thing from before.
|
||||
; We did a little tomfoolery with her base text to make this work. Look below if you dare.
|
||||
|
||||
ld a, $0 ; Anyway, kick the player back downstairs so the script can ret z for the rest of time.
|
||||
ld [wRedsHouse1FCurScript], a
|
||||
ld [wCurMapScript], a ; aaand safety.
|
||||
ret
|
||||
|
||||
PlayerSeeMom:
|
||||
ld c, 10
|
||||
call DelayFrames
|
||||
|
||||
ld [wEmotionBubbleSpriteIndex], a
|
||||
xor a ; EXCLAMATION_BUBBLE
|
||||
ld [wWhichEmotionBubble], a
|
||||
predef EmotionBubble
|
||||
ld c, 20
|
||||
call DelayFrames
|
||||
ret
|
||||
|
||||
PlayerSeeMom_RLEMovement:
|
||||
db D_LEFT, 1
|
||||
db D_DOWN, 3
|
||||
db -1 ; end
|
||||
|
||||
RedsHouse1F_TextPointers:
|
||||
dw RedsHouse1FMomText
|
||||
|
@ -7,6 +81,13 @@ RedsHouse1F_TextPointers:
|
|||
|
||||
RedsHouse1FMomText:
|
||||
text_asm
|
||||
CheckEvent EVENT_POST_GAME_ATTAINED ; If the player hasn't got to the post game, we should never deal with this terribleness.
|
||||
jr z, .normalProcessing ; So go to normal processing. Also if you go to debug without the post-game and letter events set up then this will loop infinitely. Please be reasonable.
|
||||
CheckEvent EVENT_FUCK ; If some bozo triggers this I am going to be shocked.
|
||||
jr nz, .bagWasFullButIsntNow ; No, seriously, you have to beat the Elite Four with a full bag. Ain't that a challenge?
|
||||
CheckEvent EVENT_LETTER_RECEIVED ; Anyway, this was hell to debug. Let's go through the post-game together.
|
||||
jr z, .letterSequence; This was all done so DisplayTextID could be used to get around a ton of bullshit.
|
||||
.normalProcessing
|
||||
ld a, [wd72e]
|
||||
bit 3, a ; received a Pokémon from Oak?
|
||||
jr nz, .heal
|
||||
|
@ -15,6 +96,48 @@ RedsHouse1FMomText:
|
|||
jr .done
|
||||
.heal
|
||||
call MomHealPokemon
|
||||
jr .done
|
||||
.letterSequence ; Look I know this code is cursed as fuck just bear with me
|
||||
SetEvent EVENT_LETTER_RECEIVED ; Firstly, set the letter event
|
||||
ld hl, MomYoureBack
|
||||
call PrintText
|
||||
lb bc, SILPHLETTER, 1 ; Alright, let's try to give the letter over.
|
||||
call GiveItem ; Attempt is made.
|
||||
jr nc, .bag_full ; If this triggers, you are a demented psychopath who needs to touch grass.
|
||||
jr .LetterCanBeReceived ; If you're not weird, you can get it. Doing it this way saves a few instructions above.
|
||||
.bag_full ; Psycho zone.
|
||||
ld hl, MomBagFull
|
||||
call PrintText
|
||||
SetEvent EVENT_FUCK ; Set the funny event that I really wish I didn't need to have set up.
|
||||
jr .done
|
||||
.stillHavent ; Giga psycho zone. You get here if you still haven't sorted out your bag.
|
||||
ld hl, MomBagStillFull
|
||||
call PrintText
|
||||
jr .done
|
||||
.bagWasFullButIsntNow ; So now, if the weird kid has finally done their bag, we can progress.
|
||||
ld hl, MomSavedIt
|
||||
call PrintText
|
||||
lb bc, SILPHLETTER, 1 ; We do this twice as otherwise it's a jr nightmare I don't want to debug
|
||||
call GiveItem
|
||||
jr nc, .stillHavent ; If they think they're smart, tough, it's a loop.
|
||||
; Otherwise, fallthrough
|
||||
.LetterCanBeReceived ; Jump here when getting the letter is possible.
|
||||
ld hl, ReceivedChiefLetterText ; So now they get their letter.
|
||||
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.
|
||||
ld hl, ChiefLetterText
|
||||
call PrintText
|
||||
ld a, [wSimulatedJoypadStatesEnd] ; ensuring that the text doesn't autoskip. again. i tried making it a func but it got funky.
|
||||
and a ; yep, here too.
|
||||
call z, WaitForTextScrollButtonPress ; and here.
|
||||
call EnableAutoTextBoxDrawing ; and here.
|
||||
ld hl, MomAmazing
|
||||
call PrintText
|
||||
ResetEvent EVENT_FUCK ; Anyway, unset this and never deal with it again. This resets mom to her normal state.
|
||||
; fallthrough
|
||||
.done
|
||||
jp TextScriptEnd
|
||||
|
||||
|
@ -70,3 +193,34 @@ StandByMeText:
|
|||
TVWrongSideText:
|
||||
text_far _TVWrongSideText
|
||||
text_end
|
||||
|
||||
; Post-Game stuff here.
|
||||
|
||||
ChiefLetterText:
|
||||
text_far _ChiefLetterText
|
||||
text_end
|
||||
|
||||
MomYoureBack:
|
||||
text_far _MomYoureBack
|
||||
text_end
|
||||
|
||||
ReceivedChiefLetterText:
|
||||
text_far _ReceivedChiefLetterText
|
||||
sound_get_item_1
|
||||
text_end
|
||||
|
||||
MomAmazing:
|
||||
text_far _MomAmazing
|
||||
text_end
|
||||
|
||||
MomBagFull:
|
||||
text_far _MomBagFull
|
||||
text_end
|
||||
|
||||
MomSavedIt:
|
||||
text_far _MomSavedIt
|
||||
text_end
|
||||
|
||||
MomBagStillFull:
|
||||
text_far _MomBagStillFull
|
||||
text_end
|
||||
|
|
|
@ -1,9 +1,37 @@
|
|||
Route1_Script:
|
||||
jp EnableAutoTextBoxDrawing
|
||||
;ld hl, Route1_ScriptPointers
|
||||
call EnableAutoTextBoxDrawing
|
||||
ld hl, Route1_ScriptPointers
|
||||
ld a, [wRoute1CurScript]
|
||||
jp CallFunctionInTable
|
||||
|
||||
Route1_ScriptPointers:
|
||||
dw Route1Script0
|
||||
dw OakVibeCheck
|
||||
|
||||
Route1Script0:
|
||||
ret ; yeah it's just a switch-off. shush.
|
||||
|
||||
OakVibeCheck:
|
||||
SetEvent EVENT_BEAT_OAK_ONCE ; This is set every time, but it doesn't matter, it sticks at 1 anyway.
|
||||
CheckEvent EVENT_RECEIVED_CITRINE_PASS ; Before we do, has the player got the pass?
|
||||
jr nz, .skip ; Yes? Now we go to auto-ret.
|
||||
jr OakFirstWin ; Otherwise, move to the first win script to set that up.
|
||||
.skip
|
||||
ld a, $0
|
||||
ld [wRoute1CurScript], a
|
||||
ret
|
||||
|
||||
OakFirstWin:
|
||||
CheckEvent EVENT_RECEIVED_CITRINE_PASS
|
||||
jr nz, .skip
|
||||
ld a, $3
|
||||
ldh [hSpriteIndex], a
|
||||
call DisplayTextID
|
||||
.skip
|
||||
ld a, $0
|
||||
ld [wRoute1CurScript], a
|
||||
ret
|
||||
|
||||
Route1_TextPointers:
|
||||
dw Route1Text1
|
||||
dw Route1Text2
|
||||
|
@ -60,10 +88,19 @@ Route1Text3:
|
|||
; text
|
||||
Route1OakText:
|
||||
text_asm
|
||||
ld hl, OakBeforeBattleText
|
||||
CheckEvent EVENT_BEAT_OAK_ONCE ; But if they've not beaten Oak, we need something else.
|
||||
jr z, .skip ; So if they have, skip the next command.
|
||||
CheckEvent EVENT_RECEIVED_CITRINE_PASS ; This is used for DisplayTextID. Is checked when Oak has been beaten once.
|
||||
jp z, OakReceivePass
|
||||
.skip
|
||||
CheckEvent EVENT_BEAT_OAK_ONCE ; I am like, 99.9% sure there's another way to do this.
|
||||
ld hl, OakFirstBattleText ; Load this only if the Citrine Pass hasn't been obtained yet.
|
||||
jr z, .skip2
|
||||
ld hl, OakBeforeBattleText ; If he's been beaten before, load the usual prebattle text
|
||||
.skip2
|
||||
call PrintText
|
||||
|
||||
call YesNoChoice
|
||||
call YesNoChoice ; Do they want in?
|
||||
ld a, [wCurrentMenuItem]
|
||||
and a
|
||||
jr nz, .refused
|
||||
|
@ -86,40 +123,80 @@ Route1OakText:
|
|||
cp STARTER2
|
||||
jr nz, .NotSquirtle
|
||||
ld a, $2 ; If Charmander, Venusaur
|
||||
jr .done
|
||||
jr .battleSetup
|
||||
.NotSquirtle
|
||||
cp STARTER3
|
||||
jr nz, .Charmander
|
||||
ld a, $3 ; If Bulbasaur, Totartle
|
||||
jr .done
|
||||
jr .battleSetup
|
||||
.Charmander
|
||||
cp STARTER1
|
||||
jr nz, .Pikachu
|
||||
ld a, $1 ; If Squirtle, Charizard
|
||||
jr .done
|
||||
jr .battleSetup
|
||||
.Pikachu
|
||||
cp STARTER4
|
||||
jr nz, .Eevee
|
||||
ld a, $4 ; If Pikachu, all 3
|
||||
jr .done
|
||||
jr .battleSetup
|
||||
.Eevee
|
||||
ld a, $5 ; If Eevee, also all 3
|
||||
jr .done
|
||||
jr .battleSetup
|
||||
.refused
|
||||
ld hl, OakNo
|
||||
call PrintText
|
||||
jp TextScriptEnd
|
||||
.done
|
||||
jr .done
|
||||
.battleSetup
|
||||
ld [wTrainerNo], a
|
||||
ld a, 1
|
||||
ld [wIsTrainerBattle], a
|
||||
|
||||
ld a, $2
|
||||
ld [wRoute1CurScript], a
|
||||
|
||||
ld hl, OakDefeatedText
|
||||
ld de, OakWonText
|
||||
call SaveEndBattleTextPointers
|
||||
|
||||
ld a, $1
|
||||
ld [wRoute1CurScript], a
|
||||
.done
|
||||
jp TextScriptEnd
|
||||
|
||||
OakReceivePass:
|
||||
CheckEvent EVENT_FUCK ; This is for if the player is stupid
|
||||
jp nz, .tryAgain
|
||||
ld hl, OakFirstWinText
|
||||
call PrintText
|
||||
lb bc, CITRINE_PASS, 1
|
||||
call GiveItem
|
||||
jr nc, .bagFull
|
||||
jr .getPass
|
||||
.tryAgain
|
||||
ld hl, OakTryAgain
|
||||
call PrintText
|
||||
lb bc, CITRINE_PASS, 1
|
||||
call GiveItem
|
||||
jr nc, .bagStillFull
|
||||
jr .getPass
|
||||
.bagFull
|
||||
ld hl, OakBagFull
|
||||
call PrintText
|
||||
SetEvent EVENT_FUCK
|
||||
jr .done
|
||||
.bagStillFull
|
||||
ld hl, OakBagStillFull
|
||||
call PrintText
|
||||
jr .done
|
||||
.getPass
|
||||
ld hl, ReceivedCitrinePassText
|
||||
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.
|
||||
ld hl, OakCitrineExplain
|
||||
call PrintText
|
||||
SetEvent EVENT_RECEIVED_CITRINE_PASS
|
||||
; fallthrough
|
||||
.done
|
||||
jp TextScriptEnd
|
||||
|
||||
OakBeforeBattleText:
|
||||
|
@ -140,4 +217,33 @@ OakYes:
|
|||
|
||||
OakNo:
|
||||
text_far _OakNo
|
||||
text_end
|
||||
text_end
|
||||
|
||||
OakFirstBattleText:
|
||||
text_far _OakFirstBattleText
|
||||
text_end
|
||||
|
||||
OakFirstWinText:
|
||||
text_far _OakFirstWin
|
||||
text_end
|
||||
|
||||
ReceivedCitrinePassText:
|
||||
text_far _ReceivedCitrinePassText
|
||||
sound_get_item_2
|
||||
text_end
|
||||
|
||||
OakCitrineExplain:
|
||||
text_far _OakCitrineExplain
|
||||
text_end
|
||||
|
||||
OakTryAgain:
|
||||
text_far _OakTryAgain
|
||||
text_end
|
||||
|
||||
OakBagFull:
|
||||
text_far _OakBagFull
|
||||
text_end
|
||||
|
||||
OakBagStillFull:
|
||||
text_far _OakBagStillFull
|
||||
text_end
|
||||
|
|
|
@ -35,3 +35,98 @@ _StandByMeText::
|
|||
_TVWrongSideText::
|
||||
text "Oops, wrong side."
|
||||
done
|
||||
|
||||
_MomYoureBack::
|
||||
text "MOM: <PLAYER>!"
|
||||
line "Good morning!"
|
||||
|
||||
para "I'm so proud of"
|
||||
line "you, dear! You've"
|
||||
cont "grown so much!"
|
||||
|
||||
para "Oh! I nearly"
|
||||
line "forgot..."
|
||||
|
||||
para "I received this"
|
||||
line "letter from SILPH"
|
||||
cont "CO. What does it"
|
||||
cont "say?"
|
||||
prompt
|
||||
|
||||
; I want the letter text to play when we use the letter, so it's gonna be like this.
|
||||
_ReceivedChiefLetterText::
|
||||
text "<PLAYER> received"
|
||||
line "the @"
|
||||
text_ram wStringBuffer
|
||||
text "!@"
|
||||
text_end
|
||||
|
||||
_ChiefLetterText::
|
||||
text "Dear <PLAYER>!"
|
||||
line "You are cordially"
|
||||
cont "invited to my"
|
||||
cont "greatest event!"
|
||||
|
||||
para "I call it...the"
|
||||
line "SILPH GAUNTLET!"
|
||||
|
||||
para "I have called the"
|
||||
line "greatest TRAINERs"
|
||||
cont "in all of KANTO!"
|
||||
|
||||
para "Stronger than even" ; A sneaky trick - we can fit 18 characters, they just mess up the arrow.
|
||||
line "the ELITE FOUR!" ; Thus, the para avoids the visual artefacting.
|
||||
|
||||
para "You will come to"
|
||||
line "SILPH CO., yes?"
|
||||
|
||||
para "See you then!"
|
||||
line " - CHIEF"
|
||||
prompt
|
||||
|
||||
_MomAmazing::
|
||||
text "Oh! Isn't this"
|
||||
line "amazing, sweetie?"
|
||||
|
||||
para "I'm sure you'll do"
|
||||
line "great!"
|
||||
|
||||
para "By the way, PROF."
|
||||
line "OAK was looking"
|
||||
cont "for you. He said"
|
||||
cont "he would be on"
|
||||
cont "ROUTE 1."
|
||||
|
||||
para "I wonder why..."
|
||||
done
|
||||
|
||||
_MomBagFull::
|
||||
text "Oh, your BAG is"
|
||||
line "full! You must"
|
||||
cont "have had such an"
|
||||
cont "adventure!"
|
||||
|
||||
para "Go upstairs and"
|
||||
line "sort it out. I" ; Made me smile making this GSC mom reference.
|
||||
cont "kept your room"
|
||||
cont "tidy!"
|
||||
done
|
||||
|
||||
_MomSavedIt::
|
||||
text "Did you sort out"
|
||||
line "your BAG?"
|
||||
|
||||
para "You're just like"
|
||||
line "when you were"
|
||||
cont "ready to go!"
|
||||
|
||||
para "Anyway, here's the"
|
||||
line "the LETTER. What"
|
||||
cont "does it say?"
|
||||
prompt
|
||||
|
||||
_MomBagStillFull::
|
||||
text "Silly! It's still"
|
||||
line "full! Go on, sort"
|
||||
cont "it out!"
|
||||
done
|
||||
|
|
112
text/Route1.asm
112
text/Route1.asm
|
@ -49,17 +49,19 @@ _Route1Text3::
|
|||
cont "VIRIDIAN CITY"
|
||||
done
|
||||
|
||||
_OakBeforeBattleText::
|
||||
text "OAK: Oh, my!"
|
||||
_OakFirstBattleText::
|
||||
text "OAK: Ah, yes!"
|
||||
line "<PLAYER>!"
|
||||
|
||||
para "It seems you"
|
||||
line "caught me during"
|
||||
cont "during my lunch"
|
||||
cont "hour!"
|
||||
para "Good to see you!"
|
||||
|
||||
para "<PLAYER>, you"
|
||||
line "have truly come"
|
||||
cont "into your own!"
|
||||
para "The last time we"
|
||||
line "met here, you"
|
||||
cont "didn't even have"
|
||||
cont "your first"
|
||||
cont "#MON..."
|
||||
|
||||
para "Anyway! <PLAYER>!"
|
||||
|
||||
para "Your #MON"
|
||||
line "LEAGUE challenge"
|
||||
|
@ -71,7 +73,18 @@ _OakBeforeBattleText::
|
|||
para "How about we"
|
||||
line "spar a bit?"
|
||||
cont "What say you?"
|
||||
done
|
||||
|
||||
_OakBeforeBattleText::
|
||||
text "OAK: Oh, my!"
|
||||
|
||||
para "It seems you"
|
||||
line "caught me during"
|
||||
cont "during my lunch"
|
||||
cont "hour!"
|
||||
|
||||
para "Did you come for"
|
||||
line "a rematch?"
|
||||
done
|
||||
|
||||
_OakDefeatedText::
|
||||
|
@ -82,19 +95,86 @@ _OakDefeatedText::
|
|||
prompt
|
||||
|
||||
_OakWonText::
|
||||
text "Back in my day,"
|
||||
line "I was a serious"
|
||||
cont "TRAINER!"
|
||||
text "I still"
|
||||
line "have it!"
|
||||
prompt
|
||||
|
||||
_OakYes::
|
||||
text "Back in my day,"
|
||||
line "I was a serious"
|
||||
cont "TRAINER! Prepare"
|
||||
cont "yourself, <PLAYER>!"
|
||||
cont "yourself!"
|
||||
prompt
|
||||
|
||||
_OakNo::
|
||||
text "Maybe another"
|
||||
line "time!"
|
||||
done
|
||||
text "Another time,"
|
||||
line "then?"
|
||||
done
|
||||
|
||||
_OakFirstWin::
|
||||
text "OAK: I thought you"
|
||||
line "would fight more"
|
||||
cont "like AGATHA, but I"
|
||||
cont "see myself in"
|
||||
cont "you..."
|
||||
|
||||
para "It reminds me of"
|
||||
line "the old days..."
|
||||
|
||||
para "But, now is not"
|
||||
line "the time for"
|
||||
cont "that."
|
||||
|
||||
para "<PLAYER>!"
|
||||
line "I have a gift for"
|
||||
cont "you."
|
||||
prompt
|
||||
|
||||
_ReceivedCitrinePassText::
|
||||
text "<PLAYER> received"
|
||||
line "the @"
|
||||
text_ram wStringBuffer
|
||||
text "!@"
|
||||
text_end
|
||||
|
||||
_OakCitrineExplain::
|
||||
text "This is a ticket"
|
||||
line "to CITRINE CITY."
|
||||
|
||||
para "It's a place where"
|
||||
line "the best TRAINERs"
|
||||
cont "go to become far"
|
||||
cont "stronger."
|
||||
|
||||
para "Some strange BIRD"
|
||||
line "#MON will come"
|
||||
cont "to roost there,"
|
||||
cont "but they are so"
|
||||
cont "fast and vicious,"
|
||||
cont "few can even get"
|
||||
cont "close to them..."
|
||||
|
||||
para "Perhaps you can"
|
||||
line "make history once"
|
||||
cont "again!"
|
||||
done
|
||||
|
||||
_OakTryAgain::
|
||||
text "OAK: Ok! Have you"
|
||||
line "made room in your"
|
||||
cont "BAG?"
|
||||
prompt
|
||||
|
||||
_OakBagFull::
|
||||
text "Ah! Your BAG is"
|
||||
line "full. Go back to"
|
||||
cont "your house and"
|
||||
cont "make room!"
|
||||
done
|
||||
|
||||
_OakBagStillFull::
|
||||
text "Ohoho, not so"
|
||||
line "fast! It's still"
|
||||
cont "full. Your PC can"
|
||||
cont "store items, yes?"
|
||||
done
|
||||
|
|
Loading…
Reference in a new issue