// DarkPlasma_SwapParamState 1.0.0 // Copyright (c) 2023 DarkPlasma // This software is released under the MIT license. // http://opensource.org/licenses/mit-license.php /** * 2023/08/12 1.0.0 公開 */ /*: @target MZ @url https://github.com/elleonard/DarkPlasma-MZ-Plugins/tree/release @plugindesc State to swap parameters @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: 1.0.0 This creates a parameter swap state. Entering in the state's memo field will swap attack power and magic power while the state is active. State Name: mhp: Max HP mmp: Max MP atk: Attack Power def: Defense Power mat: Magic Power mdf: Magic Defense agi: Agility luk: Luck States that swap the same parameter cannot be duplicated. */ /*:ja @plugindesc パラメータを入れ替えるステート @author DarkPlasma @license MIT @target MZ @url https://github.com/elleonard/DarkPlasma-MZ-Plugins/tree/release @help version: 1.0.0 パラメータを入れ替えるステートを実現します。 ステートのメモ欄に と入力すると、そのステートにかかっている間 攻撃力と魔法力を入れ替えます。 ステート名: mhp: 最大HP mmp: 最大MP atk: 攻撃力 def: 防御力 mat: 魔法力 mdf: 魔法防御 agi: 敏捷 luk: 運 同じパラメータを入れ替えるステートは重複できません。 */ (() => { 'use strict'; function paramNameToId(paramName) { switch (paramName) { case 'mhp': return 0; case 'mmp': return 1; case 'atk': return 2; case 'def': return 3; case 'mat': return 4; case 'mdf': return 5; case 'agi': return 6; case 'luk': return 7; } return undefined; } function stateToSwapParamIds(state) { const result = String(state.meta.swapParam).split(',').map(paramNameToId); if (result.length !== 2 || result[0] === undefined || result[1] === undefined) { return undefined; } return [result[0], result[1]]; } function Game_BattlerBase_SwapParamStateMixIn(gameBattlerBase) { const _param = gameBattlerBase.param; gameBattlerBase.param = function (paramId) { return _param.call(this, this.paramAlias(paramId)); }; gameBattlerBase.swapParamState = function (paramId) { return this.states().find((state) => stateToSwapParamIds(state)?.includes(paramId)); }; gameBattlerBase.paramAlias = function (paramId) { const state = this.swapParamState(paramId); if (!state) { return paramId; } return stateToSwapParamIds(state)?.find((p) => p !== paramId) ?? paramId; }; gameBattlerBase.isSwapParamStateAffected = function (paramId) { return !!this.swapParamState(paramId); }; } Game_BattlerBase_SwapParamStateMixIn(Game_BattlerBase.prototype); function Game_Battler_SwapParamStateMixIn(gameBatter) { const _isStateAddable = gameBatter.isStateAddable; gameBatter.isStateAddable = function (stateId) { return ( _isStateAddable.call(this, stateId) && (this.isStateAffected(stateId) || (stateToSwapParamIds($dataStates[stateId])?.every((paramId) => !this.isSwapParamStateAffected(paramId)) ?? true)) ); }; } Game_Battler_SwapParamStateMixIn(Game_Battler.prototype); })();