From c4afafb9acb051d58863f4b97d245c25a8f51c1f Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Wed, 12 Jul 2023 17:44:25 +0100 Subject: [PATCH] Groundwork Letter is there, post-game warp is done, new post-game event where you receive the letter isn't working properly --- constants/event_constants.asm | 3 +- constants/item_constants.asm | 1 + data/credits/credits_text.asm | 2 +- data/items/key_items.asm | 1 + data/items/names.asm | 1 + data/items/prices.asm | 1 + data/maps/objects/IndigoPlateauLobby.asm | 4 +- data/maps/special_warps.asm | 4 +- data/text/item_descriptions.asm | 5 ++ engine/debug/debug_party.asm | 7 +- engine/items/item_effects.asm | 11 +++ engine/menus/item_descriptions.asm | 2 + engine/menus/main_menu.asm | 2 +- ram/wram.asm | 3 +- scripts/HallOfFame.asm | 3 +- scripts/RedsHouse1F.asm | 110 ++++++++++++++++++++++- text/RedsHouse1F.asm | 58 ++++++++++++ 17 files changed, 206 insertions(+), 12 deletions(-) diff --git a/constants/event_constants.asm b/constants/event_constants.asm index d4114030..cd87ba18 100644 --- a/constants/event_constants.asm +++ b/constants/event_constants.asm @@ -8,7 +8,8 @@ const EVENT_HALL_OF_FAME_DEX_RATING const EVENT_GOT_SQUIRTLE const EVENT_PALLET_AFTER_GETTING_POKEBALLS - const_skip 17 + const EVENT_LETTER_RECEIVED + const_skip 16 const EVENT_GOT_TOWN_MAP const EVENT_ENTERED_BLUES_HOUSE const EVENT_DAISY_WALKING diff --git a/constants/item_constants.asm b/constants/item_constants.asm index 38d5a54e..32accfff 100644 --- a/constants/item_constants.asm +++ b/constants/item_constants.asm @@ -103,6 +103,7 @@ DEF SAFARI_ROCK EQU $16 ; overload const METAL_COAT ; $5C const MYSTERY_BOX ; $5D const TEA ; $5E + const SILPHLETTER ; $5F DEF NUM_ITEMS EQU const_value - 1 ; elevator floors use item IDs diff --git a/data/credits/credits_text.asm b/data/credits/credits_text.asm index 356b8206..1f0e4dd3 100644 --- a/data/credits/credits_text.asm +++ b/data/credits/credits_text.asm @@ -254,4 +254,4 @@ CredChatot: CredEni: db -3, "ENIGAMI@" CredVort: - db -4, "VORTIENE@" + db -3, "VORTIENE@" diff --git a/data/items/key_items.asm b/data/items/key_items.asm index f879bf6a..af2ec098 100644 --- a/data/items/key_items.asm +++ b/data/items/key_items.asm @@ -94,6 +94,7 @@ KeyItemFlags: dbit FALSE ; METAL_COAT dbit TRUE ; MYSTERY_BOX dbit TRUE ; TEA + dbit TRUE ; SILPHLETTER dbit TRUE ; FLOOR_B2F dbit TRUE ; FLOOR_B1F dbit TRUE ; FLOOR_1F diff --git a/data/items/names.asm b/data/items/names.asm index 598cf42a..a57f0481 100644 --- a/data/items/names.asm +++ b/data/items/names.asm @@ -94,6 +94,7 @@ ItemNames:: li "METAL COAT" li "MYSTERY BOX" li "TEA" + li "SILPHLETTER" assert_list_length NUM_ITEMS li "B2F" li "B1F" diff --git a/data/items/prices.asm b/data/items/prices.asm index d578b316..6ec46daa 100644 --- a/data/items/prices.asm +++ b/data/items/prices.asm @@ -94,6 +94,7 @@ ItemPrices:: bcd3 3000 ; METAL_COAT bcd3 0 ; MYSTERY_BOX bcd3 0 ; TEA + bcd3 0 ; SILPHLETTER assert_table_length NUM_ITEMS bcd3 0 ; FLOOR_B2F bcd3 0 ; FLOOR_B1F diff --git a/data/maps/objects/IndigoPlateauLobby.asm b/data/maps/objects/IndigoPlateauLobby.asm index eae9fc66..f8babc40 100644 --- a/data/maps/objects/IndigoPlateauLobby.asm +++ b/data/maps/objects/IndigoPlateauLobby.asm @@ -4,8 +4,8 @@ IndigoPlateauLobby_Object: def_warp_events warp_event 7, 11, LAST_MAP, 1 warp_event 8, 11, LAST_MAP, 2 - ;warp_event 8, 0, HALL_OF_FAME, 1 ; test post-game setup - warp_event 8, 0, LORELEIS_ROOM, 1 + warp_event 8, 0, HALL_OF_FAME, 1 ; test post-game setup + ;warp_event 8, 0, LORELEIS_ROOM, 1 def_bg_events diff --git a/data/maps/special_warps.asm b/data/maps/special_warps.asm index f22a089f..38dc92d5 100644 --- a/data/maps/special_warps.asm +++ b/data/maps/special_warps.asm @@ -44,7 +44,7 @@ MACRO special_warp_spec db \4 ENDM -FirstMapSpec: +FirstMapSpec:: special_warp_spec REDS_HOUSE_2F, 3, 6, REDS_HOUSE_2 TradeCenterSpec1: special_warp_spec TRADE_CENTER, 3, 4, CLUB @@ -77,6 +77,7 @@ FlyWarpDataPtr: fly_warp_spec CELADON_UNIVERSITY_OUTSIDE, .CeladonUniversityOutside fly_warp_spec ROUTE_4, .Route4 fly_warp_spec ROUTE_10, .Route10 + fly_warp_spec REDS_HOUSE_2F, .RedsHouse2F ; This doesn't show on the Fly map, just used so the post-league warp doesn't have a stroke .PalletTown: fly_warp PALLET_TOWN, 5, 6 .ViridianCity: fly_warp VIRIDIAN_CITY, 23, 26 @@ -93,3 +94,4 @@ FlyWarpDataPtr: .CeladonUniversityOutside: fly_warp CELADON_UNIVERSITY_OUTSIDE, 15, 26 .Route4: fly_warp ROUTE_4, 11, 6 .Route10: fly_warp ROUTE_10, 11, 20 +.RedsHouse2F: fly_warp REDS_HOUSE_2F, 3, 6 diff --git a/data/text/item_descriptions.asm b/data/text/item_descriptions.asm index cd7e05b8..313f7afe 100644 --- a/data/text/item_descriptions.asm +++ b/data/text/item_descriptions.asm @@ -358,6 +358,11 @@ _TeaDescription:: next "quenching thirst." prompt +_SilphLetterDescription:: + text "A LETTER from" + next "the SILPH CHIEF." + prompt + _HM01Description:: text "Cuts using claws," next "scythes, etc." diff --git a/engine/debug/debug_party.asm b/engine/debug/debug_party.asm index 4c0e61b1..0dd9d63f 100644 --- a/engine/debug/debug_party.asm +++ b/engine/debug/debug_party.asm @@ -187,9 +187,9 @@ DebugPikachuEevee: jr .loop DebugPikachuEeveeShows: - db HS_DAMIEN ; Charmander guy - db HS_VERMILION_JENNY ; Squirtle - db -1 ; end + db HS_DAMIEN ; Charmander guy + db HS_VERMILION_JENNY ; Squirtle + db -1 ; end DebugSetPokedexEntries: ld b, wPokedexOwnedEnd - wPokedexOwned @@ -203,6 +203,7 @@ DebugSetPokedexEntries: DebugItemsList: db MASTER_BALL, 99 + db SILPHLETTER, 1 db MYSTERY_BOX, 1 db CANDY_JAR, 1 db BICYCLE, 1 diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm index 6f458bfd..f54e35c9 100644 --- a/engine/items/item_effects.asm +++ b/engine/items/item_effects.asm @@ -111,6 +111,7 @@ ItemUsePtrTable: dw ItemUseEvoStone ; METAL_COAT dw ItemUseMysteryBox ; MYSTERY_BOX dw UnusableItem ; TEA + dw ItemUseLetter ; SILPHLETTER dw UnusableItem ; FLOOR_B2F dw UnusableItem ; FLOOR_B1F dw UnusableItem ; FLOOR_1F @@ -126,6 +127,16 @@ ItemUsePtrTable: dw UnusableItem ; FLOOR_11F dw UnusableItem ; FLOOR_14F +ItemUseLetter: + text_asm + ld hl, ChiefLetterText + call PrintText + jp TextScriptEnd + +ChiefLetterText: + text_far _ChiefLetterText + text_end + ItemUseMysteryBox: ; Mystery Box can't be used in battle. ld a, [wIsInBattle] diff --git a/engine/menus/item_descriptions.asm b/engine/menus/item_descriptions.asm index 4ff93221..070abab0 100644 --- a/engine/menus/item_descriptions.asm +++ b/engine/menus/item_descriptions.asm @@ -202,6 +202,8 @@ ItemDescriptionPointers: text_end text_far _TeaDescription text_end + text_far _SilphLetterDescription + text_end text_far _HM01Description text_end text_far _HM02Description diff --git a/engine/menus/main_menu.asm b/engine/menus/main_menu.asm index 8aad5075..f0962bd4 100644 --- a/engine/menus/main_menu.asm +++ b/engine/menus/main_menu.asm @@ -117,7 +117,7 @@ MainMenu: ld a, [wCurMap] ; map ID cp HALL_OF_FAME jp nz, SpecialEnterMap - xor a + ld a, REDS_HOUSE_2F ld [wDestinationMap], a ld hl, wd732 set 2, [hl] ; fly warp or dungeon warp diff --git a/ram/wram.asm b/ram/wram.asm index 21fc0a00..0d0ae581 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -1991,7 +1991,8 @@ wPalletTownCurScript:: db wCitrineRocketHouseCurScript:: db wBluesHouseCurScript:: db wViridianCityCurScript:: db - ds 2 +wRedsHouse1FCurScript:: db + ds 1 wPewterCityCurScript:: db wRoute3CurScript:: db wRoute4CurScript:: db diff --git a/scripts/HallOfFame.asm b/scripts/HallOfFame.asm index 7c9f2f0b..8069e406 100644 --- a/scripts/HallOfFame.asm +++ b/scripts/HallOfFame.asm @@ -43,7 +43,8 @@ HallofFameRoomScript2: ResetEventRange INDIGO_PLATEAU_EVENTS_START, INDIGO_PLATEAU_EVENTS_END, 1 xor a ld [wHallOfFameCurScript], a - ld a, PALLET_TOWN + ld hl, FirstMapSpec + ld a, [hli] ld [wLastBlackoutMap], a farcall SaveSAVtoSRAM ld b, 5 diff --git a/scripts/RedsHouse1F.asm b/scripts/RedsHouse1F.asm index f96209a9..f884308e 100644 --- a/scripts/RedsHouse1F.asm +++ b/scripts/RedsHouse1F.asm @@ -1,9 +1,81 @@ RedsHouse1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ld hl, RedsHouse1F_ScriptPointers + ld a, [wRedsHouse1FCurScript] + jp CallFunctionInTable + +RedsHouse1F_ScriptPointers: + dw ChiefLetter1 + dw ChiefLetter2 + +ChiefLetter1: + CheckEvent EVENT_POST_GAME_ATTAINED + jr z, .done + CheckEvent EVENT_LETTER_RECEIVED + jr nz, .done + ; with the way this is being done, coords will be unnecessary. + ; this will trigger the minute you enter the house. + call UpdateSprites + call PlayerSeeMom + + ld a, $ff + ld [wJoyIgnore], a + ld hl, wSimulatedJoypadStatesEnd + ld de, PlayerSeeMom_RLEMovement + call DecodeRLEList + dec a + ld [wSimulatedJoypadStatesIndex], a + call StartSimulatingJoypadStates + + ld a, $2 + ld [wRedsHouse1FCurScript], a + ld [wCurMapScript], a +.done + ret + +ChiefLetter2: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + + ld a, $1 + ldh [hSpriteIndex], a + + ld a, SPRITE_FACING_LEFT + ldh [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + + ld hl, MomGreeting + call PrintText + SetEvent EVENT_LETTER_RECEIVED + + ld a, $1 + ld [wRedsHouse1FCurScript], a + ld [wCurMapScript], a + ret + +PlayerSeeMom: + ld c, 10 + call DelayFrames + + ld [wEmotionBubbleSpriteIndex], a + xor a ; EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + ret + +PlayerSeeMom_RLEMovement: + db D_LEFT, 1 + db D_DOWN, 3 + db -1 ; end RedsHouse1F_TextPointers: dw RedsHouse1FMomText dw RedsHouse1FTVText + dw MomGreeting RedsHouse1FMomText: text_asm @@ -70,3 +142,39 @@ StandByMeText: TVWrongSideText: text_far _TVWrongSideText text_end + +; Post-Game stuff here. + +MomGreeting: + text_asm + ld hl, MomYoureBack + call PrintText + lb bc, SILPHLETTER, 1 + call GiveItem + ld hl, ReceivedChiefLetterText + 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. + ld hl, ChiefLetterText + call PrintText + ld hl, MomAmazing + call PrintText + jp TextScriptEnd + +ChiefLetterText: + text_far _ChiefLetterText + text_end + +MomYoureBack: + text_far _MomYoureBack + text_end + +ReceivedChiefLetterText: + text_far _ReceivedChiefLetterText + text_end + +MomAmazing: + text_far _MomAmazing + text_end diff --git a/text/RedsHouse1F.asm b/text/RedsHouse1F.asm index a0c1852e..0fc9d62f 100644 --- a/text/RedsHouse1F.asm +++ b/text/RedsHouse1F.asm @@ -35,3 +35,61 @@ _StandByMeText:: _TVWrongSideText:: text "Oops, wrong side." done + +_MomYoureBack:: + text "MOM: !" + line "Good morning!" + + para "I'm so proud of" + line "you, dear! You've" + cont "grown so much!" + + para "Oh! I nearly" + line "forgot..." + + para "I received this" + line "letter from" + cont "SILPH CO." + done + +; I want the letter text to play when we use the letter, so it's gonna be like this. +_ReceivedChiefLetterText:: + text " received" + line "@" + text_ram wStringBuffer + text "!@" + text_end + +_ChiefLetterText:: + text "Dear !" + line "You are cordially" + cont "invited to my" + cont "greatest event!" + + para "I call it...the" + line "SILPH GAUNTLET!" + + para "I have called" + line "the greatest" + cont "TRAINERs in all" + cont "of KANTO! Even" + cont "stronger than" + cont "the ELITE FOUR!" + + para "You will come to" + line "SILPH CO., yes?" + + para "See you then!" + line " - CHIEF" + done + +_MomAmazing:: + text "Oh! Isn't this" + line "amazing, sweetie?" + + para "I'm sure you'll" + line "do great!" + + para "I'm always here" + line "if you need me!" + done