//=============================================================================
// Yanfly Engine Plugins - In-Battle Status
// YEP_X_InBattleStatus.js
//=============================================================================
var Imported = Imported || {};
Imported.YEP_X_InBattleStatus = true;
var Yanfly = Yanfly || {};
Yanfly.IBS = Yanfly.IBS || {};
//=============================================================================
/*:
* @plugindesc v1.00 战斗状态查看
* @author Yanfly Engine Plugins
*
* @param ---General---
* @default
*
* @param Command Text
* @desc The text used for 'Status' command text in the Party Window.
* @default Status
*
* @param Show Command
* @desc Show the in battle 'Status' command by default?
* NO - false YES - true
* @default true
*
* @param Window X
* @desc The default X location used for the in-battle status window.
* You can use formulas.
* @default 0
*
* @param Window Y
* @desc The default Y location used for the in-battle status window.
* You can use formulas.
* @default this.fittingHeight(2)
*
* @param Window Width
* @desc The default width used for the in-battle status window.
* You can use formulas.
* @default Graphics.boxWidth
*
* @param Window Height
* @desc The default height used for the in-battle status window.
* You can use formulas.
* @default Graphics.boxHeight - this.fittingHeight(2) - this.fittingHeight(4)
*
* @param ---Status List---
* @default
*
* @param Status Width
* @desc The width of the status list.
* You can use formulas.
* @default Math.max(312, Graphics.boxWidth / 4);
*
* @param State Help Front
* @desc Text placed in front of each state's help description.
* %1 - State Icon %2 - State Name
* @default \i[%1]%2
*
* @param State Help End
* @desc Text placed in end of each state's help description.
* %1 - State Icon %2 - State Name
* @default
*
* @param Healthy Icon
* @desc Icon ID used to indicate the battler is healthy (no states).
* @default 127
*
* @param Healthy Text
* @desc Text used to label the healthy status.
* @default Healthy
*
* @param Healthy Help
* @desc Text displayed in help window when selected.
* @default User is currently unaffected by status effects.
*
* @param ---Buffs List---
* @default
*
* @param MaxHP Buff Text
* @desc The text used to display the MaxHP Buff Name.
* @default MaxHP Up
*
* @param MaxHP Buff Help
* @desc The text used for the MaxHP help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Raises Maximum Health to %1%.
*
* @param MaxMP Buff Text
* @desc The text used to display the MaxMP Buff Name.
* @default MaxMP Up
*
* @param MaxMP Buff Help
* @desc The text used for the MaxMP help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Raises Maximum Mana to %1%.
*
* @param ATK Buff Text
* @desc The text used to display the ATK Buff Name.
* @default ATK Up
*
* @param ATK Buff Help
* @desc The text used for the ATK help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Raises Attack to %1%.
*
* @param DEF Buff Text
* @desc The text used to display the DEF Buff Name.
* @default DEF Up
*
* @param DEF Buff Help
* @desc The text used for the DEF help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Raises Defense to %1%.
*
* @param MAT Buff Text
* @desc The text used to display the MAT Buff Name.
* @default MAT Up
*
* @param MAT Buff Help
* @desc The text used for the MAT help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Raises Magic Attack to %1%.
*
* @param MDF Buff Text
* @desc The text used to display the MDF Buff Name.
* @default MDF Up
*
* @param MDF Buff Help
* @desc The text used for the MDF help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Raises Magic Defense to %1%.
*
* @param AGI Buff Text
* @desc The text used to display the AGI Buff Name.
* @default AGI Up
*
* @param AGI Buff Help
* @desc The text used for the AGI help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Raises Agility to %1%.
*
* @param LUK Buff Text
* @desc The text used to display the LUK Buff Name.
* @default LUK Up
*
* @param LUK Buff Help
* @desc The text used for the LUK help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Raises Luck to %1%.
*
* @param ---Debuffs List---
* @default
*
* @param MaxHP Debuff Text
* @desc The text used to display the MaxHP Debuff Name.
* @default MaxHP Down
*
* @param MaxHP Debuff Help
* @desc The text used for the MaxHP help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Lowers Maximum Health to %1%.
*
* @param MaxMP Debuff Text
* @desc The text used to display the MaxMP Debuff Name.
* @default MaxMP Down
*
* @param MaxMP Debuff Help
* @desc The text used for the MaxMP help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Lowers Maximum Mana to %1%.
*
* @param ATK Debuff Text
* @desc The text used to display the ATK Debuff Name.
* @default ATK Down
*
* @param ATK Debuff Help
* @desc The text used for the ATK help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Lowers Attack to %1%.
*
* @param DEF Debuff Text
* @desc The text used to display the DEF Debuff Name.
* @default DEF Down
*
* @param DEF Debuff Help
* @desc The text used for the DEF help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Lowers Defense to %1%.
*
* @param MAT Debuff Text
* @desc The text used to display the MAT Debuff Name.
* @default MAT Down
*
* @param MAT Debuff Help
* @desc The text used for the MAT help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Lowers Magic Attack to %1%.
*
* @param MDF Debuff Text
* @desc The text used to display the MDF Debuff Name.
* @default MDF Down
*
* @param MDF Debuff Help
* @desc The text used for the MDF help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Lowers Magic Defense to %1%.
*
* @param AGI Debuff Text
* @desc The text used to display the AGI Debuff Name.
* @default AGI Down
*
* @param AGI Debuff Help
* @desc The text used for the AGI help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Lowers Agility to %1%.
*
* @param LUK Debuff Text
* @desc The text used to display the LUK Debuff Name.
* @default LUK Down
*
* @param LUK Debuff Help
* @desc The text used for the LUK help description.
* %1 - Rate %2 - Stacks %3 - Turns
* @default Lowers Luck to %1%.
*
* @help
* ============================================================================
* Introduction
* ============================================================================
*
* 这个插件需要YEP_BattleEngineCore。确保这个插件放在YEP_BattleEngineCore下面
*
* 在战斗中,我们没有办法查看队伍当前状态,这个插件将会在队伍命令中添加
* “状态”命令,允许玩家去查看角色状态。在这里,我们可以看到队员的初始
* 参数和状态列表。这个玩家将可以
*
* 注意:如果你使用了YEP_X_BattleSysCTB,请把这个插件放在下面以提高兼容性
*
* ============================================================================
* Notetags
* ============================================================================
*
* 想要添加帮助文字的可以用下面的备注
*
* State Notetags:
*
* <Help Description>
* text
* text
* </Help Description>
* 这可以添加帮助文字
*
* ============================================================================
* Text Codes
* ============================================================================
*
* 可以使用文本代码:
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*
* State Help Function
* \th[x] - 替换为状态帮助文字
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*
* ============================================================================
* Plugin Commands
* ============================================================================
*
* 想要改变状态菜单命令的,可以用下面插件来设置:
*
* Plugin Commands:
*
* ShowInBattleStatus
* - 开启战斗状态命令
*
* HideInBattleStatus
* - 关闭战斗状态命令
*/
//=============================================================================
if (Imported.YEP_BattleEngineCore) {
//=============================================================================
// Parameter Variables
//=============================================================================
Yanfly.Parameters = PluginManager.parameters('YEP_X_InBattleStatus');
Yanfly.Param = Yanfly.Param || {};
Yanfly.Param.IBSCmdName = String(Yanfly.Parameters['Command Text']);
Yanfly.Param.IBSCmdShow = eval(String(Yanfly.Parameters['Show Command']));
Yanfly.Param.IBSWinX = String(Yanfly.Parameters['Window X']);
Yanfly.Param.IBSWinY = String(Yanfly.Parameters['Window Y']);
Yanfly.Param.IBSWinWidth = String(Yanfly.Parameters['Window Width']);
Yanfly.Param.IBSWinHeight = String(Yanfly.Parameters['Window Height']);
Yanfly.Param.IBSStatusListWidth = String(Yanfly.Parameters['Status Width']);
Yanfly.Param.IBSStateHelp1 = String(Yanfly.Parameters['State Help Front']);
Yanfly.Param.IBSStateHelp2 = String(Yanfly.Parameters['State Help End']);
Yanfly.Param.IBSHealthyIcon = Number(Yanfly.Parameters['Healthy Icon']);
Yanfly.Param.IBSHealthyText = String(Yanfly.Parameters['Healthy Text']);
Yanfly.Param.IBSHealthyHelp = String(Yanfly.Parameters['Healthy Help']);
Yanfly.Param.IBSBuffText = [];
Yanfly.Param.IBSBuffText.push(String(Yanfly.Parameters['MaxHP Buff Text']));
Yanfly.Param.IBSBuffText.push(String(Yanfly.Parameters['MaxMP Buff Text']));
Yanfly.Param.IBSBuffText.push(String(Yanfly.Parameters['ATK Buff Text']));
Yanfly.Param.IBSBuffText.push(String(Yanfly.Parameters['DEF Buff Text']));
Yanfly.Param.IBSBuffText.push(String(Yanfly.Parameters['MAT Buff Text']));
Yanfly.Param.IBSBuffText.push(String(Yanfly.Parameters['MDF Buff Text']));
Yanfly.Param.IBSBuffText.push(String(Yanfly.Parameters['AGI Buff Text']));
Yanfly.Param.IBSBuffText.push(String(Yanfly.Parameters['LUK Buff Text']));
Yanfly.Param.IBSBuffHelp = [];
Yanfly.Param.IBSBuffHelp.push(String(Yanfly.Parameters['MaxHP Buff Help']));
Yanfly.Param.IBSBuffHelp.push(String(Yanfly.Parameters['MaxMP Buff Help']));
Yanfly.Param.IBSBuffHelp.push(String(Yanfly.Parameters['ATK Buff Help']));
Yanfly.Param.IBSBuffHelp.push(String(Yanfly.Parameters['DEF Buff Help']));
Yanfly.Param.IBSBuffHelp.push(String(Yanfly.Parameters['MAT Buff Help']));
Yanfly.Param.IBSBuffHelp.push(String(Yanfly.Parameters['MDF Buff Help']));
Yanfly.Param.IBSBuffHelp.push(String(Yanfly.Parameters['AGI Buff Help']));
Yanfly.Param.IBSBuffHelp.push(String(Yanfly.Parameters['LUK Buff Help']));
Yanfly.Param.IBSDebuffText = [];
Yanfly.Param.IBSDebuffText.push(String(Yanfly.Parameters['MaxHP Debuff Text']));
Yanfly.Param.IBSDebuffText.push(String(Yanfly.Parameters['MaxMP Debuff Text']));
Yanfly.Param.IBSDebuffText.push(String(Yanfly.Parameters['ATK Debuff Text']));
Yanfly.Param.IBSDebuffText.push(String(Yanfly.Parameters['DEF Debuff Text']));
Yanfly.Param.IBSDebuffText.push(String(Yanfly.Parameters['MAT Debuff Text']));
Yanfly.Param.IBSDebuffText.push(String(Yanfly.Parameters['MDF Debuff Text']));
Yanfly.Param.IBSDebuffText.push(String(Yanfly.Parameters['AGI Debuff Text']));
Yanfly.Param.IBSDebuffText.push(String(Yanfly.Parameters['LUK Debuff Text']));
Yanfly.Param.IBSDebuffHelp = [];
Yanfly.Param.IBSDebuffHelp.push(String(Yanfly.Parameters['MaxHP Debuff Help']));
Yanfly.Param.IBSDebuffHelp.push(String(Yanfly.Parameters['MaxMP Debuff Help']));
Yanfly.Param.IBSDebuffHelp.push(String(Yanfly.Parameters['ATK Debuff Help']));
Yanfly.Param.IBSDebuffHelp.push(String(Yanfly.Parameters['DEF Debuff Help']));
Yanfly.Param.IBSDebuffHelp.push(String(Yanfly.Parameters['MAT Debuff Help']));
Yanfly.Param.IBSDebuffHelp.push(String(Yanfly.Parameters['MDF Debuff Help']));
Yanfly.Param.IBSDebuffHelp.push(String(Yanfly.Parameters['AGI Debuff Help']));
Yanfly.Param.IBSDebuffHelp.push(String(Yanfly.Parameters['LUK Debuff Help']));
//=============================================================================
// DataManager
//=============================================================================
Yanfly.IBS.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
DataManager.isDatabaseLoaded = function() {
if (!Yanfly.IBS.DataManager_isDatabaseLoaded.call(this)) return false;
if (!Yanfly._loaded_YEP_X_InBattleStatus) {
this.processIBSNotetags1($dataStates);
Yanfly._loaded_YEP_X_InBattleStatus = true;
}
return true;
};
DataManager.processIBSNotetags1 = function(group) {
for (var n = 1; n < group.length; n++) {
var obj = group[n];
var notedata = obj.note.split(/[\r\n]+/);
var fmt1 = Yanfly.Param.IBSStateHelp1;
obj.description = fmt1.format(obj.iconIndex, obj.name);
var descLength = obj.description.length;
var evalMode = 'none';
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
if (line.match(/<(?:HELP|DESCRIPTION|HELP DESCRIPTION)>/i)) {
evalMode = 'help description';
} else if (line.match(/<\/(?:HELP|DESCRIPTION|HELP DESCRIPTION)>/i)) {
evalMode = 'none';
} else if (evalMode === 'help description') {
if (obj.description.length > descLength) obj.description += '\n';
obj.description += line;
}
}
var fmt2 = Yanfly.Param.IBSStateHelp2;
obj.description += fmt2.format(obj.iconIndex, obj.name);
}
};
//=============================================================================
// Game_System
//=============================================================================
Yanfly.IBS.Game_System_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
Yanfly.IBS.Game_System_initialize.call(this);
this.initIBSSettings();
};
Game_System.prototype.initIBSSettings = function() {
this._showInBattleStatus = Yanfly.Param.IBSCmdShow;
};
Game_System.prototype.isShowInBattleStatus = function() {
if (this._showInBattleStatus === undefined) this.initIBSSettings();
return this._showInBattleStatus;
};
Game_System.prototype.setShowInBattleStatus = function(value) {
if (this._showInBattleStatus === undefined) this.initIBSSettings();
this._showInBattleStatus = value;
};
//=============================================================================
// Game_Interpreter
//=============================================================================
Yanfly.IBS.Game_Interpreter_pluginCommand =
Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
Yanfly.IBS.Game_Interpreter_pluginCommand.call(this, command, args);
if (command === 'ShowInBattleStatus') {
$gameSystem.setShowInBattleStatus(true);
} else if (command === 'HideInBattleStatus') {
$gameSystem.setShowInBattleStatus(false);
}
};
//=============================================================================
// Window_Base
//=============================================================================
Yanfly.IBS.Window_Base_convertEscapeCharacters =
Window_Base.prototype.convertEscapeCharacters;
Window_Base.prototype.convertEscapeCharacters = function(text) {
text = this.convertStateHelpText(text);
return Yanfly.IBS.Window_Base_convertEscapeCharacters.call(this, text);
};
Window_Base.prototype.convertStateHelpText = function(text) {
text = text.replace(/\\V\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
text = text.replace(/\\V\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
text = text.replace(/\\TH\[(\d+)\]/gi, function() {
return $dataStates[parseInt(arguments[1])].description;
}.bind(this));
text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
text = text.replace(/\x1bTH\[(\d+)\]/gi, function() {
return $dataStates[parseInt(arguments[1])].description;
}.bind(this));
return text;
};
if (Imported.YEP_X_MessageMacros1) {
Yanfly.IBS.Window_Base_convertMacroText =
Window_Base.prototype.convertMacroText;
Window_Base.prototype.convertMacroText = function(text) {
text = Yanfly.IBS.Window_Base_convertMacroText.call(this, text);
text = this.convertStateHelpText(text);
return text;
};
}; // Imported.YEP_X_MessageMacros1
//=============================================================================
// Window_Command
//=============================================================================
Window_Command.prototype.addCommandAt = function(index, name, symbol, en, ext) {
if (en === undefined) enabled = true;
if (ext === undefined) ext = null;
var obj = { name: name, symbol: symbol, enabled: en, ext: ext};
this._list.splice(index, 0, obj);
};
//=============================================================================
// Window_ActorCommand
//=============================================================================
Yanfly.IBS.Window_ActorCommand_makeCommandList =
Window_ActorCommand.prototype.makeCommandList;
Window_ActorCommand.prototype.makeCommandList = function() {
Yanfly.IBS.Window_ActorCommand_makeCommandList.call(this);
this.makeInBattleStatusCommand();
};
Window_ActorCommand.prototype.makeInBattleStatusCommand = function() {
if (!$gameSystem.isShowInBattleStatus()) return;
var index = this.findSymbol('item');
var text = Yanfly.Param.IBSCmdName;
this.addCommandAt(index, text, 'inBattleStatus', true);
};
//=============================================================================
// Window_InBattleStatus
//=============================================================================
function Window_InBattleStatus() {
this.initialize.apply(this, arguments);
}
Window_InBattleStatus.prototype = Object.create(Window_Base.prototype);
Window_InBattleStatus.prototype.constructor = Window_InBattleStatus;
Window_InBattleStatus.prototype.initialize = function() {
var x = eval(Yanfly.Param.IBSWinX);
var y = eval(Yanfly.Param.IBSWinY);
var w = eval(Yanfly.Param.IBSWinWidth);
var h = eval(Yanfly.Param.IBSWinHeight);
this._battler = $gameParty.battleMembers()[0];
Window_Base.prototype.initialize.call(this, x, y, w, h);
this.hide();
};
Window_InBattleStatus.prototype.setBattler = function(battler) {
this._battler = battler;
this.refresh();
};
Window_InBattleStatus.prototype.refresh = function() {
this.contents.clear();
if (!this._battler) return;
var x = this.standardPadding() + eval(Yanfly.Param.IBSStatusListWidth);
this.drawActorFace(this._battler, x, 0, Window_Base._faceWidth);
var x2 = x + Window_Base._faceWidth + this.standardPadding();
var w = this.contents.width - x2;
this.drawActorSimpleStatus(this._battler, x2, 0, w);
w = this.contents.width - x;
var y = Math.ceil(this.lineHeight() * 4.5);
var h = this.contents.height - y;
if (h >= this.lineHeight() * 6) {
for (var i = 2; i < 8; ++i) {
this.drawParam(i, x, y, w, this.lineHeight());
y += this.lineHeight();
}
} else {
w = Math.floor(w / 2);
x2 = x;
for (var i = 2; i < 8; ++i) {
this.drawParam(i, x2, y, w, this.lineHeight());
if (i % 2 === 0) {
x2 += w;
} else {
x2 = x;
y += this.lineHeight();
}
}
}
};
Window_InBattleStatus.prototype.drawParam = function(paramId, dx, dy, dw, dh) {
this.drawDarkRect(dx, dy, dw, dh);
var level = this._battler._buffs[paramId];
var icon = this._battler.buffIconIndex(level, paramId);
this.drawIcon(icon, dx + 2, dy + 2);
dx += Window_Base._iconWidth + 4;
dw -= Window_Base._iconWidth + 4 + this.textPadding() + 2;
this.changeTextColor(this.systemColor());
this.drawText(TextManager.param(paramId), dx, dy, dw);
var value = this._battler.param(paramId);
this.changeTextColor(this.paramchangeTextColor(level));
this.drawText(Yanfly.Util.toGroup(value), dx, dy, dw, 'right');
};
Window_InBattleStatus.prototype.drawDarkRect = function(dx, dy, dw, dh) {
var color = this.gaugeBackColor();
this.changePaintOpacity(false);
this.contents.fillRect(dx + 1, dy + 1, dw - 2, dh - 2, color);
this.changePaintOpacity(true);
};
//=============================================================================
// Window_InBattleStateList
//=============================================================================
function Window_InBattleStateList() {
this.initialize.apply(this, arguments);
}
Window_InBattleStateList.prototype = Object.create(Window_Selectable.prototype);
Window_InBattleStateList.prototype.constructor = Window_InBattleStateList;
Window_InBattleStateList.prototype.initialize = function(parentWindow) {
this._parentWindow = parentWindow;
this._battler = $gameParty.battleMembers()[0];
var x = parentWindow.x;
var y = parentWindow.y;
var width = eval(Yanfly.Param.IBSStatusListWidth);
width += this.standardPadding() * 2;
width = Math.ceil(width);
var height = parentWindow.height;
Window_Selectable.prototype.initialize.call(this, x, y, width, height);
this.deactivate();
this.backOpacity = 0;
this.opacity = 0;
this.hide();
this._data = [];
};
Window_InBattleStateList.prototype.setStatusWindow = function(win) {
this._statusWindow = win;
};
Window_InBattleStateList.prototype.setBattler = function(battler) {
this._battler = battler;
this._parentWindow.setBattler(battler);
this.refresh();
this.select(0);
if (this._statusWindow) {
var index = $gameParty.battleMembers().indexOf(battler)
this._statusWindow.select(index);
}
};
Window_InBattleStateList.prototype.maxItems = function() {
return this._data ? this._data.length : 1;
};
Window_InBattleStateList.prototype.item = function() {
var index = this.index();
return this._data && index >= 0 ? this._data[index] : null;
};
Window_InBattleStateList.prototype.includes = function(item) {
if (!item) return false;
if (item.name.length <= 0) return false;
if (item.iconIndex <= 0) return false;
return true;
};
Window_InBattleStateList.prototype.makeItemList = function() {
this._data = [];
if (this._battler) {
var states = this._battler.states();
var length = states.length;
for (var i = 0; i < length; ++i) {
var state = states[i];
if (this.includes(state)) this._data.push(state);
}
for (var i = 0; i < 8; ++i) {
if (this._battler.isBuffAffected(i) ||
this._battler.isDebuffAffected(i)) {
this._data.push('buff ' + i);
}
}
}
if (this._data.length <= 0) this._data.push(null);
};
Window_InBattleStateList.prototype.drawItem = function(index) {
var item = this._data[index];
var rect = this.itemRect(index);
rect.width -= this.textPadding();
if (item === null) {
var icon = Yanfly.Param.IBSHealthyIcon;
var text = Yanfly.Param.IBSHealthyText;
var ibw = Window_Base._iconWidth + 4;
this.resetTextColor();
this.drawIcon(icon, rect.x + 2, rect.y + 2);
this.drawText(text, rect.x + ibw, rect.y, rect.width - ibw);
} else if (typeof item === 'string' && item.match(/BUFF[ ](\d+)/i)) {
var paramId = parseInt(RegExp.$1);
var level = this._battler._buffs[paramId];
var icon = this._battler.buffIconIndex(level, paramId);
var ibw = Window_Base._iconWidth + 4;
this.drawIcon(icon, rect.x + 2, rect.y + 2);
if (level > 0) {
var text = Yanfly.Param.IBSBuffText[paramId];
} else {
var text = Yanfly.Param.IBSDebuffText[paramId];
}
this.drawText(text, rect.x + ibw, rect.y, rect.width - ibw);
if (!Imported.YEP_BuffsStatesCore) return;
this.drawBuffTurns(this._battler, paramId, rect.x + 2, rect.y);
if (Yanfly.Param.BSCShowBuffRate) {
this.drawBuffRate(this._battler, paramId, rect.x + 2, rect.y);
}
} else if (item) {
this.drawItemName(item, rect.x, rect.y, rect.width);
if (!Imported.YEP_BuffsStatesCore) return;
if (item.autoRemovalTiming > 0) {
this.drawStateTurns(this._battler, item, rect.x + 2, rect.y);
}
this.drawStateCounter(this._battler, item, rect.x + 2, rect.y);
}
};
Window_InBattleStateList.prototype.updateHelp = function() {
if (this.item() === null) {
var text = Yanfly.Param.IBSHealthyHelp;
this._helpWindow.setText(text);
} else if (typeof this.item() === 'string' &&
this.item().match(/BUFF[ ](\d+)/i)) {
var paramId = parseInt(RegExp.$1);
var level = this._battler._buffs[paramId];
if (level > 0) {
var fmt = Yanfly.Param.IBSBuffHelp[paramId];
} else {
var fmt = Yanfly.Param.IBSDebuffHelp[paramId];
}
var rate = Math.floor(this._battler.paramBuffRate(paramId) * 100);
var turns = this._battler._buffTurns[paramId];
var text = fmt.format(rate, Math.abs(level), turns);
this._helpWindow.setText(text);
} else if (this.item()) {
this.setHelpWindowItem(this.item());
}
};
Window_InBattleStateList.prototype.refresh = function() {
this.makeItemList();
this.createContents();
this.drawAllItems();
};
Window_InBattleStateList.prototype.update = function() {
Window_Selectable.prototype.update.call(this);
if (this.active && this._battler) this.updateLeftRight();
};
Window_InBattleStateList.prototype.updateLeftRight = function() {
var index = $gameParty.battleMembers().indexOf(this._battler);
var current = index;
if (Input.isRepeated('left')) {
index -= 1;
} else if (Input.isRepeated('right')) {
index += 1;
}
index = index.clamp(0, $gameParty.battleMembers().length - 1);
if (current !== index) {
var battler = $gameParty.battleMembers()[index];
this.setBattler(battler);
SoundManager.playCursor();
}
};
//=============================================================================
// Window_CTBIcon
//=============================================================================
if (Imported.YEP_X_BattleSysCTB) {
Yanfly.IBS.Window_CTBIcon_isReduceOpacity =
Window_CTBIcon.prototype.isReduceOpacity;
Window_CTBIcon.prototype.isReduceOpacity = function() {
if (SceneManager._scene._inBattleStatusWindow) {
if (SceneManager._scene._inBattleStatusWindow.visible) return true;
}
return Yanfly.IBS.Window_CTBIcon_isReduceOpacity.call(this);
};
}; // Imported.YEP_X_BattleSysCTB
//=============================================================================
// Window_BattleStatus
//=============================================================================
Window_BattleStatus.prototype.setInBattleStatusWindow = function(win) {
this._inBattleStatusWindow = win;
};
Yanfly.IBS.Window_BattleStatus_update = Window_BattleStatus.prototype.update;
Window_BattleStatus.prototype.update = function() {
Yanfly.IBS.Window_BattleStatus_update.call(this);
this.processInBattleStatusTouch();
};
Window_BattleStatus.prototype.processInBattleStatusTouch = function() {
if (!this._inBattleStatusWindow) return;
if (!this._inBattleStatusWindow.active) return;
if (TouchInput.isTriggered() && this.isTouchedInsideFrame()) {
this.onInBattleStatusTouch();
}
};
Window_BattleStatus.prototype.onInBattleStatusTouch = function() {
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) {
var actor = $gameParty.battleMembers()[hitIndex];
var win = this._inBattleStatusWindow;
if (win && actor) {
win.setBattler(actor);
SoundManager.playCursor();
}
}
};
//=============================================================================
// Scene_Battle
//=============================================================================
Yanfly.IBS.Scene_Battle_createAllWindows =
Scene_Battle.prototype.createAllWindows;
Scene_Battle.prototype.createAllWindows = function() {
Yanfly.IBS.Scene_Battle_createAllWindows.call(this);
this.createInBattleStatusWindows();
};
Scene_Battle.prototype.createInBattleStatusWindows = function() {
this._inBattleStatusWindow = new Window_InBattleStatus();
this.addChild(this._inBattleStatusWindow);
var win = this._inBattleStatusWindow;
this._inBattleStateList = new Window_InBattleStateList(win);
this._inBattleStateList.setHelpWindow(this._helpWindow);
this._inBattleStateList.setStatusWindow(this._statusWindow);
this.addChild(this._inBattleStateList);
this._inBattleStateList.setHandler('cancel', this.onInBattleStatusCancel.bind(this));
this._statusWindow.setInBattleStatusWindow(this._inBattleStateList);
};
Yanfly.IBS.Scene_Battle_createActorCommandWindow =
Scene_Battle.prototype.createActorCommandWindow;
Scene_Battle.prototype.createActorCommandWindow = function() {
Yanfly.IBS.Scene_Battle_createActorCommandWindow.call(this);
var win = this._actorCommandWindow;
win.setHandler('inBattleStatus', this.commandInBattleStatus.bind(this));
};
Scene_Battle.prototype.commandInBattleStatus = function() {
this._helpWindow.show();
this._inBattleStatusWindow.show();
this._inBattleStateList.show();
this._inBattleStateList.activate();
this._inBattleStateList.setBattler($gameParty.battleMembers()[0]);
if (Imported.YEP_X_PartyLimitGauge) {
this._showPartyLimitGauge = $gameSystem.isShowPartyLimitGauge();
this._showTroopLimitGauge = $gameSystem.isShowTroopLimitGauge();
$gameSystem.setShowPartyLimitGauge(false);
$gameSystem.setShowTroopLimitGauge(false);
}
};
Scene_Battle.prototype.onInBattleStatusCancel = function() {
this._helpWindow.hide();
this._inBattleStatusWindow.hide();
this._inBattleStateList.hide();
this._inBattleStateList.deactivate();
this._actorCommandWindow.activate();
this._statusWindow.deselect();
if (Imported.YEP_X_PartyLimitGauge) {
$gameSystem.setShowPartyLimitGauge(this._showPartyLimitGauge);
$gameSystem.setShowTroopLimitGauge(this._showTroopLimitGauge);
}
};
Yanfly.IBS.Scene_Battle_isAnyInputWindowActive =
Scene_Battle.prototype.isAnyInputWindowActive;
Scene_Battle.prototype.isAnyInputWindowActive = function() {
if (this._inBattleStateList && this._inBattleStateList.active) return true;
return Yanfly.IBS.Scene_Battle_isAnyInputWindowActive.call(this);
};
if (Imported.YEP_X_BattleSysCTB) {
Yanfly.IBS.Scene_Battle_updateWindowPositionsCTB =
Scene_Battle.prototype.updateWindowPositionsCTB;
Scene_Battle.prototype.updateWindowPositionsCTB = function() {
if (this._inBattleStatusWindow && this._inBattleStatusWindow.visible) {
return;
}
Yanfly.IBS.Scene_Battle_updateWindowPositionsCTB.call(this);
};
}; // Imported.YEP_X_BattleSysCTB
//=============================================================================
// Utilities
//=============================================================================
Yanfly.Util = Yanfly.Util || {};
if (!Yanfly.Util.toGroup) {
Yanfly.Util.toGroup = function(inVal) {
return inVal;
}
};
//=============================================================================
// End of File
//=============================================================================
};