//============================================================================= // ProfileExtend.js // ---------------------------------------------------------------------------- // Copyright (c) 2015 Triacontane // This software is released under the MIT License. // http://opensource.org/licenses/mit-license.php // ---------------------------------------------------------------------------- // Version // 1.1.1 2017/02/07 端末依存の記述を削除 // 1.1.0 2017/01/13 プロフィールを途中で変更できるプラグインコマンドを追加 // 1.0.0 2016/05/03 初版 // ---------------------------------------------------------------------------- // [Blog] : http://triacontane.blogspot.jp/ // [Twitter]: https://twitter.com/triacontane/ // [GitHub] : https://github.com/triacontane/ //============================================================================= /*: @url https://triacontane.blogspot.com/ @plugindesc Profile Extension Plugin @author Triacontane @license MIT License @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/triacontane-MV-plugins ). Original plugin by Triacontane. Please check the latest official version at: https://triacontane.blogspot.com ----- This command extends the profile input field on the status screen. Please note that this will normally overlap with the status and equipment display fields. Also, since the database profile input field only allows two lines of input, please enter the following in the actor's Note field. //"Test" will be displayed on the third line. Plugin Command Details Execute from the "Plugin Command" event command. (Separate parameters with a space.) - Changes the extended profile of the actor with ID [1] mid-game. PE_SET_EXTEND_PROFILE 1 ProfileContent Terms of Use: You may modify and redistribute this plugin without permission from the author, and there are no restrictions on its use (commercial, 18+, etc.). This plugin is now yours. @param 拡張行数 @text Extended Row Count @desc The number of lines to expand the profile entry field. @default 0 */ /*:ja @plugindesc プロフィール拡張プラグイン @author トリアコンタン @param 拡張行数 @desc プロフィール入力欄を拡張する行数です。 @default 0 @help ステータス画面のプロフィール入力欄を拡張します。 通常だとステータスと装備品表示欄と被ってしまうので注意してください。 また、データベースのプロフィール入力欄には2行までしか入力できないので アクターのメモ欄に以下の通り入力してください。 //「テスト」が3行目に表示されます。 プラグインコマンド詳細 イベントコマンド「プラグインコマンド」から実行。 (パラメータの間は半角スペースで区切る) ・ID[1]のアクターの拡張プロフィールをゲーム途中で変更します。 PE_拡張プロフィール設定 1 プロフィール内容 PE_SET_EXTEND_PROFILE 1 プロフィール内容 利用規約: 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等) についても制限はありません。 このプラグインはもうあなたのものです。 */ (function () { 'use strict'; var pluginName = 'ProfileExtend'; var metaTagPrefix = 'PE'; var getParamNumber = function (paramNames, min, max) { var value = getParamOther(paramNames); if (arguments.length < 2) min = -Infinity; if (arguments.length < 3) max = Infinity; return (parseInt(value, 10) || 0).clamp(min, max); }; var getParamOther = function (paramNames) { if (!Array.isArray(paramNames)) paramNames = [paramNames]; for (var i = 0; i < paramNames.length; i++) { var name = PluginManager.parameters(pluginName)[paramNames[i]]; if (name) return name; } return null; }; var getArgNumber = function (arg, min, max) { if (arguments.length < 2) min = -Infinity; if (arguments.length < 3) max = Infinity; return (parseInt(arg) || 0).clamp(min, max); }; var getMetaValue = function (object, name) { var metaTagName = metaTagPrefix + (name ? name : ''); return object.meta.hasOwnProperty(metaTagName) ? object.meta[metaTagName] : undefined; }; var convertEscapeCharacters = function (text) { if (text == null) text = ''; var windowLayer = SceneManager._scene._windowLayer; return windowLayer ? windowLayer.children[0].convertEscapeCharacters(text) : text; }; var convertAllArguments = function (args) { for (var i = 0; i < args.length; i++) { args[i] = convertEscapeCharacters(args[i]); } return args; }; //============================================================================= // パラメータの取得と整形 //============================================================================= var paramExtendLine = getParamNumber(['ExtendLine', '拡張行数'], 0); var setPluginCommand = function (commandName, methodName) { pluginCommandMap.set(metaTagPrefix + commandName, methodName); }; var pluginCommandMap = new Map(); setPluginCommand('_拡張プロフィール設定', 'setExtendProfile'); setPluginCommand('_SET_EXTEND_PROFILE', 'setExtendProfile'); //============================================================================= // Game_Interpreter // プラグインコマンドを追加定義します。 //============================================================================= var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function (command, args) { _Game_Interpreter_pluginCommand.apply(this, arguments); var pluginCommandMethod = pluginCommandMap.get(command.toUpperCase()); if (pluginCommandMethod) { this[pluginCommandMethod](convertAllArguments(args)); } }; Game_Interpreter.prototype.setExtendProfile = function (args) { var actor = $gameActors.actor(getArgNumber(args[0], 1)); if (actor) actor.setExtendProfile(args[1]); }; //============================================================================= // Game_Actor // プロフィールの内容を拡張します。 //============================================================================= var _Game_Actor_profile = Game_Actor.prototype.profile; Game_Actor.prototype.profile = function () { var profile = _Game_Actor_profile.apply(this, arguments); var extend = this.getExtendProfile(); return profile + (extend ? '\n' + extend : ''); }; Game_Actor.prototype.getExtendProfile = function () { if (!this._extendProfile) { // this._extendProfile = getMetaValue(this.actor(), '拡張'); this._extendProfile = getMetaValue(this.actor(), '_Ex'); } return this._extendProfile; }; Game_Actor.prototype.setExtendProfile = function (value) { this._extendProfile = value; }; //============================================================================= // Window_Status // プロフィールの入力欄を拡張します。 //============================================================================= var _Window_Status_drawHorzLine = Window_Status.prototype.drawHorzLine; Window_Status.prototype.drawHorzLine = function (y) { if (this.lineHeight() * 13 === y) { arguments[0] -= this.lineHeight() * paramExtendLine; } _Window_Status_drawHorzLine.apply(this, arguments); }; var _Window_Status_drawBlock4 = Window_Status.prototype.drawBlock4; Window_Status.prototype.drawBlock4 = function (y) { arguments[0] -= this.lineHeight() * paramExtendLine; _Window_Status_drawBlock4.apply(this, arguments); }; })();