Finish Chief, bug fixes

This finishes Chief's event, with all the necessary components for the post-game Mewtwo fight sorted as well. I added an event the Master Ball sets for modular monologue text, for improved immersion.

I have also fixed some bugs;
- Fixed the oft-reported walking in trees bug in the Forest tileset.
- Fixed the Oak's lab computer issue by just...removing the computer. I made the map symmetrical instead, feels a lot better to look at, at least for me. I think it was meant to have an event on it or something, but I couldn't find anything, felt like I was being gaslit.
- Hopefully fixed the issue with the border blocks going weird after saving and resetting, by making the tileset directly point to the gym one, which Oak is meant to use. I am not sure how that glitch happened for ViWalls.
- Fixed the Viridian Pre-Gym text scrolling issue.

I still cannot replicate the crash bugs that some people have been experiencing and don't see anything that could be causing it.

I also changed Trampel in Victory Road to Steelix, as mentioned by Gogocrafter.
This commit is contained in:
Llinos Evans 2023-07-27 14:39:24 +01:00
parent 5cf0a7930e
commit 47f2683d85
17 changed files with 162 additions and 46 deletions

View file

@ -14,7 +14,8 @@
const EVENT_BEAT_OAK_ONCE const EVENT_BEAT_OAK_ONCE
const EVENT_BEAT_JACKY const EVENT_BEAT_JACKY
const EVENT_GOT_MANSION_GIFT const EVENT_GOT_MANSION_GIFT
const_skip 11 const EVENT_USED_MASTER_BALL ; Used to determine Chief's dialogue in the end-game.
const_skip 10
const EVENT_GOT_TOWN_MAP const EVENT_GOT_TOWN_MAP
const EVENT_ENTERED_BLUES_HOUSE const EVENT_ENTERED_BLUES_HOUSE
const EVENT_DAISY_WALKING const EVENT_DAISY_WALKING

View file

@ -1,2 +1,2 @@
map_header OaksLab, OAKS_LAB, DOJO, 0 map_header OaksLab, OAKS_LAB, GYM, 0
end_map_header end_map_header

View file

@ -3,8 +3,8 @@ RedsHouse2F_Object:
def_warp_events def_warp_events
warp_event 7, 1, REDS_HOUSE_1F, 3 warp_event 7, 1, REDS_HOUSE_1F, 3
;warp_event 5, 1, SILPH_GAUNTLET_7F, 1 ; - Test Chief warp_event 5, 1, SILPH_GAUNTLET_7F, 1 ; - Test Chief
warp_event 5, 1, SILPH_CO_11F, 2 ; - Test J&J, Omega, & Giovanni. To test the Omega refight, change to SHOW in hide/show data, and set warp ID to 1. ;warp_event 5, 1, SILPH_CO_11F, 2 ; - Test J&J, Omega, & Giovanni. To test the Omega refight, change to SHOW in hide/show data, and set warp ID to 1.
;warp_event 5, 1, ROCKET_HIDEOUT_B4F, 2 ; - Test Giovanni 1 ;warp_event 5, 1, ROCKET_HIDEOUT_B4F, 2 ; - Test Giovanni 1
;warp_event 5, 1, MT_MOON_SQUARE, 1 ; - Test Shop, NPCs, and Crater ;warp_event 5, 1, MT_MOON_SQUARE, 1 ; - Test Shop, NPCs, and Crater
;warp_event 5, 1, CELESTE_HILL, 1 ; - Test GMolt ;warp_event 5, 1, CELESTE_HILL, 1 ; - Test GMolt

View file

@ -10,6 +10,7 @@ SaffronCity_Object:
warp_event 18, 21, SILPH_CO_1F, 1 warp_event 18, 21, SILPH_CO_1F, 1
warp_event 9, 29, SAFFRON_POKECENTER, 1 warp_event 9, 29, SAFFRON_POKECENTER, 1
warp_event 29, 29, MR_PSYCHICS_HOUSE, 1 warp_event 29, 29, MR_PSYCHICS_HOUSE, 1
warp_event 18, 22, SILPH_GAUNTLET_7F, 1 ; Not actually usable. Used as a target for the warp in the gauntlet.
def_bg_events def_bg_events
bg_event 17, 5, 16 ; SaffronCityText16 bg_event 17, 5, 16 ; SaffronCityText16

View file

