[MZ] DoubleX RMMZ Plugin Query

Started by DoubleX, October 07, 2020, 09:51:19 am

Previous topic - Next topic

DoubleX

October 07, 2020, 09:51:19 am Last Edit: December 02, 2020, 02:02:03 am by DoubleX
DoubleX RMMZ Plugin Query
Authors: DoubleX
Version: v1.00b
Type: Plugin Query Add-on
Key Term: Misc Add-on

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

Introduction
*      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": ShowHide

* @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": ShowHide

*    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": ShowHide

*      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": ShowHide

Plugins:
1. 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": ShowHide

*      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": ShowHide

*      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": ShowHide

*      { 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
Demo Link
My RMVXA/RMMV/RMMZ scripts/plugins: http://rpgmaker.net/users/DoubleX/scripts/

DoubleX

December 02, 2020, 02:02:13 am #1 Last Edit: December 02, 2020, 04:20:14 am by DoubleX
Updates
*      { 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/