forked from triacontane/RPGMakerMV
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathAutoBattle.js
192 lines (175 loc) · 7.96 KB
/
AutoBattle.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
//=============================================================================
// AutoBattle.js
// ----------------------------------------------------------------------------
// (C) 2016 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.0.1 2018/12/30 コマンド位置の指定のパラメータ設定が一部正常に機能していなかった問題を修正
// 1.0.0 2016/09/29 初版
// ----------------------------------------------------------------------------
// [Blog] : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================
/*:
* @plugindesc AutoBattlePlugin
* @author triacontane
*
* @param PartyCommandName
* @desc Auto battle command name for Window party command.
* @default Auto
*
* @param PartyCommandIndex
* @desc Auto battle command index for Window party command.
* @default -1
*
* @param ActorCommandName
* @desc Auto battle command name for Window actor command.
* @default Auto
*
* @param ActorCommandIndex
* @desc Auto battle command index for Window actor command.
* @default -1
*
* @help Auto battle system added.
*
* This plugin is released under the MIT License.
*/
/*:ja
* @plugindesc 自動戦闘プラグイン
* @author トリアコンタン
*
* @param パーティコマンド名称
* @desc パーティコマンドに追加される一括オートコマンドの名称です。未入力にすると追加されません。
* @default オート
*
* @param パーティコマンド位置
* @desc パーティコマンドでオートコマンドが追加される位置です。-1の場合、末尾に追加されます。
* @default -1
*
* @param アクターコマンド名称
* @desc アクターコマンドに追加される個別オートコマンドの名称です。未入力にすると追加されません。
* @default オート
*
* @param アクターコマンド位置
* @desc アクターコマンドでオートコマンドが追加される位置です。-1の場合、末尾に追加されます。
* @default -1
*
* @help アクターの行動を自動選択するオートバトルを実装します。
*
* 1.パーティコマンドからオートを選択すると、アクターコマンドの選択をスキップして全員
* オートバトルになります。
*
* 2.アクターコマンドからオートを選択すると、対象アクターのみオートバトルになります。
*
* このプラグインにはプラグインコマンドはありません。
*
* 利用規約:
* 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
* についても制限はありません。
* このプラグインはもうあなたのものです。
*/
(function() {
'use strict';
var pluginName = 'AutoBattle';
var getParamOther = function(paramNames) {
if (!Array.isArray(paramNames)) paramNames = [paramNames];
for (var i = 0; i < paramNames.length; i++) {
var name = PluginManager.parameters(pluginName)[paramNames[i]];
if (name) return name;
}
return null;
};
var getParamString = function(paramNames) {
var value = getParamOther(paramNames);
return value === null ? '' : value;
};
var getParamNumber = function(paramNames, min, max) {
var value = getParamOther(paramNames);
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
return (parseInt(value, 10) || 0).clamp(min, max);
};
//=============================================================================
// パラメータの取得と整形
//=============================================================================
var paramPartyCommandName = getParamString(['PartyCommandName', 'パーティコマンド名称']);
var paramPartyCommandIndex = getParamNumber(['PartyCommandIndex', 'パーティコマンド位置']);
var paramActorCommandName = getParamString(['ActorCommandName', 'アクターコマンド名称']);
var paramActorCommandIndex = getParamNumber(['ActorCommandIndex', 'アクターコマンド位置']);
//=============================================================================
// BattleManager
// オートバトルの実装を追加定義します。
//=============================================================================
BattleManager.processActorAuto = function() {
this.actor().makeAutoBattleActions();
};
BattleManager.processPartyAuto = function() {
$gameParty.members().forEach(function(member) {
member.makeAutoBattleActions();
});
this.startTurn();
};
//=============================================================================
// Scene_Battle
// オートバトルコマンドを選択した場合の処理を追加定義します。
//=============================================================================
var _Scene_Battle_createPartyCommandWindow = Scene_Battle.prototype.createPartyCommandWindow;
Scene_Battle.prototype.createPartyCommandWindow = function() {
_Scene_Battle_createPartyCommandWindow.apply(this, arguments);
if (paramPartyCommandName) {
this._partyCommandWindow.setHandler('auto', this.commandPartyAutoBattle.bind(this));
}
};
var _Scene_Battle_createActorCommandWindow = Scene_Battle.prototype.createActorCommandWindow;
Scene_Battle.prototype.createActorCommandWindow = function() {
_Scene_Battle_createActorCommandWindow.apply(this, arguments);
if (paramActorCommandName) {
this._actorCommandWindow.setHandler('auto', this.commandActorAutoBattle.bind(this));
}
};
Scene_Battle.prototype.commandPartyAutoBattle = function() {
BattleManager.processPartyAuto();
this.changeInputWindow();
};
Scene_Battle.prototype.commandActorAutoBattle = function() {
BattleManager.processActorAuto();
this.selectNextCommand();
};
//=============================================================================
// Window_PartyCommand
// オートバトルコマンドを追加します。
//=============================================================================
var _Window_PartyCommand_makeCommandList = Window_PartyCommand.prototype.makeCommandList;
Window_PartyCommand.prototype.makeCommandList = function() {
_Window_PartyCommand_makeCommandList.apply(this, arguments);
if (paramPartyCommandName) this.addAutoCommand();
};
Window_PartyCommand.prototype.addAutoCommand = function() {
this.addCommand(paramPartyCommandName, 'auto');
if (this._list[paramPartyCommandIndex]) {
var command = this._list.pop();
this._list.splice(paramPartyCommandIndex, 0, command);
}
};
//=============================================================================
// Window_ActorCommand
// オートバトルコマンドを追加します。
//=============================================================================
var _Window_ActorCommand_makeCommandList = Window_ActorCommand.prototype.makeCommandList;
Window_ActorCommand.prototype.makeCommandList = function() {
_Window_ActorCommand_makeCommandList.apply(this, arguments);
if (this._actor && paramActorCommandName) {
this.addAutoCommand();
}
};
Window_ActorCommand.prototype.addAutoCommand = function() {
this.addCommand(paramActorCommandName, 'auto');
if (this._list[paramActorCommandIndex]) {
var command = this._list.pop();
this._list.splice(paramActorCommandIndex, 0, command);
}
};
})();