@ -2,9 +2,12 @@ SilphGauntlet7F_Object:
db $d ; border block db $d ; border block
def_warp_events def_warp_events
warp_event 5, 6, SAFFRON_CITY, 1 warp_event 5, 6, SAFFRON_CITY, 9
def_bg_events def_bg_events
bg_event 2, 2, 2 ; Chief's PC
bg_event 2, 0, 3 ; Chief's first painting
bg_event 8, 0, 4 ; Chief's second painting
def_object_events def_object_events
object_event 5, 1, SPRITE_SILPH_PRESIDENT, STAY, DOWN, 1 ; person object_event 5, 1, SPRITE_SILPH_PRESIDENT, STAY, DOWN, 1 ; person

View file

@ -24,7 +24,7 @@ Gym_Coll::
coll_tiles $11, $16, $19, $2b, $3c, $3d, $3f, $4a, $4c, $4d, $03 coll_tiles $11, $16, $19, $2b, $3c, $3d, $3f, $4a, $4c, $4d, $03
Forest_Coll:: Forest_Coll::
coll_tiles $1e, $20, $2e, $30, $34, $37, $39, $3a, $40, $51, $52, $5a, $5c, $5e, $5f, $00, $30 coll_tiles $1e, $20, $2e, $30, $34, $37, $39, $3a, $40, $51, $52, $5a, $5c, $5e, $5f, $30
House_Coll:: House_Coll::
coll_tiles $01, $12, $14, $28, $32, $37, $44, $54, $5c coll_tiles $01, $12, $14, $28, $32, $37, $44, $54, $5c

View file

@ -1,7 +1,7 @@
VictoryRoad1FWildMons: VictoryRoad1FWildMons:
def_grass_wildmons 15 ; encounter rate def_grass_wildmons 15 ; encounter rate
db 34, MACHOKE db 34, MACHOKE
db 36, RHYDON db 36, STEELIX
db 32, GOLBAT db 32, GOLBAT
db 36, SANDSLASH db 36, SANDSLASH
db 39, SANDSLASH db 39, SANDSLASH

View file

@ -1,7 +1,7 @@
VictoryRoad2FWildMons: VictoryRoad2FWildMons:
def_grass_wildmons 10 ; encounter rate def_grass_wildmons 10 ; encounter rate
db 32, MACHOKE db 32, MACHOKE
db 34, TRAMPEL db 34, STEELIX
db 36, GOLBAT db 36, GOLBAT
db 36, SANDSLASH db 36, SANDSLASH
db 39, SANDSLASH db 39, SANDSLASH

View file

@ -1,7 +1,7 @@
VictoryRoad3FWildMons: VictoryRoad3FWildMons:
def_grass_wildmons 15 ; encounter rate def_grass_wildmons 15 ; encounter rate
db 34, MACHOKE db 34, MACHOKE
db 36, TRAMPEL db 36, STEELIX
db 32, GOLBAT db 32, GOLBAT
db 42, SANDSLASH db 42, SANDSLASH
db 40, VENOMOTH db 40, VENOMOTH

View file

@ -172,7 +172,16 @@ ItemUseBall:
and a and a
jp z, ItemUseNotTime jp z, ItemUseNotTime
; By this point, the Master Ball is possible to use.
; This changes Chief's dialogue in the end-game.
ld hl, wcf91 ; Get item ID
ld a, [hl] ; Ayup
cp MASTER_BALL ; Is it the Master Ball fam?
jr nz, .masterBallSkip ; Aye?
SetEvent EVENT_USED_MASTER_BALL ; Aye.
; Balls can't catch trainers' Pokémon. ; Balls can't catch trainers' Pokémon.
.masterBallSkip ; Get kicked over here if it's not.
dec a dec a
jp nz, ThrowBallAtTrainerMon jp nz, ThrowBallAtTrainerMon

Binary file not shown.

View file

@ -1 +1 @@
ehhghhhkijijmnmnhhhhhh hhhghhhijijmnmnhhhhhh

View file

