If code refactoring is happening, I'll lean on my first requests and comments in this thread. That is, making it even easier for people to locate where they should define G-max form exceptions (like Alcremie is right now) and streamlining the process of adding new D-max/G-max moves (new types!). It already works so just adding more comments in the code would be a boon in this department.
Keep up the good work Lucidi, looking forward to v20 and whatever you've been cooking up for us.
I'm redesigning the PowerMoves PBS file to match v20's new formatting for many of its PBS files (items, moves, abilities, etc). You can now simply set a flag to set Power Move exceptions when it comes to forms. For example, with Pokemon like Alcremie, Lycanroc, and Toxtricity, there is now simply a flag called "AllForms" that is set to indicate that every form of this species is capable of triggering Gigantamax or an exclusive Z-Move, like so:
Code:
#-------------------------------
[GMAX]
MaxMove = GMAXFINALE
Type = FAIRY
Species = ALCREMIE
Flag = AllForms
GMax = Gigantamax Alcremie
Height = 30.0
Pokedex = It launches swarms of missiles, each made of cream and loaded with 100,000 kilocalories. Get hit by one of these, and your head will swim.
#-------------------------------
This makes it so that any form of Alcremie is compatible and can trigger this Gigantamax form. If this flag was omitted, then only base Alcremie could trigger it.
Or, if you only want a Power Move to be eligible on some forms of a species, but not all, then you can use different flags called "AllFormsAbove_" or "AllFormsBelow_", as shown in this Z-Move example for Pikachu:
Code:
#-------------------------------
[ZMOVE]
ZMove = TENMILLIONVOLTTUNDERBOLT
Item = PIKASHUNIUMZ
Move = THUNDERBOLT
Species = PIKACHU
Flag = AllFormsAbove_8
#-------------------------------
This makes it so that Pikachu is compatible and can trigger this Z-Move, but only if its form is higher than 8 (capped Pikachu forms). You can do a similar thing with the flag "AllFormsBelow_" which will obviously only allow forms below the inputted number to be compatible.
Or, you can instead just list all the eligible species ID's that can use this specific Power Move, as shown in these Z-Move examples:
Code:
#-------------------------------
[ZMOVE]
ZMove = GUARDIANOFALOLA
Item = TAPUNIUMZ
Move = NATURESMADNESS
Species = TAPUKOKO,TAPULELE,TAPUBULU,TAPUFINI
#-------------------------------
[ZMOVE]
ZMove = SEARINGSUNRAZESMASH
Item = SOLGANIUMZ
Move = SUNSTEELSTRIKE
Species = SOLGALEO,NECROZMA_1
#-------------------------------
[ZMOVE]
ZMove = MENACINGMOONRAZEMAELSTROM
Item = LUNALIUMZ
Move = MOONGEISTBEAM
Species = LUNALA,NECROZMA_2
#-------------------------------
As far as streamlining, that is definitely a goal I have in mind. I'm trying to generalize as much of the move effects as possible so that custom moves require very simple coding to implement (assuming their effects aren't extremely complex). I intend to provide some of my own custom moves as an example. Here's a few:
Code:
#===============================================================================
# Starts rain weather and electric terrain. (G-Max Thunderstorm)
#===============================================================================
class Battle::Move::PowerMoveStartRainWeatherElectricTerrain < Battle::Move::PowerMoveFieldEffects
def initialize(battle, power_move)
super
@weather = :Rain
@terrain = :Electric
end
end
#===============================================================================
# Starts Trick Room. (G-Max Inversion)
#===============================================================================
class Battle::Move::PowerMoveStartTrickRoom < Battle::Move::PowerMoveFieldEffects
def initialize(battle, power_move)
super
@field = [
[PBEffects::TrickRoom, 3, "{1} twisted the dimensions!"]
]
end
end
As you can see, these are super simple to set up. I'm trying to accommodate the types of effects that I feel would be common for people to want to create a custom move for. Streamlining is my number one goal in general for v20, in every capacity. Ideally, I would like to eliminate the need for ALL of the manual script edits, manual PBS additions, forced compiling, branching instructions for compatibility...all of it. Just 100% drag-and-drop. I think I'm getting there, but I'm also juggling this with like 5 other plugins im working on simultaneously, so it's a gradual process.
Anyway, hopefully some of this will address your concerns. But keep in mind that this is all still a work in progress and subject to change.