The way I want this to work is that after having changed weapons, to end the current action for the actor automatically.
Maybe someone can take a look at it and point me in the right direction, pleasee? (I'm using Yanfly battle plugins but I don't think it changes much).
Here is the plugin in question (contains some of my edits):
Spoiler
Code:
//=============================================================================
// ChangeWeaponOnBattle.js
//=============================================================================
/*:
* @plugindesc make battle command that changes weapon.
* @author Sasuke KANNAZUKI
*
* @param commandName
* @desc command name that change equip
* @default Equip
*
* @help This plugin does not provide plugin commands.
*
* - changable equips are only weapon(s) and shield.
* - changing weapon doesn't consume turn.
*
*/
/*:ja
* @plugindesc 戦闘コマンドに装備変更を追加
* @author 神無月サスケ
*
* @param commandName
* @desc 装備変更のコマンド名です。
* @default 装備変更
*
* @help このプラグインには、プラグインコマンドはありません。
*
* - 変更可能なのは武器と盾だけです。
* - 装備変更はターンを消費しません。
*
*/
(function() {
var parameters = PluginManager.parameters('ChangeWeaponOnBattle');
var commandName = parameters['commandName'] || 'Equip';
//---------------------------------------------------------------------------
// Tiny equip status
// display only atk and def.
//
function Window_TinyEquipStatus() {
this.initialize.apply(this, arguments);
}
Window_TinyEquipStatus.prototype =
Object.create(Window_EquipStatus.prototype);
Window_TinyEquipStatus.prototype.constructor = Window_TinyEquipStatus;
Window_TinyEquipStatus.prototype.initialize = function(x, y) {
Window_EquipStatus.prototype.initialize.call(this, x, y);
};
Window_TinyEquipStatus.prototype.numVisibleRows = function() {
return 2;
};
Window_TinyEquipStatus.prototype.refresh = function() {
this.contents.clear();
if (this._actor) {
for (var i = 0; i < 2; i++) {
this.drawItem(0, this.lineHeight() * i, 2 + i);
}
}
};
//---------------------------------------------------------------------------
// Tiny equip slot
// display only a weapon, and a shield or another weapon.
//
function Window_TinyEquipSlot() {
this.initialize.apply(this, arguments);
}
Window_TinyEquipSlot.prototype = Object.create(Window_EquipSlot.prototype);
Window_TinyEquipSlot.prototype.constructor = Window_TinyEquipSlot;
Window_TinyEquipSlot.prototype.initialize = function(x, y, width, height) {
Window_EquipSlot.prototype.initialize.call(this, x, y, width, height);
};
Window_TinyEquipSlot.prototype.maxItems = function() {
return this._actor ? 1 : 0;
};
Window_TinyEquipSlot.prototype.show = function() {
Window_EquipSlot.prototype.show.call(this);
this.showHelpWindow();
};
Window_TinyEquipSlot.prototype.hide = function() {
Window_EquipSlot.prototype.hide.call(this);
this.hideHelpWindow();
};
//---------------------------------------------------------------------------
//
// add equipment windows for check active.
//
var _Scene_Battle_isAnyInputWindowActive =
Scene_Battle.prototype.isAnyInputWindowActive;
Scene_Battle.prototype.isAnyInputWindowActive = function() {
if(_Scene_Battle_isAnyInputWindowActive.call(this)) {
return true;
}
return (this._equipSlotWindow.active || this._equipItemWindow.active);
};
//
// creat new windows for equip weapon(s) on battle
//
var _Scene_Battle_createAllWindows = Scene_Battle.prototype.createAllWindows;
Scene_Battle.prototype.createAllWindows = function() {
_Scene_Battle_createAllWindows.call(this);
this.createEquipStatusWindow();
this.createEquipSlotWindow();
this.createEquipItemWindow();
};
Scene_Battle.prototype.createEquipStatusWindow = function() {
this._equipStatusWindow =
new Window_TinyEquipStatus(0, this._helpWindow.height);
this._equipStatusWindow.hide();
this.addWindow(this._equipStatusWindow);
};
Scene_Battle.prototype.createEquipSlotWindow = function() {
var wx = this._equipStatusWindow.width;
var wy = this._helpWindow.height;
var ww = Graphics.boxWidth - this._equipStatusWindow.width;
var wh = this._equipStatusWindow.height;
this._equipSlotWindow = new Window_TinyEquipSlot(wx, wy, ww, wh);
this._equipSlotWindow.setHelpWindow(this._helpWindow);
this._equipSlotWindow.setStatusWindow(this._equipStatusWindow);
this._equipSlotWindow.setHandler('ok', this.onEquipSlotOk.bind(this));
this._equipSlotWindow.setHandler('cancel',
this.onEquipSlotCancel.bind(this));
this._equipSlotWindow.hide();
this.addWindow(this._equipSlotWindow);
};
Scene_Battle.prototype.createEquipItemWindow = function() {
var wx = 0;
var wy = this._equipStatusWindow.y + this._equipStatusWindow.height;
var ww = Graphics.boxWidth;
var wh = Graphics.boxHeight - wy - this._statusWindow.height;
this._equipItemWindow = new Window_EquipItem(wx, wy, ww, wh);
this._equipItemWindow.setHelpWindow(this._helpWindow);
this._equipItemWindow.setStatusWindow(this._equipStatusWindow);
this._equipItemWindow.setHandler('ok', this.onEquipItemOk.bind(this));
this._equipItemWindow.setHandler('cancel',
this.onEquipItemCancel.bind(this));
this._equipSlotWindow.setItemWindow(this._equipItemWindow);
this._equipItemWindow.hide();
this.addWindow(this._equipItemWindow);
};
//
// add command to actor command window
//
var _Scene_Battle_createActorCommandWindow =
Scene_Battle.prototype.createActorCommandWindow;
Scene_Battle.prototype.createActorCommandWindow = function() {
_Scene_Battle_createActorCommandWindow.call(this);
this._actorCommandWindow.setHandler('equip', this.commandEquip.bind(this));
};
var _Window_ActorCommand_makeCommandList =
Window_ActorCommand.prototype.makeCommandList;
Window_ActorCommand.prototype.makeCommandList = function() {
_Window_ActorCommand_makeCommandList.call(this);
if (this._actor) {
this.addEquipCommand();
}
};
Window_ActorCommand.prototype.addEquipCommand = function() {
this.addCommand(commandName, 'equip');
};
//
// process handlers
//
Scene_Battle.prototype.refreshActor = function() {
var actor = BattleManager.actor();
this._equipStatusWindow.setActor(actor);
this._equipSlotWindow.setActor(actor);
this._equipItemWindow.setActor(actor);
};
Scene_Battle.prototype.commandEquip = function() {
this.refreshActor();
this._equipStatusWindow.show();
this._equipItemWindow.refresh();
this._equipItemWindow.show();
this._equipSlotWindow.refresh();
this._equipSlotWindow.show();
//this._equipSlotWindow.activate();
//this._equipSlotWindow.select(0);
this._equipItemWindow.activate();
this._equipItemWindow.select(0);
};
Scene_Battle.prototype.onEquipSlotOk = function() {
this._equipItemWindow.activate();
this._equipItemWindow.select(0);
};
Scene_Battle.prototype.onEquipSlotCancel = function() {
this._equipStatusWindow.hide();
this._equipItemWindow.hide();
this._equipSlotWindow.hide();
this._actorCommandWindow.activate();
this._actorCommandWindow.select(0);
};
Scene_Battle.prototype.onEquipItemOk = function() {
SoundManager.playEquip();
BattleManager.actor().changeEquip(this._equipSlotWindow.index(),
this._equipItemWindow.item());
//this._equipSlotWindow.activate();
this._equipSlotWindow.refresh();
this._equipItemWindow.deselect();
this._equipItemWindow.refresh();
this._equipStatusWindow.refresh();
this.onEquipSlotCancel();
};
Scene_Battle.prototype.onEquipItemCancel = function() {
this._equipSlotWindow.activate();
this._equipItemWindow.deselect();
};
})();Thanks!
Edit: It should've probably went on the "Plugin support" forum >.> Oh, well...
Edit2: I kinda found a workaround for this using states but I still don't know how to automate it x(