@ -13,16 +13,22 @@ ResetChiefScript:
ret ret
SilphGauntlet7F_ScriptPointers: SilphGauntlet7F_ScriptPointers:
;dw ChiefScript0
dw ChiefScript1 dw ChiefScript1
dw ChiefScript2 dw ChiefScript2
dw ChiefScript3 dw ChiefScript3
dw ChiefScript10 dw ChiefScript4
ChiefScript0: ; this is used in the champion script but it doesn't seem to be needed here.
ret
ChiefScript1: ChiefScript1:
CheckEvent EVENT_BEAT_CHIEF
jr nz, .skip
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
call UpdateSprites
jr MovePlayerToChief
.skip
ret
MovePlayerToChief:
ld a, $ff ld a, $ff
ld [wJoyIgnore], a ld [wJoyIgnore], a
ld hl, wSimulatedJoypadStatesEnd ld hl, wSimulatedJoypadStatesEnd
@ -31,8 +37,9 @@ ChiefScript1:
dec a dec a
ld [wSimulatedJoypadStatesIndex], a ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates call StartSimulatingJoypadStates
ld a, $2 ld a, $1
ld [wSilphGauntlet7FCurScript], a ld [wSilphGauntlet7FCurScript], a
ld [wCurMapScript], a
ret ret
ChiefEntrance_RLEMovement: ChiefEntrance_RLEMovement:
@ -45,15 +52,16 @@ ChiefScript2:
ret nz ret nz
call Delay3 call Delay3
xor a xor a
ld [wJoyIgnore], a ld [wJoyIgnore], a
ld hl, wOptions ld hl, wOptions
res 7, [hl] ; Turn on battle animations like with Blue res 7, [hl] ; Turn on battle animations like with Blue
;ld a, $1
;ldh [hSpriteIndexOrTextID], a
;call DisplayTextID
ld hl, ChiefText1 ld a, $1
call PrintText ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $2
ld [wSilphGauntlet7FCurScript], a
ret ret
ChiefScript3: ChiefScript3:
@ -72,18 +80,24 @@ ChiefScript3:
ld a, $1 ld a, $1
ldh [hSpriteIndex], a ldh [hSpriteIndex], a
call SetSpriteMovementBytesToFF call SetSpriteMovementBytesToFF
ld a, $4 ld a, $3
ld [wSilphGauntlet7FCurScript], a ld [wSilphGauntlet7FCurScript], a
jp TextScriptEnd jp TextScriptEnd
ChiefScript10: ChiefScript4:
ld a, [wSimulatedJoypadStatesIndex] ld a, [wSimulatedJoypadStatesIndex]
and a and a
ret nz ret nz
xor a xor a
ld [wJoyIgnore], a ld [wJoyIgnore], a
; Grant Mewtwo access
ld a, HS_CERULEAN_CAVE_GUY
ld [wMissableObjectIndex], a
predef HideObject
ld a, $0 ld a, $0
ld [wChampionsRoomCurScript], a ld [wSilphGauntlet7FCurScript], a
ret ret
ChiefScript_That_Seems_Needed: ChiefScript_That_Seems_Needed:
@ -96,16 +110,28 @@ ChiefScript_That_Seems_Needed:
SilphGauntlet7F_TextPointers: SilphGauntlet7F_TextPointers:
dw ChiefText1 dw ChiefText1
; dw ChiefText2 dw ChiefPC
dw ChiefPainting1
dw ChiefPainting2
ChiefText1: ChiefText1:
text_asm text_asm
CheckEvent EVENT_BEAT_CHIEF CheckEvent EVENT_BEAT_CHIEF ; Check if Chief was beaten
ld hl, ChiefAfterBattleText jr nz, .chiefBeaten ; If Chief has been beaten, skip the trainer loading
jr z, .printText ; standard processing
ld hl, ChiefMonologue ld hl, ChiefMonologue
.printText
call PrintText 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.
CheckEvent EVENT_USED_MASTER_BALL ; Check if the Master Ball has been used.
ld hl, ChiefMonologueMasterBallNotUsed ; Load not used by default.
jr z, .masterBallSkip ; In which case, we can skip.
ld hl, ChiefMonologueMasterBallUsed ; If you get here, it's been used.
.masterBallSkip ; Now if it's been used, fall through to here.
call PrintText ; Now print the text.
ld c, BANK(Music_MeetEvilTrainer) ld c, BANK(Music_MeetEvilTrainer)
ld a, MUSIC_MEET_EVIL_TRAINER ld a, MUSIC_MEET_EVIL_TRAINER
@ -125,12 +151,26 @@ ChiefText1:
ld hl, ChiefDefeatedText ld hl, ChiefDefeatedText
ld de, ChiefVictoryText ld de, ChiefVictoryText
call SaveEndBattleTextPointers call SaveEndBattleTextPointers
jr .done
.chiefBeaten
ld hl, ChiefAfterBattleText
call PrintText
; fallthrough
.done
jp TextScriptEnd jp TextScriptEnd
ChiefMonologue: ChiefMonologue:
text_far _ChiefMonologue text_far _ChiefMonologue
text_end text_end
ChiefMonologueMasterBallUsed:
text_far _ChiefMonologueMasterBallUsed
text_end
ChiefMonologueMasterBallNotUsed:
text_far _ChiefMonologueMasterBallNotUsed
text_end
ChiefDefeatedText: ChiefDefeatedText:
text_far _ChiefDefeatedText text_far _ChiefDefeatedText
text_end text_end
@ -143,6 +183,21 @@ ChiefAfterBattleText:
text_far _ChiefAfterBattleText text_far _ChiefAfterBattleText
text_end text_end
ChiefPC:
text_far _ChiefPCText
text_end
ChiefPainting1:
text_far _ChiefPainting1
text_end
ChiefPainting2:
text_far _ChiefPainting2
text_end
; Originally, Chief was going to give you the Candy Jar.
; But this would relegate Melmetal to the post-game, which feels wrong.
; Instead, he gives you access to Mewtwo.
;ChiefText2: ;ChiefText2:
; text_asm ; text_asm
; CheckEvent EVENT_GOT_CANDY_JAR ; CheckEvent EVENT_GOT_CANDY_JAR
@ -182,5 +237,3 @@ ChiefAfterBattleText:
;CandyJarNoRoomText: ;CandyJarNoRoomText:
; text_far _CandyJarNoRoomText ; text_far _CandyJarNoRoomText
; text_end ; text_end
; text_end

