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:
Llinos Evans 2023-07-05 17:59:21 +01:00
parent e932c39ed4
commit 6ba59391c1
8 changed files with 90 additions and 61 deletions

View file

@ -212,13 +212,10 @@ Known Bugs
- Only portions of spinner tiles animate.
- Occasionally, menu text sets itself to scroll.
- 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..?)
- Dome and Wing Fossils in Rock Tunnel B1F don't show properly.
- Pokedex does not load a full dex properly due to a soft limit of 248.
- 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).
- HP DV does not appear to display correctly.
- 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.
- HP DV does not appear to display correctly in the viewer.
Evolution Methods for new Pokemon
====

View file

@ -25,10 +25,10 @@
; Viridian City events
const_next $28
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_1
const EVENT_GOT_TM42
const EVENT_BEAT_YUJIROU
const_skip 11
const EVENT_OAK_GOT_PARCEL
const EVENT_GOT_OAKS_PARCEL

View file

@ -6,18 +6,17 @@ ViridianPreGym_Object:
warp_event 4, 13, LAST_MAP, 7
def_bg_events
bg_event 2, 7, 7 ; League poster
bg_event 4, 0, 8 ; Trainer Tips 1
bg_event 5, 0, 9 ; Trainer Tips 2
bg_event 8, 6, 10 ; PC
bg_event 3, 7, 11 ; Rhydon Statue
bg_event 6, 7, 12 ; Rhydon Statue
bg_event 2, 7, 6 ; League poster
bg_event 4, 0, 7 ; Trainer Tips 1
bg_event 5, 0, 8 ; Trainer Tips 2
bg_event 8, 6, 9 ; PC
bg_event 3, 7, 10 ; Rhydon Statue
bg_event 6, 7, 11 ; Rhydon Statue
def_object_events
object_event 5, 2, SPRITE_YOUNGSTER, STAY, NONE, 1 ; person, Yujirou
object_event 5, 2, SPRITE_YOUNGSTER, STAY, NONE, 2 ; person, Yujirou 2
object_event 6, 9, SPRITE_GIRL, STAY, LEFT, 4, OPP_STUDENT, 1 ; person, Trainer 1
object_event 3, 8, SPRITE_GIRL, STAY, RIGHT, 5, OPP_STUDENT, 2 ; person, Trainer 2
object_event 1, 6, SPRITE_GYM_GUIDE, STAY, DOWN, 6 ; person
object_event 6, 9, SPRITE_GIRL, STAY, LEFT, 1, OPP_STUDENT, 1 ; person, Trainer 1
object_event 3, 8, SPRITE_GIRL, STAY, RIGHT, 2, OPP_STUDENT, 2 ; person, Trainer 2
object_event 5, 2, SPRITE_YOUNGSTER, STAY, NONE, 3 ; person, Yujirou
object_event 1, 6, SPRITE_GYM_GUIDE, STAY, DOWN, 5 ; person
def_warps_to VIRIDIAN_PRE_GYM

View file

@ -111,13 +111,13 @@ SpriteSets:
; SPRITESET_VERMILION
db SPRITE_BEAUTY
db SPRITE_OFFICER_JENNY
db SPRITE_SUPER_NERD
db SPRITE_YOUNGSTER
db SPRITE_GAMBLER
db SPRITE_MONSTER
db SPRITE_GUARD
db SPRITE_SAILOR
db SPRITE_OFFICER_JENNY
db SPRITE_COOLTRAINER_F
db SPRITE_COOLTRAINER_M
db SPRITE_POKE_BALL
db SPRITE_CAT

View file

@ -53,7 +53,7 @@ IF DEF(_DEBUG)
; Set BeautyChoice to GROWLITHE to test the other choice.
ld a, 5
ld [wBeautyCounter], a
ld a, MEOWTH
ld a, GROWLITHE
ld [wBeautyChoice], a
; Test Post-Game Functionality.

View file

