Dynamax: Properties
Section 7.E.1
Last updated
Section 7.E.1
Last updated
The Dynamax mechanic introduces new settings and properties that can be edited and manipulated to change various aspects of Dynamax. In this subsection, I'll briefly explain each of these properties, what they do, and how you may set them.
General Settings and Properties
Dynamax is unique from other mechanics in that it only lasts for a limited number of turns before expiring. In Pokemon Sword & Shield, Dynamax would typically only last for 3 turns. Though, unlike the original games, you are able to control how many turns you wish Dynamax to last.
In the plugin settings, there is a setting named DYNAMAX_TURNS
which stores the number of turns that Dynamax will last before expiring. This is set to 3 by default, like how it works in the original games. However, you can tweak this if you feel like changing how this works by setting a different number of turns. If you'd like for Dynamax to last for an infinite number of turns, you may simply set this to -1 instead.
Note that regardless of how many turns you set this to, Dynamax will always automatically end whenever a Pokemon switches out or faints, or at the end of battle.
When a Pokemon Dynamaxes, it becomes giant-sized. This plugin represents this by enlarging the Pokemon's sprites and icons by 50%. Doing so however will obviously shift the position of the Pokemon's sprites during battle. To address this, each Pokemon sprite requires its own separate metrics data for Dynamax in the pokemon_metrics.txt
PBS file.
Here's an example of a Pokemon with Dynamax metrics:
[BULBASAUR]
BackSprite = -4,0
FrontSprite = -1,26
ShadowX = 0
ShadowSize = 2
DmaxBackSprite = 0,0
DmaxFrontSprite = 0,41
DmaxShadowX = 0
You'll notice three new lines of data for each species:
DmaxBackSprite
This sets the metrics for this species' back sprite while Dynamaxed.
DmaxFrontSprite
This sets the metrics for this species' front sprite while Dynamaxed.
DmaxShadowX
This sets the X coordinates for this species' shadow sprite while Dynamaxed.
If a species doesn't have any of the above Dynamax metrics set, it will simply default to using its normal non-Dynamax metrics while Dynamaxed. However, this plugin automatically adds the appropriate Dynamax metrics for every species found in base Essentials, as well as any species added by the Generation 9 Pack. If you have any custom species or forms of your own though, you may have to add your own Dynamax metrics for those species.
Note that Dynamax metrics will be automatically added to all official species upon first installing this plugin. If you'd like to ever restore all of your Dynamax metrics to these default values, hold Shift
upon compiling your game to reapply these metrics. This will overwrite all of your changes, so please keep that in mind.
Editing Dynamax Metrics
To set the Dynamax metrics for a species or form, you may do so by either manually entering them in pokemon_metrics.txt
, or you may do so with an in-game editor while playing in debug mode. However, you don't use the normal metrics editor that you would typically use. Instead, you need to navigate to the "Deluxe plugin settings..." option in the debug menu, and select the option "Dynamax metrics..."
In here, you will find two options to allow you to customize each species' Dynamax metrics:
Edit Dynamax metrics This option will allow you to manually adjust the position of the Dynamax sprites of every species and form.
Auto-set Dynamax metrics This option will automatically set the recommended Dynamax metrics of every species and form. Don't use this haphazardly though, because it isn't perfect and will set all species to the ground and won't distinguish between those that are meant to be airborne. This is mostly to be used as a tool to give you a good starting point if your game has mostly original species or sprites and you need to make Dynamax metrics for all of them from scratch. Note that using this option will take a long time before it's done, since it has to perform this action for every single Pokemon sprite in the game. So don't think your game crashed if it remains frozen for a few minutes. Be patient and give it time.
When selecting either of these options, you will be asked what style of back sprites you're using in your game. If you're using full back sprites (like those provided in the Gen 8 or Gen 9 Packs), please select the Gen 5 style option. If you're using cut off back sprites (like those provided in Essentials by default), please select the Gen 4 style option. This will change how back sprites are automatically aligned when using any auto-set option.
Disabling Enlarged Sprites
If you don't like the way sprites look when enlarged by Dynamax, you can disable this feature entirely. This can be done by opening the plugin settings and setting SHOW_DYNAMAX_SIZE
to false
. If so, this will turn off Pokemon sprites from enlarging while Dynamaxed, and they will remain normal-sized.
While this feature is turned off, Pokemon will no longer use their Dynamax metrics for anything, and these metrics will be entirely ignored. Because of this, the debug Dynamax metrics options will no longer work, and fail to do anything if you try to access them.
When a Pokemon Dynamaxes, they are covered in a red aura to indicate the use of Dynamax energy. This plugin replicates this by placing a transparent red overlay over the Dynamaxed Pokemon's sprites and icons.
However, certain species may need to utilize a different overlay while Dynamaxed. For example, Calyrex doesn't utilize typical Dynamax energy to enter a Dynamax form. Instead, it uses its own power. Because of this, the overlay used for Calyrex isn't the usual red color, but instead blue.
To replicate this, this plugin allows you to set unique overlays to be used for certain species. These overlay graphics should be added to the folder Graphics/Plugins/Dynamax/Patterns
, and should be named by entering the species ID of the species you want that overlay to display over.
For example, Calyrex's blue overlay is entered here in this folder with the name CALYREX
. So whenever Calyrex enters its Dynamax form, this overlay will be displayed over its sprites instead of the typical red one.
If no species-specific overlay is found in this folder, then the Pokemon will always just use the overlay named dynamax
by default.
Animating Dynamax Overlays
The overlay displayed on Dynamax sprites is a pattern than can actually move around in a loop, creating an animation of sorts. By default, this overlay will scroll to the left, creating a cloudy moving effect.
To edit how this pattern moves, you simply have to open the plugin Settings and find the setting DYNAMAX_PATTERN_MOVEMENT
. You will see that this is set to an array containing two symbols.
The first element in this array corresponds to how the overlay animates along the X-axis. The second element in this array corresponds to how the overlay animates along the Y-axis. By combining different settings for each axis, you can control how the pattern moves.
If you'd prefer that the pattern is a still image that doesn't animate, then you would just set this as [:none, :none]
to prevent any movement on either axis.
Disabling Dynamax Overlays
If you don't like the way sprites look when covered by a Dynamax overlay, you can disable this feature entirely. This can be done by opening the plugin settings and setting SHOW_DYNAMAX_OVERLAY
to false
. If so, this will turn off Pokemon sprites from displaying any overlay while Dynamaxed, and they will remain their normal color.
When a Pokemon Dynamaxes, the shadow sprite that appears below them will change. Instead of their typical black shadow, they will instead cast a giant red shadow to indicate their Dynamax form.
Certain species can have unique shadow sprites while Dynamaxed, however. For example, Calyrex doesn't utilize typical Dynamax energy to enter a Dynamax form. Instead, it uses its own power. Because of this, the Dynamax energy surrounding Calyrex isn't the usual red color, but is instead blue.
To replicate this, this plugin allows you to set unique shadow sprites to be displayed for certain species. These sprites should be added to the folder Graphics/Pokemon/Shadow
, and should be named by entering the species ID plus _dmax
at the end of its file name.
For example, Calyrex's blue shadow is entered here in this folder with the name CALYREX_dmax
. So whenever Calyrex enters its Dynamax form, this shadow sprite will be displayed below it instead of the typical red one.
Dynamax Levels
Every Pokemon capable of using Dynamax will have a Dynamax level. This determines how much the Pokemon's HP will be boosted while Dynamaxed. Every 1 Dynamax level increases the amount of HP the Pokemon will gain while Dynamaxed by 5%. At a Dynamax level of 0, the Pokemon's HP will increase by 50%. At the maximum Dynamax level of 10, the Pokemon's HP will become doubled while Dynamaxed.
Below, I'll describe the different methods of manipulating a Pokemon's Dynamax level.
If you ever need to check the Dynamax level of any defined Pokemon object through a script, you may do so by using the script Pokemon.dynamax_lvl
, where Pokemon is the specific Pokemon object you are checking. If you'd like to manually set this Pokemon's Dynamax level to a specific level, you can simply set this to a number from 0-10, such as Pokemon.dynamax_lvl = 5
.
To increase the Dynamax level of your own Pokemon, you must feed them Dynamax Candies. Each Dynamax candy you feed a Pokemon will increase its Dynamax level by 1. However, this plugin also introduces a custom item not found in the original Sword & Shield called Dynamax Candy XL. This is a super-sized candy that will instantly set a Pokemon's Dynamax level to the maximum of 10, regardless of their current level.
While playing in debug mode, you may also manually set the Dynamax level of a Pokemon by opening its debug options in the party menu, scrolling down to "Plugin attributes...", selecting "Dynamax...", and then selecting "Set Dynamax Level."
You may view your Pokemon's current Dynamax level within the stats page of the Summary screen, above their item slot. Note that if the Pokemon is incapable of using Dynamax, their Dynamax level information will be hidden.
By default, the Dynamax level for an NPC's trainer's Pokemon will always be set to zero. However, you can set specific Dynamax levels for each of a trainer's Pokemon by setting DynamaxLv = #
for a specified Pokemon in trainers.txt
, where #
is the value to be used for that Pokemon's Dynamax level. This may also be done within the in-game trainer editor.
Wild Pokemon can have their Dynamax levels edited in the same way any other Pokemon can have their attributes edited, which is described in the "General" section above.
However, you may also set a specific Dynamax level for wild Pokemon by utilizing the "editWildPokemon" Battle Rule along with all of its variants introduced by the Deluxe Battle Kit. This can be done by setting up this rule as a hash, and entering :dynamax_lvl => #
within this hash for the desired Pokemon where #
is the number want to set this wild Pokemon's Dynamax level to.
For example, if you want to set a wild Pikachu's Dynamax level to 8, you could implement it as such:
setBattleRule("editWildPokemon", {
:dynamax_lvl => 8
})
WildBattle.start(:PIKACHU, 25)
For more information on this Battle Rule, refer to the "Deluxe Battle Rules" section of the tutorial.
G-Max Factor
Certain species have a unique Gigantamax form which they will transform into when they Dynamax. However, this will only occur if the Pokemon has G-Max Factor. Otherwise, they will just Dynamax normally instead of changing forms. Any Pokemon can technically be given G-Max Factor. However, this attribute doesn't do anything unless the species has a Gigantamax form.
Below, I'll describe all of the different methods of giving a Pokemon G-Max Factor.
If you ever need to use a script to check whether or not a defined Pokemon object has G-Max Factor, you may do so by using the script Pokemon.gmax_factor?
, where Pokemon
is the specific Pokemon object you are checking. If you'd like to manually set this Pokemon's G-Max Factor, you can simply set this to true or false, such as Pokemon.gmax_factor = true
.
To set G-Max Factor on your own Pokemon, you can do so by feeding them Max Soup. While Max Soup wasn't an actual item in the original Sword & Shield, this plugin implements it as a consumable item that you can use on your Pokemon. Only species that have the potential to Gigantamax can consume Max Soup, so the item will fail to do anything if used on a species without one. If Max Soup is used on a Pokemon that already has G-Max Factor, then this will remove that Pokemon's G-Max Factor.
While playing in debug mode, you may also manually set a Pokemon's G-Max Factor by opening its debug options in the party menu, scrolling down to "Plugin attributes...", selecting "Dynamax...", and then selecting "Set G-Max Factor."
If your Pokemon has G-Max Factor, an icon will indicate if they have it in their Summary, in the same area where status condition and Pokerus is displayed. G-Max Factor will be displayed in the PC storage UI as well. However, if you would like to hide this display in the storage screen, you may do so by opening the plugin settings and setting STORAGE_GMAX_FACTOR
to false
.
Note that if the Pokemon is incapable of using Dynamax, their G-Max Factor information will never be displayed anywhere.
By default, NPC's trainer's Pokemon will never have G-Max Factor. However, you can give a trainer's Pokemon G-Max Factor by setting Gigantamax = true
for a specified Pokemon in trainers.txt
. This will flag the Pokemon as having G-Max Factor so that it may Gigantamax if the trainer decides to Dynamax this Pokemon. This may also be done within the in-game trainer editor.
Wild Pokemon can have their G-Max Factor edited in the same way any other Pokemon can have their attributes edited, which is described in the "General" section above.
However, you may also set G-Max Factor for wild Pokemon by utilizing the "editWildPokemon" Battle Rule along with all of its variants introduced by the Deluxe Battle Kit. This can be done by setting up this rule as a hash, and entering :gmax_factor => true
within this hash for the desired Pokemon.
For example, if you want to set G-Max Factor on a wild Pikachu, you could implement it as such:
setBattleRule("editWildPokemon", {
:gmax_factor => true
})
WildBattle.start(:PIKACHU, 25)
For more information on this Battle Rule, refer to the "Deluxe Battle Rules" section of the tutorial.