// ============================================================================= // AB_EquipUpgrade.js // Version: 1.00 // ----------------------------------------------------------------------------- // Copyright (c) 2017 ヱビ // Released under the MIT license // http://opensource.org/licenses/mit-license.php // ----------------------------------------------------------------------------- // [Homepage]: ヱビのノート // http://www.zf.em-net.ne.jp/~ebi-games/ // ============================================================================= /*: * @plugindesc v1.00 装備している装備を強化するプラグインです。 * @author ヱビ * * @param NextGradeName * @desc 次のグレードの表示名です。 * @default Next: * * @param CostName * @desc コストの表示名です。 * @default コスト: * * @param UpgradeConfirmText * @desc 装備をアップグレードするときの確認テキストです。 * %1 - 現在の装備 %2 - アップグレード後の装備 * @default %1を%2にアップグレードしますか? * * @param ConfirmYes * @desc 確認ウィンドウのOKの名前です。 * @default はい * * @param ConfirmNo * @desc 確認ウィンドウのキャンセルの名前です。 * @default いいえ * * * @help * ============================================================================ * どんなプラグイン? * ============================================================================ * * 装備に「次のグレードの装備のタグ」「必要なお金」「必要なアイテム」を付けると * 装備強化メニューで強化できるようになります。 * * ============================================================================ * タグ * ============================================================================ * * 武器、防具のメモ欄のタグ: * * IDxの武器(防具)にアップグレードできるようになります。 * * * item id * item id: x * weapon id * weapon id: x * armor id * armor id: x * gold: x * * idにアイテムのIDを、xに個数を設定します。 * * 例: * * item 1 * item 2: 3 * gold: 300 * * ID1のアイテムを1つ、ID2のアイテムを3つ、お金を300G必要とします。 * * ============================================================================ * プラグインコマンド * ============================================================================ * * OpenEquipUpgrade * 装備アップグレード画面を開きます。 * * ============================================================================ * 更新履歴 * ============================================================================ * * Version 1.00 * 初回に顔グラが表示されない不具合を修正。 * * Version 0.04 * 初回に顔グラが表示されない不具合を修正。 * * Version 0.03 * ゴールドの指定で反映されない不具合を修正。 * * Version 0.02 * 素材に防具と武器を使えるように変更。コストでお金がかからないとき、お金を * 表示しないように変更。 * * Version 0.01 * 作成。 * * ============================================================================ * 利用規約 * ============================================================================ * * ・MITライセンスです。 * ・クレジット表記は不要 * ・営利目的で使用可 * ・改変可 * ただし、ソースコードのヘッダのライセンス表示は残してください。 * ・素材だけの再配布も可 * ・アダルトゲーム、残酷なゲームでの使用も可 * */ (function() { var parameters = PluginManager.parameters('AB_EquipUpgrade'); var NextGradeName = String(parameters['NextGradeName']); var CostName = String(parameters['CostName']); var UpgradeConfirmText = String(parameters['UpgradeConfirmText']); var ConfirmYes = String(parameters['ConfirmYes']); var ConfirmNo = String(parameters['ConfirmNo']); //============================================================================= // DataManager //============================================================================= var loaded_AB_EquipUpgrade = false; var _DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; DataManager.isDatabaseLoaded = function() { if (!_DataManager_isDatabaseLoaded.call(this)) return false; if (!loaded_AB_EquipUpgrade) { this.processABEUNoteTags($dataWeapons); this.processABEUNoteTags($dataArmors); loaded_AB_EquipUpgrade = true; } return true; }; DataManager.processABEUNoteTags = function(group) { var note1 = /<(?:UpgradeCost)>/i; var note2 = /<\/(?:UpgradeCost)>/i; for (var n = 1, nl = group.length; n < nl; n++) { var obj = group[n]; var notedata = obj.note.split(/[\r\n]+/); obj.upgradeCost = 0; obj.upgradeIngredients = []; var gatherIngredients = false; for (var i = 0, l = notedata.length; i < l; i++) { var line = notedata[i]; if (line.match(note1)) { gatherIngredients = true; } else if (line.match(note2)) { gatherIngredients = false; } else if (gatherIngredients) { this.addEquipUpgradeCost(obj, line); } } } }; DataManager.addEquipUpgradeCost = function(obj, line) { var ingType; var ingId; var ingValue = 1; if (line.match(/GOLD:[ ](\d+)/i)) { obj.upgradeCost = parseInt(RegExp.$1); return; } else if (line.match(/ITEM[ ](\d+):[ ](\d+)/i)) { ingId = parseInt(RegExp.$1); ingType = 0; ingValue = parseInt(RegExp.$2); } else if (line.match(/ITEM[ ](\d+)/i)) { ingId = parseInt(RegExp.$1); ingType = 0; ingValue = 1; } else if (line.match(/WEAPON[ ](\d+):[ ](\d+)/i)) { ingId = parseInt(RegExp.$1); ingType = 1; ingValue = parseInt(RegExp.$2); } else if (line.match(/WEAPON[ ](\d+)/i)) { ingId = parseInt(RegExp.$1); ingType = 1; ingValue = 1; } else if (line.match(/ARMOR[ ](\d+):[ ](\d+)/i)) { ingId = parseInt(RegExp.$1); ingType = 2; ingValue = parseInt(RegExp.$2); } else if (line.match(/ARMOR[ ](\d+)/i)) { ingId = parseInt(RegExp.$1); ingType = 2; ingValue = 1; } var length = obj.upgradeIngredients.length; obj.upgradeIngredients[length] = [ingType, ingId, ingValue]; }; DataManager.isEquipUpgradeIngredientOk = function(ingId) { var item; item = $dataItems[ingId]; if (!item) return false; return true; }; DataManager.getEquipUpgradeIngredient = function(item, index) { var itemId = item.upgradeIngredients[index][1]; if (item.upgradeIngredients[index][0] === 0) { return $dataItems[itemId]; } else if (item.upgradeIngredients[index][0] === 1) { return $dataWeapons[itemId]; } return $dataArmors[itemId]; }; DataManager.getEquipUpgradeQuantity = function(item, index) { return item.upgradeIngredients[index][2]; }; DataManager.getNextGradeEquip = function(item) { if (!item) return null; if (!item.meta.NextGrade) return null; var id = parseInt(item.meta.NextGrade); if (DataManager.isWeapon(item)) { var item = $dataWeapons[id]; } else if (DataManager.isArmor(item)) { var item = $dataArmors[id]; } if (!item) return null; return item; }; DataManager.canUpgradeEquip = function(item) { if (!item) return false; if (!item.meta.NextGrade) return false; if ($gameParty.gold() < item.upgradeCost) return false; for (var i = 0, l = item.upgradeIngredients.length; i= item.upgradeCost) { this.resetTextColor(); this.drawText(item.upgradeCost + TextManager.currencyUnit + "(" + $gameParty.gold() +TextManager.currencyUnit+")", x[0], y, w); } else { this.changeTextColor(this.textColor(6)); this.drawText(item.upgradeCost + TextManager.currencyUnit + "(" + $gameParty.gold() +TextManager.currencyUnit+")", x[0], y, w); } } var length = item.upgradeIngredients.length; for (var i=0; i