From ba78014ec62fd025cdbb58aaf1bdb87898d03294 Mon Sep 17 00:00:00 2001 From: MementoMartha Date: Thu, 27 Apr 2023 19:55:35 +0100 Subject: [PATCH] Silph Gauntlet 4F trainers! Includes the same healing pad that was in Lavender Tower, as a reward for getting halfway! Trainers can't currently see you, which I'll fix once I've added the trainers on 2F and 3F. --- constants/event_constants.asm | 12 +- data/maps/objects/SilphGauntlet4F.asm | 6 + data/trainers/parties.asm | 14 +- maps/SilphGauntlet4F.blk | Bin 90 -> 90 bytes ram/wram.asm | 1 + scripts/SilphGauntlet4F.asm | 185 +++++++++++++++++++++++++- text.asm | 1 + text/SilphGauntlet4F.asm | 138 +++++++++++++++++++ 8 files changed, 343 insertions(+), 14 deletions(-) create mode 100644 text/SilphGauntlet4F.asm diff --git a/constants/event_constants.asm b/constants/event_constants.asm index 8c4ac792..ba99bb67 100644 --- a/constants/event_constants.asm +++ b/constants/event_constants.asm @@ -91,12 +91,12 @@ ; const EVENT_BEAT_GAUNTLET_FISHER ; const EVENT_BEAT_GAUNTLET_BEAUTY ; 4F Trainers - ; const EVENT_BEAT_GAUNTLET_SCIENTIST - ; const EVENT_BEAT_GAUNTLET_GAMBLER - ; const EVENT_BEAT_GAUNTLET_ROCKET - ; const EVENT_BEAT_GAUNTLET_PSYCHIC - ; const EVENT_BEAT_GAUNTLET_BURGLAR - ; const EVENT_BEAT_GAUNTLET_CHANNELER + const EVENT_BEAT_GAUNTLET_SCIENTIST + const EVENT_BEAT_GAUNTLET_GAMBLER + const EVENT_BEAT_GAUNTLET_ROCKET + const EVENT_BEAT_GAUNTLET_PSYCHIC + const EVENT_BEAT_GAUNTLET_BURGLAR + const EVENT_BEAT_GAUNTLET_CHANNELER ; 5F Trainers ; const EVENT_BEAT_GAUNTLET_JUGGLER ; const EVENT_BEAT_GAUNTLET_BIKER diff --git a/data/maps/objects/SilphGauntlet4F.asm b/data/maps/objects/SilphGauntlet4F.asm index 7d64bdbc..14c873dd 100644 --- a/data/maps/objects/SilphGauntlet4F.asm +++ b/data/maps/objects/SilphGauntlet4F.asm @@ -8,5 +8,11 @@ SilphGauntlet4F_Object: def_bg_events def_object_events + object_event 4, 3, SPRITE_SCIENTIST, STAY, LEFT, 1, OPP_SCIENTIST, 1 + object_event 14, 2, SPRITE_GAMBLER, STAY, RIGHT, 2, OPP_GAMBLER, 6 + object_event 18, 11, SPRITE_ROCKET, STAY, LEFT, 3, OPP_ROCKET, 22 + object_event 12, 10, SPRITE_YOUNGSTER, STAY, RIGHT, 4, OPP_PSYCHIC_TR, 5 + object_event 7, 5, SPRITE_SUPER_NERD, STAY, UP, 5, OPP_BURGLAR, 1 + object_event 4, 14, SPRITE_CHANNELER, STAY, DOWN, 6, OPP_CHANNELER, 7 def_warps_to SILPH_GAUNTLET_4F diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index e9616a78..1d9680f7 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -306,7 +306,7 @@ BikerData: BurglarData: ; Unused - db 66, NINETALES, RAPIDASH, ARCANINE, WEEZING, MAGMORTAR, MUK, 0 ; - used in Silph Gauntlet + db 65, RAPIDASH, CROAKOZUNA, ARCANINE, WEEZING, MAGMORTAR, MUK, 0 ; - used in Silph Gauntlet db 33, GROWLITHE, 0 db 28, VULPIX, CHARMANDER, PONYTA, 0 ; Cinnabar Gym @@ -390,8 +390,8 @@ GamblerData: db 18, GROWLITHE, VULPIX, 0 ; Route 8 db 22, POLIWAG, POLIWAG, POLIWHIRL, 0 -; Unused -; db 22, ONIX, GEODUDE, GRAVELER, 0 +; Unused - used in Silph Gauntlet + db 65, SEAKING, RHYPERIOR, ELECTRODE, ARCANINE, GOLEM, POLITOED, 0 ; Route 8 db 24, GROWLITHE, VULPIX, 0 @@ -425,6 +425,8 @@ PsychicData: db 34, MR_MIME, KADABRA, 0 db 33, SLOWPOKE, SLOWPOKE, SLOWBRO, 0 db 38, SLOWBRO, 0 +; Silph Gauntlet + db 65, SLOWBRO, EXEGGUTOR, STARMIE, MR_RIME, ESPEON, ALAKAZAM, 0 RockerData: ; Vermilion Gym @@ -494,7 +496,7 @@ ChiefData: ScientistData: ; Unused - this will be used in the Silph Gauntlet - db 64, MAGNEZONE, ELECTRODE, PORYGONZ, MUK, WEEZING, ALAKAZAM, 0 + db 65, MAGNEZONE, ELECTRODE, PORYGONZ, ANIMON, WEEZING, ALAKAZAM, 0 ; Silph Co. 2F db 26, GRIMER, WEEZING, KOFFING, WEEZING, 0 db 28, MAGNEMITE, VOLTORB, MAGNETON, 0 @@ -552,7 +554,7 @@ RocketData: ; restoring these so undefined stuff isn't pulled RIGHT NOW db 26, KOFFING, DROWZEE, 0 db 23, ZUBAT, RATTATA, RATICATE, ZUBAT, 0 ; Unused - this will be used in the Silph Gauntlet - db 65, PERSIAN, ARBOK, WEEZING, CROBAT, HYPNO, GUARDIA, 0 + db 65, PERSIAN, ARBOK, RATICATE, CROBAT, HYPNO, GUARDIA, 0 ; Silph Co. 2F - cut db 29, CUBONE, ZUBAT, 0 db 25, GOLBAT, ZUBAT, ZUBAT, RATICATE, ZUBAT, 0 @@ -637,7 +639,7 @@ ChannelerData: db 23, MIKON, GASTLY, 0 db 24, VULPIX, 0 ; Unused - this will be used in the Silph Gauntlet - db 65, GUARDIA, NINETALES, ANNIHILAPE, HYPNO, MUK, GENGAR, 0 + db 65, MUK, GUARDIA, ANNIHILAPE, HYPNO, NINETALES, GENGAR, 0 ; Pokémon Tower 3F db 25, GASTLY, HAUNTER, 0 ; Pokémon Tower 4F, now unused diff --git a/maps/SilphGauntlet4F.blk b/maps/SilphGauntlet4F.blk index 331b6f32098d7da052837e8ecaaabb17b5cda257..6d9e51b55f5d832c72f31d9744ee29aae3959122 100644 GIT binary patch delta 41 ucma!wnqa096U`UEr(nq!$QNJ?V#%cP@dae^@d?W@8pz5fh04mxF#-U&(+9Nx delta 41 rcma!wnqa098^agCr(nq!$QKv@V#%cPfmnRPa*PJDvY|<`vT}?7yOjsM diff --git a/ram/wram.asm b/ram/wram.asm index b57b3e13..fb7e47cc 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -2072,6 +2072,7 @@ wLancesRoomCurScript:: db wPokemonMansionB2FCurScript:: db wMtMoonCraterCurScript:: db wSilphGauntlet1FCurScript:: db +wSilphGauntlet4FCurScript:: db wSilphCo10FCurScript:: db wSilphCo11FCurScript:: db wCelesteHillCurScript:: db diff --git a/scripts/SilphGauntlet4F.asm b/scripts/SilphGauntlet4F.asm index 013892df..565a158e 100644 --- a/scripts/SilphGauntlet4F.asm +++ b/scripts/SilphGauntlet4F.asm @@ -1,6 +1,187 @@ SilphGauntlet4F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ld hl, SilphGauntlet4FTrainerHeaders + ld de, SilphGauntlet4F_ScriptPointers + ld a, [wSilphGauntlet4FCurScript] + call ExecuteCurMapScriptInTable + ld [wSilphGauntlet4FCurScript], a + ret + +SilphGauntlet4F_ScriptPointers: + dw PurifiedZoneScript + dw DisplayEnemyTrainerTextAndStartBattle + dw EndTrainerBattle + +PurifiedZoneScript: + ld hl, CoordsData_PureZone + call ArePlayerCoordsInArray + jr c, .asm_60960 + ld hl, wd72e + res 4, [hl] + ResetEvent EVENT_IN_PURIFIED_ZONE + jp CheckFightingMapTrainers +.asm_60960 + CheckAndSetEvent EVENT_IN_PURIFIED_ZONE + ret nz + xor a + ldh [hJoyHeld], a + ld a, $f0 + ld [wJoyIgnore], a + ld hl, wd72e + set 4, [hl] + predef HealParty + call GBFadeOutToWhite + call Delay3 + call Delay3 + call GBFadeInFromWhite + ld a, $7 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wJoyIgnore], a + ret + +CoordsData_PureZone: + dbmapcoord 10, 12 + dbmapcoord 11, 12 + dbmapcoord 10, 13 + dbmapcoord 11, 13 + db -1 ; end SilphGauntlet4F_TextPointers: + dw SilphGauntlet4FText1 + dw SilphGauntlet4FText2 + dw SilphGauntlet4FText3 + dw SilphGauntlet4FText4 + dw SilphGauntlet4FText5 + dw SilphGauntlet4FText6 + dw PurifiedZoneText + +SilphGauntlet4FTrainerHeaders: + def_trainers 7 +SilphGauntlet4FTrainerHeader0: + trainer EVENT_BEAT_GAUNTLET_SCIENTIST, 1, SilphGauntlet4FBattleText1, SilphGauntlet4FEndBattleText1, SilphGauntlet4FAfterBattleText1 +SilphGauntlet4FTrainerHeader1: + trainer EVENT_BEAT_GAUNTLET_GAMBLER, 2, SilphGauntlet4FBattleText2, SilphGauntlet4FEndBattleText2, SilphGauntlet4FAfterBattleText2 +SilphGauntlet4FTrainerHeader2: + trainer EVENT_BEAT_GAUNTLET_ROCKET, 2, SilphGauntlet4FBattleText3, SilphGauntlet4FEndBattleText3, SilphGauntlet4FAfterBattleText3 +SilphGauntlet4FTrainerHeader3: + trainer EVENT_BEAT_GAUNTLET_PSYCHIC, 2, SilphGauntlet4FBattleText4, SilphGauntlet4FEndBattleText4, SilphGauntlet4FAfterBattleText4 +SilphGauntlet4FTrainerHeader4: + trainer EVENT_BEAT_GAUNTLET_BURGLAR, 2, SilphGauntlet4FBattleText5, SilphGauntlet4FEndBattleText5, SilphGauntlet4FAfterBattleText5 +SilphGauntlet4FTrainerHeader5: + trainer EVENT_BEAT_GAUNTLET_CHANNELER, 2, SilphGauntlet4FBattleText6, SilphGauntlet4FEndBattleText6, SilphGauntlet4FAfterBattleText6 + db -1 ; end + +SilphGauntlet4FText1: + text_asm + ld hl, SilphGauntlet4FTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd - text_end \ No newline at end of file +SilphGauntlet4FBattleText1: + text_far _SilphGauntlet4FBattleText1 + text_end + +SilphGauntlet4FEndBattleText1: + text_far _SilphGauntlet4FEndBattleText1 + text_end + +SilphGauntlet4FAfterBattleText1: + text_far _SilphGauntlet4FAfterBattleText1 + text_end + +SilphGauntlet4FText2: + text_asm + ld hl, SilphGauntlet4FTrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphGauntlet4FBattleText2: + text_far _SilphGauntlet4FBattleText2 + text_end + +SilphGauntlet4FEndBattleText2: + text_far _SilphGauntlet4FEndBattleText2 + text_end + +SilphGauntlet4FAfterBattleText2: + text_far _SilphGauntlet4FAfterBattleText2 + text_end + +SilphGauntlet4FText3: + text_asm + ld hl, SilphGauntlet4FTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SilphGauntlet4FBattleText3: + text_far _SilphGauntlet4FBattleText3 + text_end + +SilphGauntlet4FEndBattleText3: + text_far _SilphGauntlet4FEndBattleText3 + text_end + +SilphGauntlet4FAfterBattleText3: + text_far _SilphGauntlet4FAfterBattleText3 + text_end + +SilphGauntlet4FText4: + text_asm + ld hl, SilphGauntlet4FTrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SilphGauntlet4FBattleText4: + text_far _SilphGauntlet4FBattleText4 + text_end + +SilphGauntlet4FEndBattleText4: + text_far _SilphGauntlet4FEndBattleText4 + text_end + +SilphGauntlet4FAfterBattleText4: + text_far _SilphGauntlet4FAfterBattleText4 + text_end + +SilphGauntlet4FText5: + text_asm + ld hl, SilphGauntlet4FTrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +SilphGauntlet4FBattleText5: + text_far _SilphGauntlet4FBattleText5 + text_end + +SilphGauntlet4FEndBattleText5: + text_far _SilphGauntlet4FEndBattleText5 + text_end + +SilphGauntlet4FAfterBattleText5: + text_far _SilphGauntlet4FAfterBattleText5 + text_end + +SilphGauntlet4FText6: + text_asm + ld hl, SilphGauntlet4FTrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +SilphGauntlet4FBattleText6: + text_far _SilphGauntlet4FBattleText6 + text_end + +SilphGauntlet4FEndBattleText6: + text_far _SilphGauntlet4FEndBattleText6 + text_end + +SilphGauntlet4FAfterBattleText6: + text_far _SilphGauntlet4FAfterBattleText6 + text_end + +PurifiedZoneText: + text_far _PurifiedZoneText + text_end + \ No newline at end of file diff --git a/text.asm b/text.asm index bff7d55a..f03da275 100644 --- a/text.asm +++ b/text.asm @@ -286,6 +286,7 @@ INCLUDE "text/tradeback_move_tutor.asm" INCLUDE "text/CelesteHill.asm" INCLUDE "text/BrunswickTrail.asm" INCLUDE "text/SilphGauntlet1F.asm" +INCLUDE "text/SilphGauntlet4F.asm" INCLUDE "text/SilphGauntlet7F.asm" SECTION "Pokédex Text", ROMX diff --git a/text/SilphGauntlet4F.asm b/text/SilphGauntlet4F.asm new file mode 100644 index 00000000..075b28d2 --- /dev/null +++ b/text/SilphGauntlet4F.asm @@ -0,0 +1,138 @@ +_SilphGauntlet4FBattleText1:: + text "I'm one of SILPH's" + line "top SCIENTISTs!" + + para "I want to see just" + line "how strong the" + cont "kid who took down" + cont "TEAM ROCKET" + cont "really is." + + para "Care to show me?" + done + +_SilphGauntlet4FEndBattleText1:: + text "That's" + line "incredible...!" + prompt + +_SilphGauntlet4FAfterBattleText1:: + text "Good job getting" + line "past our OMEGA," + cont "too." + + para "We had trouble" + line "controlling that" + cont "brute!" + done + +_SilphGauntlet4FBattleText2:: + text "#MON battles" + line "are the perfect" + cont "game of chance!" + done + +_SilphGauntlet4FEndBattleText2:: + text "How" + line "unlucky..." + prompt + +_SilphGauntlet4FAfterBattleText2:: + text "At any moment, one" + line "move can change" + cont "everything!" + done + +_SilphGauntlet4FBattleText3:: + text "Hey, you! I'll" + line "never forgive you" + cont "for what you did" + cont "to TEAM ROCKET!" + done + +_SilphGauntlet4FEndBattleText3:: + text "I'm" + line "sorry, GIOVANNI!" + prompt + +_SilphGauntlet4FAfterBattleText3:: + text "Mark my words!" + line "TEAM ROCKET will" + cont "return someday!" + done + +_SilphGauntlet4FBattleText4:: + text "I can already see" + line "the outcome of" + cont "this battle." + done + +_SilphGauntlet4FEndBattleText4:: + text "Just" + line "as expected..." + prompt + +_SilphGauntlet4FAfterBattleText4:: ; may revise, but hint towards Chief's team slightly + text "I can see it..." + + para "The strongest" + line "trainer here has" + cont "a PORYGON2. Or" + cont "was it a" + cont "PORYGON-Z...?" + done + +_SilphGauntlet4FBattleText5:: + text "Hey! If I win," + line "you'd better gimme" + cont "your #MON!" + done + +_SilphGauntlet4FEndBattleText5:: + text "Dang" + line "it!" + prompt + +_SilphGauntlet4FAfterBattleText5:: + text "Is it true? TEAM" + line "ROCKET are really" + cont "disbanding?" + + para "Good riddance!" + line "That means less" + cont "competition!" + cont "Hahaha!" + done + +_SilphGauntlet4FBattleText6:: ; hehehe buryman joke + text "You're here..." + + para "I'm trapped..." + line "And I'm lonely." + cont "So very lonely..." + + para "Won't you join me?" + done + +_SilphGauntlet4FEndBattleText6:: ; not sure what to put here, first line extends too long so I have to change it anyway + text "Finally," + line "fresh meat!" + prompt + +_SilphGauntlet4FAfterBattleText6:: + text "What? You think" + line "I'm possessed?" + + para "Not at all! I just" + line "like to quote my" + cont "favorite horror" + cont "stories!" + done + +_PurifiedZoneText:: + text "Entered purified," + line "protected zone!" + + para "'s #MON" + line "are fully healed!" + done