* # Additional plugin parameter explanations
* 1. rngPartNum
* Math.random will be run under each of equal-sized partitions
* The number of those partitions is rngPartNum
* No partition will be run under twice before they've all been run
* under
* rngPartNum shouldn't be too large nor too small to maximize the
* chance for the RNG generated by Math.random() to be more evenly
* distributed(For instance, 10 is a good value for rngPartNum)
* Larger rngPartNum means more time and memory needed to run it
* E.g.:
* - With rngPartNum being 10, the random numbers will be divided into
* the below 10 partitions:
* i. - [0, 0.1)
* ii. - [0.1, 0.2)
* iii. - [0.2, 0.3)
* iv. - [0.3, 0.4)
* v. - [0.4, 0.5)
* vi. - [0.5, 0.6)
* vii. - [0.6, 0.7)
* viii. - [0.7, 0.8)
* ix. - [0.8, 0.9)
* x. - [0.9, 1)
* Then every 10 consecutive Math.random() call will always results
* in random numbers in different partitions, until all partitions
* are used, then all those partitions will be reset and can be used
* again
* For instance, the consecutive call results of Math.random with
* rngPartNum being 10, can be something like this:
* i. - 0.5583369022811258 // 6 - [0.5, 0.6)
* ii. - 0.8856774551202906 // 9 - [0.8, 0.9)
* iii. - 0.7053351634934172 // 8 - [0.7, 0.8)
* iv. - 0.2910141721648054 // 3 - [0.2, 0.3)
* v. - 0.46443921703774416 // 5 - [0.4, 0.5)
* vi. - 0.34247765359444715 // 4 - [0.3, 0.4)
* vii. - 0.9611230852360236 // 10 - [0.9, 1)
* viii. 0.170055669517572 // 2 - [0.1, 0.2)
* ix. - 0.6280946076323228 // 7 - [0.6, 0.7)
* x. - 0.09900382018076581 // 1 - [0, 0.1)
* (Now all the 10 partitions are used after the 1st 10 consecutive
* Math.random() call and thus reset to be able to be "used" again)
* xi. - 0.49970969353564276 // 5 - [0.4, 0.5)
* xii. - 0.19670031315146652 // 2 - [0.1, 0.2)
* xiii. - 0.6183234115814623 // 7 - [0.6, 0.7)
* xiv. - 0.9592661473226407 // 10 - [0.9, 1)
* xv. - 0.837747307203645 // 9 - [0.8, 0.9)
* xvi. - 0.06670947818157003 // 1 - [0, 0.1)
* xvii. - 0.20614586616388186 // 3 - [0.2, 0.3)
* xviii. - 0.38808043042462215 // 4 - [0.3, 0.4)
* xix. - 0.7973840400497697 // 8 - [0.7, 0.8)
* xx. - 0.5467456358572309 // 6 - [0.5, 0.6)
* # Fixed bugs
* 1. The RMMZ hardcodes the rendering loop fps to be the monitor refresh
* rate, and can be problematic when targeting players with low end
* mobiles
* - This plugin lets you force the rendering loop fps by this script
* call:
* Graphics.renderFps = newRenderFps
* Where newRenderFps is the new clamped rendering loop fps
* - This can be useful when targeting low end mobiles by clamping the
* rendering loop fps to 30
* - Setting this as 0 will remove the clamping
* - Do note that the rendering loop fps can never go beyond the
* monitor refresh rate
* Search tag: Graphics_Render_FPS
* 2. The RMMZ hardcodes the game loop fps to be 60, and can be
* problematic when targeting players with low end mobiles
* - This plugin lets you change the game loop fps by this script
* call:
* Graphics.gameFps = newGameFps
* Where newGameFps is the game loop fps
* - This can be useful as a performance stress test by raising the
* game loop fps to be 120, or when targeting low end mobiles by
* capping the game loop fps to 30
* - Do note that the game loop fps has an upper bound, which depends
* on the hardware capability of the running machine(so you'll have
* to test it out yourselves), so don't be too insane with it(like
* setting it to 2400, and you'll most likely have troubles)
* Search tag: Graphics_Game_FPS
* 3. The faulty damage formula will just silently return 0 damage
* instead of informing you what faults are in which damage formula
* - This plugin lets you know them by this script call:
* Game_Action.IS_SHOW_DAMAGE_FORMULA_ERRS = true
* Which is useful when testing the damage formulae
* - Alternatively, if you don't want your players to know anything
* about the damage formula, you can use this script call:
* Game_Action.IS_SHOW_DAMAGE_FORMULA_ERRS = false
* Which is useful when the game's about to be published
* 4. Any damage formula having side effects will have those side effects
* leaked out in the battle when some autobattle actors having those
* skills/items input actions
* - This plugin temporarily removes the side effect parts of all
* damage formulae of skills/items of autobattle actors when they
* input actions, but those side effects will still be there when
* the inputted actions are actually executed
* - It's done by replacing the damage formula string with the regular
* expression stored in
* Game_Action.NO_SIDE_EFFECT_DAMAGE_FORMULA_REGEX, and its default
* value is new RegExp(".*[};] *", "gim"), meaning that anything
* before the last } or ; will be temporarily removed from the
* damage formula
* - If that default regular expression doesn't suit your needs, you
* can change Game_Action.NO_SIDE_EFFECT_DAMAGE_FORMULA_REGEX to be
* a suitable counterpart
* - Regardless of how the regular expression's written, you should
* standardize your damage formula so the side effect parts can
* always be reliably removed with an easy, simple and small regular
* expression
* - (Advanced)Alternatively, you can edit
* Game_Action.prototype.damageFormulaWithoutSideEffects to use
* different regular expressions to santizie different damage
* formulae, or even just return a separate side-effect free
* counterpart as string literals or notetag values for some
* skills/items yourselves, like:
* Game_Action.prototype.damageFormulaWithoutSideEffects = function() {
* const { id, meta, damage: { formula } } = this.item();
* switch (id) {
* case 1: return meta.damageFormulaWithoutSideEffectsNotetag;
* case 2: return "damageFormulaWithoutSideEffects";
* case 3: return formula.replace(regex1, "");
* case 4: return formula.replace(regex2, "");
* default 1: return formula.replace(Game_Action.NO_SIDE_EFFECT_DAMAGE_FORMULA_REGEX, "");
* }
* };
* Do note that this plugin doesn't provide such notetags for you,
* so you'll have to use the default RMMZ notetags, which is of this
* format: <notetagName:notetagValue>
* 5. The active TPBS will have an extremely rare chance to crash the
* game when trying to select the inputting actor, the inputting
* actions, or its targets
* - Please refer to this link for details:
* https://forums.rpgmakerweb.com/index.php?threads/bug-extremely-rare-but-fatal-active-tpbs-bug-crashing-the-game.126144/