mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-21 06:38:40 +13:00
Post-Playtest Bug Fixes
- Finishes the Vermilion Beauty event. One silly mistake involving the choice was fixed, and a workaround for wBeautyChoice failing in strange places implemented. Functionally the result I wanted. - Implemented the Yellow spriteset for Vermilion City with minor adaptations. Fixes that funny issue I found on stream. - Viridian Pre-Gym was fixed, reworking some events.
This commit is contained in:
parent
e932c39ed4
commit
6ba59391c1
8 changed files with 90 additions and 61 deletions
|
|
@ -212,13 +212,10 @@ Known Bugs
|
||||||
- Only portions of spinner tiles animate.
|
- Only portions of spinner tiles animate.
|
||||||
- Occasionally, menu text sets itself to scroll.
|
- Occasionally, menu text sets itself to scroll.
|
||||||
- The lone Rocket in Viridian Gym's basement needs to be directly spoken to to be battled.
|
- The lone Rocket in Viridian Gym's basement needs to be directly spoken to to be battled.
|
||||||
- Pokedex is very laggy during a playthrough, and seen/owned are being weird (possibly due to a change made when adding extra starters..?)
|
- Pokedex does not load a full dex properly due to a soft limit of 248.
|
||||||
- Dome and Wing Fossils in Rock Tunnel B1F don't show properly.
|
|
||||||
- The Tradeback Tutor doesn't work properly with Rhydon for reasons likely related to its index number of 1.
|
- The Tradeback Tutor doesn't work properly with Rhydon for reasons likely related to its index number of 1.
|
||||||
- The Vermilion Passes are very unstable (Faraway warps are weird unless you battle, Citrine outright crashes).
|
- The Vermilion Passes are very unstable (Faraway warps are weird unless you battle, Citrine outright crashes).
|
||||||
- HP DV does not appear to display correctly.
|
- HP DV does not appear to display correctly in the viewer.
|
||||||
- Vermilion Beauty gives the wrong Pokemon when cats are chosen, seems to be an issue with wBeautyChoice.
|
|
||||||
- GetMonName doesn't work properly for the Vermilion Beauty after receiving the Pokemon, jank ensues.
|
|
||||||
|
|
||||||
Evolution Methods for new Pokemon
|
Evolution Methods for new Pokemon
|
||||||
====
|
====
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,10 @@
|
||||||
; Viridian City events
|
; Viridian City events
|
||||||
const_next $28
|
const_next $28
|
||||||
const EVENT_VIRIDIAN_GYM_OPEN
|
const EVENT_VIRIDIAN_GYM_OPEN
|
||||||
const EVENT_GOT_TM42
|
|
||||||
const EVENT_BEAT_YUJIROU
|
|
||||||
const EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_0
|
const EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_0
|
||||||
const EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_1
|
const EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_1
|
||||||
|
const EVENT_GOT_TM42
|
||||||
|
const EVENT_BEAT_YUJIROU
|
||||||
const_skip 11
|
const_skip 11
|
||||||
const EVENT_OAK_GOT_PARCEL
|
const EVENT_OAK_GOT_PARCEL
|
||||||
const EVENT_GOT_OAKS_PARCEL
|
const EVENT_GOT_OAKS_PARCEL
|
||||||
|
|
|
||||||
|
|
@ -6,18 +6,17 @@ ViridianPreGym_Object:
|
||||||
warp_event 4, 13, LAST_MAP, 7
|
warp_event 4, 13, LAST_MAP, 7
|
||||||
|
|
||||||
def_bg_events
|
def_bg_events
|
||||||
bg_event 2, 7, 7 ; League poster
|
bg_event 2, 7, 6 ; League poster
|
||||||
bg_event 4, 0, 8 ; Trainer Tips 1
|
bg_event 4, 0, 7 ; Trainer Tips 1
|
||||||
bg_event 5, 0, 9 ; Trainer Tips 2
|
bg_event 5, 0, 8 ; Trainer Tips 2
|
||||||
bg_event 8, 6, 10 ; PC
|
bg_event 8, 6, 9 ; PC
|
||||||
bg_event 3, 7, 11 ; Rhydon Statue
|
bg_event 3, 7, 10 ; Rhydon Statue
|
||||||
bg_event 6, 7, 12 ; Rhydon Statue
|
bg_event 6, 7, 11 ; Rhydon Statue
|
||||||
|
|
||||||
def_object_events
|
def_object_events
|
||||||
object_event 5, 2, SPRITE_YOUNGSTER, STAY, NONE, 1 ; person, Yujirou
|
object_event 6, 9, SPRITE_GIRL, STAY, LEFT, 1, OPP_STUDENT, 1 ; person, Trainer 1
|
||||||
object_event 5, 2, SPRITE_YOUNGSTER, STAY, NONE, 2 ; person, Yujirou 2
|
object_event 3, 8, SPRITE_GIRL, STAY, RIGHT, 2, OPP_STUDENT, 2 ; person, Trainer 2
|
||||||
object_event 6, 9, SPRITE_GIRL, STAY, LEFT, 4, OPP_STUDENT, 1 ; person, Trainer 1
|
object_event 5, 2, SPRITE_YOUNGSTER, STAY, NONE, 3 ; person, Yujirou
|
||||||
object_event 3, 8, SPRITE_GIRL, STAY, RIGHT, 5, OPP_STUDENT, 2 ; person, Trainer 2
|
object_event 1, 6, SPRITE_GYM_GUIDE, STAY, DOWN, 5 ; person
|
||||||
object_event 1, 6, SPRITE_GYM_GUIDE, STAY, DOWN, 6 ; person
|
|
||||||
|
|
||||||
def_warps_to VIRIDIAN_PRE_GYM
|
def_warps_to VIRIDIAN_PRE_GYM
|
||||||
|
|
@ -111,13 +111,13 @@ SpriteSets:
|
||||||
|
|
||||||
; SPRITESET_VERMILION
|
; SPRITESET_VERMILION
|
||||||
db SPRITE_BEAUTY
|
db SPRITE_BEAUTY
|
||||||
|
db SPRITE_OFFICER_JENNY
|
||||||
db SPRITE_SUPER_NERD
|
db SPRITE_SUPER_NERD
|
||||||
db SPRITE_YOUNGSTER
|
db SPRITE_YOUNGSTER
|
||||||
db SPRITE_GAMBLER
|
db SPRITE_GAMBLER
|
||||||
db SPRITE_MONSTER
|
db SPRITE_MONSTER
|
||||||
db SPRITE_GUARD
|
|
||||||
db SPRITE_SAILOR
|
db SPRITE_SAILOR
|
||||||
db SPRITE_OFFICER_JENNY
|
db SPRITE_COOLTRAINER_F
|
||||||
db SPRITE_COOLTRAINER_M
|
db SPRITE_COOLTRAINER_M
|
||||||
db SPRITE_POKE_BALL
|
db SPRITE_POKE_BALL
|
||||||
db SPRITE_CAT
|
db SPRITE_CAT
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ IF DEF(_DEBUG)
|
||||||
; Set BeautyChoice to GROWLITHE to test the other choice.
|
; Set BeautyChoice to GROWLITHE to test the other choice.
|
||||||
ld a, 5
|
ld a, 5
|
||||||
ld [wBeautyCounter], a
|
ld [wBeautyCounter], a
|
||||||
ld a, MEOWTH
|
ld a, GROWLITHE
|
||||||
ld [wBeautyChoice], a
|
ld [wBeautyChoice], a
|
||||||
|
|
||||||
; Test Post-Game Functionality.
|
; Test Post-Game Functionality.
|
||||||
|
|
|
||||||
|
|
@ -525,13 +525,15 @@ PassRefuse:
|
||||||
; LGPE Beauty who gives you a Persian or Arcanine depending on the game.
|
; LGPE Beauty who gives you a Persian or Arcanine depending on the game.
|
||||||
; Here, we make it a Cats vs Dogs question and change based on that.
|
; Here, we make it a Cats vs Dogs question and change based on that.
|
||||||
; The way it works is it makes the player catch the opposite Pokemon, and then get the one they picked.
|
; The way it works is it makes the player catch the opposite Pokemon, and then get the one they picked.
|
||||||
; So Meowth gets Arcanine, and Growlithe gets Persian.
|
; Meowth = Arcanine
|
||||||
; This code is kind of schizophrenic but it does the job.
|
; Growlithe = Persian
|
||||||
|
; This code is nightmare fuel but it does the job.
|
||||||
|
; Basically, at some point, wBeautyChoice stops working for reasons scientists are still trying to figure out.
|
||||||
VermilionBeauty:
|
VermilionBeauty:
|
||||||
text_asm
|
text_asm
|
||||||
|
|
||||||
CheckEvent EVENT_VERMILION_BEAUTY_DONE ; First, check if the event is actually done.
|
CheckEvent EVENT_VERMILION_BEAUTY_DONE ; First, check if the event is actually done.
|
||||||
jp nz, BeautyDone ; Yes? Alright, no need for this.
|
jp nz, .beautyDone ; Yes? Alright, no need for this.
|
||||||
|
|
||||||
ld a, [wBeautyChoice] ; Next, we check if wBeautyChoice has been set. This saves an event constant.
|
ld a, [wBeautyChoice] ; Next, we check if wBeautyChoice has been set. This saves an event constant.
|
||||||
cp 0 ; It will never be 0 if the player has made their choice.
|
cp 0 ; It will never be 0 if the player has made their choice.
|
||||||
|
|
@ -545,11 +547,11 @@ VermilionBeauty:
|
||||||
jr z, .eventIsFinished ; Big if true.
|
jr z, .eventIsFinished ; Big if true.
|
||||||
jr nz, .eventInProgress ; Small if false.
|
jr nz, .eventInProgress ; Small if false.
|
||||||
|
|
||||||
|
; Let us start the game.
|
||||||
.eventStart
|
.eventStart
|
||||||
ld hl, BeautyText1 ; Let's open the text.
|
ld hl, BeautyText1 ; Let's open the text.
|
||||||
call PrintText
|
call PrintText
|
||||||
call CatsDogsChoice
|
call CatsDogsChoice
|
||||||
|
|
||||||
ld a, [wCurrentMenuItem] ; Let's load what they picked. 0 is cats, 1 is dogs.
|
ld a, [wCurrentMenuItem] ; Let's load what they picked. 0 is cats, 1 is dogs.
|
||||||
and a
|
and a
|
||||||
jr nz, .getArcanine ; Skip storing Growlithe if dogs.
|
jr nz, .getArcanine ; Skip storing Growlithe if dogs.
|
||||||
|
|
@ -559,23 +561,27 @@ VermilionBeauty:
|
||||||
ld a, MEOWTH
|
ld a, MEOWTH
|
||||||
.skip ; Now we land here.
|
.skip ; Now we land here.
|
||||||
ld [wBeautyChoice], a ; Finally store the choice in wBeautyChoice.
|
ld [wBeautyChoice], a ; Finally store the choice in wBeautyChoice.
|
||||||
|
|
||||||
ld hl, BeautyText2 ; Now spit it out.
|
ld hl, BeautyText2 ; Now spit it out.
|
||||||
call PrintText
|
call PrintText
|
||||||
|
|
||||||
.eventInProgress ; This is a jump point for if the event was already started.
|
; This is a jump point for if the event was already started.
|
||||||
|
.eventInProgress
|
||||||
ld a, [wBeautyChoice]
|
ld a, [wBeautyChoice]
|
||||||
ld [wd11e], a
|
ld [wd11e], a
|
||||||
call GetMonName
|
call GetMonName
|
||||||
ld hl, BeautyChoice
|
ld hl, BeautyChoice
|
||||||
call PrintText
|
call PrintText
|
||||||
jr .done ; no give pokemon. bad.
|
jr .done ; no give pokemon. bad.
|
||||||
|
|
||||||
|
; Now if the event is finished, she needs to hand the Pokemon over.
|
||||||
.eventIsFinished
|
.eventIsFinished
|
||||||
call SaveScreenTilesToBuffer1 ; saves us from some corruption disasters if nicknaming.
|
call SaveScreenTilesToBuffer1 ; saves us from some corruption disasters if nicknaming.
|
||||||
|
ld hl, BeautyFinish1
|
||||||
ld a, [wBeautyChoice]
|
ld a, [wBeautyChoice]
|
||||||
ld [wd11e], a
|
cp GROWLITHE
|
||||||
call GetMonName
|
jr z, .skip2
|
||||||
ld hl, BeautyFinish
|
ld hl, BeautyFinish2
|
||||||
|
.skip2
|
||||||
call PrintText
|
call PrintText
|
||||||
ld a, [wSimulatedJoypadStatesEnd] ; ensuring that the text doesn't autoskip.
|
ld a, [wSimulatedJoypadStatesEnd] ; ensuring that the text doesn't autoskip.
|
||||||
and a ; yep, here too.
|
and a ; yep, here too.
|
||||||
|
|
@ -583,27 +589,32 @@ VermilionBeauty:
|
||||||
call EnableAutoTextBoxDrawing ; and here. GivePokemon is very hasty.
|
call EnableAutoTextBoxDrawing ; and here. GivePokemon is very hasty.
|
||||||
lb bc, PERSIAN, 16 ; because we're elitists, let's see if they chose cats first.
|
lb bc, PERSIAN, 16 ; because we're elitists, let's see if they chose cats first.
|
||||||
ld a, [wBeautyChoice] ; *sigh*, but if they're dog lovers, let's make sure they actually want Persian.
|
ld a, [wBeautyChoice] ; *sigh*, but if they're dog lovers, let's make sure they actually want Persian.
|
||||||
cp PERSIAN ; Do they? If yes, skip.
|
cp GROWLITHE ; Do they? If yes, skip.
|
||||||
jr z, .skip2 ; electric boogaloo
|
jr z, .skip3 ; electric boogaloo
|
||||||
lb bc, ARCANINE, 16 ; ok but skip2 means arc never gets loaded in. very good sequel. disney would NEVER.
|
lb bc, ARCANINE, 16 ; ok but skip2 means arc never gets loaded in. very good sequel. disney would NEVER.
|
||||||
.skip2
|
.skip3
|
||||||
call GivePokemon
|
call GivePokemon
|
||||||
jr nc, .done
|
jr nc, .done
|
||||||
call LoadScreenTilesFromBuffer1 ; saves us from some corruption disasters if nicknaming.
|
call LoadScreenTilesFromBuffer1 ; saves us from some corruption disasters if nicknaming.
|
||||||
SetEvent EVENT_VERMILION_BEAUTY_DONE ; and now we can finally rest.
|
SetEvent EVENT_VERMILION_BEAUTY_DONE ; and now we can finally rest.
|
||||||
ld hl, wd72e
|
ld hl, wd72e
|
||||||
set 0, [hl]
|
set 0, [hl]
|
||||||
.done
|
jr .done
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
; This needs to be separate for reasons I refuse to elaborate on for fear of angering God.
|
; Now if it's already been said and done, we go here.
|
||||||
BeautyDone:
|
; Due to man-made horrors beyond my comprehension, we need to split the text here.
|
||||||
text_asm
|
.beautyDone
|
||||||
|
ld hl, BeautyExplain1
|
||||||
ld a, [wBeautyChoice]
|
ld a, [wBeautyChoice]
|
||||||
ld [wd11e], a
|
cp GROWLITHE
|
||||||
call GetMonName
|
jr z, .skip4
|
||||||
ld hl, BeautyExplain
|
ld hl, BeautyExplain2
|
||||||
|
.skip4
|
||||||
call PrintText
|
call PrintText
|
||||||
|
ld hl, BeautyExplainCont
|
||||||
|
call PrintText
|
||||||
|
;fallthrough
|
||||||
|
.done
|
||||||
jp TextScriptEnd
|
jp TextScriptEnd
|
||||||
|
|
||||||
; displays cats/dogs choice
|
; displays cats/dogs choice
|
||||||
|
|
@ -637,10 +648,22 @@ BeautyChoice:
|
||||||
text_far _BeautyChoice
|
text_far _BeautyChoice
|
||||||
text_end
|
text_end
|
||||||
|
|
||||||
BeautyFinish:
|
BeautyFinish1:
|
||||||
text_far _BeautyFinish
|
text_far _BeautyFinish1
|
||||||
text_end
|
text_end
|
||||||
|
|
||||||
BeautyExplain:
|
BeautyFinish2:
|
||||||
text_far _BeautyExplain
|
text_far _BeautyFinish2
|
||||||
|
text_end
|
||||||
|
|
||||||
|
BeautyExplain1:
|
||||||
|
text_far _BeautyExplain1
|
||||||
|
text_end
|
||||||
|
|
||||||
|
BeautyExplain2:
|
||||||
|
text_far _BeautyExplain2
|
||||||
|
text_end
|
||||||
|
|
||||||
|
BeautyExplainCont:
|
||||||
|
text_far _BeautyExplainCont
|
||||||
text_end
|
text_end
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,10 @@ YujirouHasBeenBeaten:
|
||||||
jp ViridianPreGymResetScripts
|
jp ViridianPreGymResetScripts
|
||||||
|
|
||||||
ViridianPreGym_TextPointers:
|
ViridianPreGym_TextPointers:
|
||||||
dw YujirouText
|
|
||||||
dw YujirouHasBeenBeaten
|
|
||||||
dw ViridianPreGymText1
|
dw ViridianPreGymText1
|
||||||
dw ViridianPreGymText2
|
dw ViridianPreGymText2
|
||||||
|
dw YujirouText
|
||||||
|
dw YujirouHasBeenBeaten
|
||||||
dw ViridianPreGymGuide
|
dw ViridianPreGymGuide
|
||||||
dw ViridianPreGymSign1
|
dw ViridianPreGymSign1
|
||||||
dw ViridianPreGymSign2
|
dw ViridianPreGymSign2
|
||||||
|
|
@ -45,7 +45,7 @@ ViridianPreGym_TextPointers:
|
||||||
dw ViridianPreGymStatue2
|
dw ViridianPreGymStatue2
|
||||||
|
|
||||||
ViridianPreGymTrainerHeaders:
|
ViridianPreGymTrainerHeaders:
|
||||||
def_trainers 3
|
def_trainers
|
||||||
ViridianPreGymTrainerHeader0:
|
ViridianPreGymTrainerHeader0:
|
||||||
trainer EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_0, 3, ViridianPreGymBattleText1, ViridianPreGymEndBattleText1, ViridianPreGymAfterBattleText1
|
trainer EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_0, 3, ViridianPreGymBattleText1, ViridianPreGymEndBattleText1, ViridianPreGymAfterBattleText1
|
||||||
ViridianPreGymTrainerHeader1:
|
ViridianPreGymTrainerHeader1:
|
||||||
|
|
@ -98,9 +98,9 @@ YujirouText:
|
||||||
ld de, YujirouWinText
|
ld de, YujirouWinText
|
||||||
call SaveEndBattleTextPointers
|
call SaveEndBattleTextPointers
|
||||||
call EngageMapTrainer
|
call EngageMapTrainer
|
||||||
ld a, OPP_BROCK
|
ld a, OPP_YUJIROU
|
||||||
ld [wCurOpponent], a
|
ld [wCurOpponent], a
|
||||||
ld a, 9
|
ld a, 2
|
||||||
ld [wTrainerNo], a
|
ld [wTrainerNo], a
|
||||||
ld a, 1
|
ld a, 1
|
||||||
ld [wIsTrainerBattle], a
|
ld [wIsTrainerBattle], a
|
||||||
|
|
|
||||||
|
|
@ -199,20 +199,30 @@ _BeautyChoice:: ; this is separate for the in-progress event.
|
||||||
para "See you then!"
|
para "See you then!"
|
||||||
done
|
done
|
||||||
|
|
||||||
_BeautyFinish::
|
_BeautyFinish1:: ; I hate this, but it has to be this way. wBeautyChoice refuses to work.
|
||||||
text "Oh! You've caught"
|
text "Oh! You've caught"
|
||||||
line "5 "
|
line "5 GROWLITHE!"
|
||||||
text_ram wcd6d
|
done
|
||||||
text "!"
|
|
||||||
prompt
|
|
||||||
|
|
||||||
_BeautyExplain::
|
_BeautyFinish2::
|
||||||
text "When "
|
text "Oh! You've caught"
|
||||||
text_ram wcd6d
|
line "5 MEOWTH!"
|
||||||
|
done
|
||||||
|
|
||||||
|
_BeautyExplain1::
|
||||||
|
text "When MEOWTH"
|
||||||
line "evolves, it will"
|
line "evolves, it will"
|
||||||
cont "look like this."
|
cont "look like this."
|
||||||
|
prompt
|
||||||
para "Hm? Why did I"
|
|
||||||
|
_BeautyExplain2::
|
||||||
|
text "When GROWLITHE"
|
||||||
|
line "evolves, it will"
|
||||||
|
cont "look like this."
|
||||||
|
prompt
|
||||||
|
|
||||||
|
_BeautyExplainCont::
|
||||||
|
text "Hm? Why did I"
|
||||||
line "make you catch"
|
line "make you catch"
|
||||||
cont "the opposite"
|
cont "the opposite"
|
||||||
cont "#MON?"
|
cont "#MON?"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue