Save-Point
DoubleX RMMZ Skill Item Triggers - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Plugins and Mods (https://www.save-point.org/forum-74.html)
+---- Forum: RPGMaker MV/MZ Engines (https://www.save-point.org/forum-120.html)
+---- Thread: DoubleX RMMZ Skill Item Triggers (/thread-8155.html)



DoubleX RMMZ Skill Item Triggers - DoubleX - 08-30-2020

Purpose
Lets you run some codes set by your notetags on some action execution cases

Introduction
Code:
*    1. This plugin lets you use notetags to set what happens when an
*       action's just executed, and different cases like miss, evade, counter
*       attack, magic reflection, critical hit, normal execution, substitute,
*       right before starting to execute actions, and right after finished
*       executing the actions, can have different notetags
*    2. You're expected to write JavaScript codes directly, as there are so
*       much possibilities that most of them are just impossible to be
*       covered by this plugin itself, so this plugin just lets you write
*       JavaScript codes that are executed on some important timings

Video



Games using this plugin
None so far

Parameters
Code:
 * @param missNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the miss notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param evaNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the eva notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param cntNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the cnt notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param mrfNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the mrf notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param criNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the cri notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param normNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the norm notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param substituteNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the substitute notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param preNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the pre notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param postNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the post notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param subjectMissNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the subjectMiss notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param subjectEvaNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the subjectEva notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param subjectCntNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the subjectCnt notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param subjectMrfNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the subjectMrf notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param subjectCriNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the subjectCri notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param subjectNormNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of the subjectNorm notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]
 *
 * @param subjectSubstituteNotetagDataTypePriorities
 * @type select[]
 * @option Data of the actor
 * @value actor
 * @option Data of the current class
 * @value class
 * @option Data of learnt skills/action list(Shouldn't be used with Data of usable skills)
 * @value skills
 * @option Data of usable skills(Shouldn't be used with Data of learnt skills)
 * @value usableSkills
 * @option Data of possessed items(Shouldn't be used with Data of usable items)
 * @value items
 * @option Data of usable items(Shouldn't be used with Data of possessed items)
 * @value usableItems
 * @option Data of the latest skill/item being used(Can double-count with skills/items/usableSkills/usableItems)
 * @value latestSkillItem
 * @option Data of equipped weapons
 * @value weapons
 * @option Data of equipped armors
 * @value armors
 * @option Data of the enemy
 * @value enemy
 * @option Data of effective states
 * @value states
 * @desc Sets data type priorities of subjectSubstitute notetags
 * You can use script calls/plugin commands to change this
 * @default ["actor", "class", "latestSkillItem", "weapons", "armors", "enemy", "states"]

Notetags
Code:
 *    ## Notetag Info
 *       1. Among all the same notetag types in the same data, all can be
 *          effective
 *       2. Each line can only have at most 1 notetag
 *       3. The following is the structure of all notetags in this plugin:
 *          - <doublex rmmz skill item triggers contents>
 *          - <skill item triggers contents>
 *          Where contents are in the form of type suffixes: entries
 *          Either of the above can be used, but the 1st one reduce the chance
 *          of causing other plugins to treat the notetags of this plugin as
 *          theirs, while the 2nd one is more user-friendly
 *          - type is one of the following:
 *            1. miss
 *            2. eva
 *            3. cnt
 *            4. mrf
 *            5. cri
 *            6. norm
 *            7. substitute
 *            8. pre
 *            9. post
 *          - suffixes is the list of suffixes in the form of:
 *            suffix1 suffix2 suffix3 ... suffixn
 *            Where each suffix is either of the following:
 *            val(The notetag value will be used as-is)
 *            switch(The value of the game switch with id as the notetag value
 *                   will be used)
 *            event(The common event with id as the notetag value will be
 *                  reserved)
 *            (Advanced)script(The value of the game variable with id as the
 *                            notetag value will be used as the contents of
 *                            the functions to be called upon using the
 *                            notetag)
 *          - The this pointer of the script suffix is different for different
 *            notetag types
 *          - entries is the list of entries in the form of:
 *            entry1, entry2, entry3, ..., entryn
 *            Where entryi must conform with the suffixi specifications
 *----------------------------------------------------------------------------
 *    # Actor/Class/Learnt Skills/Usable Skills/Posessed Items/Usable Items/
 *      Inputted Skill Or Item/Weapon/Armor/Enemy/States/This State Notetags
 *      1. miss condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry when the action involved
 *           just missed the target involved if condEntry returns a truthy
 *           result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - The miss skill/item trigger also applies counter attack, but with
 *           the target involved being that being hit by the counter attack
 *         - The miss skill/item trigger also applies to magic reflection, but
 *           with the target involved being the action execution subject
 *           instead
 *         - (Advanced)The this pointer of the script suffix is the target
 *           involved
 *         - E.g.:
 *           <skill item triggers miss switch event: 1, 2> will reserve the
 *           common event with id 2 when the action involved just missed the
 *           target if the game switch with id 1 is on
 *      2. eva condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry when the action involved is
 *           just evaded by the target involved if condEntry returns a truthy
 *           result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - The eva skill/item trigger also applies counter attack, but with
 *           the target involved being that being hit by the counter attack
 *         - The eva skill/item trigger also applies to magic reflection, but
 *           with the target involved being the action execution subject
 *         - (Advanced)The this pointer of the script suffix is the target
 *           involved
 *         - E.g.:
 *           <skill item triggers eva val script: true, 3> will always run the
 *           JavaScript codes stored as a string in variable with id 3 when
 *           the action involved is just evaded by the target involved
 *      3. cnt condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry when the action involved is
 *           just countered by the attack of the target involved if condEntry
 *           returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - (Advanced)The this pointer of the script suffix is the target
 *           involved
 *         - E.g.:
 *           <skill item triggers cnt switch event: 1, 2> will reserve the
 *           common event with id 2 when the action involved is just countered
 *           by the attack of the target involved if the game switch with id 1
 *           is on
 *      4. mrf condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry when the action involved is
 *           just reflected by the target involved if condEntry returns a
 *           truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - (Advanced)The this pointer of the script suffix is the target
 *           involved
 *         - E.g.:
 *           <skill item triggers mrf val script: true, 3> will always run the
 *           JavaScript codes stored as a string in variable with id 3 when
 *           the action involved is just reflected by the target involved
 *      5. cri condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry when the action involved
 *           just critically hit the target involved if condEntry returns a
 *           truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - The cri skill/item trigger also applies counter attack, but with
 *           the target involved being that being hit by the counter attack
 *         - The cri skill/item trigger also applies to magic reflection, but
 *           with the target involved being the action execution subject
 *         - (Advanced)The this pointer of the script suffix is the target
 *           involved
 *         - E.g.:
 *           <skill item triggers cri switch event: 1, 2> will reserve the
 *           common event with id 2 when the action involved just critically
 *           hit the target involved if the game switch with id 1 is on
 *      6. norm condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry when the action involved is
 *           just executed normally on the target involved if condEntry
 *           returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - The norm skill/item trigger also applies counter attack, but with
 *           the target involved being that being hit by the counter attack
 *         - The norm skill/item trigger also applies to magic reflection, but
 *           with the target involved being the action execution subject
 *         - (Advanced)The this pointer of the script suffix is the target
 *           involved
 *         - E.g.:
 *           <skill item triggers norm val script: true, 3> will always run
 *           the JavaScript codes stored as a string in variable with id 3
 *           when the action involved is just executed normally on the target
 *           involved
 *      7. substitute condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry when the action involved
 *           just hit the substitute instead of the original target involved
 *           if condEntry returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - (Advanced)The this pointer of the script suffix is the substitute
 *           target involved but not the original target involved
 *         - E.g.:
 *           <skill item triggers substitute switch event: 1, 2> will reserve
 *           the common event with id 2 when the action involved just hit the
 *           substitute instead of the original target involved if the game
 *           switch with id 1 is on
 *      8. pre condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry right before starting to
 *           execute the action involved if condEntry returns a truthy
 *           result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers pre switch event: 1, 2> will reserve the
 *           common event with id 2 before starting to execute the action
 *           involved if the game switch with id 1 is on
 *      9. post condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry right after finished
 *           executing the action involved if condEntry returns a truthy
 *           result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers post val script: true, 3> will always run
 *           the JavaScript codes stored as a string in variable with id 3
 *           right after finished executing the action involved
 *      (v1.01a+)10. subjectMiss condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry on the action execution
 *           subject involved when the action involved just missed a target if
 *           condEntry returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - The subjectMiss skill/item trigger also applies to counter
 *           attack, but with the action execution subject involved being that
 *           countering the attack
 *         - The subjectMiss skill/item trigger also applies to magic
 *           reflection, but with the action execution subject involved being
 *           that reflecting the magic
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers subjectMiss switch event: 1, 2> will reserve
 *           the common event with id 2 when the action involved executed by
 *           the action execution subject involved just missed a target if the
 *           game switch with id 1 is on
 *      (v1.01a+)11. subjectEva condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry on the action execution
 *           subject involved when the action involved is just evaded by a
 *           target involved if condEntry returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - The subjectEva skill/item trigger also applies to counter
 *           attack, but with the action execution subject involved being that
 *           countering the attack
 *         - The subjectEva skill/item trigger also applies to magic
 *           reflection, but with the action execution subject involved being
 *           that reflecting the magic
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers subjectEva val script: true, 3> will always
 *           run the JavaScript codes stored as a string in variable with id 3
 *           when the action involved executed by the action execution subject
 *           involved is just evaded by a target
 *      (v1.01a+)12. subjectCnt condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry on the action execution
 *           subject involved when the action involved is just countered by
 *           the attack of a target if condEntry returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers subjectCnt switch event: 1, 2> will reserve
 *           the common event with id 2 when the action involved executed by
 *           the action execution subject involved is just countered by the
 *           attack of a target if the game switch with id 1 is on
 *      (v1.01a+)13. subjectMrf condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry on the action execution
 *           subject involved when the action involved is just reflected by a
 *           target if condEntry returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers subjectMrf val script: true, 3> will always
 *           run the JavaScript codes stored as a string in variable with id 3
 *           when the action involved executed by the action execution subject
 *           involved is just reflected by a target
 *      (v1.01a+)14. subjectCri condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry on the action execution
 *           subject involved when the action involved just critically hit a
 *           target if condEntry returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - The subjectCri skill/item trigger also applies to counter
 *           attack, but with the action execution subject involved being that
 *           countering the attack
 *         - The subjectCri skill/item trigger also applies to magic
 *           reflection, but with the action execution subject involved being
 *           that reflecting the magic
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers subjectCri switch event: 1, 2> will reserve
 *           the common event with id 2 when the action involved executed by
 *           the action execution subject involved just critically hit a
 *           target if the game switch with id 1 is on
 *      (v1.01a+)15. subjectNorm condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry on the action execution
 *           subject involved when the action involved is just executed
 *           normally on a target if condEntry returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - The subjectNorm skill/item trigger also applies to counter
 *           attack, but with the action execution subject involved being that
 *           countering the attack
 *         - The subjectNorm skill/item trigger also applies to magic
 *           reflection, but with the action execution subject involved being
 *           that reflecting the magic
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers subjectNorm val script: true, 3> will always
 *           run the JavaScript codes stored as a string in variable with id 3
 *           when the action involved executed by the action execution subject
 *           involved is just executed normally on a target
 *      (v1.01a+)16. subjectSubstitute condSuffix eventSuffix: condEntry, eventEntry
 *         - Triggers what specified in eventEntry on the action execution
 *           subject involved when the action involved just hit a substitute
 *           if condEntry returns a truthy result
 *         - condSuffix can be val, switch or script
 *         - eventEntry can be event or script
 *         - The result of condEntry can be anything as only whether it's
 *           truthy matters
 *         - If the result of condEntry is falsy, this notetag will be
 *           discarded upon such use cases
 *         - The result of eventEntry can be anything as it's supposed to run
 *           commands instead of returning results
 *         - (Advanced)The this pointer of the script suffix is the action
 *           execution subject involved
 *         - E.g.:
 *           <skill item triggers subjectSubstitute switch event: 1, 2> will
 *           reserve the common event with id 2 when the action involved
 *           executed by the action execution subject just hit a substitute if
 *           the game switch with id 1 is on

Script Calls
Code:
*    # Parameter manipulations
*      1. $gameSystem.setStateTriggersParam(param, val)
*         - Sets the fully parsed value of the parameter param as val
*         - param must be the name of a valid parameter of this plugin
*         - val must be a valid new fully parsed value of the parameter param
*         - Such parameter value changes will be saved
*         - E.g.:
*           $gameSystem.setStateTriggersParam("addNotetagDataTypePriorities", [
*               "thisState"
*           ]) sets the fully parsed value of the parameter
*           addNotetagDataTypePriorities as ["thisState"]
*      2. $gameSystem.stateTriggersParam(param)
*         - Returns the fully parsed value of the parameter param
*         - param must be the name of a valid parameter of this plugin
*         - E.g.:
*           $gameSystem.setStateTriggersParam("removeNotetagDataTypePriorities")
*           returns the fully parsed value of the parameter
*           removeNotetagDataTypePriorities, which should be
*           ["thisState"] if it uses its default parameter value

Plugin Commands
Code:
*      1. setSkillItemTriggersParam param val
*         - Applies the script call
*           $gameSystem.setSkillItemTriggersParam(param, val)

Prerequisites
Plugins:
1. DoubleX RMMZ Enhanced Codebase
DoubleX RMMZ Enhanced Codebase
Abilities:
1. Some RMMV plugin development proficiency
   (Basic knowledge on what RMMV plugin development does in general with several easy, simple and small plugins written without nontrivial bugs up to 1000 LoC scale but still being inexperienced)

Terms Of Use
Code:
*      1. Commercial use's always allowed and crediting me's always optional.
*      2. You shall keep this plugin's Plugin Info part's contents intact.
*      3. You shalln't claim that this plugin's written by anyone other than
*         DoubleX or my aliases. I always reserve the right to deny you from
*         using any of my plugins anymore if you've violated this.
*      4. If you repost this plugin directly(rather than just linking back),
*         you shall inform me of these direct repostings. I always reserve
*         the right to request you to edit those direct repostings.
*      5. CC BY 4.0, except those conflicting with any of the above, applies
*         to this plugin, unless you've my permissions not needing follow so.
*      6. I always reserve the right to deny you from using this plugin
*         anymore if you've violated any of the above.


Contributors
Code:
*      Authors:
*      1. DoubleX
*      Plugin Development Collaborators:
*      - None So Far
*      Bug Reporters:
*      - None So Far
*      Compatibility Issue Raisers:
*      - None So Far
*      Feature Requesters:
*      - None So Far

Changelog
Code:
 *      { codebase: "1.1.1", plugin: "v1.01a" }(2020 Dec 26 GMT 1300):
 *      1. Added the following notetag types:
 *         subjectMiss
 *         subjectEva
 *         subjectCnt
 *         subjectMrf
 *         subjectCri
 *         subjectNorm
 *         subjectSubstitute
 *      2. Added the following parameters:
 *         subjectMissNotetagDataTypePriorities
 *         subjectEvaNotetagDataTypePriorities
 *         subjectCntNotetagDataTypePriorities
 *         subjectMrfNotetagDataTypePriorities
 *         subjectCriNotetagDataTypePriorities
 *         subjectNormNotetagDataTypePriorities
 *         subjectSubstituteNotetagDataTypePriorities
 *      3. Fixed the eventEntry of all notetags not correctly accepting all
 *         intended suffixes and rejecting the unintended ones
 *      { codebase: "1.1.0", plugin: "v1.00b" }(2020 Dec 2 GMT 0300):
 *      1. You no longer have to edit the value of
 *         DoubleX_RMMZ.Skill_Item_Triggers.PLUGIN_NAME when changing this
 *         plugin file name
*      { codebase: "1.0.0", plugin: "v1.00a" }(2020 Aug 30 GMT 0900):
*      1. 1st version of this plugin finished

Download Link
DoubleX RMMZ Skill Item Triggers

Demo Link
Demo Link


RE: DoubleX RMMZ Skill Item Triggers - DoubleX - 09-22-2020

Updates
Added the Demo Link:
Demo Link


RE: DoubleX RMMZ Skill Item Triggers - DoubleX - 12-02-2020

Updates
Code:
*      { codebase: "1.1.0", plugin: "v1.00b" }(2020 Dec 2 GMT 0300):
*      1. You no longer have to edit the value of
*         DoubleX_RMMZ.Skill_Item_Triggers.PLUGIN_NAME when changing this
*         plugin file name



RE: DoubleX RMMZ Skill Item Triggers - DoubleX - 12-26-2020

Updates
Code:
*      { codebase: "1.1.1", plugin: "v1.01a" }(2020 Dec 26 GMT 1300):
*      1. Added the following notetag types:
*         subjectMiss
*         subjectEva
*         subjectCnt
*         subjectMrf
*         subjectCri
*         subjectNorm
*         subjectSubstitute
*      2. Added the following parameters:
*         subjectMissNotetagDataTypePriorities
*         subjectEvaNotetagDataTypePriorities
*         subjectCntNotetagDataTypePriorities
*         subjectMrfNotetagDataTypePriorities
*         subjectCriNotetagDataTypePriorities
*         subjectNormNotetagDataTypePriorities
*         subjectSubstituteNotetagDataTypePriorities
*      3. Fixed the eventEntry of all notetags not correctly accepting all
*         intended suffixes and rejecting the unintended ones

The latest version of DoubleX RMMZ Enhanced Codebase is needed as well:
DoubleX RMMZ Enhanced Codebase