DoubleX RMMZ Skill Item Cooldown

DoubleX

Just a nameless weakling
Veteran
Joined
Jan 2, 2014
Messages
1,803
Reaction score
950
First Language
Chinese
Primarily Uses
N/A
Purpose
Lets you set some skills/items to have battler and skill/item cooldowns

Introduction
Code:
*    1. This plugins lets you set 2 kinds of skill/item cooldowns:
*       - Skill/Item cooldown - The number of turns(battle turn in turn based
*                               individual turn in TPBS) needed for the
*                               skill/item to cooldown before it becomes
*                               usable again
*       - Battler cooldown - The number of turns(battle turn in turn based
*                            individual turn in TPBS) needed for the battler
*                            just executed the skill/item to cooldown before
*                            that battler can input actions again
*    2. If the skill/item cooldown is 1 turn, it means battlers with multiple
*       action slots can only input that skill/item once instead of as many
*       as the action slots allow
*       If the battler cooldown is negative, it means the TPB bar charging
*       value will be positive instead of 0 right after executing the
*       skill/item(So a -1 battler cooldown means the battler will become
*       able to input actions again right after executing such skills/items)
*    3. When updating the battler individual turn count in TPBS, the decimal
*       parts of the battler will be discarded, but those parts will still be
*       used when actually increasing the time needed for that battler to
*       become able to input actions again
*       In the turn based battle system, the decimal parts of the battler
*       cooldown counts as 1 turn
*       The decimal parts of the final skill/item cooldown value will be
*       discarded
*    4. Skill/item cooldown can be set to apply outside battles as well
*       Skill/item cooldown won't be updated when the battler has fully
*       charged the TPBS bar

Video

Games using this plugin
None so far

