BIG changes to postgame island

- Properly adds Brunswick Grotto, as well as Celeste Hill Outside and Celeste Hill Cave
- Citrine City received a minor redesign, putting the path to Brunswick Trail more to the west
- Added complete event for Galarian Zapdos as well as an encounterable, but unfinished Galarian Moltres, so all 3 birds can currently be caught
This commit is contained in:
Martha Schilling 2023-06-17 20:36:01 +01:00
parent 5279e8a06e
commit f9d6534bcf
34 changed files with 208 additions and 299 deletions

View file

@ -1,44 +1,26 @@
BrunswickGrotto_Script:
jp EnableAutoTextBoxDrawing
BrunswickGrotto_TextPointers:
dw GZapFound
dw GalarianZapdosText
dw BrunswickSign
call EnableAutoTextBoxDrawing
ld hl, BrunswickGrottoTrainerHeaders
ld de, BrunswickGrotto_ScriptPointers
ld a, [wBrunswickGrottoCurScript]
call ExecuteCurMapScriptInTable
ld [wBrunswickGrottoCurScript], a
ret
BrunswickGrotto_ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
BrunswickGrottoTrainerHeaders:
def_trainers
GalarianZapdosTrainerHeader:
trainer EVENT_BEAT_ZAPDOSG, 0, GZapBattleText, GZapBattleText, GZapBattleText
db -1
GZapFound:
text_asm
ld hl, BirdTextCall
call PrintText
ld a, ZAPDOS
call PlayCry
call WaitForSoundToFinish
ld a, $ff
ld [wJoyIgnore], a
call GBFadeOutToBlack
ld a, HS_BRUNSWICK_ZAPDOS_G_1
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_BRUNSWICK_ZAPDOS_G_2
ld [wMissableObjectIndex], a
predef ShowObject
call UpdateSprites
call Delay3
call GBFadeInFromBlack
ld a, 0
ld [wJoyIgnore], a
ld hl, GZapRunText
call PrintText
jp TextScriptEnd
BrunswickGrotto_TextPointers:
dw GalarianZapdosText
dw BrunswickSign
GalarianZapdosText:
text_asm
@ -49,24 +31,14 @@ GalarianZapdosText:
GZapBattleText:
text_far _BirdBattleText
text_asm
ld a, ZAPDOS
ld a, ZAPDOS_G
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
GZapRunText:
text "It ran off"
line "somewhere..."
prompt
text_end
BirdTextCall:
text_far _BirdBattleText
text_end
BrunswickSign:
text "GROTTO BIRD"
line "WATCHING"
text "BRUNSWICK"
line "BIRDWATCHING"
para "The sign is"
line "covered in"

View file

@ -15,7 +15,7 @@ BrunswickTrail_ScriptPointers:
BrunswickTrail_TextPointers:
dw FakeTreeEvent
dw ZapdosGuy
dw GalarianZapdosText
dw GZapFound
BrunswickTrailTrainerHeaders:
def_trainers
@ -75,4 +75,37 @@ CactusBattleText:
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
GZapFound:
text_asm
ld hl, BirdTextCall
call PrintText
ld a, ZAPDOS_G
call PlayCry
call WaitForSoundToFinish
ld a, $ff
ld [wJoyIgnore], a
call GBFadeOutToBlack
ld a, HS_BRUNSWICK_ZAPDOS_G_1
ld [wMissableObjectIndex], a
predef HideObject
call UpdateSprites
call Delay3
call GBFadeInFromBlack
ld a, 0
ld [wJoyIgnore], a
ld hl, GZapRunText
call PrintText
jp TextScriptEnd
GZapRunText:
text "It ran off"
line "somewhere..."
prompt
text_end
BirdTextCall:
text_far _BirdBattleText
text_end

View file