View file

@ -16,12 +16,10 @@ _CeladonUniversityInsideText2::
done done
_CeladonUniversityInsideText3:: _CeladonUniversityInsideText3::
text "Tremors keep" text "It's a paper"
line "happening in" line "speculating on"
cont "VICTORY ROAD." cont "the idea of a"
cont "man-made #MON."
para "WESTWOOD, can you"
line "meet me at SILPH?"
done done

View file

@ -58,6 +58,11 @@ _TM46ExplanationText::
line "It uses powerful" line "It uses powerful"
cont "psychic waves to" cont "psychic waves to"
cont "inflict damage!" cont "inflict damage!"
para "Also..."
para "I sense a ship has" ; This is the use for the badge now, no?
line "returned for you."
done done
_TM46NoRoomText:: _TM46NoRoomText::

View file

@ -22,19 +22,39 @@ _ChiefMonologue::
cont "GIOVANNI gone," cont "GIOVANNI gone,"
cont "our company is" cont "our company is"
cont "going under!" cont "going under!"
prompt
para "Now there's only" _ChiefMonologueMasterBallNotUsed::
text "Now there's only"
line "one way to catch" line "one way to catch"
cont "MEWTWO, and it's" cont "MEWTWO, and it's"
cont "in your hands!" cont "in your hands!"
para "<PLAYER>! Give me" para "<PLAYER>!"
line "that BALL!"
para "Give me that BALL!"
prompt
_ChiefMonologueMasterBallUsed::
text "...what? You used"
line "the MASTER BALL?!"
para "You stupid child!"
line "I can't believe"
cont "this!"
para "Argh..."
para "<PLAYER>!"
line "You...you..." ; Trying to emphasise rage. I think this is the best we can get.
para "You are in for"
line "a world of hurt!" ; Like Giovanni, but with a slightly more pompous tone in using "hurt".
prompt prompt
_ChiefDefeatedText:: _ChiefDefeatedText::
text "CHIEF: No!" text "No! I..."
line "I...I..." line "I..."
prompt prompt
_ChiefVictoryText:: _ChiefVictoryText::
@ -49,8 +69,8 @@ _ChiefAfterBattleText::
cont "GIOVANNI has to" cont "GIOVANNI has to"
cont "be stronger than" cont "be stronger than"
cont "me. No product" cont "me. No product"
cont "I have can" cont "I have is capable"
cont "trounce you." cont "of trouncing you."
para "I wanted to make" para "I wanted to make"
line "an ultimate BALL" line "an ultimate BALL"
@ -73,3 +93,29 @@ _ChiefAfterBattleText::
done done
_ChiefPCText::
text "It's a PC with"
line "blueprints for"
cont "OMEGA!"
para "It was meant"
line "for..."
para "The CELADON GAME"
line "CORNER?!"
done
_ChiefPainting1::
text "It's a painting"
line "of an unknown"
cont "#MON."
para "It's small and"
line "has large feet."
done
_ChiefPainting2::
text "It's a picture"
line "of GYAOON, an"
cont "extinct #MON!"
done

View file

@ -149,7 +149,7 @@ _ViridianPreGymSign3::
line "after battles." line "after battles."
para "It can also be" para "It can also be"
cont "cured by swapping" line "cured by swapping"
cont "your #MON during" cont "your #MON during"
cont "the battle!" cont "the battle!"
done done