As they exist, a State in the game is more or less a simple on/off effect that has some sort of duration. It is applied, or removed either manually or by that duration expiring… Again, simple. Manual removal can include a few conditional reactions to things like a change in the targets condition, that is otherwise unrelated to a state. Such as the target being confused, or unable to act. Which themselves can be applied manually, or automatically via command events during battle.
This is all good if the only real depth to your combat mechanic is traditional my turn your turn, action counter action, paper rock scissors…
However, this is mind numbingly restrictive if your combat mechanic is more dynamic; where any action can have unintended consequences. Or where the nature of the target and the environment can add even more variety to those consequences. Or if your battler action system has distinct and often unique utility for specific actor decisions (class, equipment, etc), where simply smashing the same two or three skills in every battle is as likely to CAUSE your defeat as much as help prevent it.
This is why I decided that second to completely re-writing the skill use restrictions (which I did a few weeks ago, thanks to Yanfly’s example) I wanted to completely re-write the default State mechanic, to include, but not be limited to, support the following meta:
- Normal States
Function much like the default state system, but with charges that dictate duration rather than hard coded timers. These charges are extremely manipulable, allowing for duration to change dynamically, as well as change the State via the accumulation or loss of said charges. (Imagine a state that became lesser versions of itself as it lost charges, or visa verse)When the state loses all its charges, it is removed like normal. Exactly as if its duration had reached zero. However, its not only the end of a turn that can reduce a state to zero charges. Other states that in default would require a ‘resist’ feature and remove that state outright, can instead soft resist that state by removing a set number of charges. Thus allowing a stronger state to persist (with a reduced duration of course) even if a resisting state existed prior to its application, or is applied after.
- Permanent States
Function much like Normal States, but they do not get removed when their charges reach zero. They will persist as some effect (which can also vary by charge level) until they are dispelled. Dispelling a Permanent State is not an easy thing to do, and will often require the consumption of valuable resources or time. However, that cost is even greater should the Permanent State also be Hardened. Which will require all the states charges to be depleted (zero) in order for a Dispel to work in removing it.
- Trait States
Function a lot like Permanent States, but they can rarely be applied or removed without a player level decision, such as choosing a new Trait Bonus or equipping a magical Ring of Shielding. Some dungeons will apply an environmental trait to all battlers inside it, but it will linger only so long as the party remains inside the environment.Traits are a bag of tricks that have currently tying my brain in knots trying to get straight, but put simply I am attempting to allow Traits to be temporarily Negated if a state outright ‘resists’ it (via a resist feature) or if the Trait is magical in nature, and there is anti-magic effecting the player.
Traits can be toggled on or off, and require charges to be active, or any other condition. (Such as the owner of the trait must have 50% or more of its health for the Trait to remain active. Etc…) They can also be in groups, where one or more members consume charges regardless of which one is active. (imagine a wizard with several different shields, but all shields consume ‘shield’ charges until none remain and the shields can no longer be used) They can also be bound to a piece of equipment, and be active only when worn. Etc…
Its these exceptions and conditions that are causing the most trouble… But I am thick headed and refuse to give in. A solution will be found!
Believe me when I say that this is only about a THIRD of what I am attempting to implement, and unfortunately the last TWO THIRDS of it requires that Traits function without a hitch… As it will depend on that code. Things like scalable state effects, progressive states, damage shields, living states (something like a talking sword that can take part in battle!) and even more!
I just hope that my reach doesn’t exceed my ability to grasp…