Difference between revisions of "Skills and States Core VisuStella MZ"

From Yanfly.moe Wiki
Jump to navigation Jump to search
(Changelog)
Line 69: Line 69:
 
This plugin adds some new hard-coded features to RPG Maker MZ's functions.
 
This plugin adds some new hard-coded features to RPG Maker MZ's functions.
 
The following is a list of them.
 
The following is a list of them.
 +
 +
---
 +
 +
=== Action End Removal for States ===
 +
 +
[[File:SkillsStatesCore_ActionEndStun.png]]
 +
 +
Action End has been updated so that it actually applies per action used
 +
instead of just being at the start of a battler's action set. However, there
 +
are side effects to this: if a state has the "Cannot Move" restriction along
 +
with the "Action End" removal timing, then unsurprisingly, the state will
 +
never wear off because it's now based on actual actions ending. There are
 +
two solutions to this:
 +
 +
1. Don't make "Cannot Move" restriction states with "Action End". This is
 +
not a workaround. This is how the state removal is intended to work under
 +
the new change.
 +
 +
2. Go to the Skills & States Core Plugin Parameters, go to State Setttings,
 +
look for "Action End Update", and set it to false. You now reverted the
 +
removal timing system back to how it originally was in RPG Maker MZ's
 +
default battle system where it only updates based on an action set rather
 +
than per actual action ending.
  
 
---
 
---

Revision as of 13:51, 30 July 2021

Welcome to the wiki! This is where you can find resources from Yanfly.moe, Ækashics.moe,
VisuStella, Caz Wolf, Fallen Angel Olivia, Atelier Irina, and other affiliated content creators.



Download

System

This is a plugin created for RPG Maker MZ.

Click here for help on how to install plugins and an explanation on the Tier Hierarchy System.


UpdatePlugins.png

Click here to learn how to update plugins.


Troubleshooting.jpg

Click here for how to troubleshoot plugins if you get an error.



SkillsStatesCoreScreen.png

Extension Plugins

The following plugins are Extension Plugins that require this plugin as its Parent Plugin.

Place the following plugins below this plugin located in the Plugin Manager if you plan on using them.


VisuStella MZ

This plugin is a part of the VisuStella MZ Plugin Library.


Support VisuStella

Click here if you want to help support VisuStella on Patreon.


Introduction

The Skills & States Core plugin extends and builds upon the functionality of RPG Maker MZ's inherent skill, state, and buff functionalities and allows game devs to customize its various aspects.

Features include all (but not limited to) the following:

  • Assigning multiple Skill Types to Skills.
  • Making custom Skill Cost Types (such as HP, Gold, and Items).
  • Allowing Skill Costs to become percentile-based or dynamic either directly through the Skills themselves or through trait-like notetags.
  • Replacing gauges for different classes to display different types of Skill Cost Type resources.
  • Hiding/Showing and enabling/disabling skills based on switches, learned skills, and code.
  • Setting rulings for states, including if they're cleared upon death, how reapplying the state affects their turn count, and more.
  • Allowing states to be categorized and affected by categories, too.
  • Displaying turn counts on states drawn in the window or on sprites.
  • Manipulation of state, buff, and debuff turns through skill and item effect notetags.
  • Create custom damage over time state calculations through notetags.
  • Allow database objects to apply passive states to its user.
  • Passive states can have conditions before they become active as well.
  • Updated Skill Menu Scene layout to fit more modern appearances.
  • Added bonus if Items & Equips Core is installed to utilize the Shop Status Window to display skill data inside the Skill Menu.
  • Control over various aspects of the Skill Menu Scene.

Requirements

This plugin is made for RPG Maker MZ. This will not work in other iterations of RPG Maker.


Tier 1

This plugin is a Tier 1 plugin. Place it under other plugins of lower tier value on your Plugin Manager list (ie: 0, 1, 2, 3, 4, 5).

This is to ensure that your plugins will have the best compatibility with the rest of the VisuStella MZ Plugin library.


Major Changes

This plugin adds some new hard-coded features to RPG Maker MZ's functions. The following is a list of them.

---

Action End Removal for States

SkillsStatesCore ActionEndStun.png

Action End has been updated so that it actually applies per action used instead of just being at the start of a battler's action set. However, there are side effects to this: if a state has the "Cannot Move" restriction along with the "Action End" removal timing, then unsurprisingly, the state will never wear off because it's now based on actual actions ending. There are two solutions to this:

1. Don't make "Cannot Move" restriction states with "Action End". This is not a workaround. This is how the state removal is intended to work under the new change.

2. Go to the Skills & States Core Plugin Parameters, go to State Setttings, look for "Action End Update", and set it to false. You now reverted the removal timing system back to how it originally was in RPG Maker MZ's default battle system where it only updates based on an action set rather than per actual action ending.

---

Buff & Debuff Level Management

SkillsStatesBuffDebuffs.png

In RPG Maker MZ, buffs and debuffs when applied to one another will shift the buff modifier level up or down. This plugin will add an extra change to the mechanic by making it so that once the buff modifier level reaches a neutral point, the buff or debuff is removed altogether and resets the buff and debuff turn counter for better accuracy.

---

Skill Costs

SkillsStatesSkillCosts.png

In RPG Maker MZ, skill costs used to be hard-coded. Now, all Skill Cost Types are now moved to the Plugin Parameters, including MP and TP. This means that from payment to checking for them, it's all done through the options available.

By default in RPG Maker MZ, displayed skill costs would only display only one type: TP if available, then MP. If a skill costs both TP and MP, then only TP was displayed. This plugin changes that aspect by displaying all the cost types available in order of the Plugin Parameter Skill Cost Types.

By default in RPG Maker MZ, displayed skill costs were only color-coded. This plugin changes that aspect by displaying the Skill Cost Type's name alongside the cost. This is to help color-blind players distinguish what costs a skill has.

---

Sprite Gauges

SkillsStatesSpriteGauges.png

Sprite Gauges in RPG Maker MZ by default are hard-coded and only work for HP, MP, TP, and Time (used for ATB). This plugin makes it possible for them to be customized through the use of Plugin Parameters under the Skill Cost Types and their related-JavaScript entries.

---

State Displays

State Displays

To put values onto states and display them separately from the state turns you can use the following script calls.

 battler.getStateDisplay(stateId)
 - This returns whatever value is stored for the specified battler under
   that specific state value.
 - If there is no value to be returned it will return an empty string.
 battler.setStateDisplay(stateId, value)
 - This sets the display for the battler's specific state to whatever you
   declared as the value.
 - The value is best used as a number or a string.
 battler.clearStateDisplay(stateId)
 - This clears the display for the battler's specific state.
 - In short, this sets the stored display value to an empty string.

Window Functions Moved

Some functions found in RPG Maker MZ's default code for Window_StatusBase and Window_SkillList are now moved to Window_Base to make the functions available throughout all windows for usage.

---

Passive State Clarification

SkillsStatesCorePassives.png

This section will explain various misconceptions regarding passive states. No, passive states do not work the same way as states code-wise. Yes, they use the same effects as states mechanically, but there are differences.


---

For those using the code "a.isStateAffected(10)" to check if a target is affected by a state or not, this does NOT check passive states. This only checks for states that were directly applied to the target.

This is NOT a bug.

