1/256 Text and other transparency enhancements

- In the event of a 1/256 miss, the game will now state the Pokemon evaded the attack to signify its occurrence. This is part of an effort to make misses, overall, more transparent.
- Battle Debug now loads some items to assist with testing.
- Misleading Guard Spec message in Celadon has been changed to refer to X Special, which it was actually describing.
- Removed "it can spook the target sometimes" text when getting the TM for Rock Slide, because it's a LIE
This commit is contained in:
Llinos Evans 2023-06-12 14:41:13 +01:00
parent 62059aafd5
commit 7ed5c0ae95
7 changed files with 89 additions and 16 deletions

View file

@ -116,6 +116,7 @@ QoL Enhancements
- A girl option is now available, featuring the sprite from Pokemon Anniversary Red, which is based on Green's manga appearance. - A girl option is now available, featuring the sprite from Pokemon Anniversary Red, which is based on Green's manga appearance.
- To accomodate this, Celadon Gym's trainers use their more neutral text from Crystal. - To accomodate this, Celadon Gym's trainers use their more neutral text from Crystal.
- All 151 original Pokemon, plus an additional 100, can be obtained without the use of trading or glitches, including Mew! - All 151 original Pokemon, plus an additional 100, can be obtained without the use of trading or glitches, including Mew!
- Bag capacity is increased from 20 to 30 items.
- New Pokedex entries for most Pokemon are available, sourced from the original 1996 Pokedex book by Creatures Inc., restoring a ton of old Kanto lore. Thanks to [Dr. Lava and Nob Ogasawara](http://lavacutcontent.com/1996-creatures-pokedex-translation-1/) for their incredible work translating and writing about it! - New Pokedex entries for most Pokemon are available, sourced from the original 1996 Pokedex book by Creatures Inc., restoring a ton of old Kanto lore. Thanks to [Dr. Lava and Nob Ogasawara](http://lavacutcontent.com/1996-creatures-pokedex-translation-1/) for their incredible work translating and writing about it!
- Pikachu and Eevee are now starters, featuring fully functional Rival lineups. If you pick Pikachu, he picks Eevee, and if you pick Eevee, he picks Pikachu! Their growth rates have been changed to Medium Slow to give them the early-game power spike the other starters have. - Pikachu and Eevee are now starters, featuring fully functional Rival lineups. If you pick Pikachu, he picks Eevee, and if you pick Eevee, he picks Pikachu! Their growth rates have been changed to Medium Slow to give them the early-game power spike the other starters have.
- Item Descriptions are available! - Item Descriptions are available!
@ -126,11 +127,9 @@ QoL Enhancements
- The Old and Good Rods have been removed, and the Super Rod, now called the Fishing Rod, is obtained in Pewter City. All fishing encounter tables have been altered to roughly match the levels of the surrounding routes. - The Old and Good Rods have been removed, and the Super Rod, now called the Fishing Rod, is obtained in Pewter City. All fishing encounter tables have been altered to roughly match the levels of the surrounding routes.
- Traded Pokemon ("Outsiders") can now be nicknamed at the Name Rater's House. - Traded Pokemon ("Outsiders") can now be nicknamed at the Name Rater's House.
- HP bar has been doubled in speed, having a 1 frame delay per pixel rather than 2. - HP bar has been doubled in speed, having a 1 frame delay per pixel rather than 2.
- The "You missed the Pokemon!" message now only plays in the Safari Zone, with regular encounters now stating "It's too strong!". This aims to make the message less misleading while staying true to the setting.
- The blinking animation when hit by moves like Tackle now repeats 4 instead of 6 times, speeding up battles by a bit while not sacrificing impact. - The blinking animation when hit by moves like Tackle now repeats 4 instead of 6 times, speeding up battles by a bit while not sacrificing impact.
- The Rock in the Safari Zone now only raises the flee chance by 1.5x, rather than 2x, opening up new strategies. - The Rock in the Safari Zone now only raises the flee chance by 1.5x, rather than 2x, opening up new strategies.
- PP symbol is displayed in the battle menu. PP displayed before, it just looks nicer now. Done by changing a straggler Japanese character. - PP symbol is displayed in the battle menu. PP displayed before, it just looks nicer now. Done by changing a straggler Japanese character.
- When dealing 0 damage, there'll now be a special text box, making it less misleading.
- Lorelei, Bruno, and Agatha now play the Gym Leader Battle theme. - Lorelei, Bruno, and Agatha now play the Gym Leader Battle theme.
- Trainer DVs are perfect-15s. - Trainer DVs are perfect-15s.
- The protagonist is referred to in a gender neutral manner. - The protagonist is referred to in a gender neutral manner.
@ -153,9 +152,12 @@ QoL Enhancements
- Blue's superior prices are used, so Porygon only costs 6500 coins. - Blue's superior prices are used, so Porygon only costs 6500 coins.
- New prizes include: Cubone, Blastyke, and Cactus. - New prizes include: Cubone, Blastyke, and Cactus.
- The Moon Stone is available over TM23 (Dragon Rage). Dragon Rage is still available in Celadon University! - The Moon Stone is available over TM23 (Dragon Rage). Dragon Rage is still available in Celadon University!
- Bag capacity increased from 20 to 30 items.
- Spinner tiles move faster. - Spinner tiles move faster.
- Fight Debug now allows moves other than Pound. - Fight Debug now allows moves other than Pound.
- The "You missed the Pokemon!" message now only plays in the Safari Zone, with regular encounters now stating "It's too strong!". This aims to make the message less misleading while staying true to the setting.
- If you miss with the 1/256 uncertainty, it now says the Pokemon "evaded the attack", adding transparency while keeping the original mechanic intact.
- When dealing 0 damage, it now says it "didn't leave a scratch" instead of saying you missed, furthering transparency.
- Lots of misleading mechanics statements (such as the Guard Spec message in Celadon) have been amended.
Bug Fixes Bug Fixes
==== ====

View file

@ -3955,11 +3955,24 @@ PrintMoveFailureText:
; This gives players a nice little dopamine rush. ; This gives players a nice little dopamine rush.
ld a, [wDidZeroDamage] ; Grab the variable. ld a, [wDidZeroDamage] ; Grab the variable.
cp 1 ; Alright, is it set? cp 1 ; Alright, is it set?
jr nz, .skip ; No? Skip these instructions. jr nz, .check256 ; No? Skip these instructions, but don't forget the 1/256 check.
ld hl, ZeroDamageText ; Load the zero damage text in. ld hl, ZeroDamageText ; Load the zero damage text in.
ld a, 0 ; Now shut the address off. ld a, 0 ; Now shut the address off.
ld [wDidZeroDamage], a ; Bink! ld [wDidZeroDamage], a ; Bink!
; 1/256 text functionality.
; This makes them a feature, with the reasoning being vanilla experience + how it may have been intentional all along.
; See Pokemon Stadium's handling of the mechanic for latter point.
; Yes I am a fucking psycho
; In theory this could be merged with the previous check in some capacity but that's neither here nor there
.check256 ; jump point
ld a, [wAttackWasDodged] ; Alright, let's see...
cp 1 ; Was the attack dodged?
jr nz, .skip ; No? Ok, neither of my hardmods are needed. proceed as normal.
ld hl, EvadedAttackText ; Oho? Let's load this then.
ld a, 0 ; Now to shut off the variable.
ld [wAttackWasDodged], a ; Bink!
.skip .skip
ld a, [wCriticalHitOrOHKO] ld a, [wCriticalHitOrOHKO]
cp $ff cp $ff
@ -4016,6 +4029,10 @@ ZeroDamageText:
prompt prompt
text_end text_end
EvadedAttackText: ; for 1/256, repurposed from leech seed
text_far _EvadedAttackText
text_end
KeptGoingAndCrashedText: KeptGoingAndCrashedText:
text_far _KeptGoingAndCrashedText text_far _KeptGoingAndCrashedText
text_end text_end
@ -5570,9 +5587,15 @@ MoveHitTest:
; if the random number generated is greater than or equal to the scaled accuracy, the move misses ; if the random number generated is greater than or equal to the scaled accuracy, the move misses
; note that this means that even the highest accuracy is still just a 255/256 chance, not 100% ; note that this means that even the highest accuracy is still just a 255/256 chance, not 100%
call BattleRandom call BattleRandom
cp 255 ; is it 1/256?
jr z, .oneIn256 ; if true, skip the next few lines.
cp b cp b
jr nc, .moveMissed jr nc, .moveMissed
ret ret
.oneIn256 ; 1/256 text functionality, used to be more transparent to players.
ld a, 1
ld [wAttackWasDodged], a
;fallthrough
.moveMissed .moveMissed
xor a xor a
ld hl, wDamage ; zero the damage ld hl, wDamage ; zero the damage

View file

@ -28,13 +28,14 @@ LeechSeedEffect_:
.moveMissed .moveMissed
ld c, 50 ld c, 50
call DelayFrames call DelayFrames
ld hl, EvadedAttackText ld hl, LeechFailedText
jp PrintText jp PrintText
WasSeededText: WasSeededText:
text_far _WasSeededText text_far _WasSeededText
text_end text_end
EvadedAttackText: ; This messed up if I farcalled AttackMissedText, so we're doing this instead.
text_far _EvadedAttackText LeechFailedText:
text_far _ButItFailedText
text_end text_end

View file

@ -76,6 +76,22 @@ TestBattle:
.loop .loop
call GBPalNormal call GBPalNormal
; Get some debug items.
ld hl, wNumBagItems
ld de, BattleDebugItemsList
.items_loop
ld a, [de]
cp -1
jr z, .items_end
ld [wcf91], a
inc de
ld a, [de]
inc de
ld [wItemQuantity], a
call AddItemToInventory
jr .items_loop
.items_end
; Don't mess around ; Don't mess around
; with obedience. ; with obedience.
ld a, 1 << BIT_EARTHBADGE ld a, 1 << BIT_EARTHBADGE
@ -104,11 +120,17 @@ TestBattle:
; This function gives you a way to waste a turn, never know when you'll need it. ; This function gives you a way to waste a turn, never know when you'll need it.
; Alternatively, add a move to test. ; Alternatively, add a move to test.
ld hl, wPartyMon1Moves ld hl, wPartyMon1Moves
ld a, SPLASH ld a, POISON_STING ; Something super weak
ld [hli], a
ld a, LEECH_SEED ; Test new failure text
ld [hli], a
ld a, FISSURE ; Something that'll miss easily
ld [hli], a
ld a, SPLASH ; Skip turn
ld [hli], a ld [hli], a
; Opponent's Pokemon. ; Opponent's Pokemon.
ld a, WEEDLE ld a, SANDY_SHOCKS
ld [wCurOpponent], a ld [wCurOpponent], a
ld a, 100 ; Set the level you want here. ld a, 100 ; Set the level you want here.
ld [wCurEnemyLVL], a ld [wCurEnemyLVL], a
@ -121,3 +143,17 @@ TestBattle:
ld [wUpdateSpritesEnabled], a ld [wUpdateSpritesEnabled], a
ldh [hAutoBGTransferEnabled], a ldh [hAutoBGTransferEnabled], a
jr .loop jr .loop
BattleDebugItemsList:
db FULL_RESTORE, 99
db MAX_ELIXER, 99
db FULL_HEAL, 99
db X_ATTACK, 99
db X_SPECIAL, 99
db X_DEFEND, 99
db X_SPEED, 99
db X_ACCURACY, 99
db DIRE_HIT, 99
db GUARD_SPEC, 99
db POKE_FLUTE, 1
db -1 ; end

View file

@ -1273,7 +1273,7 @@ wGymLeaderNo:: db
wTrainerNo:: db wTrainerNo:: db
; $00 = normal attack ; $00 = normal attack
; $01 = critical hit ; $01 = critical hit - also used for the 1/256 check we use now.
; $02 = successful OHKO ; $02 = successful OHKO
; $ff = failed OHKO ; $ff = failed OHKO
wCriticalHitOrOHKO:: db wCriticalHitOrOHKO:: db
@ -1332,7 +1332,9 @@ wPlayerToxicCounter:: db
; low nibble: disable turns left ; low nibble: disable turns left
wPlayerDisabledMove:: db wPlayerDisabledMove:: db
ds 1 ; This is used to gauge 1/256 misses.
; It loads the "evaded attack" text.
wAttackWasDodged:: db
; when the enemy is attacking multiple times, the number of attacks left ; when the enemy is attacking multiple times, the number of attacks left
wEnemyNumAttacksLeft:: db wEnemyNumAttacksLeft:: db

View file

@ -126,14 +126,22 @@ _CeladonCityText15::
cont "DEPT. STORE!" cont "DEPT. STORE!"
done done
; Originally, this referred to the Guard Spec as the item that protects from special moves.
; Obviously, this is wrong, and a mistranslation. In fact, this may be why it's called the Guard Spec at all.
; The Japanese name is "Effect Guard", which is far more transparent.
; Anyway, this has been changed to X Special, which is accurate.
; To take it a step further, I also note that it improves their own, which implies the Special stat's function to the player.
_CeladonCityText16:: _CeladonCityText16::
text "TRAINER TIPS" text "TRAINER TIPS"
para "GUARD SPEC." para "X SPECIAL"
line "protects #MON" line "protects #MON"
cont "against SPECIAL" cont "against SPECIAL"
cont "attacks such as" cont "attacks such as"
cont "fire and water!" cont "fire and water!"
para "It even improves"
line "their own!"
para "Get your items at" para "Get your items at"
line "CELADON DEPT." line "CELADON DEPT."

View file

@ -57,10 +57,11 @@ _CeladonMartRoofText_4850f::
para "@" para "@"
text_ram wStringBuffer text_ram wStringBuffer
text " contains" text " contains"
line "ROCK SLIDE!" line "ROCK SLIDE!@"
para "It can spook the" ; want to remove, but it's weird when done ; this girl be spittin LIES
line "target sometimes!@" ;para "It can spook the"
;line "target sometimes!@"
text_end text_end
_CeladonMartRoofText_48515:: _CeladonMartRoofText_48515::