//============================================================================= // Manosasayaki_EnemyInformationWindow.js // ---------------------------------------------------------------------------- // Copyright (c) 2017-2017 Sigureya // This software is released under the MIT License. // http://opensource.org/licenses/mit-license.php // ---------------------------------------------------------------------------- // [Twitter]: https://twitter.com/Sigureya/ // [github]:https://github.com/Sigureya/RPGmakerMV //============================================================================= /*: * @plugindesc 攻撃対象を選ぶ段階で相手の弱点を表示します。 * * @author しぐれん(魔のささやき) * * @param WindowRect * * @param WindowWidth * @type number * @desc ウィンドウの幅 * @default 300 * @parent WindowRect * * @param WindowHeight * @type number * @desc ウィンドウの高さ * @default 150 * @parent WindowRect * * @param WindowX * @type number * @desc ウィンドウのX座標 * @default * @parent WindowRect * * @param WindowY * @type number * @desc ウィンドウのY座標 * @default * @parent WindowRect * * @param 弱点判定ライン * * @param WeakLine * @type number * @desc 弱点の閾値。 * 属性有効度がこの数値を上回ると、弱点として表示します。 * @default 100 * @parent 弱点判定ライン * * @param ResistanceLine * @type number * @desc 耐性の閾値 * 属性有効度がこの数値を下回ると、耐性として表示します。 * @default 100 * @parent 弱点判定ライン * * @param displayName * @param WeakName * @desc 弱点の表示名。 * @default 弱点: * @parent displayName * * @param ResistanceName * @desc 耐性の表示名。 * @default 耐性: * @parent displayName * * @param displayMode * @type select * @option text * @option icon * @desc 属性を文字で表示するかアイコンで表示するかを決めます。 * @default text * * @param elementIconList * @desc 属性アイコン用にスキルデータを参照します。 * (属性が重複している場合、未定義の動作) * @type skill[] * @default [] * * @param hiddenState * @desc 指定したステートが発生している場合、 * 弱点・耐性を非表示にします。 * @type state * * @param hiddenIcon * @desc 敵の弱点が隠されている場合、 * 耐性と弱点の代わりに表示するアイコンを指定します。 * * @help * エネミーを選んでいる時に弱点を表示します。 * プラグインを編集できるのであれば、 * elementIconにアイコンIDを指定する配列を入れれば動きます。 * * バトラーのメモ欄にと書くことで、 * 弱点・耐性を表示しない設定ができます。 * var 1.0(2017/7/16) 公開 */ (function (global) { 'use strict'; function toIcon(elementId){ return '\\['+setting.elementIcon[elementId]+']'; } function toElementName(elementId){ return $dataSystem.elements[elementId]; } /** * @return {number[]} */ function createIconLiset(param){ const px = JSON.parse(param.iconList); const result=px.map(function(v){ return Number(v); }); result.unshift(null); return result; } function myParams(){ return PluginManager.parameters('Mano_EnemyHelpWindow');; } const setting =(function(){ const param = myParams(); const result= { weakLine:Number(param.WeakLine)/100, resistanceLine:Number(param.ResistanceLine)/100, weakName : String(param.WeakName), resistanceName :String(param.ResistanceName), displayMode : String(param.displayMode), rect :{ x:parseInt(param.WindowX), y:parseInt(param.WindowY), width:Number(param.WindowWidth), height:Number(param.WindowHeight) }, // elementIcon:createIconLiset( param), hiddenState:Number(param.hiddenState), hiddenIcon:Number(param.hiddenIcon), elementIcon:[], }; return result; })(); const elementItemFunc=setting.displayMode==='text' ? toElementName:toIcon; function iconSampling(){ const param = myParams(); const array =[]; array.length = $dataSystem.elements.length; for(var i=0;i setting.weakLine){ weakList.push(i); }else if(rate < setting.resistanceLine){ resistanceList.push(i); } } return { weakList:weakList, resistanceList:resistanceList }; } clearCache(){ this._textCache.length=0; } drawBaseText(){ this.drawText(setting.weakName,0,0); this.drawText(setting.resistanceName,0,this.lineHeight()); } /** * @param {number} x * @param {number} y * @param {number[]} elementList */ drawIcons(x,y,elementList){ for(var i =0 ;i