Instead, use "a.states().includes($dataStates[10])" to check for them. This code will search for both directly applied states and passive states alike.

---

As passive states are NOT considered directly applied to, they do NOT match a Conditional Branch's state check as well. The Conditional Branch effect checks for an affected state.

---

Because passive states are NOT directly applied to a battler, the functions of "addNewState", "addState", "eraseState", "removeState" do NOT apply to passive states either. This means that any of the related JS notetags tied to those functions will not occur either.

---

Why are passive states not considered affected by? Let's look at it differently. There are two ways to grant skills to actors. They can acquire skills by levels/items/events or they can equip gear that temporarily grants the skill in question.

Learning the skill is direct. Temporarily granting the skill is indirect. These two factors have mechanical importance and require differentiation.

Regular states and passive states are the same way. Regular states are directly applied, therefore, need to be distinguished in order for things like state turns and steps, removal conditionals, and similar to matter at all. Passive states are indirect and are therefore, unaffected by state turns, steps, and removal conditions. These mechanical differences are important for how RPG Maker works.

---

Once again, it is NOT a bug that when using "a.isStateAffected(10)" to check if a target has a passive state will return false.

---

Notetags

RPG Maker MZ's editor is unable to allow for custom traits/properties that a game dev may wish to associate with a database object, event, map, etc. Notetags are used to work around such limitations by allowing the game dev to tag certain traits/properties using specific Notetags declared by the related plugin.

Here is a list of Notetag(s) that you may use.


The following are notetags that have been added through this plugin. These notetags will not work with your game if this plugin is OFF or not present.

General Skill Notetags

SkillsStatesCoreStype.png

The following are general notetags that are skill-related.

---

<Skill Type: x>
<Skill Types: x,x,x>

<Skill Type: name>
<Skill Types: name, name, name>

- Used for: Skill Notetags
- Marks the skill to have multiple Skill Types, meaning they would appear
  under different skill types without needing to create duplicate skills.
- Replace 'x' with a number value representing the Skill Type's ID.
- If using 'name' notetag variant, replace 'name' with the Skill Type(s)
  name desired to be added.

---

<List Name: name>

- Used for: Skill Notetags
- Makes the name of the skill appear different when show in the skill list.
- Using \V[x] as a part of the name will display that variable.

---

Skill Cost Notetags

SkillsStatesSkillCosts.png

The following are notetags that can be used to adjust skill costs. Some of these notetags are added through the Plugin Parameter: Skill Cost Types and can be altered there. This also means that some of these notetags can have their functionality altered and/or removed.

---

<type Cost: x>
<type Cost: x%>

- Used for: Skill Notetags
- These notetags are used to designate costs of custom or already existing
  types that cannot be made by the Database Editor.
- Replace 'type' with a resource type. Existing ones found in the Plugin
  Parameters are 'HP', 'MP', 'TP', 'Gold', and 'Potion'. More can be added.
- Replace 'x' with a number value to determine the exact type cost value.
  This lets you bypass the Database Editor's limit of 9,999 MP and 100 TP.
- The 'x%' version is replaced with a percentile value to determine a cost
  equal to a % of the type's maximum quantity limit.
- Functionality for these notetags can be altered in the Plugin Parameters.

Examples:
  <HP Cost: 500>
  <MP Cost: 25%>
  <Gold Cost: 3000>
  <Potion Cost: 5>

---

<type Cost Max: x>
<type Cost Min: x>

- Used for: Skill Notetags
- These notetags are used to ensure conditional and % costs don't become too
  large or too small.
- Replace 'type' with a resource type. Existing ones found in the Plugin
  Parameters are 'HP', 'MP', 'TP', 'Gold', and 'Potion'. More can be added.
- Replace 'x' with a number value to determine the maximum or minimum values
  that the cost can be.
- Functionality for these notetags can be altered in the Plugin Parameters.

Examples:
  <HP Cost Max: 1500>
  <MP Cost Min: 5>
  <Gold Cost Max: 10000>
  <Potion Cost Min: 3>

---

<type Cost: +x>
<type Cost: -x>

<type Cost: x%>

- Used for: Actor, Class, Weapon, Armor, Enemy, State Notetags
- Replace 'type' with a resource type. Existing ones found in the Plugin
  Parameters are 'HP', 'MP', 'TP', 'Gold', and 'Potion'. More can be added.
- For % notetag variant: Replace 'x' with a number value to determine the
  rate to adjust the Skill Cost Type by as a flat value. This is applied
  before <type Cost: +x> and <type Cost: -x> notetags.
- For + and - notetag variants: Replace 'x' with a number value to determine
  how much to adjust the Skill Cost Type by as a flat value. This is applied
  after <type Cost: x%> notetags.
- Functionality for these notetags can be altered in the Plugin Parameters.

Examples:
  <HP Cost: +20>
  <MP Cost: -10>
  <Gold Cost: 50%>
  <Potion Cost: 200%>

---

<Custom Cost Text>
 text
</Custom Cost Text>

- Used for: Skill Notetags
- Allows you to insert custom text into the skill's cost area towards the
  end of the costs.
- Replace 'text' with the text you wish to display.
- Text codes may be used.

---

JavaScript Notetags: Skill Costs

The following are notetags made for users with JavaScript knowledge to determine any dynamic Skill Cost Types used for particular skills.

---

<JS type Cost>
 code
 code
 cost = code;
</JS type Cost>

- Used for: Skill Notetags
- Replace 'type' with a resource type. Existing ones found in the Plugin
  Parameters are 'HP', 'MP', 'TP', 'Gold', and 'Potion'. More can be added.
- Replace 'code' to determine the type 'cost' of the skill.
- Insert the final type cost into the 'cost' variable.
- The 'user' variable refers to the user about to perform the skill.
- The 'skill' variable refers to the skill being used.
- Functionality for the notetag can be altered in the Plugin Parameters.

---

Gauge Replacement Notetags

SkillsStatesSpriteGauges.png

Certain classes can have their gauges swapped out for other Skill Cost Types. This is especially helpful for the classes that don't utilize those Skill Cost Types. You can mix and match them however you want.

---

<Replace HP Gauge: type>
<Replace MP Gauge: type>
<Replace TP Gauge: type>

- Used for: Class Notetags
- Replaces the HP (1st), MP (2nd), or TP (3rd) gauge with a different Skill
  Cost Type.
- Replace 'type' with a resource type. Existing ones found in the Plugin
  Parameters are 'HP', 'MP', 'TP', 'Gold', and 'Potion'. More can be added.
- Replace 'type' with 'none' to not display any gauges there.
- The <Replace TP Gauge: type> will require 'Display TP in Window' setting
  to be on in the Database > System 1 tab.
- Functionality for the notetags can be altered by changes made to the
  Skill & States Core Plugin Parameters.

---

Skill Accessibility Notetags

Sometimes, you don't want all skills to be visible whether it be to hide menu-only skills during battle, until certain switches are turned ON/OFF, or until certain skills have been learned.

---

<Hide in Battle>
<Hide outside Battle>

- Used for: Skill Notetags
- Makes the specific skill visible or hidden depending on whether or not the
  player is currently in battle.

---

<Show Switch: x>

<Show All Switches: x,x,x>
<Show Any Switches: x,x,x>

