do-disciplinary-committee-m.../www/js/plugins/NoWeaponDisabled.js
2025-05-04 14:43:03 -05:00

61 lines
No EOL
1.9 KiB
JavaScript

//=============================================================================
// 素手禁止 / NoWeaponDisabled.js
//=============================================================================
/*:ja
* v0.5.0
* @plugindesc 装備画面で武器の装備無しを禁止する
* @author Declare War
*
* @param EquipCondition
* @desc 装備を解除できる条件を記述します。
* @default true
*/
(function(){
var NoWeaponDisabled = { params: PluginManager.parameters('NoWeaponDisabled') };
NoWeaponDisabled.EquipCondition = NoWeaponDisabled.params['EquipCondition'];
// Game_Actor
// clearEquipments #a
var _Game_Actor_clearEquipments = Game_Actor.prototype.clearEquipments;
Game_Actor.prototype.clearEquipments = function(){
if (SceneManager._scene.constructor === Scene_Equip){
this.noWeaponDisabledClearEquipments();
}else{
_Game_Actor_clearEquipments.call(this);
}
};
// noWeaponDisabledClearEquipments #n
Game_Actor.prototype.noWeaponDisabledClearEquipments = function() {
var maxSlots = this.equipSlots().length;
for (var i = 0; i < maxSlots; i++) {
if (this.isEquipChangeOk(i) && this.equipSlots()[i] !== 1) {
this.changeEquip(i, null);
}
}
};
// Scene_Equip
// onItemOk #a
var _Scene_Equip_onItemOk = Scene_Equip.prototype.onItemOk;
Scene_Equip.prototype.onItemOk = function() {
var Condition = new Function( "return !!("+ NoWeaponDisabled.EquipCondition + ");" )()
if (this.actor().equipSlots()[this._slotWindow.index()] === 2 && !this._itemWindow.item()){
if(Condition){
//装備解除できない時
_Scene_Equip_onItemOk.call(this);
}else{
//装備解除できる時
this.noWeaponDisabledOnItemOk();
}
}else{
_Scene_Equip_onItemOk.call(this);
}
};
// noWeaponDisabledOnItemOk #n
Scene_Equip.prototype.noWeaponDisabledOnItemOk = function() {
SoundManager.playBuzzer();
this._itemWindow.activate();
};
})();