/*: * @plugindesc 攻撃時属性に相性を作りを命中率を回避率の計算に適応させる * @url * @author 「」 * * @help CalcHitByStrongAndWeakWeapons.js * * 受動側と攻撃側の攻撃時属性を参照して命中率に加算・減算するプラグインです * 三すくみのような実装が可能です * * ※命中率の計算式を弄るプラグインと競合する可能性があるので注意してください * * 寝るの大事 * * @param strong_and_weak * @desc 表示するステータスとその位置を設定します。 * @type struct[] * @default ["{\"strong\":\"1\",\"weak\":\"3\",\"rate\":\"20\"}"] * * */ // Version // 0.0.1 2024/03/11 初版 /*~struct~status: * @param strong * @desc 強くする攻撃時属性を選択 * @default 0 * * @param weak * @desc 弱くする攻撃時属性を選択 * @default 0 * * @param rate * @desc 命中率に加算・減算する値(%) * @default 20 * */ (()=> { var paramParse = function(obj) { return JSON.parse(JSON.stringify(obj, paramReplace)); }; var paramReplace = function(key, value) { try { return JSON.parse(value || null); } catch (e) { return value; } }; var pluginName = 'CalcHitByStrongAndWeakWeapons'; var parameters = PluginManager.parameters(pluginName); var strong_and_weak = paramParse(parameters['strong_and_weak']); Game_Action.prototype.itemHit = function(target) { //console.log(parameters) //console.log(strong_and_weak) var baserate = this.item().successRate; var affinity_rate =0 var attackElements = this.subject().attackElements() var targetElements = target.attackElements() console.log( this.subject()._name) strong_and_weak.forEach(function(list_element) { attackElements.forEach(function(attack_element) { targetElements.forEach(function(target_element) { if (list_element.strong == attack_element && list_element.weak == target_element ) { console.log("plus") affinity_rate += list_element.rate } if (list_element.strong == target_element && list_element.weak == attack_element ) { console.log("minus") affinity_rate -= list_element.rate } }) }) }); if (this.isPhysical()) { return this.item().successRate * 0.01 * this.subject().hit + affinity_rate * 0.01; } else { return this.item().successRate * 0.01 + affinity_rate * 0.01; } }; })();