- Used for: Skill Notetags
- Determines the visibility of the skill based on switches.
- Replace 'x' with the switch ID to determine the skill's visibility.
- If 'All' notetag variant is used, skill will be hidden until all switches
  are ON. Then, it would be shown.
- If 'Any' notetag variant is used, skill will be shown if any of the
  switches are ON. Otherwise, it would be hidden.

---

<Hide Switch: x>

<Hide All Switches: x,x,x>
<Hide Any Switches: x,x,x>

- Used for: Skill Notetags
- Determines the visibility of the skill based on switches.
- Replace 'x' with the switch ID to determine the skill's visibility.
- If 'All' notetag variant is used, skill will be shown until all switches
  are ON. Then, it would be hidden.
- If 'Any' notetag variant is used, skill will be hidden if any of the
  switches are ON. Otherwise, it would be shown.

---

<Show if learned Skill: x>

<Show if learned All Skills: x,x,x>
<Show if learned Any Skills: x,x,x>

<Show if learned Skill: name>

<Show if learned All Skills: name, name, name>
<Show if learned Any Skills: name, name, name>

- Used for: Skill Notetags
- Determines the visibility of the skill based on skills learned.
- Determines the visibility of the skill based on skills learned.
- This does not apply to skills added by traits on actors, classes, any
  equipment, or states. These are not considered learned skills. They are
  considered temporary skills.
- Replace 'x' with the skill ID to determine the skill's visibility.
- If 'name' notetag viarant is used, replace 'name' with the skill's name to
  be checked for the notetag.
- If 'All' notetag variant is used, skill will be hidden until all skills
  are learned. Then, it would be shown.
- If 'Any' notetag variant is used, skill will be shown if any of the skills
  are learned. Otherwise, it would be hidden.

---

<Hide if learned Skill: x>

<Hide if learned All Skills: x,x,x>
<Hide if learned Any Skills: x,x,x>

<Hide if learned Skill: name>

<Hide if learned All Skills: name, name, name>
<Hide if learned Any Skills: name, name, name>

- Used for: Skill Notetags
- Determines the visibility of the skill based on skills learned.
- This does not apply to skills added by traits on actors, classes, any
  equipment, or states. These are not considered learned skills. They are
  considered temporary skills.
- Replace 'x' with the skill ID to determine the skill's visibility.
- If 'name' notetag viarant is used, replace 'name' with the skill's name to
  be checked for the notetag.
- If 'All' notetag variant is used, skill will be shown until all skills
  are learned. Then, it would be hidden.
- If 'Any' notetag variant is used, skill will be hidden if any of the
  skills are learned. Otherwise, it would be shown.

---

<Show if has Skill: x>

<Show if have All Skills: x,x,x>
<Show if have Any Skills: x,x,x>

<Show if has Skill: name>

<Show if have All Skills: name, name, name>
<Show if have Any Skills: name, name, name>

- Used for: Skill Notetags
- Determines the visibility of the skill based on skills available.
- This applies to both skills that have been learned and/or temporarily
  added through traits on actors, classes, equipment, or states.
- Replace 'x' with the skill ID to determine the skill's visibility.
- If 'name' notetag viarant is used, replace 'name' with the skill's name to
  be checked for the notetag.
- If 'All' notetag variant is used, skill will be hidden until all skills
  are learned. Then, it would be shown.
- If 'Any' notetag variant is used, skill will be shown if any of the skills
  are learned. Otherwise, it would be hidden.

---

<Hide if has Skill: x>

<Hide if have All Skills: x,x,x>
<Hide if have Any Skills: x,x,x>

<Hide if has Skill: name>

<Hide if have All Skills: name, name, name>
<Hide if have Any Skills: name, name, name>

- Used for: Skill Notetags
- Determines the visibility of the skill based on skills available.
- This applies to both skills that have been learned and/or temporarily
  added through traits on actors, classes, equipment, or states.
- Replace 'x' with the skill ID to determine the skill's visibility.
- If 'name' notetag viarant is used, replace 'name' with the skill's name to
  be checked for the notetag.
- If 'All' notetag variant is used, skill will be shown until all skills
  are learned. Then, it would be hidden.
- If 'Any' notetag variant is used, skill will be hidden if any of the
  skills are learned. Otherwise, it would be shown.

---

<Enable Switch: x>

<Enable All Switches: x,x,x>
<Enable Any Switches: x,x,x>

- Used for: Skill Notetags
- Determines the enabled status of the skill based on switches.
- Replace 'x' with the switch ID to determine the skill's enabled status.
- If 'All' notetag variant is used, skill will be disabled until all
  switches are ON. Then, it would be enabled.
- If 'Any' notetag variant is used, skill will be enabled if any of the
  switches are ON. Otherwise, it would be disabled.

---

<Disable Switch: x>

<Disable All Switches: x,x,x>
<Disable Any Switches: x,x,x>

- Used for: Skill Notetags
- Determines the enabled status of the skill based on switches.
- Replace 'x' with the switch ID to determine the skill's enabled status.
- If 'All' notetag variant is used, skill will be enabled until all switches
  are ON. Then, it would be disabled.
- If 'Any' notetag variant is used, skill will be disabled if any of the
  switches are ON. Otherwise, it would be enabled.

---

JavaScript Notetags: Skill Accessibility

The following are notetags made for users with JavaScript knowledge to determine if a skill can be accessible visibly or through usage.

---

<JS Skill Visible>
 code
 code
 visible = code;
</JS Skill Visible>

- Used for: Skill Notetags
- Determines the visibility of the skill based on JavaScript code.
- Replace 'code' to determine the type visibility of the skill.
- The 'visible' variable returns a boolean (true/false) to determine if the
  skill will be visible or not.
- The 'user' variable refers to the user with the skill.
- The 'skill' variable refers to the skill being checked.
- All other visibility conditions must be met for this code to count.

---

<JS Skill Enable>
 code
 code
 enabled = code;
</JS Skill Enable>

- Used for: Skill Notetags
- Determines the enabled status of the skill based on JavaScript code.
- Replace 'code' to determine the type enabled status of the skill.
- The 'enabled' variable returns a boolean (true/false) to determine if the
  skill will be enabled or not.
- The 'user' variable refers to the user with the skill.
- The 'skill' variable refers to the skill being checked.
- All other skill conditions must be met in order for this to code to count.

---

General State-Related Notetags

SkillsStatesCoreColors.png

The following notetags are centered around states, such as how their turn counts are displayed, items and skills that affect state turns, if the state can avoid removal by death state, etc.

---

<No Death Clear>

- Used for: State Notetags
- Prevents this state from being cleared upon death.
- This allows this state to be added to an already dead battler, too.

---

<No Recover All Clear>

- Used for: State Notetags
- Prevents this state from being cleared upon using the Recover All command.

---

<Group Defeat>

- Used for: State Notetags
- If an entire party is affected by states with the <Group Defeat> notetag,
  they are considered defeated.
- Usage for this includes party-wide petrification, frozen, etc.

---

<Reapply Rules: Ignore>
<Reapply Rules: Reset>
<Reapply Rules: Greater>
<Reapply Rules: Add>

- Used for: State Notetags
- Choose what kind of rules this state follows if the state is being applied
  to a target that already has the state. This affects turns specifically.
