Files
Superproject1/js/plugins/ExtraEquipType.js
alexpolo1 9b37614c57 3
3
2023-04-11 22:11:31 +02:00

171 lines
5.2 KiB
JavaScript

//=============================================================================
// ExtraEquipType.js
//=============================================================================
/*:
* @plugindesc add/remove extra equip type to an actor
* @author Sasuke KANNAZUKI
* @help
* Plugin Command:
* ExtraEquipType arg0 arg1 arg2 arg3
* arg0 must be 'add' or 'remove'.
* arg1 must be actor ID number.
* arg2 must be 'weapon' or 'armor'.
* arg3 must be type id number of weapon/armor.
* ex.
* ExtraEquipType add 1 weapon 4 # actor#1 can equip weapon whose type is 4.
* ExtraEquipType remove 2 armor 3 # actor#2 cannot equip armor whose type is 3
* note:
* database is higher priority than this plugin. so, even if an actor is
* removed equip type, it won't disable if it's enabled on database.
*
*/
/*:ja
* @plugindesc クラスや装備を変更せずに、武器/防具タイプを増やす
* @author 神無月サスケ
* @help
* プラグインコマンドの書式:
* ExtraEquipType arg0 arg1 arg2 arg3
* arg0 は add か remove にします。addだと追加、removeだと削除です。
* arg1 は 装備可能にするアクターのIDです。
* arg2 は weapon か armor にします。
* arg3 は タイプIDです。
*
* 例:
* ExtraEquipType add 1 weapon 5
* → アクターID1番のキャラが、武器タイプ5(ムチ)を装備可能になります。
* ExtraEquipType add 3 armor 6
* → アクターID3番のキャラが、防具タイプ6(大型盾)を装備可能になります。
* ExtraEquipType remove 1 weapon 5
* → アクターID1番のキャラが、さっき装備可能になったムチが装備出来なくなります。
* ムチを装備していた場合、自動的にはずされます。
* ExtraEquipType remove 3 armor 6
* → アクターID3番のキャラが、さっき装備可能になった大型盾が装備できなくなります。
* 大型盾を装備していた場合、自動的にはずされます。
*
* 注意:
* remove で装備出来なくなるのは、このプラグインで装備可能にしたものだけで、
* データベースで装備可能になっているものは、removeしても装備不可にはなりません。
*/
(function() {
//
// process plugin commands
//
var _Game_Interpreter_pluginCommand =
Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
if (command === 'ExtraEquipType') {
var actor = $gameActors.actor(Number(args[1]));
var typeId = Number(args[3]);
if (!actor || typeId == 0){
return;
}
if(args[0] === 'add'){
if(args[2] === 'weapon'){
actor.addWtypeId(typeId);
} else if (args[2] === 'armor'){
actor.addAtypeId(typeId);
}
} else if (args[0] === 'remove'){
if(args[2] === 'weapon'){
actor.removeWtypeId(typeId);
actor.releaseUnequippableItems(false);
} else if (args[2] === 'armor'){
actor.removeAtypeId(typeId);
actor.releaseUnequippableItems(false);
}
}
}
};
//
// initialize
//
var _Game_Actor_initialize = Game_Actor.prototype.initialize;
Game_Actor.prototype.initialize = function(actorId) {
_Game_Actor_initialize.call(this, actorId);
this.initAddedWtypeIds();
this.initAddedAtypeIds();
};
Game_Actor.prototype.initAddedWtypeIds = function() {
this._addedWtypeIds = [];
};
Game_Actor.prototype.initAddedAtypeIds = function() {
this._addedAtypeIds = [];
};
//
// add W/AtypeId
//
Game_Actor.prototype.addWtypeId = function(wtypeId) {
if(!this._addedWtypeIds) {
this.initAddedWtypeIds();
}
this._addedWtypeIds[wtypeId] = true;
};
Game_Actor.prototype.addAtypeId = function(atypeId) {
if(!this._addedAtypeIds){
this.initAddedAtypeIds();
}
this._addedAtypeIds[atypeId] = true;
};
//
// remove W/AtypeId
//
Game_Actor.prototype.removeWtypeId = function(wtypeId) {
if(!this._addedWtypeIds) {
this.initAddedWtypeIds();
}
this._addedWtypeIds[wtypeId] = false;
};
Game_Actor.prototype.removeAtypeId = function(atypeId) {
if(!this._addedAtypeIds) {
this.initAddedAtypeIds();
}
this._addedAtypeIds[atypeId] = false;
};
//
// check W/AtypeId is added or not
//
Game_Actor.prototype.isAddedWtypeId = function(wtypeId){
if(!this._addedWtypeIds) {
return false;
}
return !!this._addedWtypeIds[wtypeId];
};
Game_Actor.prototype.isAddedAtypeId = function(atypeId){
if(!this._addedAtypeIds) {
return false;
}
return !!this._addedAtypeIds[atypeId];
};
//
// check whether the actor can equip it.
//
var _Game_Actor_isEquipWtypeOk = Game_Actor.prototype.isEquipWtypeOk;
Game_Actor.prototype.isEquipWtypeOk = function(wtypeId) {
if(this.isAddedWtypeId(wtypeId)) {
return true;
}
return _Game_Actor_isEquipWtypeOk.call(this, wtypeId);
};
var _Game_Actor_isEquipAtypeOk = Game_Actor.prototype.isEquipAtypeOk;
Game_Actor.prototype.isEquipAtypeOk = function(atypeId) {
if(this.isAddedAtypeId(atypeId)) {
return true;
}
return _Game_Actor_isEquipAtypeOk.call(this, atypeId);
};
})();