balance(ai): Moveset generation rebalancing#6962
Merged
Merged
Conversation
bc69b19 to
834cbe9
Compare
d8982a7 to
59da950
Compare
7fd5c00 to
bb5b85b
Compare
15878f8 to
5869e46
Compare
Also update forced signature moves
ead10c6 to
10dba0a
Compare
2d06aef to
9f0fe14
Compare
Mourouh
previously approved these changes
Feb 27, 2026
ee88c47 to
0ef2081
Compare
Blitz425
previously approved these changes
Mar 9, 2026
DayKev
reviewed
Mar 9, 2026
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
DayKev
reviewed
Mar 9, 2026
9d4cac1 to
4a1d352
Compare
Bertie690
approved these changes
Mar 9, 2026
DayKev
approved these changes
Mar 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What are the changes the user will see?
Moveset generation has been tweaked; most changes do not apply to non-boss wild Pokémon.
Why am I making these changes?
Long discussion with balance team
What are the changes from a developer perspective?
Created a new script to generate sample movesets. Can be used with
pnpm sample-movesetsAdded a new constant to
balance/moves/moveset-generation.ts,EVO_MOVE_BP_THRESHOLD, for dynamically controlling the BP threshold that causes a move learned at level 1 to be considered a "move reminder" move.Moved some movegen related files in the balance folder into a sub folder for better organization.
Created
forbidden-moves.ts, which currently includes a set of moves that should not generate outside of double battles. Before initial weights are calculated during moveset generation, these moves are removed from the pool if the battle is not a doubles battle.Note that this adds an assumption where a mon is expected to have one non-doubles move available in its moveset in order to generate any moves. No edge-case handling is implemented that would allow moves from this list during singles, even if the Pokémon has no other moves available. (This situation cannot happen now, but could in the future, say in a randomizer mode, etc.).
Created
superceded-moves.ts, which contains a map of moves that are outclassed.Currently, for TMs, if a pokemon learns both the base move and the TM, and the pokemon is allowed to learn the TM of a higher tier, the lower tier TM will be removed from the pool. This may not be desireable, for example, as certain moves are locked behind ultra tier tms.
An example of this consequence:
If ultra tier TMs are available to the mon, this would mean that shock wave will never generate on a mon that can learn it if the mon can also learn thunderbolt from TM, even though it has a higher likelihood to generate.
Added a new method to
VariableMoveTypeAttr,getTypeForMovegen, to obtain the type of many variable-type movesMisc
RELEARN_MOVE_WEIGHTconstant was not being used. This was an oversight from my changes in [Balance] Tweak trainer moveset TM generation. #6533. This isn't an observable bug, because the value being used was the same as RELEARN_MOVE_WEIGHT.TmPoolTiersinterface to only allow common, great, and ultra tiersScreenshots/Videos
How to test the changes?
Try out movegen with
pnpm sample-movesetsChecklist
betaas my base branchpnpm test:silent)pnpm test:create) or updated existing tests related to the PR's changes[ ] I have provided screenshots/videos of the changes (if applicable)[ ] I have made sure that any UI change works for both the default and legacy UI themes (if applicable)