- 'Ignore' will bypass any turn changes.
- 'Reset' will recalculate the state's turns.
- 'Greater' will choose to either keep the current turn count if it's higher
  than the reset amount or reset it if the current turn count is lower.
- 'Add' will add the state's turn count to the applied amount.
- If this notetag isn't used, it will use the rules set in the States >
  Plugin Parameters.

---

<Positive State>
<Negative State>

- Used for: State Notetags
- Marks the state as a positive state or negative state, also altering the
  state's turn count color to match the Plugin Parameter settings.
- This also puts the state into either the 'Positive' category or
  'Negative' category.

---

<Category: name>
<Category: name, name, name>

- Used for: State Notetags
- Arranges states into certain/multiple categories.
- Replace 'name' with a category name to mark this state as.
- Insert multiples of this to mark the state with  multiple categories.

---

<Categories>
 name
 name
</Categories>

- Used for: State Notetags
- Arranges states into certain/multiple categories.
- Replace each 'name' with a category name to mark this state as.

---

<Resist State Category: name>
<Resist State Categories: name, name, name>

- Used for: Actor, Class, Weapon, Armor, Enemy, State Notetags
- Causes the affected battler resist the listed categories.
- Replace each 'name' with a category name to resist.
  - Insert multiple 'name' entries to add more categories.
- This works exactly like how state resistances work in-game. If a battler
  who was originally NOT resistant to "Poison" before gaining a
  poison-resistant trait, the "Poison" state will remain because it was
  applied before poison-resistance as enabled.

---

<Resist State Categories>
 name
 name
 name
</Resist State Categories>

- Used for: Actor, Class, Weapon, Armor, Enemy, State Notetags
- Causes the affected battler resist the listed categories.
- Replace each 'name' with a category name to resist.
  - Insert multiple 'name' entries to add more categories.
- This works exactly like how state resistances work in-game. If a battler
  who was originally NOT resistant to "Poison" before gaining a
  poison-resistant trait, the "Poison" state will remain because it was
  applied before poison-resistance as enabled.

---

<State x Category Remove: y>

<State x Category Remove: All>

- Used for: Skill, Item Notetags
- Allows the skill/item to remove 'y' states from specific category 'x'.
- Replace 'x' with a category name to remove from.
- Replace 'y' with the number of times to remove from that category.
- Use the 'All' variant to remove all of the states of that category.
- Insert multiples of this to remove different types of categories.

---

<Hide State Turns>

- Used for: State Notetags
- Hides the state turns from being shown at all.
- This will by pass any Plugin Parameter settings.

---

<Turn Color: x>
<Turn Color: #rrggbb>

- Used for: State Notetags
- Hides the state turns from being shown at all.
- Determines the color of the state's turn count.
- Replace 'x' with a number value depicting a window text color.
- Replace 'rrggbb' with a hex color code for a more custom color.

---

<State id Turns: +x>
<State id Turns: -x>

<Set State id Turns: x>

<State name Turns: +x>
<State name Turns: -x>

<Set State name Turns: x>

- Used for: Skill, Item Notetags
- If the target is affected by state 'id' or state 'name', change the state
  turn duration for target.
- For 'id' variant, replace 'id' with the ID of the state to modify.
- For 'name' variant, replace 'name' with the name of the state to modify.
- Replace 'x' with the value you wish to increase, decrease, or set to.
- Insert multiples of this notetag to affect multiple states at once.

---

<param Buff Turns: +x>
<param Buff Turns: -x>

<Set param Buff Turns: x>

- Used for: Skill, Item Notetags
- If the target is affected by a 'param' buff, change that buff's turn
  duration for target.
- Replace 'param' with 'MaxHP', 'MaxMP', 'ATK', 'DEF', 'MAT', 'MDF', 'AGI',
  or 'LUK' to determine which parameter buff to modify.
- Replace 'x' with the value you wish to increase, decrease, or set to.
- Insert multiples of this notetag to affect multiple parameters at once.

---

<param Debuff Turns: +x>
<param Debuff Turns: -x>

<Set param Debuff Turns: x>

- Used for: Skill, Item Notetags
- If the target is affected by a 'param' debuff, change that debuff's turn
  duration for target.
- Replace 'param' with 'MaxHP', 'MaxMP', 'ATK', 'DEF', 'MAT', 'MDF', 'AGI',
  or 'LUK' to determine which parameter debuff to modify.
- Replace 'x' with the value you wish to increase, decrease, or set to.
- Insert multiples of this notetag to affect multiple parameters at once.

---

JavaScript Notetags: On Add/Erase/Expire

Using JavaScript code, you can use create custom effects that occur when a state has bee added, erased, or expired.

---

<JS On Add State>
 code
 code
</JS On Add State>

- Used for: State Notetags
- When a state is added, run the code added by this notetag.
- The 'user' variable refers to the current active battler.
- The 'target' variable refers to the battler affected by this state.
- The 'origin' variable refers to the one who applied this state.
- The 'state' variable refers to the current state being affected.

---

<JS On Erase State>
 code
 code
</JS On Erase State>

- Used for: State Notetags
- When a state is erased, run the code added by this notetag.
- The 'user' variable refers to the current active battler.
- The 'target' variable refers to the battler affected by this state.
- The 'origin' variable refers to the one who applied this state.
- The 'state' variable refers to the current state being affected.

---

<JS On Expire State>
 code
 code
</JS On Expire State>

- Used for: State Notetags
- When a state has expired, run the code added by this notetag.
- The 'user' variable refers to the current active battler.
- The 'target' variable refers to the battler affected by this state.
- The 'origin' variable refers to the one who applied this state.
- The 'state' variable refers to the current state being affected.

---

JavaScript Notetags: Slip Damage/Healing

Slip Damage, in RPG Maker vocabulary, refers to damage over time. The following notetags allow you to perform custom slip damage/healing.

---

<JS type Slip Damage>
 code
 code
 damage = code;
</JS type Slip Damage>

- Used for: State Notetags
- Code used to determine how much slip damage is dealt to the affected unit
  during each regeneration phase.
- Replace 'type' with 'HP', 'MP', or 'TP'.
- Replace 'code' with the calculations on what to determine slip damage.
- The 'user' variable refers to the origin of the state.
- The 'target' variable refers to the affected unit receiving the damage.
- The 'state' variable refers to the current state being affected.
- The 'damage' variable is the finalized slip damage to be dealt.
- When these states are applied via action effects, the slip calculations
  are one time calculations made upon applying and the damage is cached to
  be used for future on regeneration calculations.
- For that reason, do not include game mechanics here such as adding states,
  buffs, debuffs, etc. as this notetag is meant for calculations only. Use
  the VisuStella Battle Core's <JS Pre-Regenerate> and <JS Post-Regenerate>
  notetags for game mechanics instead.
- Passive states and states with the <JS Slip Refresh> notetag are exempt
  from the one time calculation and recalculated each regeneration phase.

---

<JS type Slip Heal>
 code
 code
 heal = code;
</JS type Slip Heal>

- Used for: State Notetags
- Code used to determine how much slip healing is dealt to the affected unit
  during each regeneration phase.
