// DarkPlasma_AddSParamTrait 2.0.0 // Copyright (c) 2024 DarkPlasma // This software is released under the MIT license. // http://opensource.org/licenses/mit-license.php /** * 2025/07/21 2.0.0 限界値設定をDarkPlasma_LimitSParamに分離 * 特殊能力値追加プラグイン用にインターフェース追加 * 2024/12/19 1.2.0 複数の特徴を指定できる記法を追加 * 2024/12/01 1.1.0 限界値設定を追加 * 2024/11/04 1.0.2 加算ではなく乗算になってしまっていた不具合を修正 * 2024/11/04 1.0.1 ParameterTextとの順序関係を明記 * 2024/11/04 1.0.0 公開 */ /*: @target MZ @url https://github.com/elleonard/DarkPlasma-MZ-Plugins/tree/release @plugindesc Features that add special ability scores @author DarkPlasma @license MIT @help English Help Translator: munokura This is an unofficial English translation of the plugin help, created to support global RPG Maker users. Feedback is welcome to improve translation quality (see: https://github.com/munokura/DarkPlasma-MZ-Plugins ). Original plugin by DarkPlasma. Please check the latest official version at: https://github.com/elleonard/DarkPlasma-MZ-Plugins/tree/release ----- Version: 2.0.0 By entering the specified information in the memo field for an actor, job, equipment, enemy character, or state, you can add a feature that increases special ability values. This setting value will be added after applying any multiplier features you can specify in the editor. Example: MP Consumption Rate +10% Physical Damage Rate -10% Physical Damage Rate -10%, Magic Damage Rate -10% Basic Syntax: [param]: tgr: Target Rate grd: Defense Rate rec: Recovery Rate pha: Medicine Knowledge mcr: MP Consumption Rate tcr: TP Charge Rate pdr: Physical Damage Rate mdr: Magic Damage Rate fdr: Floor Damage Rate exr: Experience Gain Rate This plugin requires the following plugin: DarkPlasma_AllocateUniqueTraitDataId version:1.0.0 If using with the following plugin, add it below it. DarkPlasma_ParameterText DarkPlasma_AllocateUniqueTraitDataId If using with the plugins below, add this above them. DarkPlasma_LimitSParam */ /*:ja @plugindesc 特殊能力値を加算する特徴 @author DarkPlasma @license MIT @target MZ @url https://github.com/elleonard/DarkPlasma-MZ-Plugins/tree/release @base DarkPlasma_AllocateUniqueTraitDataId @orderAfter DarkPlasma_ParameterText @orderAfter DarkPlasma_AllocateUniqueTraitDataId @orderBefore DarkPlasma_LimitSParam @help version: 2.0.0 アクター、職業、装備、敵キャラ、ステートのメモ欄に指定の記述を行うことで 特殊能力値を加算する特徴を追加します。 エディタで指定できる乗算特徴を適用した後に、この設定値が加算されます。 記述例: MP消費率+10% 物理ダメージ率-10% 物理ダメージ率-10%, 魔法ダメージ率-10% 基本構文: [param]: tgr: 狙われ率 grd: 防御効果率 rec: 回復効果率 pha: 薬の知識 mcr: MP消費率 tcr: TPチャージ率 pdr: 物理ダメージ率 mdr: 魔法ダメージ率 fdr: 床ダメージ率 exr: 経験値獲得率 本プラグインの利用には下記プラグインを必要とします。 DarkPlasma_AllocateUniqueTraitDataId version:1.0.0 下記プラグインと共に利用する場合、それよりも下に追加してください。 DarkPlasma_ParameterText DarkPlasma_AllocateUniqueTraitDataId 下記プラグインと共に利用する場合、それよりも上に追加してください。 DarkPlasma_LimitSParam */ (() => { 'use strict'; const pluginName = document.currentScript.src.replace(/^.*\/(.*).js$/, function () { return arguments[1]; }); const SPARAM_KEYS = ['tgr', 'grd', 'rec', 'pha', 'mcr', 'tcr', 'pdr', 'mdr', 'fdr', 'exr']; const sparamPlusDataIds = SPARAM_KEYS.map((_, paramId) => uniqueTraitDataIdCache.allocate( pluginName, Game_BattlerBase.TRAIT_SPARAM, paramId, TextManager.sparam ? TextManager.sparam(paramId) : '', ), ); function DataManager_AddSParamTraitMixIn(dataManager) { const _extractMetadata = dataManager.extractMetadata; dataManager.extractMetadata = function (data) { _extractMetadata.call(this, data); if ('traits' in data) { if (data.meta.addSParam) { data.traits.push(...this.parseAddSParamTraits(String(data.meta.addSParam))); } } }; dataManager.parseAddSParamTraits = function (meta) { return meta .trim() .split('\n') .map((line) => this.parseAddSParamTrait(line)); }; dataManager.parseAddSParamTrait = function (line) { const metaTokens = line.split(':').map((token) => token.trim()); if (metaTokens.length < 2) { throw Error(`特殊能力値加算の特徴の記述が不正です: ${line}`); } return { code: Game_BattlerBase.TRAIT_SPARAM, dataId: this.sparamIdToAddSparamDataId(this.sparamKeyToSParamId(metaTokens[0])), value: Number(metaTokens[1]) / 100, }; }; dataManager.sparamKeyToSParamId = function (key) { const paramId = SPARAM_KEYS.indexOf(key); if (paramId < 0) { throw Error(`特殊能力値加算の対象パラメータの記述が不正です: ${key}`); } return paramId; }; dataManager.sparamIdToAddSparamDataId = function (paramId) { return sparamPlusDataIds[paramId].id; }; } DataManager_AddSParamTraitMixIn(DataManager); function Game_BattlerBase_AddSParamTraitMixIn(gameBattlerBase) { const _sparam = gameBattlerBase.sparam; gameBattlerBase.sparam = function (paramId) { return _sparam.call(this, paramId) + this.sparamPlus(paramId); }; gameBattlerBase.sparamPlus = function (paramId) { return this.traitsSum(Game_BattlerBase.TRAIT_SPARAM, DataManager.sparamIdToAddSparamDataId(paramId)); }; } Game_BattlerBase_AddSParamTraitMixIn(Game_BattlerBase.prototype); })();