nyacronomicon/js/plugins/NUUN_AddDropItems.js
2026-03-12 22:39:10 -05:00

87 lines
2.8 KiB
JavaScript

/*:-----------------------------------------------------------------------------------
* NUUN_AddDropItems.js
*
* Copyright (C) 2020 NUUN
* This software is released under the MIT License.
* http://opensource.org/licenses/mit-license.php
* -------------------------------------------------------------------------------------
*
*/
/*:
*
* @target MZ
* @plugindesc ドロップアイテム追加
* @base NUUN_Base
* @version 1.0.1
* @orderAfter NUUN_Base
* @author NUUN
*
* @help
* デフォルトでは敵のドロップアイテムは3つまでしか設定できませんが、
* このプラグインはドロップアイテムを4つ以上設定することが出来ます。
*
* このプラグインは「NUUN_Base」が必要です。
*
* 敵キャラのメモ欄
* <DropItem I:13,20>
* 設定した敵のドロップアイテムに13番のアイテムがドロップ率1/20の確率追加されます。
*
* <DropItem W:18,16>
* 設定した敵のドロップアイテムに18番の武器がドロップ率1/16の確率追加されます。
*
* <DropItem A:35,32>
* 設定した敵のドロップアイテムに35番の防具がドロップ率1/32の確率追加されます。
*
* 利用規約
* このプラグインはMITライセンスで配布しています。
*
* 更新履歴
* 2021/10/3 Ver.1.0.0
* メモに設定するときの説明が間違っていた問題を修正。
* 2020/12/31 Ver.1.0.0
* 初版
*
*/
var Imported = Imported || {};
Imported.NUUN_AddDropItems = true;
(() => {
const parameters = PluginManager.parameters('NUUN_AddDropItems');
const _DataManager_nuun_loadDataEnemies = DataManager.nuun_loadDataEnemies;
DataManager.nuun_loadDataEnemies = function(deta){
_DataManager_nuun_loadDataEnemies.call(this, deta);
deta.dropItems = this.dropItems(deta);
};
DataManager.dropItems = function(deta){
const enemy = deta;
const dropItems = enemy.dropItems;
// goma \d-\d形式に対応
const re =/<(?:DropItem)\s*([IWA]):\s*([\d|\d-\d]+(?:\s*,\s*\d+)*)>/g;
while(true) {
let match = re.exec(enemy.note);
if (match) {
let data = match[2].split(',');
let data2 = data[0].split('-');
let startId = data2[0];
let endId = (data2.length === 1) ? data2[0] : data2[1];
for(var id=startId; id<=endId; id++) {
switch (match[1]) {
case 'I':
dropItems.push({dataId: parseInt(id), denominator: parseInt(data[1]), kind:1});
break;
case 'W':
dropItems.push({dataId: parseInt(id), denominator: parseInt(data[1]), kind:2});
break;
case 'A':
dropItems.push({dataId: parseInt(id), denominator: parseInt(data[1]), kind:3});
break;
}
}
} else {
return dropItems;
}
}
};
})();