- Replace 'type' with 'HP', 'MP', or 'TP'.
- Replace 'code' with the calculations on what to determine slip healing.
- The 'user' variable refers to the origin of the state.
- The 'target' variable refers to the affected unit receiving the healing.
- The 'state' variable refers to the current state being affected.
- The 'heal' variable is the finalized slip healing to be recovered.
- When these states are applied via action effects, the slip calculations
  are one time calculations made upon applying and the damage is cached to
  be used for future on regeneration calculations.
- For that reason, do not include game mechanics here such as adding states,
  buffs, debuffs, etc. as this notetag is meant for calculations only. Use
  the VisuStella Battle Core's <JS Pre-Regenerate> and <JS Post-Regenerate>
  notetags for game mechanics instead.
- Passive states and states with the <JS Slip Refresh> notetag are exempt
  from the one time calculation and recalculated each regeneration phase.

---

<JS Slip Refresh>

- Used for: State Notetags
- Refreshes the calculations made for the JS Slip Damage/Heal amounts at the
  start of each regeneration phase to allow for dynamic damage ranges.

---

Passive State Notetags

SkillsStatesCorePassives.png

Passive States are states that are always applied to actors and enemies provided that their conditions have been met. These can be granted through database objects or through the Passive States Plugin Parameters.


---

For those using the code "a.isStateAffected(10)" to check if a target is affected by a state or not, this does NOT check passive states. This only checks for states that were directly applied to the target.

This is NOT a bug.

Instead, use "a.states().includes($dataStates[10])" to check for them. This code will search for both directly applied states and passive states alike.

---

As passive states are NOT considered directly applied to, they do NOT match a Conditional Branch's state check as well. The Conditional Branch effect checks for an affected state.

---

Because passive states are NOT directly applied to a battler, the functions of "addNewState", "addState", "eraseState", "removeState" do NOT apply to passive states either. This means that any of the related JS notetags tied to those functions will not occur either.

---

Why are passive states not considered affected by? Let's look at it differently. There are two ways to grant skills to actors. They can acquire skills by levels/items/events or they can equip gear that temporarily grants the skill in question.

Learning the skill is direct. Temporarily granting the skill is indirect. These two factors have mechanical importance and require differentiation.

Regular states and passive states are the same way. Regular states are directly applied, therefore, need to be distinguished in order for things like state turns and steps, removal conditionals, and similar to matter at all. Passive states are indirect and are therefore, unaffected by state turns, steps, and removal conditions. These mechanical differences are important for how RPG Maker works.

---

Once again, it is NOT a bug that when using "a.isStateAffected(10)" to check if a target has a passive state will return false.

---

<Passive State: x>
<Passive States: x,x,x>

<Passive State: name>
<Passive States: name, name, name>

- Used for: Actor, Class, Skill, Item, Weapon, Armor, Enemy Notetags
- Adds passive state(s) x to trait object, applying it to affected actor or
  enemy unit(s).
- Replace 'x' with a number to determine which state to add as a passive.
- If using 'name' notetag variant, replace 'name' with the name of the
  state(s) to add as a passive.
- Note: If you plan on applying a passive state through a skill, it must be
  through a skill that has been learned by the target and not a skill that
  is given through a trait.

---

<Passive Stackable>

- Used for: State Notetags
- Makes it possible for this passive state to be added multiple times.
- Otherwise, only one instance of the passive state can be available.

---

<Passive Condition Class: id>
<Passive Condition Classes: id, id, id>

<Passive Condition Class: name>
<Passive Condition Classes: name, name, name>

- Used for: State Notetags
- Determines the passive condition of the passive state based on the actor's
  current class. As long as the actor's current class matches one of the
  data entries, the passive condition is considered passed.
- For 'id' variant, replace 'id' with a number representing class's ID.
- For 'name' variant, replace 'name' with the class's name.
- This does not affect enemies.

---

<Passive Condition Multiclass: id>
<Passive Condition Multiclass: id, id, id>

<Passive Condition Multiclass: name>
<Passive Condition Multiclass: name, name, name>

- Used for: State Notetags
- Requires VisuMZ_2_ClassChangeSystem!
- Determines the passive condition of the passive state based on the actor's
  multiclasses. As long as the actor has any of the matching classes
  assigned as a multiclass, the passive condition is considered passed.
- For 'id' variant, replace 'id' with a number representing class's ID.
- For 'name' variant, replace 'name' with the class's name.
- This does not affect enemies.

---

<Passive Condition Switch ON: x>

<Passive Condition All Switches ON: x,x,x>
<Passive Condition Any Switch ON: x,x,x>

- Used for: State Notetags
- Determines the passive condition of the passive state based on switches.
- Replace 'x' with the switch ID to determine the state's passive condition.
- If 'All' notetag variant is used, conditions will not be met until all
  switches are ON. Then, it would be met.
- If 'Any' notetag variant is used, conditions will be met if any of the
  switches are ON. Otherwise, it would not be met.

---

<Passive Condition Switch OFF: x>

<Passive Condition All Switches OFF: x,x,x>
<Passive Condition Any Switch OFF: x,x,x>

- Used for: State Notetags
- Determines the passive condition of the passive state based on switches.
- Replace 'x' with the switch ID to determine the state's passive condition.
- If 'All' notetag variant is used, conditions will not be met until all
  switches are OFF. Then, it would be met.
- If 'Any' notetag variant is used, conditions will be met if any of the
  switches are OFF. Otherwise, it would not be met.

---

JavaScript Notetags: Passive State

The following is a notetag made for users with JavaScript knowledge to determine if a passive state's condition can be met.

---

<JS Passive Condition>
 code
 code
 condition = code;
</JS Passive Condition>

- Used for: State Notetags
- Determines the passive condition of the state based on JavaScript code.
- Replace 'code' to determine if a passive state's condition has been met.
- The 'condition' variable returns a boolean (true/false) to determine if
  the passive state's condition is met or not.
- The 'user' variable refers to the user affected by the passive state.
- The 'state' variable refers to the passive state being checked.
- All other passive conditions must be met for this code to count.

**NOTE** Not everything can be used as a custom JS Passive Condition due to
limitations of the code. There are failsafe checks to prevent infinite loops
and some passive conditions will not register for this reason and the
conditional checks will behave as if the passive states have NOT been
applied for this reason. Such examples include the following:

- A passive state that requires another passive state
- A passive state that requires a trait effect from another state
- A passive state that requires a parameter value altered by another state
- A passive state that requires equipment to be worn but its equipment type
  access is provided by another state.
- Anything else that is similar in style.

---

Plugin Parameters

General Skill Settings

SkillsStatesCoreScreen.png

SkillsStatesCoreParams01.png

These Plugin Parameters adjust various aspects of the game regarding skills from the custom Skill Menu Layout to global custom effects made in code.

---

General

 Use Updated Layout:
 - Use the Updated Skill Menu Layout provided by this plugin?
 - This will automatically enable the Status Window.
 - This will override the Core Engine windows settings.
 Layout Style:
 - If using an updated layout, how do you want to style the menu scene?
   - Upper Help, Left Input
   - Upper Help, Right Input
   - Lower Help, Left Input
   - Lower Help, Right Input

---

Skill Type Window

 Style:
 - How do you wish to draw commands in the Skill Type Window?
 - Text Only: Display only the text.
 - Icon Only: Display only the icon.
 - Icon + Text: Display the icon first, then the text.
 - Auto: Determine which is better to use based on the size of the cell.
 Text Align:
 - Text alignment for the Skill Type Window.

