1488 lines
58 KiB
JavaScript
1488 lines
58 KiB
JavaScript
//
|
|
// 並び替えシーン ver1.09
|
|
//
|
|
// ------------------------------------------------------
|
|
// Copyright (c) 2016 Yana
|
|
// Released under the MIT license
|
|
// http://opensource.org/licenses/mit-license.php
|
|
// ------------------------------------------------------
|
|
//
|
|
// author Yana
|
|
//
|
|
|
|
var Imported = Imported || {};
|
|
Imported['SceneFormation'] = 1.09;
|
|
|
|
/*:
|
|
* @plugindesc ver1.09/並び替えシーンを追加します。
|
|
* @author Yana
|
|
*
|
|
*
|
|
* @param Stand Members Size
|
|
* @desc 待機メンバーの最大数です。
|
|
* 11を超えると、ウィンドウが2行になります。
|
|
* @default 8
|
|
*
|
|
* @param Max Battle Members Size
|
|
* @desc 最大戦闘メンバー人数です。
|
|
* 3人以下や、5人以上にも設定できます。
|
|
* @default 4
|
|
*
|
|
* @param Use Menu Formation Scene
|
|
* @desc メニューの並び替えの項目を、並び替えシーンに
|
|
* 置き換えるかどうかの設定です。true/falseで設定してください。
|
|
* @default true
|
|
*
|
|
* @param Formation Scene Battle Name
|
|
* @desc 戦闘メンバーの上に表示されるテキストです。
|
|
* @default 戦闘メンバー
|
|
*
|
|
* @param Formation Scene Stand Name
|
|
* @desc 待機メンバーの上に表示されるテキストです。
|
|
* @default 待機メンバー
|
|
*
|
|
* @param Use Battle Formation Switch ID
|
|
* @desc 戦闘時にパーティコマンドに並び替えの項目の
|
|
* 追加を許可を設定するスイッチのIDです。
|
|
* @default 20
|
|
*
|
|
* @param Battle Command Formation
|
|
* @desc 戦闘時にパーティコマンドに追加される
|
|
* 並び替えの項目のテキストです。
|
|
* @default Formation
|
|
*
|
|
* @param Status Window Font Size
|
|
* @desc ステータスウィンドウの文字サイズです。
|
|
* @default 24
|
|
*
|
|
* @param Status Block Width
|
|
* @desc ステータスウィンドウのパラメータ表示部の横幅です。
|
|
* @default 372
|
|
*
|
|
* @help ------------------------------------------------------
|
|
* プラグインコマンド
|
|
* ------------------------------------------------------
|
|
* ※スペースは必ず半角で入力してください。
|
|
*
|
|
* ・並び替えシーンを呼び出します。
|
|
* 並び替えシーン 呼び出し
|
|
* SceneFormation call
|
|
*
|
|
* ・ID番のアクターの並びを固定します。
|
|
* 並び替えシーン 固定 ID
|
|
* SceneFormation fixed ID
|
|
*
|
|
* ・ID番のアクターの並びの固定を解除します。
|
|
* 並び替えシーン 固定解除 ID
|
|
* SceneFormation unpin ID
|
|
*
|
|
* ・全アクターの並びを固定します。
|
|
* 並び替えシーン 全固定
|
|
* SceneFormation all_fixed
|
|
*
|
|
* ・ID番のアクターの並びを固定します。
|
|
* 並び替えシーン 全固定解除
|
|
* SceneFormation all_unpin
|
|
*
|
|
* ・最大戦闘参加人数を変更します。
|
|
* 最大戦闘参加人数変更 人数
|
|
* MaxBattleMembersSize number
|
|
* ※戦闘中は変更できません!
|
|
*
|
|
* ------------------------------------------------------
|
|
* 利用規約
|
|
* ------------------------------------------------------
|
|
* 当プラグインはMITライセンスで公開されています。
|
|
* 使用に制限はありません。商用、アダルト、いずれにも使用できます。
|
|
* 二次配布も制限はしませんが、サポートは行いません。
|
|
* 著作表示は任意です。行わなくても利用できます。
|
|
* 要するに、特に規約はありません。
|
|
* バグ報告や使用方法等のお問合せはネ実ツクールスレ、または、Twitterにお願いします。
|
|
* https://twitter.com/yanatsuki_
|
|
* 素材利用は自己責任でお願いします。
|
|
* ------------------------------------------------------
|
|
* 更新履歴:
|
|
* ver1.09:170228
|
|
* 最大戦闘参加人数を変更するプラグインコマンドを追加。
|
|
* ver1.08:170105
|
|
* パーティが最大人数-1の時にアクター加入時の動作が正常でなかったバグを修正。
|
|
* ver1.07:
|
|
* Use Menu Formation Sceneをfalseにするとエラーが発生するバグを修正。
|
|
* ver1.06:
|
|
* パラメータ表示部の幅を設定する項目を追加。
|
|
* 全体の文字サイズを設定する項目を追加。
|
|
* ウィンドウ外の領域をクリックすることで、キャンセルとして働くように機能を追加。
|
|
* このプラグインより下に入れたプラグインで右クリックが正常に動作しないことのあるバグを修正。
|
|
* サイドビューで戦闘中に人数の増減を行った場合、正常に表示されないバグを修正。
|
|
* ver1.05:
|
|
* Window_FormationのcheckBltがloadFaceしていたバグを修正。
|
|
* 待機メンバーで空白を選択した後、戦闘メンバーの最後のアクターを選択できないバグを修正。
|
|
* ver1.04:
|
|
* Window_FormationNameがWindow_Selectableのinitializeを呼んでいたバグを修正。
|
|
* ver1.03:
|
|
* 戦闘中、並び替えがアクティブでない時もクリックが可能だったバグを修正。
|
|
* ver1.02:
|
|
* Stand Members SizeとMax Battle Members Sizeが正常に動作していなかったバグを修正。
|
|
* 空欄を選択して空欄で決定するとエラーが発生するバグを修正。
|
|
* ver1.01:
|
|
* addActorが正常に動作していなかったバグを修正。
|
|
* ver1.00:
|
|
* 公開
|
|
*/
|
|
|
|
|
|
|
|
function Scene_Formation() {
|
|
this.initialize.apply(this, arguments);
|
|
};
|
|
|
|
(function () {
|
|
|
|
'use strict';
|
|
|
|
var parameters = PluginManager.parameters('SceneFormation');
|
|
var standMembersSize = Number(parameters['Stand Members Size'] || 11);
|
|
var maxBattleMembersSize = Number(parameters['Max Battle Members Size'] || 4);
|
|
var useMenuFormationScene = String(parameters['Use Menu Formation Scene'] || true) == 'true';
|
|
var formationSceneBattleName = String(parameters['Formation Scene Battle Name'] || '戦闘メンバー');
|
|
var formationSceneStandName = String(parameters['Formation Scene Stand Name'] || '待機メンバー');
|
|
var useBattleFormationSwitchId = String(parameters['Use Battle Formation Switch ID'] || 11);
|
|
var battleFormationText = String(parameters['Battle Command Formation'] || 'Formation');
|
|
var statusWindowFontSize = Number(parameters['Status Window Font Size'] || 24);
|
|
var statusBlockWidth = Number(parameters['Status Block Width'] || 372);
|
|
|
|
var _Form_GInterpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
|
|
Game_Interpreter.prototype.pluginCommand = function (command, args) {
|
|
if (command === '並び替えシーン' || command === 'SceneFormation') {
|
|
switch (args[0]) {
|
|
case '呼び出し':
|
|
case 'call':
|
|
this.callSceneFormation();
|
|
break;
|
|
case '固定':
|
|
case 'fixed':
|
|
$gameActors.actor(Number(args[1]))._fixed = true;
|
|
break;
|
|
case '固定解除':
|
|
case 'unpin':
|
|
$gameActors.actor(Number(args[1]))._fixed = false;
|
|
break;
|
|
case '全固定':
|
|
case 'all_fixed':
|
|
$gameParty.allMembers.forEach(function (actor) { actor._fixed = true });
|
|
break;
|
|
case '全固定解除':
|
|
case 'all_unpin':
|
|
$gameParty.allMembers.forEach(function (actor) { actor._fixed = false });
|
|
break;
|
|
}
|
|
} else if (command === '最大戦闘参加人数変更' || command === 'ChangeMaxBattleMembersSize') {
|
|
if (!$gameParty.inBattle()) $gameParty.setMaxBattleMembersSize(Number(args[0]));
|
|
} else {
|
|
_Form_GInterpreter_pluginCommand.call(this, command, args);
|
|
}
|
|
};
|
|
|
|
Game_Interpreter.prototype.callSceneFormation = function () {
|
|
SceneManager.push(Scene_Formation);
|
|
};
|
|
|
|
Array.prototype.minusArray = function (array) {
|
|
var result = [];
|
|
for (var i = 0; i < this.length; i++) {
|
|
var flag = true;
|
|
for (var j = 0; j < array.length; j++) {
|
|
if (this[i] === array[j]) {
|
|
flag = false;
|
|
}
|
|
}
|
|
if (flag) {
|
|
result.push(this[i]);
|
|
}
|
|
}
|
|
return result.compact();
|
|
};
|
|
|
|
Array.prototype.compact = function () {
|
|
var result = [];
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (this[i] !== null && this[i] !== undefined) {
|
|
result.push(this[i]);
|
|
}
|
|
}
|
|
return result;
|
|
};
|
|
|
|
function Window_Formation() {
|
|
this.initialize.apply(this, arguments);
|
|
};
|
|
|
|
Window_Formation.prototype = Object.create(Window_Selectable.prototype);
|
|
Window_Formation.prototype.constructor = Window_Formation;
|
|
|
|
Window_Formation.prototype.initialize = function (type, x, y) {
|
|
this._type = type;
|
|
this.refreshMembers();
|
|
var h = 60 * this.maxPageRows() + 32;
|
|
var w = this._type == 'battle' ? 60 * $gameParty.fullMemberSize() + 24 : this.sw();
|
|
Window_Selectable.prototype.initialize.call(this, x, y, w, h);
|
|
this._lockIndex = null;
|
|
this.refresh();
|
|
};
|
|
|
|
Window_Formation.prototype.sw = function () {
|
|
var w = Graphics.boxWidth;
|
|
var w1 = standMembersSize * 60 + this.standardPadding() * 2;
|
|
var w2 = w - 196;
|
|
return Math.min(w1, w2);
|
|
};
|
|
|
|
Window_Formation.prototype.standardPadding = function () {
|
|
return 12;
|
|
};
|
|
|
|
Window_Formation.prototype.maxRows = function () {
|
|
if (this._type === 'battle') {
|
|
return 1
|
|
};
|
|
return Math.ceil(this.maxItems() / 10);
|
|
};
|
|
|
|
Window_Formation.prototype.spacing = function () {
|
|
return 0;
|
|
};
|
|
|
|
Window_Formation.prototype.contentsWidth = function () {
|
|
return this.maxCols() * this.itemWidth();
|
|
};
|
|
|
|
Window_Formation.prototype.contentsHeight = function () {
|
|
return Math.ceil((this.maxItems() / this.colItemNum())) * this.itemHeight();
|
|
};
|
|
|
|
Window_Formation.prototype.isTopIndex = function () {
|
|
return this._index < this.maxCols();
|
|
};
|
|
|
|
Window_Formation.prototype.colItemNum = function () {
|
|
return Math.floor((this.width - this.standardPadding()) / this.itemWidth());
|
|
};
|
|
|
|
Window_Formation.prototype.itemRect = function (index) {
|
|
var rect = Window_Selectable.prototype.itemRect.call(this, index);
|
|
rect.width = 48;
|
|
rect.height = 48;
|
|
rect.x = (index % this.maxCols()) * (this.itemWidth() + this.spacing());
|
|
rect.y = 9 + (Math.floor(index / this.maxCols()) - this.topRow()) * this.itemHeight();
|
|
return rect;
|
|
};
|
|
|
|
Window_Formation.prototype.itemWidth = function () {
|
|
return 60;
|
|
};
|
|
|
|
Window_Formation.prototype.itemHeight = function () {
|
|
return 66;
|
|
};
|
|
|
|
Window_Formation.prototype.maxCols = function () {
|
|
var n = (this.width - (this.standardPadding() * 2)) / this.itemWidth();
|
|
return Math.ceil(n);
|
|
};
|
|
|
|
Window_Formation.prototype.maxItems = function () {
|
|
if (this._type === 'battle') {
|
|
return Math.min(this._members.length + 1, $gameParty.fullMemberSize());
|
|
} else {
|
|
return this._members.length + 1;
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.maxPageRows = function () {
|
|
return this._type === 'battle' ? 1 : Math.min(Math.ceil(standMembersSize / 10), 2);
|
|
};
|
|
|
|
Window_Formation.prototype.maxPageItems = function () {
|
|
return this.maxPageRows() * this.maxCols();
|
|
};
|
|
|
|
Window_Formation.prototype.select = function (index) {
|
|
var result = Window_Selectable.prototype.select.call(this, index);
|
|
if (this._statusWindow && this.active) {
|
|
this._statusWindow._actor = this._members[index];
|
|
this._statusWindow.refresh();
|
|
}
|
|
return result;
|
|
};
|
|
|
|
Window_Formation.prototype.processHandling = function () {
|
|
if (this.isOpenAndActive()) {
|
|
if (this._type === 'battle' && Input.isTriggered('shift')) {
|
|
this.processRelease();
|
|
} else if (this._type === 'stand' && Input.isTriggered('shift')) {
|
|
this.processAdd();
|
|
} else if (this._type === 'battle' && Input.isTriggered('down')) {
|
|
this.processDown();
|
|
} else {
|
|
Window_Selectable.prototype.processHandling.call(this);
|
|
}
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.cursorUp = function (wrap) {
|
|
if (this._type === 'stand' && this.isTopIndex()) {
|
|
return this.processUp();
|
|
}
|
|
Window_Selectable.prototype.cursorUp.call(this, wrap);
|
|
};
|
|
|
|
Window_Formation.prototype.isAliveOk = function () {
|
|
return $gameParty.aliveBattleMembers().length > 1;
|
|
};
|
|
|
|
Window_Formation.prototype.isCurrentItemEnabled = function () {
|
|
var sIndex = SceneManager._scene._scopeIndex;
|
|
if (sIndex < 0 && !this.actor()) { return false }
|
|
var fixed = (this.actor() && !this.actor().isFixed());
|
|
var alive = (this.actor() && this.actor().isAlive());
|
|
var flag1 = !this.actor() ? true : fixed;
|
|
var flag2 = (this.isAliveOk() || !this.actor() || !sIndex || alive);
|
|
var flag3 = (this.isAliveOk() || sIndex || sIndex === -1 || alive || this._type == 'battle');
|
|
return flag1 && flag2 && flag3;
|
|
};
|
|
|
|
Window_Formation.prototype.processRelease = function () {
|
|
if (this._members.length > 1 && this.actor() && !this.actor().isFixed() && (this.isAliveOk() || !this.actor().isAlive())) {
|
|
SoundManager.playOk();
|
|
this.updateInputData();
|
|
this.callReleaseHandler();
|
|
} else {
|
|
SoundManager.playBuzzer();
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.processAdd = function () {
|
|
var r = ($gameParty.allMembers().length - this._members.length) < $gameParty.fullMemberSize();
|
|
if (r && this.actor() && !this.actor().isFixed()) {
|
|
SoundManager.playOk();
|
|
this.updateInputData();
|
|
this.callAddHandler();
|
|
} else {
|
|
SoundManager.playBuzzer();
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.processDown = function () {
|
|
SoundManager.playCursor();
|
|
this.updateInputData();
|
|
this.callHandler('down');
|
|
};
|
|
|
|
Window_Formation.prototype.processUp = function () {
|
|
this.updateInputData();
|
|
this.callHandler('up');
|
|
};
|
|
|
|
Window_Formation.prototype.callReleaseHandler = function () {
|
|
this.updateInputData();
|
|
this.callHandler('release');
|
|
};
|
|
|
|
Window_Formation.prototype.callAddHandler = function () {
|
|
this.updateInputData();
|
|
this.callHandler('add');
|
|
};
|
|
|
|
Window_Formation.prototype.refreshMembers = function () {
|
|
if (this._type === 'battle') {
|
|
this._members = this.battleMembers();
|
|
} else if (this._type === 'stand') {
|
|
this._members = $gameParty.allMembers().minusArray(this.battleMembers()).compact();
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.battleMembers = function () {
|
|
var max = $gameParty.maxBattleMembers();
|
|
var members = [];
|
|
var allMembers = $gameParty.allMembers();
|
|
allMembers.forEach(function (member) {
|
|
if (member && (member.isAppeared() || member.isEscaped())) {
|
|
members.push(member);
|
|
}
|
|
});
|
|
return members.slice(0, max);
|
|
};
|
|
|
|
Window_Formation.prototype.refresh = function () {
|
|
this.refreshMembers();
|
|
this.createContents();
|
|
this.checkBlt();
|
|
this._setRefresh = true;
|
|
};
|
|
|
|
Window_Formation.prototype.refreshContents = function () {
|
|
Window_Selectable.prototype.refresh.call(this);
|
|
};
|
|
|
|
Window_Formation.prototype.drawItem = function (i) {
|
|
var x = this.itemWidth() * Math.floor((i % this.maxCols()));
|
|
var y = 12 + this.itemHeight() * (Math.floor((i / this.maxCols())) - this.topRow());
|
|
if (i == this._lockIndex) {
|
|
this.contents.fillRect(x, y - 3, 48, 48, 'rgba(0,0,0,0.5)')
|
|
}
|
|
if (this._members[i]) {
|
|
if (this._members[i].isFixed()) {
|
|
this.contents.fillRect(x, y - 3, 48, 48, 'rgba(128,0,0,0.5)')
|
|
}
|
|
this.drawActorCharacter(this._members[i], x + 24, y + 44);
|
|
} else {
|
|
this.drawText('-', x, y, 48, 'center');
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.checkBlt = function () {
|
|
var bitmap2 = new Bitmap(1, 1);
|
|
$gameParty.allMembers().forEach(function (actor) {
|
|
var bitmap = ImageManager.loadCharacter(actor.characterName());
|
|
bitmap2.blt(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0);
|
|
bitmap = null;
|
|
});
|
|
bitmap2 = null;
|
|
};
|
|
|
|
Window_Formation.prototype.update = function () {
|
|
Window_Selectable.prototype.update.call(this);
|
|
if (this._setRefresh) {
|
|
if (ImageManager.isReady()) {
|
|
this.refreshContents();
|
|
this._setRefresh = false;
|
|
} else {
|
|
this.checkBlt();
|
|
}
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.actor = function () {
|
|
return this._members[this._index];
|
|
};
|
|
|
|
Window_Formation.prototype.lockIndex = function () {
|
|
this._lockIndex = this._index;
|
|
this.refresh();
|
|
};
|
|
|
|
Window_Formation.prototype.releaseIndex = function () {
|
|
this._lockIndex = null;
|
|
this.refresh();
|
|
};
|
|
|
|
Window_Formation.prototype.onTouch = function (triggered) {
|
|
if ($gameParty.inBattle() && !BattleManager._formation) { return false }
|
|
var lastIndex = this.index();
|
|
var x = this.canvasToLocalX(TouchInput.x);
|
|
var y = this.canvasToLocalY(TouchInput.y);
|
|
var hitIndex = this.hitTest(x, y);
|
|
if (hitIndex >= 0) {
|
|
if (this._type === 'stand' && !this.active) {
|
|
this.activate();
|
|
this.callHandler('battleOff');
|
|
} else if (this._type === 'battle' && !this.active) {
|
|
this.activate();
|
|
this.callHandler('standOff');
|
|
}
|
|
this.select(hitIndex);
|
|
if (triggered && this.isTouchOkEnabled()) {
|
|
this.processOk();
|
|
}
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.processTouch = function () {
|
|
if (!this.isOpen()) { return }
|
|
if (TouchInput.isTriggered() && this.isTouchedInsideFrame()) {
|
|
this._touching = true;
|
|
this.onTouch(true);
|
|
} else if (TouchInput.isCancelled()) {
|
|
if (this.isCancelEnabled()) {
|
|
this.processCancel();
|
|
}
|
|
}
|
|
if (this._touching) {
|
|
if (TouchInput.isPressed()) {
|
|
this.onTouch(false);
|
|
} else {
|
|
this._touching = false;
|
|
}
|
|
}
|
|
};
|
|
|
|
Window_Formation.prototype.hitTest = function (x, y) {
|
|
if (this.isContentsArea(x, y)) {
|
|
var cx = x - this.padding;
|
|
var cy = y - this.padding;
|
|
var topIndex = this.topIndex();
|
|
for (var i = 0; i < this.maxPageItems(); i++) {
|
|
var index = topIndex + i;
|
|
if (index < this.maxItems()) {
|
|
var rect = this.itemRect(index);
|
|
var right = rect.x + rect.width;
|
|
var bottom = rect.y + rect.height;
|
|
if (cx >= rect.x && cy >= rect.y && cx < right && cy < bottom) {
|
|
return index;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
};
|
|
|
|
function Window_FormationStatus() {
|
|
this.initialize.apply(this, arguments);
|
|
};
|
|
|
|
Window_FormationStatus.prototype = Object.create(Window_Base.prototype);
|
|
Window_FormationStatus.prototype.constructor = Window_FormationStatus;
|
|
|
|
Window_FormationStatus.prototype.initialize = function () {
|
|
Window_Base.prototype.initialize.call(this, 0, Graphics.boxHeight - 240, Graphics.boxWidth, 240);
|
|
this._actor = null
|
|
};
|
|
|
|
Window_FormationStatus.prototype.standardPadding = function () {
|
|
return 8;
|
|
};
|
|
|
|
Window_FormationStatus.prototype.refresh = function () {
|
|
this._setRefresh = true;
|
|
this.checkBlt();
|
|
};
|
|
|
|
Window_FormationStatus.prototype.update = function () {
|
|
Window_Base.prototype.update.call(this);
|
|
if (this._setRefresh) {
|
|
if (ImageManager.isReady()) {
|
|
this.refreshContents();
|
|
this._setRefresh = false;
|
|
} else {
|
|
this.checkBlt();
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
Window_FormationStatus.prototype.checkBlt = function () {
|
|
var bitmap = null;
|
|
var bitmap2 = new Bitmap(1, 1);
|
|
$gameParty.allMembers().forEach(function (actor) {
|
|
bitmap = ImageManager.loadFace(actor.faceName());
|
|
bitmap2.blt(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0);
|
|
});
|
|
bitmap = null;
|
|
bitmap2 = null;
|
|
};
|
|
|
|
Window_FormationStatus.prototype.refreshContents = function () {
|
|
this.contents.clear();
|
|
if (this._actor) {
|
|
this.contents.fontSize = statusWindowFontSize;
|
|
this.drawActorFace(this._actor, 12, 32);
|
|
this.drawActorName(this._actor, 6, 0);
|
|
this.drawActorLevel(this._actor, 144, 0);
|
|
this.drawActorClass(this._actor, 280, 0);
|
|
this.drawActorNickname(this._actor, 420, 0);
|
|
this.drawActorIcons(this._actor, 6, 32);
|
|
this.drawActorHp(this._actor, 6, 144, 160);
|
|
this.drawActorMp(this._actor, 6, 180, 160);
|
|
this.drawParameters(172, 40);
|
|
this.drawExpInfo(172, 144);
|
|
this.drawEquipments(180 + statusBlockWidth, 32);
|
|
this.resetFontSettings();
|
|
}
|
|
};
|
|
|
|
Window_FormationStatus.prototype.drawParameters = function (x, y) {
|
|
var lineHeight = this.lineHeight();
|
|
var blockWidth = statusBlockWidth / 2 - 6;
|
|
var paramWidth = blockWidth / 3;
|
|
for (var i = 0; i < 6; i++) {
|
|
var paramId = i + 2;
|
|
var y2 = y + 32 * (i % 3);
|
|
var x2 = x + Math.floor(i / 3) * blockWidth;
|
|
this.changeTextColor(this.systemColor());
|
|
this.drawText(TextManager.param(paramId), x2 + (12 * Math.floor(i / 3)), y2, paramWidth * 2);
|
|
this.resetTextColor();
|
|
this.drawText(this._actor.param(paramId), x2 + paramWidth * 2 + (12 * Math.floor(i / 3)), y2, paramWidth, 'right');
|
|
}
|
|
};
|
|
|
|
Window_FormationStatus.prototype.drawExpInfo = function (x, y) {
|
|
var lineHeight = this.lineHeight();
|
|
var expTotal = TextManager.expTotal.format(TextManager.exp);
|
|
var expNext = TextManager.expNext.format(TextManager.level);
|
|
var value1 = this._actor.currentExp();
|
|
var value2 = this._actor.nextRequiredExp();
|
|
if (this._actor.isMaxLevel()) {
|
|
value1 = '-------';
|
|
value2 = '-------';
|
|
}
|
|
this.changeTextColor(this.systemColor());
|
|
this.drawText(expTotal, x, y + lineHeight * 0, statusBlockWidth);
|
|
this.drawText(expNext, x, y + lineHeight * 1, statusBlockWidth);
|
|
this.resetTextColor();
|
|
this.drawText(value1, x, y + lineHeight * 0, statusBlockWidth, 'right');
|
|
this.drawText(value2, x, y + lineHeight * 1, statusBlockWidth, 'right');
|
|
};
|
|
|
|
Window_FormationStatus.prototype.drawEquipments = function (x, y) {
|
|
var equips = this._actor.equips();
|
|
var count = Math.min(equips.length, this.maxEquipmentLines());
|
|
var width = this.width - this.standardPadding() * 2 - x - 4;
|
|
for (var i = 0; i < count; i++) {
|
|
this.drawItemName(equips[i], x, y + this.lineHeight() * i, width);
|
|
}
|
|
};
|
|
|
|
Window_FormationStatus.prototype.maxEquipmentLines = function () {
|
|
return 6;
|
|
};
|
|
|
|
function Window_FormationName() {
|
|
this.initialize.apply(this, arguments);
|
|
};
|
|
|
|
Window_FormationName.prototype = Object.create(Window_Base.prototype);
|
|
Window_FormationName.prototype.constructor = Window_FormationName;
|
|
|
|
Window_FormationName.prototype.initialize = function (x, y, text) {
|
|
Window_Base.prototype.initialize.call(this, x, y, 216, 56);
|
|
this.drawText(text, 0, 0, 192, 1);
|
|
};
|
|
|
|
Window_FormationName.prototype.standardPadding = function () {
|
|
return 9;
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Scene_Formation.prototype = Object.create(Scene_MenuBase.prototype);
|
|
Scene_Formation.prototype.constructor = Scene_Formation;
|
|
|
|
Scene_Formation.prototype.create = function () {
|
|
Scene_MenuBase.prototype.create.call(this);
|
|
this.createAllWindows();
|
|
this._scopeIndex = null;
|
|
};
|
|
|
|
Scene_Formation.prototype.createAllWindows = function () {
|
|
this.createFormationStatusWindow();
|
|
this.createBattlerWindow();
|
|
this.createStanderWindow();
|
|
this.createNameWindow();
|
|
};
|
|
|
|
Scene_Formation.prototype.createBattlerWindow = function () {
|
|
this._battlerWindow = new Window_Formation('battle', 96, 72);
|
|
this._battlerWindow.setHandler('ok', this.onMemberOk.bind(this));
|
|
this._battlerWindow.setHandler('cancel', this.onMemberCancel.bind(this));
|
|
this._battlerWindow.setHandler('release', this.onRelease.bind(this));
|
|
this._battlerWindow.setHandler('down', this.onDown.bind(this));
|
|
this._battlerWindow.setHandler('standOff', this.onStandOff.bind(this));
|
|
this._battlerWindow._statusWindow = this._fStatusWindow;
|
|
this._battlerWindow.activate();
|
|
this._battlerWindow.select(0);
|
|
this._fStatusWindow._actor = this._battlerWindow.actor();
|
|
this._fStatusWindow.refresh();
|
|
this.addWindow(this._battlerWindow);
|
|
};
|
|
|
|
Scene_Formation.prototype.createStanderWindow = function () {
|
|
this._standerWindow = new Window_Formation('stand', 96, 264);
|
|
this._standerWindow.setHandler('ok', this.onStandOk.bind(this));
|
|
this._standerWindow.setHandler('cancel', this.onStandCancel.bind(this));
|
|
this._standerWindow.setHandler('add', this.onAdd.bind(this));
|
|
this._standerWindow.setHandler('up', this.onUp.bind(this));
|
|
this._standerWindow.setHandler('battleOff', this.onBattleOff.bind(this));
|
|
this._standerWindow._statusWindow = this._fStatusWindow;
|
|
this._standerWindow.deactivate();
|
|
this._standerWindow.deselect
|
|
var n = this._standerWindow.height + this._standerWindow.y
|
|
if (n > this._fStatusWindow.y) {
|
|
this._standerWindow.y = this._fStatusWindow.y - this._standerWindow.height;
|
|
}
|
|
this.addWindow(this._standerWindow);
|
|
|
|
};
|
|
|
|
Scene_Formation.prototype.createFormationStatusWindow = function () {
|
|
this._fStatusWindow = new Window_FormationStatus();
|
|
this.addWindow(this._fStatusWindow);
|
|
};
|
|
|
|
Scene_Formation.prototype.createNameWindow = function () {
|
|
this._nameWindow1 = new Window_FormationName(96, this._battlerWindow.y - 48, formationSceneBattleName);
|
|
this.addWindow(this._nameWindow1);
|
|
this._nameWindow2 = new Window_FormationName(96, this._standerWindow.y - 48, formationSceneStandName);
|
|
this.addWindow(this._nameWindow2);
|
|
};
|
|
|
|
Scene_Formation.prototype.clearWindows = function () {
|
|
this._scopeIndex = null;
|
|
this._battlerWindow.refreshMembers();
|
|
this._standerWindow.refreshMembers();
|
|
this._battlerWindow.releaseIndex();
|
|
this._standerWindow.releaseIndex();
|
|
};
|
|
|
|
Scene_Formation.prototype.returnScene = function () {
|
|
this.popScene(this);
|
|
};
|
|
|
|
Scene_Formation.prototype.onMemberOk = function () {
|
|
if (this._scopeIndex !== null && this._scopeIndex !== undefined) {
|
|
var a = null;
|
|
if (this._scopeIndex >= 0) {
|
|
a = $gameParty._actors[this._scopeIndex];
|
|
if (this._battlerWindow.actor()) {
|
|
var index = $gameParty.allMembers().indexOf(this._battlerWindow.actor());
|
|
$gameParty._actors[this._scopeIndex] = $gameParty._actors[index];
|
|
$gameParty._actors[index] = a;
|
|
a = null;
|
|
} else {
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[0].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
if (this._scopeIndex >= this._battlerWindow._members.length) {
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length + 1;
|
|
} else {
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length
|
|
}
|
|
a = null;
|
|
}
|
|
} else if (this._scopeIndex === -2) {
|
|
if (this._battlerWindow.actor()) {
|
|
if (this._battlerWindow._members.length === 1) {
|
|
return
|
|
}
|
|
a = this._battlerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[1].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length - 1;
|
|
a = null;
|
|
}
|
|
} else if (this._scopeIndex === -1) {
|
|
a = this._battlerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[0].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
}
|
|
this.clearWindows();
|
|
this._battlerWindow.updateInputData();
|
|
this._battlerWindow.activate();
|
|
this._battlerWindow.select(this._battlerWindow._index);
|
|
$gamePlayer.refresh();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length;
|
|
} else {
|
|
this._scopeIndex = $gameParty.allMembers().indexOf(this._battlerWindow.actor());
|
|
if (this._scopeIndex === null || this._scopeIndex === undefined) {
|
|
this._scopeIndex = -1
|
|
}
|
|
this._battlerWindow.lockIndex();
|
|
this._battlerWindow.updateInputData();
|
|
this._battlerWindow.activate();
|
|
}
|
|
};
|
|
|
|
Scene_Formation.prototype.onStandOk = function () {
|
|
if (this._scopeIndex !== null && this._scopeIndex !== undefined) {
|
|
var a = null;
|
|
if (!(this._battlerWindow._members.length === 1 && !this._standerWindow.actor())) {
|
|
if (this._scopeIndex >= 0) {
|
|
a = $gameParty._actors[this._scopeIndex];
|
|
if (this._standerWindow.actor()) {
|
|
var index = $gameParty.allMembers().indexOf(this._standerWindow.actor());
|
|
$gameParty._actors[this._scopeIndex] = $gameParty._actors[index];
|
|
$gameParty._actors[index] = a;
|
|
a = null;
|
|
} else {
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[1].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
if (this._scopeIndex < this._battlerWindow._members.length) {
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length - 1;
|
|
} else {
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length;
|
|
}
|
|
a = null;
|
|
}
|
|
} else if (this._scopeIndex === -1) {
|
|
if (this._standerWindow.actor()) {
|
|
a = this._standerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[0].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length + 1;
|
|
a = null;
|
|
}
|
|
} else if (this._scopeIndex === -2) {
|
|
a = this._standerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[1].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
} else {
|
|
|
|
}
|
|
}
|
|
this.clearWindows();
|
|
this._standerWindow.updateInputData();
|
|
this._standerWindow.activate();
|
|
this._standerWindow.select(this._standerWindow._index);
|
|
$gamePlayer.refresh();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length;
|
|
} else {
|
|
this._scopeIndex = $gameParty.allMembers().indexOf(this._standerWindow.actor());
|
|
if (this._scopeIndex === null || this._scopeIndex === undefined || this._scopeIndex === -1) {
|
|
this._scopeIndex = -2
|
|
}
|
|
this._standerWindow.lockIndex();
|
|
this._standerWindow.updateInputData();
|
|
this._standerWindow.activate();
|
|
}
|
|
};
|
|
|
|
Scene_Formation.prototype.getFrontAndStand = function (a, length) {
|
|
var ary1 = [];
|
|
var ary2 = [];
|
|
|
|
for (var i = 0; i < $gameParty._actors.length; i++) {
|
|
if ($gameParty._actors[i] !== a) {
|
|
if (i < length) {
|
|
ary1.push($gameParty._actors[i]);
|
|
} else {
|
|
ary2.push($gameParty._actors[i]);
|
|
}
|
|
}
|
|
}
|
|
return [ary1, ary2];
|
|
};
|
|
|
|
Scene_Formation.prototype.scopeIndex = function () {
|
|
return this._scopeIndex;
|
|
};
|
|
|
|
Scene_Formation.prototype.onMemberCancel = function () {
|
|
if (this._scopeIndex === null) {
|
|
this.returnScene();
|
|
} else {
|
|
this._scopeIndex = null;
|
|
this._battlerWindow.releaseIndex();
|
|
this._standerWindow.releaseIndex();
|
|
this._battlerWindow.updateInputData();
|
|
this._battlerWindow.activate();
|
|
}
|
|
};
|
|
|
|
Scene_Formation.prototype.onStandCancel = function () {
|
|
if (this._scopeIndex === null) {
|
|
this.returnScene();
|
|
} else {
|
|
this._scopeIndex = null;
|
|
this._battlerWindow.releaseIndex();
|
|
this._standerWindow.releaseIndex();
|
|
this._standerWindow.updateInputData();
|
|
this._standerWindow.activate();
|
|
}
|
|
};
|
|
|
|
Scene_Formation.prototype.onRelease = function () {
|
|
var actor = this._battlerWindow.actor();
|
|
var ary = this.getFrontAndStand(actor._actorId, this._battlerWindow._members.length - 1);
|
|
ary[1].push(actor._actorId);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length - 1;
|
|
this.clearWindows();
|
|
this._battlerWindow.activate();
|
|
this._battlerWindow.select(this._battlerWindow._index);
|
|
$gamePlayer.refresh();
|
|
};
|
|
|
|
Scene_Formation.prototype.onAdd = function () {
|
|
var a = this._standerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[0].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length + 1;
|
|
this.clearWindows();
|
|
this._standerWindow.activate();
|
|
this._standerWindow.select(this._standerWindow._index);
|
|
$gamePlayer.refresh();
|
|
};
|
|
|
|
Scene_Formation.prototype.onDown = function () {
|
|
var index = Math.min(this._battlerWindow._index, this._standerWindow.maxItems() - 1);
|
|
this._battlerWindow.deactivate();
|
|
this._battlerWindow.deselect();
|
|
this._standerWindow.activate();
|
|
this._standerWindow.select(index);
|
|
};
|
|
|
|
Scene_Formation.prototype.onUp = function () {
|
|
var index = Math.min(this._standerWindow._index, this._battlerWindow.maxItems() - 1);
|
|
this._standerWindow.deactivate();
|
|
this._standerWindow.deselect();
|
|
this._battlerWindow.activate();
|
|
this._battlerWindow.select(index);
|
|
};
|
|
|
|
Scene_Formation.prototype.onStandOff = function () {
|
|
this._standerWindow.deactivate();
|
|
this._standerWindow.deselect();
|
|
};
|
|
|
|
Scene_Formation.prototype.onBattleOff = function () {
|
|
this._battlerWindow.deactivate();
|
|
this._battlerWindow.deselect();
|
|
};
|
|
|
|
|
|
Scene_Formation.prototype.onTouchCancelFormation = function () {
|
|
if (TouchInput.isTriggered()) {
|
|
var x = TouchInput.x;
|
|
var y = TouchInput.y;
|
|
var ax = this._battlerWindow.x;
|
|
var xw = ax + this._battlerWindow.width;
|
|
var ay = this._battlerWindow.y;
|
|
var yh = ay + this._battlerWindow.height;
|
|
var flag = x >= ax && x <= xw && y >= ay && y <= yh;
|
|
ax = this._standerWindow.x;
|
|
xw = ax + this._standerWindow.width;
|
|
ay = this._standerWindow.y;
|
|
yh = ay + this._standerWindow.height;
|
|
return !(flag || (x >= ax && x <= xw && y >= ay && y <= yh));
|
|
}
|
|
return false;
|
|
};
|
|
|
|
Scene_Formation.prototype.update = function () {
|
|
Scene_MenuBase.prototype.update.call(this);
|
|
if (this.onTouchCancelFormation()) {
|
|
if (this._battlerWindow.active) {
|
|
SoundManager.playCancel();
|
|
this.onMemberCancel();
|
|
} else if (this._standerWindow.active) {
|
|
SoundManager.playCancel();
|
|
this.onStandCancel();
|
|
}
|
|
}
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
var _Form_SBattle_createAllWindows = Scene_Battle.prototype.createAllWindows;
|
|
Scene_Battle.prototype.createAllWindows = function () {
|
|
_Form_SBattle_createAllWindows.call(this);
|
|
this.createFormationStatusWindow();
|
|
this.createBattlerWindow();
|
|
this.createStanderWindow();
|
|
this.createNameWindow();
|
|
this._scopeIndex = null;
|
|
};
|
|
|
|
Scene_Battle.prototype.createBattlerWindow = function () {
|
|
this._battlerWindow = new Window_Formation('battle', 96, 72);
|
|
this._battlerWindow.setHandler('ok', this.onMemberOk.bind(this));
|
|
this._battlerWindow.setHandler('cancel', this.onMemberCancel.bind(this));
|
|
this._battlerWindow.setHandler('release', this.onRelease.bind(this));
|
|
this._battlerWindow.setHandler('down', this.onDown.bind(this));
|
|
this._battlerWindow.setHandler('standOff', this.onStandOff.bind(this));
|
|
this._battlerWindow._statusWindow = this._fStatusWindow;
|
|
this._battlerWindow.deactivate();
|
|
this._battlerWindow.deselect();
|
|
this._fStatusWindow._actor = this._battlerWindow.actor();
|
|
this._fStatusWindow.refresh();
|
|
this.addWindow(this._battlerWindow);
|
|
this._battlerWindow.openness = 0;
|
|
};
|
|
|
|
Scene_Battle.prototype.createStanderWindow = function () {
|
|
this._standerWindow = new Window_Formation('stand', 96, 264);
|
|
this._standerWindow.setHandler('ok', this.onStandOk.bind(this));
|
|
this._standerWindow.setHandler('cancel', this.onStandCancel.bind(this));
|
|
this._standerWindow.setHandler('add', this.onAdd.bind(this));
|
|
this._standerWindow.setHandler('up', this.onUp.bind(this));
|
|
this._standerWindow.setHandler('battleOff', this.onBattleOff.bind(this));
|
|
this._standerWindow._statusWindow = this._fStatusWindow;
|
|
this._standerWindow.deactivate();
|
|
this._standerWindow.deselect
|
|
var n = this._standerWindow.height + this._standerWindow.y
|
|
if (n > this._fStatusWindow.y) {
|
|
this._standerWindow.y = this._fStatusWindow.y - this._standerWindow.height;
|
|
}
|
|
this.addWindow(this._standerWindow);
|
|
this._standerWindow.openness = 0;
|
|
};
|
|
|
|
Scene_Battle.prototype.createFormationStatusWindow = function () {
|
|
this._fStatusWindow = new Window_FormationStatus();
|
|
this.addWindow(this._fStatusWindow);
|
|
this._fStatusWindow.openness = 0;
|
|
};
|
|
|
|
Scene_Battle.prototype.createNameWindow = function () {
|
|
this._nameWindow1 = new Window_FormationName(96, this._battlerWindow.y - 48, formationSceneBattleName);
|
|
this.addWindow(this._nameWindow1);
|
|
this._nameWindow2 = new Window_FormationName(96, this._standerWindow.y - 48, formationSceneStandName);
|
|
this.addWindow(this._nameWindow2);
|
|
this._nameWindow1.openness = 0;
|
|
this._nameWindow2.openness = 0;
|
|
};
|
|
|
|
Scene_Battle.prototype.clearWindows = function () {
|
|
this._scopeIndex = null;
|
|
this._battlerWindow.refreshMembers();
|
|
this._standerWindow.refreshMembers();
|
|
this._battlerWindow.releaseIndex();
|
|
this._standerWindow.releaseIndex();
|
|
};
|
|
|
|
Scene_Battle.prototype.returnScene = function () {
|
|
this._battlerWindow.deselect();
|
|
this._battlerWindow.deactivate();
|
|
this._standerWindow.deselect();
|
|
this._standerWindow.deactivate();
|
|
this._battlerWindow.close();
|
|
this._standerWindow.close();
|
|
this._fStatusWindow.close();
|
|
this._nameWindow1.close();
|
|
this._nameWindow2.close();
|
|
this._partyCommandWindow.activate();
|
|
BattleManager._formation = false;
|
|
this._statusWindow.refresh();
|
|
};
|
|
|
|
Scene_Battle.prototype.onMemberOk = function () {
|
|
if (this._scopeIndex !== null && this._scopeIndex !== undefined) {
|
|
var a = null;
|
|
if (this._scopeIndex >= 0) {
|
|
a = $gameParty._actors[this._scopeIndex];
|
|
if (this._battlerWindow.actor()) {
|
|
var index = $gameParty.allMembers().indexOf(this._battlerWindow.actor());
|
|
$gameParty._actors[this._scopeIndex] = $gameParty._actors[index];
|
|
$gameParty._actors[index] = a;
|
|
a = null;
|
|
} else {
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[0].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
if (this._scopeIndex >= this._battlerWindow._members.length) {
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length + 1;
|
|
} else {
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length
|
|
}
|
|
a = null;
|
|
}
|
|
} else if (this._scopeIndex === -2) {
|
|
if (this._battlerWindow.actor()) {
|
|
if (this._battlerWindow._members.length === 1) {
|
|
return
|
|
}
|
|
a = this._battlerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[1].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length - 1;
|
|
a = null;
|
|
}
|
|
} else if (this._scopeIndex === -1) {
|
|
a = this._battlerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[0].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
}
|
|
this.clearWindows();
|
|
this._battlerWindow.updateInputData();
|
|
this._battlerWindow.activate();
|
|
this._battlerWindow.select(this._battlerWindow._index);
|
|
$gamePlayer.refresh();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length;
|
|
} else {
|
|
this._scopeIndex = $gameParty.allMembers().indexOf(this._battlerWindow.actor());
|
|
if (this._scopeIndex === null || this._scopeIndex === undefined) {
|
|
this._scopeIndex = -1
|
|
}
|
|
this._battlerWindow.lockIndex();
|
|
this._battlerWindow.updateInputData();
|
|
this._battlerWindow.activate();
|
|
}
|
|
};
|
|
|
|
Scene_Battle.prototype.onStandOk = function () {
|
|
if (this._scopeIndex !== null && this._scopeIndex !== undefined) {
|
|
var a = null;
|
|
if (!(this._battlerWindow._members.length === 1 && !this._standerWindow.actor())) {
|
|
if (this._scopeIndex >= 0) {
|
|
a = $gameParty._actors[this._scopeIndex];
|
|
if (this._standerWindow.actor()) {
|
|
var index = $gameParty.allMembers().indexOf(this._standerWindow.actor());
|
|
$gameParty._actors[this._scopeIndex] = $gameParty._actors[index];
|
|
$gameParty._actors[index] = a;
|
|
a = null;
|
|
} else {
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[1].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
if (this._scopeIndex < this._battlerWindow._members.length) {
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length - 1;
|
|
} else {
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length;
|
|
}
|
|
a = null;
|
|
}
|
|
} else if (this._scopeIndex === -1) {
|
|
if (this._standerWindow.actor()) {
|
|
a = this._standerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[0].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length + 1;
|
|
a = null;
|
|
}
|
|
} else if (this._scopeIndex === -2) {
|
|
a = this._standerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[1].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
} else {
|
|
|
|
}
|
|
}
|
|
this.clearWindows();
|
|
this._standerWindow.updateInputData();
|
|
this._standerWindow.activate();
|
|
this._standerWindow.select(this._standerWindow._index);
|
|
$gamePlayer.refresh();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length;
|
|
} else {
|
|
this._scopeIndex = $gameParty.allMembers().indexOf(this._standerWindow.actor());
|
|
if (this._scopeIndex === null || this._scopeIndex === undefined || this._scopeIndex === -1) {
|
|
this._scopeIndex = -2
|
|
}
|
|
this._standerWindow.lockIndex();
|
|
this._standerWindow.updateInputData();
|
|
this._standerWindow.activate();
|
|
}
|
|
};
|
|
|
|
Scene_Battle.prototype.getFrontAndStand = function (a, length) {
|
|
var ary1 = [];
|
|
var ary2 = [];
|
|
|
|
for (var i = 0; i < $gameParty._actors.length; i++) {
|
|
if ($gameParty._actors[i] !== a) {
|
|
if (i < length) {
|
|
ary1.push($gameParty._actors[i]);
|
|
} else {
|
|
ary2.push($gameParty._actors[i]);
|
|
}
|
|
}
|
|
}
|
|
return [ary1, ary2];
|
|
};
|
|
|
|
Scene_Battle.prototype.scopeIndex = function () {
|
|
return this._scopeIndex;
|
|
};
|
|
|
|
Scene_Battle.prototype.onMemberCancel = function () {
|
|
if (this._scopeIndex === null) {
|
|
this.returnScene();
|
|
} else {
|
|
this._scopeIndex = null;
|
|
this._battlerWindow.releaseIndex();
|
|
this._standerWindow.releaseIndex();
|
|
this._battlerWindow.updateInputData();
|
|
this._battlerWindow.activate();
|
|
}
|
|
};
|
|
|
|
Scene_Battle.prototype.onStandCancel = function () {
|
|
if (this._scopeIndex === null) {
|
|
this.returnScene();
|
|
} else {
|
|
this._scopeIndex = null;
|
|
this._battlerWindow.releaseIndex();
|
|
this._standerWindow.releaseIndex();
|
|
this._standerWindow.updateInputData();
|
|
this._standerWindow.activate();
|
|
}
|
|
};
|
|
|
|
Scene_Battle.prototype.onRelease = function () {
|
|
var actor = this._battlerWindow.actor();
|
|
var ary = this.getFrontAndStand(actor._actorId, this._battlerWindow._members.length - 1);
|
|
ary[1].push(actor._actorId);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length - 1;
|
|
this.clearWindows();
|
|
this._battlerWindow.activate();
|
|
this._battlerWindow.select(this._battlerWindow._index);
|
|
$gamePlayer.refresh();
|
|
};
|
|
|
|
Scene_Battle.prototype.onAdd = function () {
|
|
var a = this._standerWindow.actor()._actorId;
|
|
var ary = this.getFrontAndStand(a, this._battlerWindow._members.length);
|
|
ary[0].push(a);
|
|
ary[0] = ary[0].concat(ary[1]);
|
|
$gameParty._actors = ary[0].compact();
|
|
$gameParty._battleMemberSize = this._battlerWindow._members.length + 1;
|
|
this.clearWindows();
|
|
this._standerWindow.activate();
|
|
this._standerWindow.select(this._standerWindow._index);
|
|
$gamePlayer.refresh();
|
|
$gameMap.requestRefresh();
|
|
};
|
|
|
|
Scene_Battle.prototype.onDown = function () {
|
|
var index = Math.min(this._battlerWindow._index, this._standerWindow.maxItems() - 1);
|
|
this._battlerWindow.deactivate();
|
|
this._battlerWindow.deselect();
|
|
this._standerWindow.activate();
|
|
this._standerWindow.select(index);
|
|
};
|
|
|
|
Scene_Battle.prototype.onUp = function () {
|
|
var index = Math.min(this._standerWindow._index, this._battlerWindow.maxItems() - 1);
|
|
this._standerWindow.deactivate();
|
|
this._standerWindow.deselect();
|
|
this._battlerWindow.activate();
|
|
this._battlerWindow.select(index);
|
|
};
|
|
|
|
Scene_Battle.prototype.onStandOff = function () {
|
|
this._standerWindow.deactivate();
|
|
this._standerWindow.deselect();
|
|
};
|
|
|
|
Scene_Battle.prototype.onBattleOff = function () {
|
|
this._battlerWindow.deactivate();
|
|
this._battlerWindow.deselect();
|
|
};
|
|
|
|
var _Form_SBattle_isAnyInputWindowActive = Scene_Battle.prototype.isAnyInputWindowActive;
|
|
Scene_Battle.prototype.isAnyInputWindowActive = function () {
|
|
return (_Form_SBattle_isAnyInputWindowActive.call(this) || this._battlerWindow.active || this._standerWindow.active);
|
|
};
|
|
|
|
var _Form_SBattle_changeInputWindow = Scene_Battle.prototype.changeInputWindow;
|
|
Scene_Battle.prototype.changeInputWindow = function () {
|
|
if (!this._battlerWindow.active && !this._standerWindow.active) {
|
|
_Form_SBattle_changeInputWindow.call(this);
|
|
}
|
|
};
|
|
|
|
var _Form_SBattle_createPartyCommandWindow = Scene_Battle.prototype.createPartyCommandWindow;
|
|
Scene_Battle.prototype.createPartyCommandWindow = function () {
|
|
_Form_SBattle_createPartyCommandWindow.call(this);
|
|
if ($gameSwitches.value(useBattleFormationSwitchId)) {
|
|
this._partyCommandWindow.setHandler('formation', this.commandFormation.bind(this))
|
|
}
|
|
};
|
|
|
|
Scene_Battle.prototype.commandFormation = function () {
|
|
this._battlerWindow.activate();
|
|
this._battlerWindow.select(0);
|
|
this._battlerWindow.refresh();
|
|
this._battlerWindow.open();
|
|
this._standerWindow.open();
|
|
this._standerWindow.refresh();
|
|
this._nameWindow1.open();
|
|
this._nameWindow2.open();
|
|
this._fStatusWindow.open();
|
|
this._partyCommandWindow.deactivate();
|
|
BattleManager._formation = true;
|
|
};
|
|
|
|
Scene_Battle.prototype.onTouchCancelFormation = function () {
|
|
if (TouchInput.isTriggered()) {
|
|
var x = TouchInput.x;
|
|
var y = TouchInput.y;
|
|
var ax = this._battlerWindow.x;
|
|
var xw = ax + this._battlerWindow.width;
|
|
var ay = this._battlerWindow.y;
|
|
var yh = ay + this._battlerWindow.height;
|
|
var flag = x >= ax && x <= xw && y >= ay && y <= yh;
|
|
ax = this._standerWindow.x;
|
|
xw = ax + this._standerWindow.width;
|
|
ay = this._standerWindow.y;
|
|
yh = ay + this._standerWindow.height;
|
|
return !(flag || (x >= ax && x <= xw && y >= ay && y <= yh));
|
|
}
|
|
return false;
|
|
};
|
|
|
|
var _Form_SBattle_update = Scene_Battle.prototype.update;
|
|
Scene_Battle.prototype.update = function () {
|
|
_Form_SBattle_update.call(this);
|
|
if (this.onTouchCancelFormation()) {
|
|
if (this._battlerWindow.active) {
|
|
this.onMemberCancel();
|
|
} else if (this._standerWindow.active) {
|
|
this.onStandCancel();
|
|
}
|
|
}
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
var _Form_WPartyCommand_makeCommandList = Window_PartyCommand.prototype.makeCommandList;
|
|
Window_PartyCommand.prototype.makeCommandList = function () {
|
|
_Form_WPartyCommand_makeCommandList.call(this);
|
|
if ($gameSwitches.value(useBattleFormationSwitchId)) {
|
|
this.addCommand(battleFormationText, 'formation')
|
|
}
|
|
};
|
|
|
|
// 再定義 パーティ全員のアクションを作成する
|
|
Game_Party.prototype.makeActions = function () {
|
|
this.allMembers().forEach(function (member) {
|
|
member.makeActions();
|
|
});
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Game_Actor.prototype.isFixed = function () {
|
|
if (this._fixed === undefined) {
|
|
this._fixed = this.initFixed();
|
|
}
|
|
return this._fixed === true;
|
|
};
|
|
|
|
Game_Actor.prototype.initFixed = function () {
|
|
return this.actor().note.match(/<並び替え固定>/) !== null;
|
|
};
|
|
|
|
Game_Actor.prototype.escape = function () {
|
|
Game_Battler.prototype.escape.call(this);
|
|
this._escaped = true;
|
|
};
|
|
|
|
Game_Actor.prototype.onBattleStart = function () {
|
|
this._escaped = false;
|
|
Game_Battler.prototype.onBattleStart.call(this);
|
|
};
|
|
|
|
Game_Actor.prototype.isEscaped = function () {
|
|
return this._escaped;
|
|
};
|
|
|
|
// 再定義
|
|
Game_Party.prototype.maxBattleMembers = function () {
|
|
return this._maxBattleMembersSize || maxBattleMembersSize;
|
|
};
|
|
|
|
Game_Party.prototype.setMaxBattleMembersSize = function (number) {
|
|
this._maxBattleMembersSize = number;
|
|
if (this._battleMemberSize > number) {
|
|
this._battleMemberSize = number;
|
|
}
|
|
};
|
|
|
|
// 再定義したものを更にエイリアス
|
|
var _Form_GParty_maxBattleMembers = Game_Party.prototype.maxBattleMembers;
|
|
Game_Party.prototype.maxBattleMembers = function () {
|
|
if (!this._battleMemberSize) {
|
|
this._battleMemberSize = this.fullMemberSize()
|
|
}
|
|
return this._battleMemberSize;
|
|
};
|
|
|
|
Game_Party.prototype.fullMemberSize = function () {
|
|
return _Form_GParty_maxBattleMembers.call(this)
|
|
};
|
|
|
|
var _Form_GParty_initialize = Game_Party.prototype.initialize;
|
|
Game_Party.prototype.initialize = function () {
|
|
this._battleMemberSize = this.fullMemberSize();
|
|
_Form_GParty_initialize.call(this);
|
|
};
|
|
|
|
Game_Party.prototype.aliveBattleMembers = function () {
|
|
return this.battleMembers().filter(function (member) {
|
|
return member.isAlive()
|
|
});
|
|
};
|
|
|
|
var _Form_GParty_addActor = Game_Party.prototype.addActor;
|
|
Game_Party.prototype.addActor = function (actorId) {
|
|
var size = this._battleMemberSize;
|
|
if (this._battleMemberSize != this.fullMemberSize()) {
|
|
this._battleMemberSize = Math.min(this._battleMemberSize + 1, this.fullMemberSize());
|
|
}
|
|
_Form_GParty_addActor.call(this, actorId);
|
|
if (size != this.fullMemberSize()) {
|
|
var ary1 = this._actors.slice(0, this._battleMemberSize - 1);
|
|
var ary2 = this._actors.minusArray(ary1);
|
|
delete ary1[ary1.indexOf(actorId)];
|
|
delete ary2[ary2.indexOf(actorId)];
|
|
ary1 = ary1.compact();
|
|
ary2 = ary2.compact();
|
|
ary1.push(actorId);
|
|
ary1 = ary1.concat(ary2);
|
|
this._actors = ary1.compact();
|
|
$gamePlayer.refresh();
|
|
}
|
|
this._actors = this._actors.compact();
|
|
};
|
|
|
|
var _Form_GParty_onBattleEnd = Game_Party.prototype.onBattleEnd;
|
|
Game_Party.prototype.onBattleEnd = function () {
|
|
_Form_GParty_onBattleEnd.call(this);
|
|
$gamePlayer.refresh();
|
|
};
|
|
|
|
// 再定義 メニューを入れ替え
|
|
var _Form_SMenu_commandFormation = Scene_Menu.prototype.commandFormation;
|
|
Scene_Menu.prototype.commandFormation = function () {
|
|
if (useMenuFormationScene) {
|
|
SceneManager.push(Scene_Formation);
|
|
} else {
|
|
_Form_SMenu_commandFormation.call(this);
|
|
}
|
|
};
|
|
|
|
var _Form_SsBattle_createActors = Spriteset_Battle.prototype.createActors;
|
|
Spriteset_Battle.prototype.createActors = function () {
|
|
var n = $gameParty.maxBattleMembers();
|
|
$gameParty._battleMemberSize = $gameParty.fullMemberSize();
|
|
_Form_SsBattle_createActors.call(this);
|
|
$gameParty._battleMemberSize = n;
|
|
};
|
|
|
|
if (Imported['YEP_BattleEngineCore']) {
|
|
var _Form_SActor_setActorHome = Sprite_Actor.prototype.setActorHome;
|
|
Sprite_Actor.prototype.setActorHome = function (index) {
|
|
var n = $gameParty.maxBattleMembers();
|
|
$gameParty._battleMemberSize = $gameParty.fullMemberSize();
|
|
_Form_SActor_setActorHome.call(this, index);
|
|
$gameParty._battleMemberSize = n;
|
|
};
|
|
}
|
|
})();
|