-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Move] Fully implement Rage #3667
base: beta
Are you sure you want to change the base?
Conversation
Does the text tied to "rageOnAdd" in the locales really exists? Can't find it anywhere |
I don't think it does! (and the main post now says that) I tentatively added it partially because otherwise there is no in-game indicator that a pokemon has successfully started raging, and mostly because I needed to record example videos and it saved me from having to play through an extra turn every time to check if the tag was/wasn't applied correctly. It's a slight deviation from cartridge, but since Rage is a bit unintuitive, I figured I'd leave it in until people wanted it gone. |
Thanks for your answer! As from the main crew of the translation team it was to know if it's just a mistake (if so I would I waited for its removal to translate) or on purpose 🫡 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
italian localization done
# Conflicts: # src/test/moves/rage.test.ts
Added spacing inside of function calls Co-authored-by: schmidtc1 <[email protected]>
Added pt_BR, it, and fr translations. Co-authored-by: Lugiad' <[email protected]> Co-authored-by: Niccolò <[email protected]> Co-authored-by: José Ricardo Fleury Oliveira <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
zh
So there is a problem. So i dont really know what to put for "rageOnAdd" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couldn't find the "starting to build" as an official text, at least not in the newer games.
Added ES, and I also checked every other translation and suggestion commits before mine for typos regarding the use of \n and {{}}.
Co-authored-by: Yonmaru40 <[email protected]>
Co-authored-by: NightKev <[email protected]>
Co-authored-by: NightKev <[email protected]>
Co-authored-by: NightKev <[email protected]>
|
||
/** | ||
* Displays a message to show that the user has started Raging. | ||
* This is message isn't displayed on cartridge, and was included for clarity during gameplay and while testing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* This is message isn't displayed on cartridge, and was included for clarity during gameplay and while testing. | |
* This message isn't displayed on cartridge, and was included for clarity during gameplay and while testing. |
/** | ||
* Ally Attack-Boost Test. | ||
* | ||
* Checks that Rage provides an attack boost if the user it hit after use. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* Checks that Rage provides an attack boost if the user it hit after use. | |
* Checks that Rage provides an attack boost if the user is hit after use. |
|
||
const leadPokemon = game.scene.getPlayerPokemon()!; | ||
|
||
// Regieliki uses Fly. Boltund uses Rage, but Regieleki is invulnerable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// Regieliki uses Fly. Boltund uses Rage, but Regieleki is invulnerable | |
// Regieliki uses Phantom Force. Boltund uses Rage, but Regieleki is invulnerable |
expect(leadPokemon.getStatStage(Stat.ATK)).toBe(0); | ||
expect(leadPokemon.getTag(RageTag)).toBeNull; | ||
|
||
// Regieleki finishes Fly, Boltund uses Rage |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// Regieleki finishes Fly, Boltund uses Rage | |
// Regieleki finishes Phantom Force. Boltund uses Rage |
What are the changes the user will see?
Rage now correctly applies an attack boost when a Pokémon is hit and Rage is the last move they used.
Some important notes about Rage's intended behavior:
RageTag
tag if it successfully hits a non-immune target with Rage.RageTag
tag if it successfully uses a move that is not Rage, even if that move misses and/or fails.Why am I making these changes?
Rage is not fully implemented #3503
What are the changes from a developer perspective?
data/battler-tags
: Added newRageTag
to mark that the holder is raging. UsesMOVE_EFFECT
andCUSTOM
lapse types, to check if the tag should be removed because the holder used a different move, and to apply the attack boost when hit respectively.phases/move-effect-phase
: Added code to lapse a target'sRageTag
when they are hit, in line with the implementations of Shell Trap and Beak Blast.data/move
: AddedAddBattlerTagAttr
to Rage to apply aRageTag
to the user on a successful hit.test/moves/rage.test
: New test file to test that rage gives attack boosts as intendedlocales
: Rage uses a custom message for its attack boosts, and since there's no other indicator I also added a separate message that doesn't exist in game for when a Pokémon successfully enters a rage. All non-English text is placeholder, and is just a copy of the English text.(Added to the main post from a comment so people don't miss it):
The "rage is starting to build" text is not present in the mainline games, I added it tentatively in part because otherwise there is no in-game indicator that a pokemon has successfully started raging, and mostly because I needed to test things and record example videos and it saved me from having to play through an extra turn every time to check if the tag was/wasn't applied correctly.
It's a slight deviation from cartridge, but since Rage is a bit unintuitive, I figured I'd leave it in until people wanted it gone.
Screenshots/Videos
A raging pokemon gains an attack boost when hit:
A pokemon stays raging between turns:
A pokemon does not stop raging until it uses a non-rage move:
FastRage-SlowOther.mp4
A pokemon does not start raging until it hits a target with rage:
SlowRage.mp4
A pokemon does not start raging if the target is immune:
RageImmune.mp4
A Pokémon does not start raging if the initial Rage misses:
RageMiss.mp4
A Pokémon does not stop raging if the Player selects Run or Ball:
RageRunBall.mp4
Rage provides an attack boost per instance of damage:
DoublesRage.mp4
How to test the changes?
There are unit tests written in
tests/moves/rage.test.ts
that should hopefully cover most functionality! Currently I am aware that there are not tests for:In addition, the testing for when Rage fails or has no effect includes specific tests against Ghost types and against Pokemon who are semi-invulnerable through the use of Fly, but may not be exhaustive.
For the tests, just make sure that they look right and are running without issue, and potentially double check them using overrides, otherwise, you can check for any edge cases I may have missed also using the options in
overrides.ts
. I described Rage's expected behavior further up, and it can be cross referenced hereChecklist
beta
as my base branchnpm run test
)