---

List Window

 Columns:
 - Number of maximum columns.

---

Shop Status Window

 Show in Skill Menu?:
 - Show the Shop Status Window in the Skill Menu?
 - This is enabled if the Updated Layout is on.
 Adjust List Window?:
 - Automatically adjust the Skill List Window in the Skill Menu if using
   the Shop Status Window?
 Background Type:
 - Select background type for this window.
   - 0 - Window
   - 1 - Dim
   - 2 - Transparent
 JS: X, Y, W, H:
 - Code used to determine the dimensions for this Shop Status Window in the
   Skill Menu.

---

Skill Types

 Hidden Skill Types:
 - Insert the ID's of the Skill Types you want hidden from view ingame.
 Hidden During Battle:
 - Insert the ID's of the Skill Types you want hidden during battle only.
 Icon: Normal Type:
 - Icon used for normal skill types that aren't assigned any icons.
 - To assign icons to skill types, simply insert \I[x] into the
   skill type's name in the Database > Types tab.
 Icon: Magic Type:
 - Icon used for magic skill types that aren't assigned any icons.
 - To assign icons to skill types, simply insert \I[x] into the
   skill type's name in the Database > Types tab.

---

Global JS Effects

 JS: Skill Conditions:
 - JavaScript code for a global-wide skill condition check.

---

Skill Cost Types

SkillsStatesSkillCosts.png

SkillsStatesCoreParams02.png

Skill Cost Types are the resources that are used for your skills. These can range from the default MP and TP resources to the newly added HP, Gold, and Potion resources.

---

SkillsStatesCoreParams02a.png

Settings

 Name:
 - A name for this Skill Cost Type.
 Icon:
 - Icon used for this Skill Cost Type.
 - Use 0 for no icon.
 Font Color:
 - Text Color used to display this cost.
 - Use #rrggbb for a hex color.
 Font Size:
 - Font size used to display this cost.

---

Cost Processing

 JS: Cost Calculation:
 - Code on how to calculate this resource cost for the skill.
 JS: Can Pay Cost?:
 - Code on calculating whether or not the user is able to pay the cost.
 JS: Paying Cost:
 - Code for if met, this is the actual process of paying of the cost.

---

Window Display

 JS: Show Cost?:
 - Code for determining if the cost is shown or not.
 JS: Cost Text:
 - Code to determine the text (with Text Code support) used for the
   displayed cost.

---

Gauge Display

 JS: Maximum Value:
 - Code to determine the maximum value used for this Skill Cost resource
   for gauges.
 JS: Current Value:
 - Code to determine the current value used for this Skill Cost resource
   for gauges.
 JS: Draw Gauge:
 - Code to determine how to draw the Skill Cost resource for this
   gauge type.

---

General State Settings

SkillsStatesCoreColors.png

SkillsStatesCoreParams03.png

These are general settings regarding RPG Maker MZ's state-related aspects from how turns are reapplied to custom code that's ran whenever states are added, erased, or expired.

---

General

 Reapply Rules:
 - These are the rules when reapplying states.
 - Ignore: State doesn't get added.
 - Reset: Turns get reset.
 - Greater: Turns take greater value (current vs reset).
 - Add: Turns add upon existing turns.
 Maximum Turns:
 - Maximum number of turns to let states go up to.
 - This can be changed with the <Max Turns: x> notetag.

---

Turn Display

 Show Turns?:
 - Display state turns on top of window icons and sprites?
 Turn Font Size:
 - Font size used for displaying turns.
 Offset X:
 - Offset the X position of the turn display.
 Offset Y:
 - Offset the Y position of the turn display.
 Turn Font Size:
 - Font size used for displaying turns.
 Turn Color: Neutral:
 - Use #rrggbb for custom colors or regular numbers for text colors from
   the Window Skin.
 Turn Color: Positive:
 - Use #rrggbb for custom colors or regular numbers for text colors from
   the Window Skin.
 Turn Color: Negative:
 - Use #rrggbb for custom colors or regular numbers for text colors from
   the Window Skin.

---

Data Display

 Show Data?:
 - Display state data on top of window icons and sprites?
 Data Font Size:
 - Font size used for displaying state data.
 Offset X:
 - Offset the X position of the state data display.
 Offset Y:
 - Offset the Y position of the state data display.

---

Global JS Effects

 JS: On Add State:
 - JavaScript code for a global-wide custom effect whenever a state
   is added.
 JS: On Erase State:
 - JavaScript code for a global-wide custom effect whenever a state
   is erased.
 JS: On Expire State:
 - JavaScript code for a global-wide custom effect whenever a state
   has expired.

---

General Buff/Debuff Settings

SkillsStatesBuffDebuffs.png

SkillsStatesCoreParams04.png

Buffs and debuffs don't count as states by RPG Maker MZ's mechanics, but they do function close enough for them to be added to this plugin for adjusting. Change these settings to make buffs and debuffs work to your game's needs.

---

General

 Reapply Rules:
 - These are the rules when reapplying buffs/debuffs.
 - Ignore: Buff/Debuff doesn't get added.
 - Reset: Turns get reset.
 - Greater: Turns take greater value (current vs reset).
 - Add: Turns add upon existing turns.
 Maximum Turns:
 - Maximum number of turns to let buffs and debuffs go up to.

---

Stacking

 Max Stacks: Buff:
 - Maximum number of stacks for buffs.
 Max Stacks: Debuff:
 - Maximum number of stacks for debuffs.
 JS: Buff/Debuff Rate:
 - Code to determine how much buffs and debuffs affect parameters.

---

Turn Display

 Show Turns?:
 - Display buff and debuff turns on top of window icons and sprites?
 Turn Font Size:
 - Font size used for displaying turns.
 Offset X:
 - Offset the X position of the turn display.
 Offset Y:
 - Offset the Y position of the turn display.
 Turn Color: Buffs:
 - Use #rrggbb for custom colors or regular numbers for text colors from
   the Window Skin.
 Turn Color: Debuffs:
 - Use #rrggbb for custom colors or regular numbers for text colors from
   the Window Skin.

---

Rate Display

 Show Rate?:
 - Display buff and debuff rate on top of window icons and sprites?
 Rate Font Size:
 - Font size used for displaying rate.
 Offset X:
 - Offset the X position of the rate display.
 Offset Y:
 - Offset the Y position of the rate display.

---

Global JS Effects

 JS: On Add Buff:
 - JavaScript code for a global-wide custom effect whenever a
   buff is added.
 JS: On Add Debuff:
 - JavaScript code for a global-wide custom effect whenever a
   debuff is added.
 JS: On Erase Buff:
 - JavaScript code for a global-wide custom effect whenever a
   buff is added.
 JS: On Erase Debuff:
 - JavaScript code for a global-wide custom effect whenever a
   debuff is added.
 JS: On Expire Buff:
 - JavaScript code for a global-wide custom effect whenever a
   buff is added.
 JS: On Expire Debuff:
 - JavaScript code for a global-wide custom effect whenever a
   debuff is added.

---

Passive State Settings

SkillsStatesCorePassives.png

SkillsStatesCoreParams05.png

These Plugin Parameters adjust passive states that can affect all actors and enemies as well as have global conditions.


