/*:----------------------------------------------------------------------------------- * NUUN_LevelUnlimited.js * * Copyright (C) 2020 NUUN * This software is released under the MIT License. * http://opensource.org/licenses/mit-license.php * ------------------------------------------------------------------------------------- * */ /*: * @target MZ * @plugindesc Actor Level Unlimited * @author NUUN * @version 1.2.3 * * @help * You can set the maximum level to 100 or more. * * Actor Note * Sets the maximum level. * Sets the initial level when joining a party. * Set your level in test battles. * * Example * The maximum level of an actor is 200. * Set the initial level. In the setting example, the initial level is 120. * Set your level in test battles to 130. * * * If you want to learn skills at level 100 or higher, enter in the Note field of the acquired skill of the class. * You learn the skill when you level up to level 105. * * Terms of Use * This plugin is distributed under the MIT license. * * Log * 8/22/2023 Ver.1.2.3 * Fixed an issue where stats were acquired as a decimal point when level 100 or higher. * 5/18/2023 Ver.1.2.2 * Fixed not to affect "NUUN_ChangeMaxLevel". * 11/12/2022 Ver.1.2.1 * Changed the display in languages other than Japanese to English. * 9/18//2022 Ver 1.2.0 * Added a function that can be over level 100 to the level at the time of test play. * 6/27/2021 Ver 1.1.0 * Added a function that allows you to set the initial level to level 100 or higher. * 12/12/2020 Ver 1.0.1 * Fixed incorrect calculation of stats above level 100. * 12/12/2020 Ver 1.0.0 * first edition. * * */ /*:ja * @target MZ * @plugindesc レベル上限限界突破プラグイン * @author NUUN * @version 1.2.3 * * @help * 最大レベルを100以上に設定できます。 * * アクターのメモ欄 * 最大レベルを変更します。 * パーティ加入時の初期レベルを設定します。 * テスト戦闘でのレベルを設定します。 * * 例 * アクターの最大レベルは200になります。 * 初期レベルを設定します。設定例では初期レベルが120になります。 * テスト戦闘でのレベルを130に設定します。 * * * レベル100以上でスキルを習得させる場合は職業の習得スキルのメモ欄に * を記入します。デフォルトの習得レベルは無視されます。 * レベル105にレベルアップした時にスキルを習得します。 * * 利用規約 * このプラグインはMITライセンスで配布しています。 * * 更新履歴 * 2023/8/22 Ver.1.2.3 * レベル100以上の時にステータスが小数点で取得されてしまう問題を修正。 * 2023/5/18 Ver.1.2.2 * 最大レベル変動プラグインに影響しないように修正。 * 2022/11/12 Ver.1.2.1 * 日本語以外での表示を英語表示に変更。 * 2022/9/18 Ver 1.2.0 * テストプレイ時のレベルにレベル100以上できる機能を追加。 * 2021/6/27 Ver 1.1.0 * 初期レベルをレベル100以上に設定できる機能を追加。 * 2020/12/12 Ver 1.0.1 * レベル100以上のステータスの計算が間違っていたのを修正。 * 2020/12/12 Ver 1.0.0 * 初版 * * */ var Imported = Imported || {}; Imported.NUUN_LevelUnlimited = true; (() => { const parameters = PluginManager.parameters('NUUN_LevelUnlimited'); const _Game_Actor_setup = Game_Actor.prototype.setup; Game_Actor.prototype.setup = function(actorId) { _Game_Actor_setup.call(this, actorId); const actor = $dataActors[actorId]; if (actor.meta.StartLevel) { this._level = Number(actor.meta.StartLevel) || actor.initialLevel; this.initImages(); this.initExp(); this.initSkills(); this.initEquips(actor.equips); this.clearParamPlus(); this.recoverAll(); } }; const _Game_Actor_paramBase = Game_Actor.prototype.paramBase; Game_Actor.prototype.paramBase = function(paramId) { if (this._level >= 100) { const u_levelParam = this.currentClass().params[paramId][99]; const d_levelParam = this.currentClass().params[paramId][94]; return Math.round(this.overLevelParam(u_levelParam, d_levelParam)); } else { return _Game_Actor_paramBase.call(this, paramId); } }; Game_Actor.prototype.overLevelParam = function(Param1, Param2) { return (this._level - 99) * ((Param1 - Param2) / 5) + Param1; }; const _Game_Actor_maxLevel = Game_Actor.prototype.maxLevel; Game_Actor.prototype.maxLevel = function() { return !this._maxLevel && this.actor().meta.MaxLevel ? this.actor().meta.MaxLevel : _Game_Actor_maxLevel.call(this); }; Game_Actor.prototype.initSkills = function() { this._skills = []; for (const learning of this.currentClass().learnings) { let learnLv = this.learnSkillNote(learning); learnLv = learnLv > 0 ? learnLv : learning.level; if (learnLv <= this._level) { this.learnSkill(learning.skillId); } } }; Game_Actor.prototype.levelUp = function() { this._level++; for (const learning of this.currentClass().learnings) { let learnLv = this.learnSkillNote(learning); learnLv = learnLv > 0 ? learnLv : learning.level; if (learnLv === this._level) { this.learnSkill(learning.skillId); } } }; Game_Actor.prototype.learnSkillNote = function(learn) { const re = /<(?:LearnSkill):\s*(\d+)>/g; let val = null; while(true) { let match = re.exec(learn.note); if (match) { val = Number(match[1]); break; } else { break; } } return val; }; const _Game_Party_setupBattleTestMembers = Game_Party.prototype.setupBattleTestMembers; Game_Party.prototype.setupBattleTestMembers = function() { _Game_Party_setupBattleTestMembers.call(this); for (const battler of $dataSystem.testBattlers) { const actor = $gameActors.actor(battler.actorId); if (actor) { const testLevel = actor.actor().meta.TestMaxLevel; if (testLevel) { actor.changeLevel(Number(testLevel), false); actor.recoverAll(); } } } }; })();