@ -1,171 +1,46 @@
CelesteHill_Script:
call EnableAutoTextBoxDrawing
ld hl, CelesteHill_ScriptPointers
ld hl, CelesteHillTrainerHeaders
ld de, CelesteHill_ScriptPointers
ld a, [wCelesteHillCurScript]
jp CallFunctionInTable
call ExecuteCurMapScriptInTable
ld [wCelesteHillCurScript], a
ret
CelesteHill_ScriptPointers:
dw GalarianBirdScript1
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
CelesteHillCoords1:
dbmapcoord 13, 8
db -1 ; end
GalarianBirdScript1:
; CheckEvent EVENT_BIRDS_FOUND
; jr nz, .done
ld hl, CelesteHillCoords1
call ArePlayerCoordsInArray
jp nc, .done
ld [wJoyIgnore], a
SetEvent EVENT_BIRDS_FOUND
ld a, ARTICUNO_G
call PlayCry
ld a, $1
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call WaitForSoundToFinish
pop hl
ld de, BirdSprite
ld hl, vNPCSprites
lb bc, BANK(BirdSprite), $0c
call CopyVideoData
farcall LoadBirdSpriteGraphics
ld a, SFX_FLY
call PlaySound
ld hl, wFlyAnimUsingCoordList
xor a ; is using coord list
ld [hli], a ; wFlyAnimUsingCoordList
ld a, 12
ld [hli], a ; wFlyAnimCounter
ld [hl], $8 ; wFlyAnimBirdSpriteImageIndex (facing right)
xor a ; is using coord list
ld [hli], a ; wFlyAnimUsingCoordList
ld a, $c
ld [hli], a ; wFlyAnimCounter
ld [hl], $c ; wFlyAnimBirdSpriteImageIndex (facing right)
ld de, GalarianArticunoFlyScreenCoords1
call GalarianArticunoFlyLoop
ld c, 40
call DelayFrames
ld hl, wFlyAnimCounter
ld a, 11
ld [hli], a ; wFlyAnimCounter
ld [hl], $8 ; wFlyAnimBirdSpriteImageIndex (facing left)
ld de, GalarianArticunoFlyScreenCoords2
call GalarianArticunoFlyLoop
ld a, HS_CELESTE_ARTICUNO_G
ld [wMissableObjectIndex], a
predef ShowObject
ld a, ZAPDOS_G
call PlayCry
call ZapdosRunThrough ; something breaks here. i do not know what.
ld a, HS_CELESTE_ZAPDOS_G
ld [wMissableObjectIndex], a
predef ShowObject
; ld a, $1
; ldh [hSpriteIndex], a
; call SetSpriteMovementBytesToFF
; ld a, [wXCoord]
jr .done
.done
ret
; DoFlyAnimation clone, but for Articuno.
GalarianArticunoFlyLoop:
ld a, [wFlyAnimBirdSpriteImageIndex]
xor $1 ; make the bird flap its wings
ld [wFlyAnimBirdSpriteImageIndex], a
ld [wSprite03StateData1ImageIndex], a
call Delay3
ld a, [wFlyAnimUsingCoordList]
cp $ff
jr z, .skipCopyingCoords ; if the bird is flapping its wings in place
ld hl, wSprite03StateData1YPixels
ld a, [de]
inc de
ld [hli], a ; y
inc hl
ld a, [de]
inc de
ld [hl], a ; x
.skipCopyingCoords
ld a, [wFlyAnimCounter]
dec a
ld [wFlyAnimCounter], a
jr nz, GalarianArticunoFlyLoop
ret
; Clones of the initial part of the Fly animation.
GalarianArticunoFlyScreenCoords1:
; y, x pairs
db $06, $0B ; 6, 11 $3C, $48
db $3C, $50
db $3B, $58
db $3A, $60
db $39, $68
db $37, $70
db $37, $78
db $33, $80
db $30, $88
db $2D, $90
db $2A, $98
db $27, $A0
GalarianArticunoFlyScreenCoords2:
db $1A, $90
db $19, $80
db $17, $70
db $15, $60
db $12, $50
db $0F, $40
db $0C, $30
db $09, $20
db $05, $10
db $00, $00
db $F0, $00
; This function currently causes the game to crash. It happens right as GZap walks towards the player.
; Interestingly, this happens after a single step. I have tried dividing this, but it doesn't seem to help.
; Could be worth cutting the event entirely.
ZapdosRunThrough:
call Delay3
ld a, $2
ldh [hSpriteIndex], a
ld de, GalarianZapdosMovement
call MoveSprite
ret
GalarianZapdosMovement:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1
; CelesteHillCoords1:
; dbmapcoord 11, 9
; db -1 ; end
CelesteHill_TextPointers:
dw CelesteHillGalarianBirdScreech
dw CelesteHillSign1
dw CelesteHillSign2
dw GalarianMoltresText
dw CelesteHillSign
CelesteHillGalarianBirdScreech:
text_far _CelesteHillGalarianBirdScreech
text_end
CelesteHillTrainerHeaders:
def_trainers
GalarianMoltresTrainerHeader:
trainer EVENT_BEAT_GALARIAN_MOLTRES, 0, GalarianMoltresBattleText, GalarianMoltresBattleText, GalarianMoltresBattleText
db -1 ; end
CelesteHillSign1:
text_far _CelesteHillSign1
text_end
CelesteHillSign2:
text_far _CelesteHillSign2
GalarianMoltresText:
text_asm
ld hl, GalarianMoltresTrainerHeader
call TalkToTrainer
jp TextScriptEnd
GalarianMoltresBattleText:
text_far _BirdBattleText
text_asm
ld a, MOLTRES_G
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
CelesteHillSign:
text_far _CelesteHillSign
text_end