DoubleX_RMMZ_Plugin_Query
#1
Purpose
Lets you use plugin queries in conditional branch and control variables

Introduction
Code:
*      1. The RMMZ plugin commands are supposed to make side effects but not
*         return end results
*      2. With this plugin, other plugins can declare plugin queries that
*         behave like RMMV plugin commands but return end results instead of
*         making side effects
*      3. Plugin queries can replace skill/item damage formulae
*      4. Plugin queries can also replace script calls in conditional branch
*         and control variables event commands

Video


Games using this plugin
None so far

Parameters
Code:
* @param newDamageFormulaPluginQueries
* @type struct<NewPluginQuery>[]
* @desc Sets the list of new damage formula plugin queries
* This list shouldn't include those already added by other plugins
* @default []
*
* @param newEventCmdPluginQueries
* @type struct<NewPluginQuery>[]
* @desc Sets the list of new event command plugin queries
* This list shouldn't include those already added by other plugins
* @default []

Plugin Query Info
Code:
*    1. General form
*       queryName argName1 argName2 argName3 argNameI argNameN
*       E.g.:
*       - If the plugin query has its query name as abcdefg and arguments
*         as h, i, j and k, then the plugin query is abcdefg h i j k
*    2. (Plugin Developers Only)Registration
*       PluginManager.damageFormulaPluginQueries.set(name, func);
*       - Registers a plugin query with the name being name and function
*         returning the result being func
*       - The first 5 arguments of the function must be the following:
*         i. item - The skill/item having the damage formula
*         ii. a - The subject executing the skill/item
*         iii. b - The target having the damage formula applied to
*         iv. v - The raw data list of the game variables
*         v. sign - 1(damage)/-1(recovery)
*       - The registered plugin query can be used in skill/item damage
*         formulae
*       E.g.:
*       - PluginManager.damageFormulaPluginQueries.set("matDmg", (item, a, b, v, sign, baseDmg) => {
*             return +baseDmg + a.mat * 2 - b.mdf * 2;
*         });
*         Will define the plugin query atkDmg in the skill/item damage
*         formulae as baseDmg + a.mat * 2 - b.mdf * 2
*         Where baseDmg must be a Number
*       PluginManager.eventCmdPluginQueries.set(name, func);
*       - Registers a plugin query with the name being name and function
*         returning the result being func
*       - The registered plugin query can be used in conditional branch and
*         control variables event commands
*       E.g.:
*       - PluginManager.eventCmdPluginQueries.set("isActorAnyStateAffected", (actorId, paramIds) => {
*             return $gameActors.actor(+actorId).isAnyStateAffected(paramIds.split("_").map(Number));
*         });
*         Will define the plugin query
*         isActorAnyStateAffected actorId paramIds
*         in the conditional branch/control variables event commands as
*         $gameActors.actor(actorId).isAnyStateAffected(paramIds);
*         If paramIds is written in the form of
*         paramId1_paramId2_paramId3_paramIdI_paramIdN

Author Notes
Code:
*      1. The plugin command name collision issues in RMMV applies to
*         plugin queries registed to this RMMZ plugin as well, and in this
*         case, the last registered plugin query having the same name will be
*         used
*      2. DON'T MAKE SIDE EFFECTS IN THE SKILL/ITEM DAMAGE FORMULA PLUGIN
*         QUERIES UNLESS YOU REALLY KNOW WHAT YOU'RE TRULY DOING

Prerequisites
Plugins:
1. DoubleX RMMZ Enhanced Codebase
DoubleX RMMZ Enhanced Codebase
Abilities(Plugin Users):
1. Nothing special
Abilities(Plugin Developers):
1. Little RMMZ plugin development proficiency to fully utilize this
   (Elementary Javascript exposures being able to write beginner codes up to 300LoC scale)


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.0", plugin: "v1.00b" }(2020 Dec 2 GMT 0700):
 *      1. You no longer have to edit the value of
 *         DoubleX_RMMZ.Plugin_Query.PLUGIN_NAME when changing this plugin
 *         file name
*      { codebase: "1.0.2", plugin: "v1.00a" }(2020 Oct 6 GMT 1600):
*      1. 1st version of this plugin finished

Download Link
Download Link

Demo Link
Demo Link
My RMVXA/RMMV/RMMZ scripts/plugins:
http://rpgmaker.net/users/DoubleX/scripts/
Reply }
#2
Updates
Code:
*      { codebase: "1.1.0", plugin: "v1.00b" }(2020 Dec 2 GMT 0700):
*      1. You no longer have to edit the value of
*         DoubleX_RMMZ.Plugin_Query.PLUGIN_NAME when changing this plugin
*         file name
My RMVXA/RMMV/RMMZ scripts/plugins:
http://rpgmaker.net/users/DoubleX/scripts/
Reply }




Users browsing this thread: 2 Guest(s)