From 0659fb1c658517059f8ba967a40771555487bd2c Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Sun, 9 Jul 2023 11:43:32 +0100 Subject: [PATCH] Finishing Silph Co. 11F That's a fair chunk out of my day... This commit finishes everything about Silph Co. 11F. DON'T. TOUCH IT. Unless there's a bug, but OTHERWISE, do NOT touch it. Holy shit. Here's everything featured; - Jessie and James fight, ported over. - Rocket grunt changed to the appointment one from the strange room on the other side that really shouldn't be there tbh - Omega fight now doesn't have the "watch out" text as I needed to do a micro-optimisation TRUST ME it was NECESSARY (it was not, in fact, necessary) - Giovanni now reuses Beedrill and has a generally stronger team, scaling with the fifth Rival fight. - Omega refight has been added after some toiling with the Team Rocket intro text that absolutely should not have happened but did for some reason AAA - Rocket trio text somewhat tweaked Oh and I ported over the balance patch on the stats, including some neo-Cryithan onboarding. --- constants/event_constants.asm | 5 +- constants/hide_show_constants.asm | 6 +- data/maps/hide_show_data.asm | 10 +- data/maps/objects/RedsHouse2F.asm | 4 +- data/maps/objects/SilphCo11F.asm | 8 +- data/pokemon/base_stats/bawligua.asm | 2 +- data/pokemon/base_stats/cryithan.asm | 4 +- data/pokemon/base_stats/gyaoon.asm | 2 +- data/pokemon/base_stats/omega.asm | 2 +- data/pokemon/base_stats/skimper.asm | 2 +- data/pokemon/base_stats/trampel.asm | 2 +- data/trainers/parties.asm | 8 +- data/trainers/scaled_parties.asm | 4 +- scripts/HallOfFame.asm | 20 +- scripts/SilphCo11F.asm | 567 +++++++++++++++++++++------ text/MtMoonB2F.asm | 8 +- text/SilphCo11F.asm | 21 +- 17 files changed, 514 insertions(+), 161 deletions(-) diff --git a/constants/event_constants.asm b/constants/event_constants.asm index e9b0b384..cb66e128 100644 --- a/constants/event_constants.asm +++ b/constants/event_constants.asm @@ -771,7 +771,10 @@ const_skip 5 const EVENT_BEAT_SILPH_CO_10F_TRAINER_0 const EVENT_BEAT_SILPH_CO_10F_TRAINER_1 - const_skip 5 + const_skip 2 + const EVENT_780 ; jessie and james + const EVENT_781 ; jessie and james + const EVENT_782 ; jessie and james const EVENT_SILPH_CO_10_UNLOCKED_DOOR const_skip 11 const EVENT_BEAT_SILPH_CO_11F_TRAINER_0 diff --git a/constants/hide_show_constants.asm b/constants/hide_show_constants.asm index 95f12011..a36dd943 100644 --- a/constants/hide_show_constants.asm +++ b/constants/hide_show_constants.asm @@ -199,9 +199,11 @@ DEF SHOW EQU $15 const HS_SILPH_CO_10F_ITEM_2 ; BA X best deck const HS_SILPH_CO_10F_ITEM_3 ; BB X const HS_SILPH_CO_11F_1 ; BC - const HS_SILPH_CO_11F_2 ; BD + const HS_SILPH_CO_11F_JAMES ; BD const HS_SILPH_CO_11F_3 ; BE + const HS_SILPH_CO_11F_JESSIE ; BD const HS_OMEGA ; BF + const HS_OMEGA_2 const HS_DRAGONITE ; C0 const HS_MOLTRES ; C1 const HS_POKEMON_MANSION_2F_ITEM ; C2 X @@ -260,5 +262,5 @@ DEF SHOW EQU $15 const HS_ROCK_TUNNEL_B1F_AMBER ; F8 const HS_ROCK_TUNNEL_B1F_WING ; F9 const HS_MT_MOON_CRATER_GUARD ; FA - const HS_DAYCARE_BULBASAUR ; FB + const HS_DAYCARE_BULBASAUR ; FB should be FD DEF NUM_HS_OBJECTS EQU const_value diff --git a/data/maps/hide_show_data.asm b/data/maps/hide_show_data.asm index 20e64e40..2bfe5e2d 100644 --- a/data/maps/hide_show_data.asm +++ b/data/maps/hide_show_data.asm @@ -522,10 +522,12 @@ SilphCo10FHS: db SILPH_CO_10F, $04, SHOW ; HS_SILPH_CO_10F_ITEM_1 db SILPH_CO_10F, $05, SHOW ; HS_SILPH_CO_10F_ITEM_2 SilphCo11FHS: - db SILPH_CO_11F, $03, SHOW ; HS_SILPH_CO_11F_1 - db SILPH_CO_11F, $04, SHOW ; HS_SILPH_CO_11F_2 - db SILPH_CO_11F, $05, SHOW ; HS_SILPH_CO_11F_3 - db SILPH_CO_11F, $06, SHOW ; HS_OMEGA + db SILPH_CO_11F, $03, SHOW ; Giovanni + db SILPH_CO_11F, $04, SHOW ; James + db SILPH_CO_11F, $05, SHOW ; Rocket + db SILPH_CO_11F, $06, SHOW ; James + db SILPH_CO_11F, $07, SHOW ; HS_OMEGA + db SILPH_CO_11F, $08, HIDE ; HS_OMEGA_2 UnderwaterTunnelHS: db UNDERWATER_TUNNEL, $01, SHOW ; HS_DRAGONITE CinnabarVolcanoHS: diff --git a/data/maps/objects/RedsHouse2F.asm b/data/maps/objects/RedsHouse2F.asm index aa3c0051..505a066a 100644 --- a/data/maps/objects/RedsHouse2F.asm +++ b/data/maps/objects/RedsHouse2F.asm @@ -4,12 +4,12 @@ RedsHouse2F_Object: def_warp_events warp_event 7, 1, REDS_HOUSE_1F, 3 ;warp_event 5, 1, SILPH_GAUNTLET_7F, 1 ; - Test Chief - ;warp_event 5, 1, SILPH_CO_11F, 1 ; - Test J&J, Omega, & Giovanni + 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, MT_MOON_SQUARE, 1 ; - Test Shop, NPCs, and Crater ;warp_event 5, 1, CELESTE_HILL, 1 ; - Test GMolt ;warp_event 5, 1, INDIGO_PLATEAU_LOBBY, 1 ; easy league access - warp_event 5, 1, GARNET_CAVERN_B1F, 1 ; Test GCuno + ;warp_event 5, 1, GARNET_CAVERN_B1F, 1 ; Test GCuno ;warp_event 5, 1, FARAWAY_ISLAND_INSIDE, 1 ; Test Mew def_bg_events diff --git a/data/maps/objects/SilphCo11F.asm b/data/maps/objects/SilphCo11F.asm index b3725e81..1ca5525f 100644 --- a/data/maps/objects/SilphCo11F.asm +++ b/data/maps/objects/SilphCo11F.asm @@ -13,8 +13,10 @@ SilphCo11F_Object: object_event 7, 5, SPRITE_SILPH_PRESIDENT, STAY, DOWN, 1 ; person object_event 10, 5, SPRITE_BEAUTY, STAY, DOWN, 2 ; person object_event 6, 9, SPRITE_GIOVANNI, STAY, DOWN, 3, OPP_GIOVANNI, 2 - object_event 3, 16, SPRITE_ROCKET, STAY, UP, 4, OPP_ROCKET, 41 - object_event 15, 9, SPRITE_ROCKET, STAY, UP, 5, OPP_ROCKET, 40 - object_event 6, 11, SPRITE_MONSTER, STAY, UP, 7, OMEGA, 45 | OW_POKEMON + object_event 2, 8, SPRITE_JAMES, STAY, UP, 4 + object_event 3, 16, SPRITE_ROCKET, STAY, UP, 5, OPP_ROCKET, 41 + object_event 3, 8, SPRITE_JESSIE, STAY, UP, 6 + object_event 6, 11, SPRITE_MONSTER, STAY, UP, 11, OMEGA, 45 | OW_POKEMON + object_event 15, 15, SPRITE_MONSTER, STAY, UP, 12, OMEGA, 75 | OW_POKEMON def_warps_to SILPH_CO_11F diff --git a/data/pokemon/base_stats/bawligua.asm b/data/pokemon/base_stats/bawligua.asm index aa7e61b2..6bf7bb3e 100644 --- a/data/pokemon/base_stats/bawligua.asm +++ b/data/pokemon/base_stats/bawligua.asm @@ -3,7 +3,7 @@ db 72, 53, 46, 98, 81 ; hp atk def spd spc - db WATER, WATER ; type + db DRAGON, DRAGON ; type db 45 ; catch rate db 144 ; base exp diff --git a/data/pokemon/base_stats/cryithan.asm b/data/pokemon/base_stats/cryithan.asm index b962733f..227f641c 100644 --- a/data/pokemon/base_stats/cryithan.asm +++ b/data/pokemon/base_stats/cryithan.asm @@ -1,9 +1,9 @@ db DEX_CRYITHAN ; pokedex id - db 92, 83, 76, 118, 101 + db 92, 93, 76, 108, 121 ; hp atk def spd spc - db WATER, DRAGON ; type + db DRAGON, DRAGON ; type db 9 ; catch rate db 210 ; base exp diff --git a/data/pokemon/base_stats/gyaoon.asm b/data/pokemon/base_stats/gyaoon.asm index 2c19c540..ce17d132 100644 --- a/data/pokemon/base_stats/gyaoon.asm +++ b/data/pokemon/base_stats/gyaoon.asm @@ -1,6 +1,6 @@ db DEX_GYAOON ; pokedex id - db 101, 110, 100, 30, 95 + db 101, 124, 100, 30, 95 ; hp atk def spd spc db ROCK, ROCK ; type diff --git a/data/pokemon/base_stats/omega.asm b/data/pokemon/base_stats/omega.asm index 5434dd26..69b5fc2c 100644 --- a/data/pokemon/base_stats/omega.asm +++ b/data/pokemon/base_stats/omega.asm @@ -1,6 +1,6 @@ db DEX_OMEGA ; pokedex id - db 101, 100, 120, 25, 95 + db 101, 106, 120, 25, 95 ; hp atk def spd spc db STEEL, STEEL ; type diff --git a/data/pokemon/base_stats/skimper.asm b/data/pokemon/base_stats/skimper.asm index 62273d2d..3f41e4b7 100644 --- a/data/pokemon/base_stats/skimper.asm +++ b/data/pokemon/base_stats/skimper.asm @@ -3,7 +3,7 @@ db 62, 43, 36, 88, 71 ; hp atk def spd spc - db WATER, WATER ; type + db DRAGON, DRAGON ; type db 60 ; catch rate db 67 ; base exp diff --git a/data/pokemon/base_stats/trampel.asm b/data/pokemon/base_stats/trampel.asm index 0df1c958..5596476c 100644 --- a/data/pokemon/base_stats/trampel.asm +++ b/data/pokemon/base_stats/trampel.asm @@ -1,6 +1,6 @@ db DEX_TRAMPEL ; pokedex id - db 130, 100, 90, 56, 64 + db 110, 100, 90, 56, 64 ; hp atk def spd spc db NORMAL, GROUND ; type diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index 075b288a..ed87c370 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -739,11 +739,11 @@ JackData: db 70, ANIMON, PURAKKUSU, HITMONLEE, PORYGON2, HITMONCHAN, SCIZOR, 0 ; not 100% sure what to do with this guy... JessieJamesData: - db 14, EKANS, MEOWTH, KOFFING, 0 ; Mt. Moon - db 25, KOFFING, LICKITUNG, MEOWTH, EKANS, 0 ; Rocket Hideout + db 14, MEOWTH, EKANS, KOFFING, 0 ; Mt. Moon + db 25, MEOWTH, EKANS, LICKITUNG, KOFFING, 0 ; Rocket Hideout db 27, MEOWTH, LICKITUNG, ARBOK, VICTREEBEL, WEEZING, 0 ; Pokemon Tower - db 31, WEEZING, ARBOK, LICKITUNG, VICTREEBEL, GYARADOS, MEOWTH, 0 ; Silph Co. - db $FF, 80, MEOWTH, 72, ARBOK, 71, WEEZING, 74, LICKILICKY, 74, VICTREEBEL, 74, GYARADOS, 0 ; Citrine Rocket House + db 37, MEOWTH, LICKITUNG, ARBOK, VICTREEBEL, WEEZING, GYARADOS, 0 ; Silph Co. + db $FF, 80, MEOWTH, 72, LICKILICKY, 72, ARBOK, 71, VICTREEBEL, 74, WEEZING, 76, GYARADOS, 0 ; Citrine Rocket House INCLUDE "data/trainers/scaled_parties.asm" INCLUDE "data/trainers/rival_parties.asm" diff --git a/data/trainers/scaled_parties.asm b/data/trainers/scaled_parties.asm index 797a6c7d..b411b1ed 100644 --- a/data/trainers/scaled_parties.asm +++ b/data/trainers/scaled_parties.asm @@ -79,8 +79,8 @@ SabrinaData: GiovanniData: ; is not scaled as he is always fought last ; Rocket Hideout B4F db $FF, 30, BEEDRILL, 32, RHYHORN, 32, KANGASKHAN, 34, PERSIAN, 0 -; Silph Co. 11F - db $FF, 37, KANGASKHAN, 36, NIDOKING, 37, NIDOQUEEN, 40, PERSIAN, 42, RHYDON, 0 +; Silph Co. 11F - did you know this team was weaker than the rival in vanilla level-wise? + db $FF, 40, BEEDRILL, 42, RHYDON, 42, KANGASKHAN, 43, NIDOKING, 43, NIDOQUEEN, 45, PERSIAN, 0 ; if persian slash is desirable, make it L47. ; Viridian Gym db $FF, 47, TRAMPEL, 46, DUGTRIO, 46, NIDOQUEEN, 48, GUARDIA, 48, NIDOKING, 50, RHYPERIOR, 0 diff --git a/scripts/HallOfFame.asm b/scripts/HallOfFame.asm index c3c32441..7c9f2f0b 100644 --- a/scripts/HallOfFame.asm +++ b/scripts/HallOfFame.asm @@ -161,16 +161,16 @@ ResetLegendaryPokemon: call ShowThis .skipMoltres ; Omega is special. - ; If Omega wasn't obtained, it'll be available somewhere else on Silph Co. 11F. - ; Commented out until we actually do this. -; ld a, DEX_OMEGA -; ld [wd11e], a -; call HoFIsPokemonBitSet -; jr nz, .skipOmega -; ResetEvent EVENT_BEAT_OMEGA_2 -; ld a, HS_OMEGA_2 -; call ShowThis -;.skipOmega + ; If Omega wasn't caught, it'll be available in the empty room of Silph Co. 11F. + ; In my mind, Omega was sent there, pending eventual scrapping for spare parts. + ld a, DEX_OMEGA + ld [wd11e], a + call HoFIsPokemonBitSet + jr nz, .skipOmega + ResetEvent EVENT_BEAT_OMEGA ; Reusing the old event - it's completely free to use. + ld a, HS_OMEGA_2 + call ShowThis +.skipOmega ; Mew's hints aren't until the post-game, but is available regardless. ; So, we put this here. ld a, DEX_MEW diff --git a/scripts/SilphCo11F.asm b/scripts/SilphCo11F.asm index a0ae3774..5b9a82f5 100644 --- a/scripts/SilphCo11F.asm +++ b/scripts/SilphCo11F.asm @@ -1,5 +1,5 @@ SilphCo11F_Script: - call SilphCo11Script_62110 + call SilphCo11Script_62127 call EnableAutoTextBoxDrawing ld hl, SilphCo11TrainerHeaders ld de, SilphCo11F_ScriptPointers @@ -8,36 +8,27 @@ SilphCo11F_Script: ld [wSilphCo11FCurScript], a ret -SilphCo11F_ScriptPointers: - dw SilphCo11Script0 - dw DisplayEnemyTrainerTextAndStartBattle - dw EndTrainerBattle - dw SilphCo11Script3 - dw SilphCo11Script4 - dw SilphCo11Script5 - dw SilphCo11Script6 - dw SilphCo11Script7 - -SilphCo11Script_62110: +SilphCo11Script_62127: ld hl, wCurrentMapScriptFlags bit 5, [hl] res 5, [hl] ret z ld hl, SilphCo11GateCoords - call SilphCo11Script_62137 - call SilphCo11Script_62163 + call SilphCo11Script_6214f + call SilphCo11Script_6217b CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR ret nz ld a, $20 ld [wNewTileBlockID], a lb bc, 6, 3 - predef_jump ReplaceTileBlock + predef ReplaceTileBlock + ret SilphCo11GateCoords: dbmapcoord 3, 6 db -1 ; end -SilphCo11Script_62137: +SilphCo11Script_6214f: push hl ld hl, wCardKeyDoorY ld a, [hli] @@ -73,12 +64,12 @@ SilphCo11Script_62137: ldh [hUnlockedSilphCoDoors], a ret -SilphCo11Script_62163: ; This is altered to have Omega rush you once the door is open. +SilphCo11Script_6217b: ldh a, [hUnlockedSilphCoDoors] and a ret z SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR - ld a, $6 + ld a, $7 ldh [hSpriteIndex], a ; TODO: Make Omega look at the player. call MoveOmegaSprite ld a, OMEGA @@ -90,16 +81,16 @@ SilphCo11Script_62163: ; This is altered to have Omega rush you once the door is ld a, MUSIC_MEET_MALE_TRAINER call PlayMusic ;add code here to make Rocket NPC look at Omega - ld a, $6 + ld a, 15 ld [wSilphCo11FCurScript], a ret -SilphCo11Script6: +SilphCo11ScriptOmegaBattle: ld a, [wd730] bit 0, a ret nz ld [wJoyIgnore], a - ld a, $6 + ld a, 11 ldh [hSpriteIndexOrTextID], a call DisplayTextID ld a, OMEGA @@ -117,21 +108,6 @@ SilphCo11Script6: ld [wCurMapScript], a ret -SilphCo11Script7: - ld a, [wIsInBattle] - cp $ff - jp z, SilphCo11Script_50ece - ld a, $3 - ld [wSilphCo11FCurScript], a - ret - -SilphCo11Script_50ed6: - ld a, 0 - ld [wTrainerNo], a - ld a, 1 - ld [wIsTrainerBattle], a - ret - OmegaMovementData: db NPC_MOVEMENT_DOWN db NPC_MOVEMENT_DOWN @@ -145,17 +121,6 @@ MoveOmegaSprite: jp SetSpriteFacingDirectionAndDelay ret -.asm_50ef1 - call MoveSprite - ld a, SPRITE_FACING_RIGHT - ldh [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay - -SilphCo11Script_50ece: - xor a - ld [wJoyIgnore], a - ld [wSilphCo11FCurScript], a - SilphCo11Script_6216d: ld hl, MissableObjectIDs_6219b .asm_62170 @@ -221,24 +186,49 @@ MissableObjectIDs_6219b: db HS_SILPH_CO_10F_1 db HS_SILPH_CO_10F_2 db HS_SILPH_CO_11F_1 - db HS_SILPH_CO_11F_2 db HS_SILPH_CO_11F_3 db -1 ; end -SilphCo11Script_621c4: +SilphCo11Script_62185: xor a ld [wJoyIgnore], a - -SilphCo11Script_621c8: +SilphCo11Script_62189: ld [wSilphCo11FCurScript], a ld [wCurMapScript], a ret - +SilphCo11F_ScriptPointers: + dw SilphCo11Script0 + dw DisplayEnemyTrainerTextAndStartBattle + dw EndTrainerBattle + dw SilphCo11Script3 + dw SilphCo11Script4 + dw SilphCo11Script5 + dw SilphCo11Script6 + dw SilphCo11Script7 + dw SilphCo11Script8 + dw SilphCo11Script9 + dw SilphCo11Script10 + dw SilphCo11Script11 + dw SilphCo11Script12 + dw SilphCo11Script13 + dw SilphCo11Script14 + dw SilphCo11ScriptOmegaBattle SilphCo11Script0: - CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI +IF DEF(_DEBUG) + call DebugPressedOrHeldB ret nz +ENDC + CheckEvent EVENT_BEAT_SILPH_CO_11F_TRAINER_0 + call z, SilphCo11Script_6229c + CheckEvent EVENT_782 + ret nz + CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + call z, SilphCo11Script_621c5 + ret + +SilphCo11Script_621c5: ld hl, CoordsData_62211 call ArePlayerCoordsInArray jp nc, CheckFightingMapTrainers @@ -248,10 +238,10 @@ SilphCo11Script0: ldh [hJoyHeld], a ld a, $f0 ld [wJoyIgnore], a - ld a, $3 ld c, 0 ; BANK(Music_Sakaki) ld a, MUSIC_SAKAKI call PlayMusic + ld a, $3 ldh [hSpriteIndexOrTextID], a call DisplayTextID ld a, $3 @@ -259,8 +249,9 @@ SilphCo11Script0: call SetSpriteMovementBytesToFF ld de, MovementData_62216 call MoveSprite - ld a, $3 - jp SilphCo11Script_621c8 + ld a, $4 + call SilphCo11Script_62189 + ret CoordsData_62211: dbmapcoord 6, 13 @@ -273,18 +264,18 @@ MovementData_62216: db NPC_MOVEMENT_DOWN db -1 ; end -SilphCo11Script_6221a: +SilphCo11Script_621ff: ld [wPlayerMovingDirection], a - ld a, $3 - ldh [hSpriteIndex], a ld a, b - ldh [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay + ld [wSprite03StateData1FacingDirection], a + ld a, $2 + ld [wSprite03StateData1MovementStatus], a + ret -SilphCo11Script5: +SilphCo11Script3: ld a, [wIsInBattle] cp $ff - jp z, SilphCo11Script_621c4 + jp z, SilphCo11Script_62185 ld a, [wcf0d] cp $1 jr z, .asm_6223c @@ -295,23 +286,23 @@ SilphCo11Script5: ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN .asm_62240 - call SilphCo11Script_6221a + call SilphCo11Script_621ff ld a, $f0 ld [wJoyIgnore], a - ld a, $8 + ld a, 13 ldh [hSpriteIndexOrTextID], a call DisplayTextID call GBFadeOutToBlack - call SilphCo11Script_6216d + call SaffronCityHideRocketsShowCitizens call UpdateSprites call Delay3 call GBFadeInFromBlack SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI xor a ld [wJoyIgnore], a - jp SilphCo11Script_621c8 + jp SilphCo11Script_62189 -SilphCo11Script3: +SilphCo11Script4: ld a, [wd730] bit 0, a ret nz @@ -328,26 +319,346 @@ SilphCo11Script3: ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN .asm_62288 - call SilphCo11Script_6221a + call SilphCo11Script_621ff call Delay3 - ld a, $4 - jp SilphCo11Script_621c8 - -SilphCo11Script4: + xor a + ld [wJoyIgnore], a ld hl, wd72d set 6, [hl] set 7, [hl] - ld hl, SilphCo10Text_62330 - ld de, SilphCo10Text_62330 + ld hl, SilphCo10Text_62528 + ld de, SilphCo10Text_62528 call SaveEndBattleTextPointers ldh a, [hSpriteIndex] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters + ld a, $3 + jp SilphCo11Script_62189 + +SilphCo11Script_6229c: + ld a, [wYCoord] + cp $3 + ret nz + ld a, [wXCoord] + cp $4 + ret nc + ResetEvents EVENT_780, EVENT_781 + ld a, [wXCoord] + cp $3 + jr z, .asm_622c3 + SetEventReuseHL EVENT_780 + ld a, [wXCoord] + cp $2 + jr z, .asm_622c3 + ResetEventReuseHL EVENT_780 + SetEventReuseHL EVENT_781 +.asm_622c3 + call StopMusic + ld c, 0 ; BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic xor a + ldh [hJoyHeld], a + ld a, $fc ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, 4 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $ff + ld [wJoyIgnore], a + SetEvent EVENT_782 ld a, $5 - jp SilphCo11Script_621c8 + call SilphCo11Script_62189 + ret + +SilphCo11MovementData_622f5: + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db -1 + +SilphCo11MovementData_622fb: + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db -1 + +SilphCo11MovementData_62300: + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db -1 + +SilphCo11MovementData_62305: + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db -1 + +SilphCo11MovementData_6230b: + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_LEFT + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db -1 + +SilphCo11MovementData_62311: + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_LEFT + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db -1 + +SilphCo11Script5: + ld de, SilphCo11MovementData_622f5 + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6232d + ld de, SilphCo11MovementData_62300 + cp $1 + jr z, .asm_6232d + ld de, SilphCo11MovementData_6230b +.asm_6232d + ld a, $4 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $6 + call SilphCo11Script_62189 + ret + +SilphCo11Script6: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +SilphCo11Script7: + ld a, $2 + ld [wSprite04StateData1MovementStatus], a + ld hl, wSprite04StateData1FacingDirection + ld [hl], SPRITE_FACING_RIGHT + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6235e + ld [hl], SPRITE_FACING_UP +.asm_6235e + call Delay3 + ld a, $fc + ld [wJoyIgnore], a +SilphCo11Script8: + ld de, SilphCo11MovementData_622fb + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6237b + ld de, SilphCo11MovementData_62305 + cp $1 + jr z, .asm_6237b + ld de, SilphCo11MovementData_62311 +.asm_6237b + ld a, $6 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $9 + call SilphCo11Script_62189 + ret + +SilphCo11Script9: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz + ld a, $fc + ld [wJoyIgnore], a +SilphCo11Script10: + ld a, $2 + ld [wSprite06StateData1MovementStatus], a + ld hl, wSprite06StateData1FacingDirection + ld [hl], SPRITE_FACING_UP + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_623b1 + ld [hl], SPRITE_FACING_LEFT +.asm_623b1 + call Delay3 + ld a, $9 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID +SilphCo11Script11: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + call Delay3 + ld hl, SilphCo11Text_624c2 + ld de, SilphCo11Text_624c2 + call SaveEndBattleTextPointers + ld a, OPP_JESSIE_JAMES + ld [wCurOpponent], a + ld a, 4 + ld [wTrainerNo], a + ld [wIsTrainerBattle], a + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + ld a, $c + call SilphCo11Script_62189 + ret + +SilphCo11Script12: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, SilphCo11Script_62185 + ld a, $2 + ld [wSprite04StateData1MovementStatus], a + ld [wSprite06StateData1MovementStatus], a + xor a + ld [wSprite04StateData1FacingDirection], a + ld [wSprite06StateData1FacingDirection], a + ld a, $fc + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $a + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopMusic + ld c, 0 ; BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $d + call SilphCo11Script_62189 + ret + +SilphCo11Script13: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_SILPH_CO_11F_JAMES + call SilphCo11Script_6246d + ld a, HS_SILPH_CO_11F_JESSIE + call SilphCo11Script_6246d + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $e + call SilphCo11Script_62189 + ret + +SilphCo11Script14: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + ResetEvent EVENT_782 + SetEventReuseHL EVENT_BEAT_SILPH_CO_11F_TRAINER_0 + ld a, $0 + call SilphCo11Script_62189 + ret + +SilphCo11Script_6245e: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +SilphCo11Script_6246d: + ld [wMissableObjectIndex], a + predef HideObject + ret + +SaffronCityHideRocketsShowCitizens: + ld hl, SaffronCityRockets +.hideLoop + ld a, [hli] + cp $ff ; have we run out of rockets to hide? + jr z, .showCitizens ; if so, start showing the citizens + push hl + ld [wMissableObjectIndex], a + predef HideObject + pop hl + jr .hideLoop + +.showCitizens + ld hl, SaffronCityCitizens +.showLoop + ld a, [hli] + cp $ff ; have we run out of citizens to show? + ret z ; if so, we're done here + push hl + ld [wMissableObjectIndex], a + predef ShowObject + pop hl + jr .showLoop + +SaffronCityCitizens: + db HS_SAFFRON_CITY_8 + db HS_SAFFRON_CITY_9 + db HS_SAFFRON_CITY_A + db HS_SAFFRON_CITY_B + db HS_SAFFRON_CITY_C + db HS_SAFFRON_CITY_D + db HS_SAFFRON_CITY_UP_GRADE + db -1 ; end + +SaffronCityRockets: + db HS_SAFFRON_CITY_1 + db HS_SAFFRON_CITY_2 + db HS_SAFFRON_CITY_3 + db HS_SAFFRON_CITY_4 + db HS_SAFFRON_CITY_5 + db HS_SAFFRON_CITY_6 + db HS_SAFFRON_CITY_7 + db HS_SAFFRON_CITY_E + db HS_SAFFRON_CITY_F + db HS_SILPH_CO_3F_1 + db HS_SILPH_CO_3F_2 + db HS_SILPH_CO_4F_1 + db HS_SILPH_CO_4F_2 + db HS_SILPH_CO_4F_3 + db HS_SILPH_CO_5F_1 + db HS_SILPH_CO_5F_2 + db HS_SILPH_CO_5F_3 + db HS_SILPH_CO_5F_4 + db HS_SILPH_CO_6F_1 + db HS_SILPH_CO_6F_2 + db HS_SILPH_CO_6F_3 + db HS_SILPH_CO_7F_1 + db HS_SILPH_CO_7F_2 + db HS_SILPH_CO_7F_3 + db HS_SILPH_CO_7F_4 + db HS_SILPH_CO_8F_1 + db HS_SILPH_CO_8F_2 + db HS_SILPH_CO_8F_3 + db HS_SILPH_CO_10F_1 + db HS_SILPH_CO_10F_2 + db HS_SILPH_CO_11F_1 + db HS_SILPH_CO_11F_3 + db -1 ; end SilphCo11F_TextPointers: dw SilphCo11Text1 @@ -356,21 +667,55 @@ SilphCo11F_TextPointers: dw SilphCo11Text4 dw SilphCo11Text5 dw SilphCo11Text6 + dw SilphCo11Text7 + dw SilphCo11Text8 + dw SilphCo11Text9 + dw SilphCo11Text10 dw OmegaText + dw Omega2Text dw StupidGiovanniFix SilphCo11TrainerHeaders: - def_trainers 4 + def_trainers 5 SilphCo11TrainerHeader0: - trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 4, SilphCo11BattleText1, SilphCo11EndBattleText1, SilphCo11AfterBattleText1 -SilphCo11TrainerHeader1: - trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11BattleText2, SilphCo11EndBattleText2, SilphCo11AfterBattleText2 + trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11Trainer1BattleText, SilphCo11Trainer1EndBattleText, SilphCo11Trainer1AfterBattleText +Omega2TrainerHeader: + trainer EVENT_BEAT_OMEGA, 0, Omega2BattleText, Omega2BattleText, Omega2BattleText db -1 ; end -OmegaText: - text_far _OmegaBattleText +SilphCo11Text4: +SilphCo11Text6: +SilphCo11Text8: + text_far _SilphCoJessieJamesText1 + text_asm + ld c, 10 + call DelayFrames + ld a, $4 + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd + +SilphCo11Text9: + text_far _SilphCoJessieJamesText2 text_end +SilphCo11Text_624c2: + text_far _SilphCoJessieJamesText3 + text_end + +SilphCo11Text10: + text_far _SilphCoJessieJamesText4 + text_asm + ld c, 64 + call DelayFrames + jp TextScriptEnd + SilphCo11Text1: text_asm CheckEvent EVENT_GOT_MASTER_BALL @@ -419,68 +764,56 @@ SilphCo11Text3: text_far _SilphCo11Text3 text_end -SilphCo10Text_62330: +SilphCo10Text_62528: text_far _SilphCo10Text_62330 text_end -SilphCo11Text6: +SilphCo11Text7: text_far _SilphCo10Text_62335 text_end -SilphCo11Text4: +SilphCo11Text5: text_asm ld hl, SilphCo11TrainerHeader0 call TalkToTrainer jp TextScriptEnd -SilphCo11BattleText1: - text_far _SilphCo11BattleText1 - text_end - -SilphCo11EndBattleText1: - text_far _SilphCo11EndBattleText1 - text_end - -SilphCo11AfterBattleText1: - text_far _SilphCo11AfterBattleText1 - text_end - -SilphCo11Text5: - text_asm - ld hl, SilphCo11TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -SilphCo11BattleText2: +SilphCo11Trainer1BattleText: text_far _SilphCo11BattleText2 text_end -SilphCo11EndBattleText2: +SilphCo11Trainer1EndBattleText: text_far _SilphCo11EndBattleText2 text_end -SilphCo11AfterBattleText2: +SilphCo11Trainer1AfterBattleText: text_far _SilphCo11AfterBattleText2 text_end -SilphCo10Text_6236c: - text_asm - ld hl, SilphCo10Text_6237b - call PrintText - ld a, PORYGON - call DisplayPokedex - jp TextScriptEnd - -SilphCo10Text_6237b: - text_far _SilphCo10Text_6237b +; Omega Boss Fight text begins here. +OmegaText: + text_far _OmegaBattleText text_end -; Omega Boss Fight text begins here. OmegaBattleText: text_far _OmegaBattleText text_asm jp TextScriptEnd +Omega2Text: + text_asm + ld hl, Omega2TrainerHeader + call TalkToTrainer + jp TextScriptEnd + +Omega2BattleText: + text_far _OmegaBattleText + text_asm + ld a, OMEGA + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + StupidGiovanniFix: text_far _SilphCo10Text_62335 text_end diff --git a/text/MtMoonB2F.asm b/text/MtMoonB2F.asm index b79a85c0..c69bc32d 100644 --- a/text/MtMoonB2F.asm +++ b/text/MtMoonB2F.asm @@ -153,7 +153,9 @@ _MtMoonJessieJamesText3:: prompt _MtMoonJessieJamesText4:: - text "TEAM ROCKET, blast" - line "off at the speed" - cont "of light!@" + text "Looks like TEAM" + line "ROCKET's blasting" + cont "off!" + + para "We'll be back!@" text_end diff --git a/text/SilphCo11F.asm b/text/SilphCo11F.asm index 660c9d62..3083e96f 100644 --- a/text/SilphCo11F.asm +++ b/text/SilphCo11F.asm @@ -2,6 +2,13 @@ _SilphCoPresidentText:: text "CHIEF: Thank" line "you for saving" cont "SILPH!" + + para "And...sorry about" + line "that OMEGA model." + cont "It must have seen" + cont "you as a threat." + + para "Anyway!" para "I will never" line "forget you saved" @@ -54,8 +61,13 @@ _SilphCo11Text2:: line "you for rescuing" cont "all of us!" - para "We admire your" - line "courage." + para "Hmm? OMEGA?" + + para "All I know is the" + line "CHIEF quickly" + cont "started making it" + cont "last year." + done _SilphCo11Text3:: @@ -135,10 +147,7 @@ _SilphCo10Text_6237b:: done _OmegaBattleText:: - text "ROCKET: Hey, kid!" - line "Watch out!" - - para "Bzzt! Clank!" + text "Bzzt! Clank!" prompt ; Fun fact: For some reason, this text is stored in 10F. Seems to be a beta element - they ARE encountered in 11F.