Code:
* @param clearBattlerSkillItemCooldownOnBattleStart
* @type note
* @desc Let you clear battler/skill/item cooldowns on battle start
* actor is the actor to have all those cooldowns cleared
* @default "actor.clearBattlerSkillItemCooldowns();"
*
* @param clearBattlerSkillItemCooldownOnBattleEnd
* @type note
* @desc Lets you clear battler/skill/item cooldowns on battle end
* actor is the actor to have all those cooldowns cleared
* @default "actor.clearBattlerSkillItemCooldowns();"
*
* @param battlerNotetagDataTypePriorities
* @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 battler notetags
* You can use script calls/plugin commands to change this
* @default ["latestSkillItem","states","enemy","armors","weapons","class","actor"]
*
* @param skillItemNotetagDataTypePriorities
* @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 skillItem notetags
* You can use script calls/plugin commands to change this
* @default ["latestSkillItem","states","enemy","armors","weapons","class","actor"]

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 cooldown>
*          - <cooldown>
*          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. battler
*            2. skillItem
*            (Search tag: NOTE_TYPE)
*          - 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)
*            var(The value of the game variable with id as the notetag value
*                will be used)
*            (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 the battler involved
*            (Game_Battler.prototype)
*          - 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 Notetags
*      Notetags only apply to skills/items with Number as One in Scope
*      1. battler condSuffix opSuffix valSuffix: condEntry, opEntry, valEntry
*         - Applies the following formula on the current battler cooldown:
*           current = current operator value
*           If condEntry returns a turthy result
*           Where current is the current battler cooldown, operator is the
*           operator specified by opEntry, and value is the value specified
*           by valEntry
*         - If there are no notetags, current will be 0, as it's the default
*           battler cooldown value
*         - condSuffix can be val, switch or script
*         - Both opSuffix and valSuffix can be val, var or script
*         - The result of condEntry can be anything as only whether it's
*           truthy matters
*         - The result of opSuffix must be either of the following:
*           +
*           -
*           *
*           /
*           %
*           =
*         - The result of valEntry can be any number
*         - E.g.:
*           <cooldown battler script val val: 1, +, 1> will cause the
*           battler to wait for 1 turn before the TPB bar starts to charge
*           again, and the individual turn count will be added by 1 after
*           this wait, in the case of TPBS, and the battler won't be able to
*           input actions in the next turn for turn based battles, but the
*           battler cooldown won't be triggered by using skills/items outside
*           battles, because the value of variable with id 1 is
*           return $gameParty.inBattle(); meaning that this notetag will only
*           be effective inside battles
*           Cooldowns triggered inside battles can still carry over outside
*           battles if the battle ends but the cooldown's still not expired
*           if it's not cleared in clearBattlerSkillItemCooldownOnBattleEnd,
*           and vice verse if it's not cleared in
*           clearBattlerSkillItemCooldownOnBattleStart
*      2. skillItem condSuffix opSuffix valSuffix: condEntry, opEntry, valEntry
*         - Applies the following formula on the current skill/item cooldown:
*           current = current operator value
*           If condEntry returns a turthy result
*           Where current is the current skill/item cooldown, operator is the
*           operator specified by opEntry, and value is the value specified
*           by valEntry
*         - If there are no notetags, current will be 0, as it's the default
*           skill/item cooldown value
*         - condSuffix can be val, switch or script
*         - Both opSuffix and valSuffix can be val, var or script
*         - The result of condEntry can be anything as only whether it's
*           truthy matters
*         - The result of opSuffix must be either of the following:
*           +
*           -
*           *
*           /
*           %
*           =
*         - The result of valEntry can be any number
*         - THIS NOTETAG DOESN'T WORK WITH ATTACK, GUARD NOR FORCED ACTIONS
*         - E.g.:
*           <cooldown skillItem switch val val: 1, +, 2> will cause the
*           battler to be unable to input the skill/item in the next turn if
*           the game switch with id 1 is on(regrdless of whether it's inside
*           or outside battles)
*           Cooldowns triggered outside battles can still carry over inside
*           battles if the battle ends but the cooldown's still not expired
*           if it's not cleared in
*           clearBattlerSkillItemCooldownOnBattleStart, and vice verse if
*           it's not cleared in clearBattlerSkillItemCooldownOnBattleEnd

Code:
*    # Parameter manipulations
*      1. $gameSystem.setSkillItemCooldownParam(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.setSkillItemCooldownParam("battlerNotetagDataTypePriorities", [
*               "latestSkillItem",
*               "states",
*               "armors",
*               "weapons",
*               "class",
*               "actor",
*               "enemy"
*           ]) sets the fully parsed value of the parameter
*           battlerNotetagDataTypePriorities as
*           ["latestSkillItem","states", "armors", "weapons", "class", "actor", "enemy"]
*      2. $gameSystem.skillItemCooldownParam(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.skillItemCooldownParam("skillItemNotetagDataTypePriorities")
*           returns the fully parsed value of the parameter
*           skillItemNotetagDataTypePriorities, which should be
*           ["latestSkillItem","states", "armors", "weapons", "class", "actor", "enemy"]
*           if it uses its default parameter value
*    # Battler manipulations
*      1. clearBattlerSkillItemCooldowns()
*         - Clears all battler and skill/item cooldowns for the battler
*           involved
*         - E.g.:
*           $gameActors.actor(1).clearBattlerSkillItemCooldowns(1) will clear
*           all battler and skill/item cooldowns for the game actor with id 1
*      2. setBattlerCooldown(turnCount)
*         - Sets the battler cooldown turn count as turnCount for the battler
*           involved
*         - turnCount must be a number
*         - E.g.:
*           $gameActors.actor(1).setBattlerCooldown(1) will set the battler
*           cooldown turn count of the actor with id 1 as 1, meaning that the
*           battler will take 1 idle individual turn right after executing
*           all actions but before charging the TPB bar again(in the case of
*           TPBS) and in the case of the turn based battle system, that
*           battler won't be able to input actions in the next turn
*      3. battlerCooldown()
*         - Returns the battler cooldown turn count of the battler involed
*         - E.g.:
*           $gameParty.battleMembers(0).battlerCooldown() will return the
*           battler cooldown turn count of the 1st game party member in the
*           battle
*      4. isBattlerCooldown()
*         - Returns if the battler involved is having battler cooldown
*         - E.g.:
*           $gameParty.aliveMembers(1).isBattlerCooldown() will return if the
*           2nd alive game party member is having battler cooldown
*      5. setSkillItemCooldown(item, turnCount)
*         - Sets the skill/item cooldown turn count of item as turnCount for
*           the battler involved
*         - item must be the data of the skill/item to have its cooldown set
*         - turnCount must be a number
*         - E.g.:
*           $gameParty.movableMembers(2).setSkillItemCooldown($dataSkills[3], 2)
*           will set the skill/item cooldown turn count of the skill with id
*           3 for the 3rd movable game party member as 2, meaning that that
*           battler can't input that skill for the next 2 turns
*      6. skillItemCooldown(item)
*         - Returns the skill/item cooldown with item of the battler involved
*         - E.g.:
*           $gameTroop.members(0).skillItemCooldown($dataItems[1]) will
*           return the skill/item cooldown with item with id 1 of the 1st
*           game troop member
*      7. isSkillItemCooldown(item)
*         - Returns if the battler involved is having skill/item cooldown
*           with item
*         - E.g.:
*           $gameParty.deadMembers(1).isSkillItemCooldown($dataItems[2]) will
*           return if the 2nd dead game troop member is having skill/item
*           cooldown with item with id 2

Code:
* @command setSkillItemCooldownParam
* @desc Applies script call $gameSystem.setSkillItemCooldownParam(param, val)
* @arg param
* @desc The name of a valid parameter of this plugin
* @arg val
* @desc A valid new fully parsed value of the parameter param
*
* @command clearBattlerSkillItemCooldowns
* @desc Applies script call battler.clearBattlerSkillItemCooldowns()
* @arg side
* @type select
* @option Actor
* @value actor
* @option Enemy
* @value enemy
* @desc The side of the battler setting the battler cooldown
* @arg label
* @type number
* @desc The actor id/enemy index of the battler setting the battler cooldown
*
* @command setBattlerCooldown
* @desc Applies script call battler.setBattlerCooldown(turnCount)
* @arg side
* @type select
* @option Actor
* @value actor
* @option Enemy
* @value enemy
* @desc The side of the battler setting the battler cooldown
* @arg label
* @type number
* @desc The actor id/enemy index of the battler setting the battler cooldown
* @arg turnCount
* @type number
* @min -999999
* @desc The new battler cooldown turn count of the battler involved
*
* @command setSkillItemCooldown
* @desc Applies script call battler.setSkillItemCooldown(item, turnCount)
* @arg side
* @type select
* @option Actor
* @value actor
* @option Enemy
* @value enemy
* @desc The side of the battler setting the skill/item cooldown
* with the skill/item involved
* @arg label
* @type number
* @desc The actor id/enemy index of the battler setting the
* skill/item cooldown with the skill/item involved
* @arg type
* @type select
* @option Skill
* @value skill
* @option Item
* @value item
* @desc The skill/item to have its skill/item cooldown set for the
* battler involved
* @arg id
* @type number
* @desc The id of the skill/item to have its skill/item cooldown
* set for the battler involved
* @arg turnCount
* @type number
* @min -999999
* @desc The new skill/item cooldown turn count of the skill/item involved
* @command battlerCooldown
* @desc Stores the battler.battlerCooldown() script call results
* into the game variable with id varId
* @arg side
* @type select
* @option Actor
* @value actor
* @option Enemy
* @value enemy
* @desc The side of the battler setting the battler cooldown
* @arg label
* @type number
* @desc The actor id/enemy index of the battler setting the battler cooldown
* @arg varId
* @type number
* @desc The id of the game variable storing the script call result
*
* @command isBattlerCooldown
* @desc Stores the battler.isBattlerCooldown() script call results
* into the game switch with id switchId
* @arg side
* @type select
* @option Actor
* @value actor
* @option Enemy
* @value enemy
* @desc The side of the battler setting the battler cooldown
* @arg label
* @type number
* @desc The actor id/enemy index of the battler setting the battler cooldown
* @arg switchId
* @type number
* @desc The id of the game switch storing the script call result
*
* @command skillItemCooldown
* @desc Stores the battler.skillItemCooldown(item) script call
* results into the game variable with id varId
* @arg side
* @type select
* @option Actor
* @value actor
* @option Enemy
* @value enemy
* @desc The side of the battler setting the skill/item cooldown
* with the skill/item involved
* @arg label
* @type number
* @desc The actor id/enemy index of the battler setting the
* skill/item cooldown with the skill/item involved
* @arg type
* @type select
* @option Skill
* @value skill
* @option Item
* @value item
* @desc The skill/item to have its skill/item cooldown set for the
* battler involved
* @arg id
* @type number
* @desc The id of the skill/item to have its skill/item cooldown
* set for the battler involved
* @arg varId
* @type number
* @desc The id of the game variable storing the script call result
*
* @command isSkillItemCooldown
* @desc Stores the battler.isSkillItemCooldown(item) script call
* results into the game switch with id switchId
* @arg side
* @type select
* @option Actor
* @value actor
* @option Enemy
* @value enemy
* @desc The side of the battler setting the skill/item cooldown
* with the skill/item involved
* @arg label
* @type number
* @desc The actor id/enemy index of the battler setting the
* skill/item cooldown with the skill/item involved
* @arg type
* @type select
* @option Skill
* @value skill
* @option Item
* @value item
* @desc The skill/item to have its skill/item cooldown set for the
* battler involved
* @arg id
* @type number
* @desc The id of the skill/item to have its skill/item cooldown
* set for the battler involved
* @arg switchId
* @type number
* @desc The id of the game switch storing the script call result

1. You need to use DoubleX_RMMZ_Plugin_Query as well in order to use the plugin queries of this plugin
Code:
*      1. battlerCooldown side label
*         - Applies the script call battler.battlerCooldown()
*         - battler is the battler identified by side and label
*         - side is either actor or enemy
*         - label is the actor id for side actor and troop member index for
*           side enemy
*      2. isBattlerCooldown side label
*         - Applies the script call battler.isBattlerCooldown()
*         - battler is the battler identified by side and label
*         - side is either actor or enemy
*         - label is the actor id for side actor and troop member index for
*           side enemy
*      3. skillItemCooldown side label type id
*         - Applies the script call battler.skillItemCooldown(item)
*         - battler is the battler identified by side and label
*         - side is either actor or enemy
*         - label is the actor id for side actor and troop member index for
*           side enemy
*         - item is the skill/item identified by type and id
*         - type is either skill or item
*         - id is the id of the skill/item
*      4. isSkillItemCooldown side label type id
*         - Applies the script call battler.isSkillItemCooldown(item)
*         - battler is the battler identified by side and label
*         - side is either actor or enemy
*         - label is the actor id for side actor and troop member index for
*           side enemy
*         - item is the skill/item identified by type and id
*         - type is either skill or item
*         - id is the id of the skill/item

Plugins:
1. DoubleX RMMZ Enhanced Codebase
Abilities:
1. Nothing special for most ordinary cases
2. Little RMMZ plugin development proficiency to fully utilize this(Elementary Javascript exposures being able to write beginner codes up to 300LoC scale)

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.

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

Code:
 *      { codebase: "1.1.0", plugin: "v1.01b" }(2020 Nov 27 GMT 0500):
 *      1. You no longer have to edit the value of
 *         DoubleX_RMMZ.Skill_Item_Cooldown.PLUGIN_NAME when changing this
 *         plugin file name
*      { codebase: "1.0.2", plugin: "v1.01a" }(2020 Oct 11 GMT 0900):
*      1. Added the plugin query and command counterparts for the following
*         script calls of this plugin:
*         - battlerCooldown()
*         - isBattlerCooldown()
*         - skillItemCooldown(item)
*         - isSkillItemCooldown(item)
*      { codebase: "1.0.0", plugin: "v1.00a" }(2020 Aug 27 GMT 0300):
*      1. 1st version of this plugin finished

Download Link
Demo Link
 
Last edited:

DoubleX

Just a nameless weakling
Veteran
Joined
Jan 2, 2014
Messages
1,803
Reaction score
950
First Language
Chinese
Primarily Uses
N/A
Updates
Code:
 *      { codebase: "1.0.2", plugin: "v1.01a" }(2020 Oct 11 GMT 0900):
 *      1. Added the plugin query and command counterparts for the following
 *         script calls of this plugin:
 *         - battlerCooldown()
 *         - isBattlerCooldown()
 *         - skillItemCooldown(item)
 *         - isSkillItemCooldown(item)
 

DoubleX

Just a nameless weakling
Veteran
Joined
Jan 2, 2014
Messages
1,803
Reaction score
950
First Language
Chinese
Primarily Uses
N/A
JavaScript:
 *      { codebase: "1.1.0", plugin: "v1.01b" }(2020 Nov 27 GMT 0500):
 *      1. You no longer have to edit the value of
 *         DoubleX_RMMZ.Skill_Item_Cooldown.PLUGIN_NAME when changing this
 *         plugin file name
 

Latest Threads

Latest Profile Posts

"Man is made by his belief. As he believes, so he is."-Krishna
FastFood in my country is neither fast nor cheap like it's expected to be, but people still buy a lot of it. I don't want to imagine how much of it people would eat if it was.
Started finishing up my bosses and characters...I don't know how long...but its going to take long...

I ended up needing to do a chapter one world map remake. It's still WIP but coming along nicely. =D
Stream will be live shortly! I will be beginning a play-through of Resident Evil 4! Feel free to drop by!

Forum statistics

Threads
107,753
Messages
1,031,900
Members
139,898
Latest member
Karuu
Top