/*: * @target MZ * @plugindesc 三竦み状態に基づいて攻撃力に補正を加えるプラグイン * three‐way deadlock dmg.js * @author DQとFEが好きな者がAIにかかせたもの(chatGPT4) * @help * このプラグインは、攻撃者と防御者が持つ特定のステート(ID 050, 051, 052)に基づき、 * 三竦み状態を判断し、有利時は攻撃者の攻撃力(atk)を+1、不利時は-1します。 * * ステートIDの三竦み関係は以下の通りです: * ID 050 > ID 051 > ID 052 > ID 050 */ (() => { // 攻撃力計算を行う関数をオーバーライド const _Game_Action_evalDamageFormula = Game_Action.prototype.evalDamageFormula; Game_Action.prototype.evalDamageFormula = function(target) { const attacker = this.subject(); const attackerStates = attacker.states(); const defenderStates = target.states(); const attackerStateIds = attackerStates.map(state => state.id); const defenderStateIds = defenderStates.map(state => state.id); let atkCorrection = 0; // 三竦みのロジック(例: ID 050 > ID 051 > ID 052 > ID 050) if ((attackerStateIds.includes(50) && defenderStateIds.includes(51)) || (attackerStateIds.includes(51) && defenderStateIds.includes(52)) || (attackerStateIds.includes(52) && defenderStateIds.includes(50))) { // 攻撃者が有利な場合、攻撃力を+1 atkCorrection = 1; } else if ((attackerStateIds.includes(51) && defenderStateIds.includes(50)) || (attackerStateIds.includes(52) && defenderStateIds.includes(51)) || (attackerStateIds.includes(50) && defenderStateIds.includes(52))) { // 攻撃者が不利な場合、攻撃力を-1 atkCorrection = -1; } // 一時的に攻撃者の攻撃力を補正する attacker._paramPlus[2] += atkCorrection; // atk(攻撃力)はパラメータインデックス2に対応 const result = _Game_Action_evalDamageFormula.call(this, target); attacker._paramPlus[2] -= atkCorrection; // 補正を元に戻す return result; }; })();