Template:VisuMZ Skills and States Core Notetags

From Yanfly.moe Wiki
Revision as of 10:28, 2 August 2021 by Irina (talk | contribs) (General State-Related Notetags)
Jump to navigation Jump to search

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.

---