---

For those using the code "a.isStateAffected(10)" to check if a target is affected by a state or not, this does NOT check passive states. This only checks for states that were directly applied to the target.

This is NOT a bug.

Instead, use "a.states().includes($dataStates[10])" to check for them. This code will search for both directly applied states and passive states alike.

---

As passive states are NOT considered directly applied to, they do NOT match a Conditional Branch's state check as well. The Conditional Branch effect checks for an affected state.

---

Because passive states are NOT directly applied to a battler, the functions of "addNewState", "addState", "eraseState", "removeState" do NOT apply to passive states either. This means that any of the related JS notetags tied to those functions will not occur either.

---

Why are passive states not considered affected by? Let's look at it differently. There are two ways to grant skills to actors. They can acquire skills by levels/items/events or they can equip gear that temporarily grants the skill in question.

Learning the skill is direct. Temporarily granting the skill is indirect. These two factors have mechanical importance and require differentiation.

Regular states and passive states are the same way. Regular states are directly applied, therefore, need to be distinguished in order for things like state turns and steps, removal conditionals, and similar to matter at all. Passive states are indirect and are therefore, unaffected by state turns, steps, and removal conditions. These mechanical differences are important for how RPG Maker works.

---

Once again, it is NOT a bug that when using "a.isStateAffected(10)" to check if a target has a passive state will return false.

---

List

 Global Passives:
 - A list of passive states to affect actors and enemies.
 Actor-Only Passives:
 - A list of passive states to affect actors only.
 Enemy Passives:
 - A list of passive states to affect enemies only.

---

Global JS Effects

 JS: Condition Check:
 - JavaScript code for a global-wide passive condition check.

---


Terms of Use

1. These plugins may be used in free or commercial games provided that they have been acquired through legitimate means at VisuStella.com and/or any other official approved VisuStella sources. Exceptions and special circumstances that may prohibit usage will be listed on VisuStella.com.

2. All of the listed coders found in the Credits section of this plugin must be given credit in your games or credited as a collective under the name: "VisuStella".

3. You may edit the source code to suit your needs, so long as you do not claim the source code belongs to you. VisuStella also does not take responsibility for the plugin if any changes have been made to the plugin's code, nor does VisuStella take responsibility for user-provided custom code used for custom control effects including advanced JavaScript notetags and/or plugin parameters that allow custom JavaScript code.

4. You may NOT redistribute these plugins nor take code from this plugin to use as your own. These plugins and their code are only to be downloaded from VisuStella.com and other official/approved VisuStella sources. A list of official/approved sources can also be found on VisuStella.com.

5. VisuStella is not responsible for problems found in your game due to unintended usage, incompatibility problems with plugins outside of the VisuStella MZ library, plugin versions that aren't up to date, nor responsible for the proper working of compatibility patches made by any third parties. VisuStella is not responsible for errors caused by any user-provided custom code used for custom control effects including advanced JavaScript notetags and/or plugin parameters that allow JavaScript code.

6. If a compatibility patch needs to be made through a third party that is unaffiliated with VisuStella that involves using code from the VisuStella MZ library, contact must be made with a member from VisuStella and have it approved. The patch would be placed on VisuStella.com as a free download to the public. Such patches cannot be sold for monetary gain, including commissions, crowdfunding, and/or donations.

7. If this VisuStella MZ plugin is a paid product, all project team members must purchase their own individual copies of the paid product if they are to use it. Usage includes working on related game mechanics, managing related code, and/or using related Plugin Commands and features. Redistribution of the plugin and/or its code to other members of the team is NOT allowed unless they own the plugin itself as that conflicts with Article 4.

8. Any extensions and/or addendums made to this plugin's Terms of Use can be found on VisuStella.com and must be followed.

Terms of Use: Japanese


『VisuStella MZ』利用規約

1. これらのプラグインは、VisuStella.comおよび/または公式に承認されたVisuStellaのソースから合法的な手段で入手したものである限り、フリーゲームや商用ゲームに使用することができます。例外的に使用が禁止される場合については、VisuStella.comの記載をご確認ください。

2. 本プラグインの「クレジット」部分に記載されているすべてのコーダーの名前は、ゲーム内にクレジット表記を行うか、もしくは「VisuStella」という名前の下にまとめて表記する必要があります。

3. ソースコードを自分のものだと主張しない限りは、必要に応じて編集することが可能です。ただしプラグインのコードに変更が加えられた場合、VisuStellaはそのプラグインに対して一切の責任を負いません。高度なJavaScriptのノートタグやJavaScriptコードを許可するプラグインのパラメータを含む、カスタムコントロールエフェクトに使用される、ユーザー提供のカスタムコードについても、VisuStellaは一切の責任を負いません。

4. これらのプラグインやプラグイン内のコードを、「自分のもの」として再配布したり使用したりすることはできません。これらのプラグインとそのコードは、VisuStella.comおよび、その他の公式/承認済みVisuStellaソースからのみダウンロードすることができます。公式/承認済みのソースのリストは、VisuStella.comでご確認いただけます。

5. VisuStellaは、意図しない使用方法による問題、VisuStella MZライブラリ以外のプラグインとの非互換性の問題、プラグインのバージョンが最新でないことによる問題、第三者による互換性パッチが適切に動作していないことなどが原因でゲーム内で発生した問題については、一切の責任を負いません。VisuStellaは、高度なJavaScriptのノートタグやJavaScriptコードを許可するプラグインのパラメータを含む、カスタムコントロールエフェクトに使用される、ユーザー提供のカスタムコードに起因するエラーについても、一切の責任を負いません。

6. VisuStella MZライブラリのコードを使用した互換性パッチをVisuStellaとは関係のない第三者を通じて作成する必要がある場合は、まずVisuStellaのメンバーと連絡を取り、承認を得る必要があります。パッチはVisuStella.comに公開され、誰でも無料でダウンロードすることができるようになります。このようなパッチを、制作発注やクラウドファンディングの対象にしたり、寄付などの金銭的な利益を得るために販売することはできません。

7. このVisuStella MZプラグインが商用製品である場合、プロジェクトチームのすべてのメンバーは、それを使用するため、それぞれ製品を購入しなければなりません。使用方法には、関連するゲームメカニクスの作業、関連するコードの管理、および/または関連するプラグインコマンドや機能の使用、が含まれます。プラグインそのものやそのコードをチームの他のメンバーに再配布することは第4項に抵触するため、そのメンバーがプラグインそのものを所有していない限りは許可されません。

8. このプラグインの利用規約の追加項目や補足については、VisuStella.comに掲載されていますので、それを参照し従ってください。

Credits

If you are using this plugin, credit the following people in your game:

Team VisuStella

Changelog

Version 1.21: July 30, 2021

  • Documentation Update!
    • Expanded "Action End Removal for States" section in Major Changes.
      • These changes have been in effect since Version 1.07 but have not been explained in excess detail in the documentation since.
        • Action End has been updated so that it actually applies per action used instead of just being at the start of a battler's action set. However, there are side effects to this: if a state has the "Cannot Move" restriction along with the "Action End" removal timing, then unsurprisingly, the state will never wear off because it's now based on actual actions ending. There are two solutions to this:
        • Don't make "Cannot Move" restriction states with "Action End". This is not a workaround. This is how the state removal is intended to work under the new change.
        • Go to the Skills & States Core Plugin Parameters, go to State Setttings, look for "Action End Update", and set it to false. You now reverted the removal timing system back to how it originally was in RPG Maker MZ's default battle system where it only updates based on an action set rather than per actual action ending.


