From 48b25069f84796251aa372e544482f0f1f17856a Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Sat, 20 May 2023 04:57:46 +0100 Subject: [PATCH] Fix Mt Moon Square NPCs, new Battle Tent system This fixes the issue with Mt Moon Square's NPC text and changes the Battle Tent to a continuous system. The Battle Tent's new system circumvents the issue with wBTStreakCnt while providing the player with more agency. They'll get constant prize money after each battle and can abandon the challenge at any time. It may feel more grindy but in my opinion works just as well. --- data/maps/objects/MtMoonSquare.asm | 6 +- data/maps/objects/RedsHouse2F.asm | 4 +- engine/battle/core.asm | 4 +- scripts/BattleTent.asm | 97 +++++++++++++++++++++--------- scripts/MtMoonSquare.asm | 2 + 5 files changed, 80 insertions(+), 33 deletions(-) diff --git a/data/maps/objects/MtMoonSquare.asm b/data/maps/objects/MtMoonSquare.asm index 38d9555c..079254c0 100644 --- a/data/maps/objects/MtMoonSquare.asm +++ b/data/maps/objects/MtMoonSquare.asm @@ -8,11 +8,11 @@ MtMoonSquare_Object: warp_event 11, 5, MT_MOON_SQUARE_HOUSE, 2 def_bg_events - bg_event 15, 5, 2 ; Sign + bg_event 15, 5, 4 ; Sign def_object_events object_event 7, 5, SPRITE_FAIRY, WALK, ANY_DIR, 1 ; person - object_event 5, 4, SPRITE_FAIRY, WALK, ANY_DIR, 1 ; person - object_event 4, 6, SPRITE_FAIRY, WALK, ANY_DIR, 1 ; person + object_event 5, 4, SPRITE_FAIRY, WALK, ANY_DIR, 2 ; person + object_event 4, 6, SPRITE_FAIRY, WALK, ANY_DIR, 3 ; person def_warps_to MT_MOON_SQUARE diff --git a/data/maps/objects/RedsHouse2F.asm b/data/maps/objects/RedsHouse2F.asm index b99d48e8..d673e2b9 100644 --- a/data/maps/objects/RedsHouse2F.asm +++ b/data/maps/objects/RedsHouse2F.asm @@ -5,7 +5,9 @@ RedsHouse2F_Object: 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 Omega & Giovanni - 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, CELESTE_HILL, 1 ; - Test Birds def_bg_events diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 7fc65e53..98d50408 100644 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -970,8 +970,8 @@ TrainerBattleVictory: call DelayFrames call PrintEndBattleText ld a, [wCurMap] - cp BATTLE_TENT - ret z ; We will give it later ;) +; cp BATTLE_TENT - originally the battle tent would not do this, but with the new system, it does. +; ret z ; We will give it later ;) ; win money ld hl, MoneyForWinningText call PrintText diff --git a/scripts/BattleTent.asm b/scripts/BattleTent.asm index d134b884..12c1a266 100644 --- a/scripts/BattleTent.asm +++ b/scripts/BattleTent.asm @@ -597,22 +597,51 @@ BattleTentGuy_After: ld hl, BattleTentSeeYouAgain call PrintText jp TextScriptEnd - + +; The Battle Tent has a new progression system for two reasons: +; 1) The battles are all trainer-based now, so money is given after battle. +; 2) wBTStreakCnt would not increment properly for unknown reasons, making it infinite. +; Thus, now the player can constantly battle and abandon the challenge when they want. +; Arguably a better system, but I do wish the counter incremented... BattleTentGuy2: db $8 - ld a, [wBTStreakCnt] + ld a, [wBTStreakCnt] ; The streak counter is still used for message continuity. and a - ld hl, BattleTentGuy2_Streak - jr nz, .skip - inc a - ld [wBTStreakCnt], a - ld hl, BattleTentGuy2_Init - jr .skip2 -.skip - cp 11 - jr nz, .skip2 + + ; Old System +; ld hl, BattleTentGuy2_Streak +; jr nz, .skip +; inc a +; ld [wBTStreakCnt], a +; ld hl, BattleTentGuy2_Init +; jr .skip2 +;.skip +; cp 11 +; jr nz, .skip2 + + ; New System + ld hl, BattleTentGuy2_Streak ; The message has been changed appropriately down below. + jr z, .skip2 + xor a ; The D-Pad is locked at this point, so blank out wJoyIgnore to allow manual option selection. + ld [wJoyIgnore], a + ld hl, BattleTentGuy2_Continue ; Continue prompt. + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .refused ; If 0, move to refused. + jr .cont ; Otherwise, continue as if nothing happened. +.refused ld hl, BattleTentGuy2_Win -.skip2 + call PrintText + ld a, 9 ; Load BattleTent_PlayerWalkBack, which takes it from here. + ld [wBattleTentCurScript], a + jp TextScriptEnd +.cont + ld hl, BattleTentGuy2_Init ; Load the next battle. + jr .skip2 + +.skip2 ; This handles BattleTentGuy2_Streak and BattleTentGuy2_Init at once. call PrintText jp TextScriptEnd @@ -692,12 +721,14 @@ BattleTentWelcome: para "Here, TRAINERs" line "from far and" cont "wide come to" - cont "face a gauntlet" - cont "of 10 TRAINERs!" + ;cont "face a gauntlet" + ;cont "of 10 TRAINERs!" + cont "spar against" + cont "one another!" - para "If you win them" - line "all, you win" - cont "a prize!" + ;para "If you win them" + ;line "all, you win" + ;cont "a prize!" para "Would you like" line "to participate?" @@ -778,20 +809,32 @@ BattleTentGuy2_Init: para "Good luck!" done - + +; Cut in favour of a different system. BattleTentGuy2_Streak: - text "Opponent No.@" ; could be a №? - text_decimal wBTStreakCnt, 1, 2 - text_start - line "is up next." - para "Good luck!" +; text "Opponent No.@" ; could be a №? +; text_decimal wBTStreakCnt, 1, 2 +; text_start +; line "is up next." +; para "Good luck!" +; done + text "Here comes a" + line "new challenger!" ; I really like fighting games. done - -BattleTentGuy2_Win: + +BattleTentGuy2_Continue: text "Congratulations!" - para "You have defeated" - line "all 10 opponents!" + para "Do you want to" + line "continue?" + prompt + +BattleTentGuy2_Win: + ;text "Congratulations!" + text "Well done!" + + ;para "You have defeated" + ;line "all 10 opponents!" para "Please go back to" line "the counter to" diff --git a/scripts/MtMoonSquare.asm b/scripts/MtMoonSquare.asm index 0072d646..cc150d80 100644 --- a/scripts/MtMoonSquare.asm +++ b/scripts/MtMoonSquare.asm @@ -2,6 +2,8 @@ MtMoonSquare_Script: jp EnableAutoTextBoxDrawing MtMoonSquare_TextPointers: + dw MtMoonSquareClefairy + dw MtMoonSquareClefairy dw MtMoonSquareClefairy dw MtMoonSquareSign