@ -525,13 +525,15 @@ PassRefuse:
; 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.
; 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.
; This code is kind of schizophrenic but it does the job.
; Meowth = Arcanine
; 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:
text_asm
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.
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 nz, .eventInProgress ; Small if false.
; Let us start the game.
.eventStart
ld hl, BeautyText1 ; Let's open the text.
call PrintText
call CatsDogsChoice
ld a, [wCurrentMenuItem] ; Let's load what they picked. 0 is cats, 1 is dogs.
and a
jr nz, .getArcanine ; Skip storing Growlithe if dogs.
@ -559,23 +561,27 @@ VermilionBeauty:
ld a, MEOWTH
.skip ; Now we land here.
ld [wBeautyChoice], a ; Finally store the choice in wBeautyChoice.
ld hl, BeautyText2 ; Now spit it out.
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 [wd11e], a
call GetMonName
ld hl, BeautyChoice
call PrintText
jr .done ; no give pokemon. bad.
; Now if the event is finished, she needs to hand the Pokemon over.
.eventIsFinished
call SaveScreenTilesToBuffer1 ; saves us from some corruption disasters if nicknaming.
ld hl, BeautyFinish1
ld a, [wBeautyChoice]
ld [wd11e], a
call GetMonName
ld hl, BeautyFinish
cp GROWLITHE
jr z, .skip2
ld hl, BeautyFinish2
.skip2
call PrintText
ld a, [wSimulatedJoypadStatesEnd] ; ensuring that the text doesn't autoskip.
and a ; yep, here too.
@ -583,27 +589,32 @@ VermilionBeauty:
call EnableAutoTextBoxDrawing ; and here. GivePokemon is very hasty.
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.
cp PERSIAN ; Do they? If yes, skip.
jr z, .skip2 ; electric boogaloo
cp GROWLITHE ; Do they? If yes, skip.
jr z, .skip3 ; electric boogaloo
lb bc, ARCANINE, 16 ; ok but skip2 means arc never gets loaded in. very good sequel. disney would NEVER.
.skip2
.skip3
call GivePokemon
jr nc, .done
call LoadScreenTilesFromBuffer1 ; saves us from some corruption disasters if nicknaming.
SetEvent EVENT_VERMILION_BEAUTY_DONE ; and now we can finally rest.
ld hl, wd72e
set 0, [hl]
.done
jp TextScriptEnd
jr .done
; This needs to be separate for reasons I refuse to elaborate on for fear of angering God.
BeautyDone:
text_asm
; Now if it's already been said and done, we go here.
; Due to man-made horrors beyond my comprehension, we need to split the text here.
.beautyDone
ld hl, BeautyExplain1
ld a, [wBeautyChoice]
ld [wd11e], a
call GetMonName
ld hl, BeautyExplain
cp GROWLITHE
jr z, .skip4
ld hl, BeautyExplain2
.skip4
call PrintText
ld hl, BeautyExplainCont
call PrintText
;fallthrough
.done
jp TextScriptEnd
; displays cats/dogs choice
@ -637,10 +648,22 @@ BeautyChoice:
text_far _BeautyChoice
text_end
BeautyFinish:
text_far _BeautyFinish
BeautyFinish1:
text_far _BeautyFinish1
text_end
BeautyExplain:
text_far _BeautyExplain
BeautyFinish2:
text_far _BeautyFinish2
text_end
BeautyExplain1:
text_far _BeautyExplain1
text_end
BeautyExplain2:
text_far _BeautyExplain2
text_end
BeautyExplainCont:
text_far _BeautyExplainCont
text_end

View file

@ -32,10 +32,10 @@ YujirouHasBeenBeaten:
jp ViridianPreGymResetScripts
ViridianPreGym_TextPointers:
dw YujirouText
dw YujirouHasBeenBeaten
dw ViridianPreGymText1
dw ViridianPreGymText2
dw YujirouText
dw YujirouHasBeenBeaten
dw ViridianPreGymGuide
dw ViridianPreGymSign1
dw ViridianPreGymSign2
@ -45,7 +45,7 @@ ViridianPreGym_TextPointers:
dw ViridianPreGymStatue2
ViridianPreGymTrainerHeaders:
def_trainers 3
def_trainers
ViridianPreGymTrainerHeader0:
trainer EVENT_BEAT_VIRIDIAN_PREGYM_TRAINER_0, 3, ViridianPreGymBattleText1, ViridianPreGymEndBattleText1, ViridianPreGymAfterBattleText1
ViridianPreGymTrainerHeader1:
@ -98,9 +98,9 @@ YujirouText:
ld de, YujirouWinText
call SaveEndBattleTextPointers
call EngageMapTrainer
ld a, OPP_BROCK
ld a, OPP_YUJIROU
ld [wCurOpponent], a
ld a, 9
ld a, 2
ld [wTrainerNo], a
ld a, 1
ld [wIsTrainerBattle], a

View file

@ -199,20 +199,30 @@ _BeautyChoice:: ; this is separate for the in-progress event.
para "See you then!"
done
_BeautyFinish::
_BeautyFinish1:: ; I hate this, but it has to be this way. wBeautyChoice refuses to work.
text "Oh! You've caught"
line "5 "
text_ram wcd6d
text "!"
prompt
line "5 GROWLITHE!"
done
_BeautyExplain::
text "When "
text_ram wcd6d
_BeautyFinish2::
text "Oh! You've caught"
line "5 MEOWTH!"
done
_BeautyExplain1::
text "When MEOWTH"
line "evolves, it will"
cont "look like this."
para "Hm? Why did I"
prompt
_BeautyExplain2::
text "When GROWLITHE"
line "evolves, it will"
cont "look like this."
prompt
_BeautyExplainCont::
text "Hm? Why did I"
line "make you catch"
cont "the opposite"
cont "#MON?"