Version 1.20: June 18, 2021

  • Feature Update!
    • Updated automatic caching for conditional passive states to update more efficiently. Update made by Arisu.


Version 1.19: June 4, 2021

  • Optimization Update!
    • Plugin should run more optimized.


Version 1.18: May 21, 2021

  • Documentation Update
    • Added "Passive State Clarification" section.
      • As there is a lot of confusion regarding how passive states work and how people still miss the explanations found in the "Passive State Notetags" section AND the "Plugin Parameters: Passive State Settings", we are adding a third section to explain how they work.
      • All three sections will contain the full detailed explanation of how passive states work to clear common misconceptions about them.


Version 1.17: May 7, 2021

  • Bug Fixes
    • State category removal is now usable outside of battle. Fix by Irina.


Version 1.16: April 30, 2021

  • Bug Fixes!
    • When states with step removal have the <No Recover All Clear> or <No Death Clear> notetags, their step counter is no longer reset either. Fix made by Irina.
  • New Features!
    • New notetag added by Arisu!
      • <List Name: name>
        • Makes the name of the skill appear different when show in the skill list. Using \V[x] as a part of the name will display that variable.


Version 1.15: March 19, 2021

  • Compatibility Update
    • Added compatibility functionality for future plugins.


Version 1.14: March 12, 2021

  • Bug Fixes!
    • Max HP Buff/Debuff should now display its turn counter. Fix by Yanfly.
  • Documentation Update!
    • For the <JS Passive Condition>, we've added documentation on the limitations of passive conditions since they have been reported as bug reports, when in reality, they are failsafes to prevent infinite loops. Such limitations include the following:
      • A passive state that requires another passive state
      • A passive state that requires a trait effect from another state
      • A passive state that requires a parameter value altered by another state
      • A passive state that requires equipment to be worn but its equipment type access is provided by another state.
      • Anything else that is similar in style.


Version 1.13: February 26, 2021

  • Documentation Update!
    • For <JS type Slip Damage> and <JS type Slip Heal> notetags, added the following notes:
      • When these states are applied via action effects, the slip calculations are one time calculations made upon applying and the damage is cached to be used for future on regeneration calculations.
      • For that reason, do not include game mechanics here such as adding states, buffs, debuffs, etc. as this notetag is meant for calculations only. Use the VisuStella Battle Core's <JS Pre-Regenerate> and <JS Post-Regenerate> notetags for game mechanics instead.
      • Passive states and states with the <JS Slip Refresh> notetag are exempt from the one time calculation and recalculated each regeneration phase.
  • Feature Update!
    • Changed slip refresh requirements to entail <JS Slip Refresh> notetag for extra clarity. Update made by Olivia.


Version 1.12: February 19, 2021

  • Feature Update
    • Changed the way passive state infinite stacking as a blanket coverage. Update made by Olivia.


Version 1.11: February 12, 2021

  • Bug Fixes!
    • Added a check to prevent passive states from infinitely stacking. Fix made by Olivia.


Version 1.10: January 15, 2021

  • Documentation Update!
    • Help file updated for new features.
  • New Feature!
    • New Plugin Parameters added
      • Plugin Parameters > Skill Settings > Background Type


Version 1.09: January 1, 2021

  • Bug Fixes!
    • Custom JS TP slip damage and healing should now work properly. Fix made by Yanfly.


Version 1.08: December 25, 2020

  • Bug Fixes!
    • <JS On Add State> should no longer trigger multiple times for the death state. Fix made by Yanfly.
  • Documentation Update!
    • Added documentation for updated feature(s)!
  • Feature Update!
    • <No Death Clear> can now allow the affected state to be added to an already dead battler. Update made by Yanfly.


Version 1.07: December 18, 2020

  • Documentation Update!
    • Added documentation for new feature(s)!
  • New Features!
    • New notetags added by Yanfly:
      • <Passive Condition Multiclass: id>
      • <Passive Condition Multiclass: id, id, id>
      • <Passive Condition Multiclass: name>
      • <Passive Condition Multiclass: name, name, name>
    • New Plugin Parameter added by Yanfly.
      • Plugin Parameters > States > General > Action End Update
        • States with "Action End" auto-removal will also update turns at the end of each action instead of all actions.
          • Turn this off if you wish for state turn updates to function like they do by default for "Action End".


Version 1.06: December 4, 2020

  • Optimization Update!
    • Plugin should run more optimized.


Version 1.05: November 15, 2020

  • Bug Fixes!
    • The alignment of the Skill Type Window is now fixed and will reflect upon the default settings. Fix made by Yanfly.
  • Documentation Update!
    • Added documentation for new feature(s)!
  • New Features!
    • <State x Category Remove: All> notetag added by Yanfly.
  • Optimization Update!
    • Plugin should run more optimized.


Version 1.04: September 27, 2020

  • Documentation Update
    • "Use Updated Layout" plugin parameters now have the added clause: "This will override the Core Engine windows settings." to reduce confusion. Added by Irina.


Version 1.03: September 13, 2020

  • Bug Fixes!
    • <JS type Slip Damage> custom notetags now work for passive states. Fix made by Olivia.
    • Setting the Command Window style to "Text Only" will no longer add in the icon text codes. Bug fixed by Yanfly.


Version 1.02: August 30, 2020

  • Bug Fixes!
    • The JS Notetags for Add, Erase, and Expire states are now fixed. Fix made by Yanfly.
  • Documentation Update!
    • <Show if learned Skill: x> and <Hide if learned Skill: x> notetags have the following added to their descriptions:
      • This does not apply to skills added by traits on actors, classes, any equipment, or states. These are not considered learned skills. They are considered temporary skills.
  • New Features!
    • Notetags added by Yanfly:
      • <Show if has Skill: x>
      • <Show if have All Skills: x,x,x>
      • <Show if have Any Skills: x,x,x>
      • <Show if has Skill: name>
      • <Show if have All Skills: name, name, name>
      • <Show if have Any Skills: name, name, name>
      • <Hide if has Skill: x>
      • <Hide if have All Skills: x,x,x>
      • <Hide if have Any Skills: x,x,x>
      • <Hide if has Skill: name>
      • <Hide if have All Skills: name, name, name>
      • <Hide if have Any Skills: name, name, name>
      • These have been added to remove the confusion regarding learned skills as skills added through trait effects are not considered learned skills by RPG Maker MZ.


Version 1.01: August 23, 2020

  • Bug Fixes!
    • Passive states from Elements & Status Menu Core are now functional. Fix made by Olivia.
  • Compatibility Update
    • Extended functions to allow for better compatibility.
  • Updated documentation
    • Explains that passive states are not directly applied and are therefore not affected by code such as "a.isStateAffected(10)".
    • Instead, use "a.states().includes($dataStates[10])"
    • "Use #rrggbb for a hex color." lines now replaced with "For a hex color, use #rrggbb with VisuMZ_1_MessageCore"


Version 1.00: August 20, 2020

  • Finished Plugin!

End of File