mutation/www/js/plugins/MOG_BattleHudFixPatch.js
2024-08-10 09:53:59 -05:00

598 lines
18 KiB
JavaScript

/*
* --------------------------------------------------
* MOG_BattleHudFixPatch.js
* Ver.1.3.0
* Copyright (c) 2020 Munokura
* This software is released under the MIT license.
* http://opensource.org/licenses/mit-license.php
* --------------------------------------------------
*/
/*:
* @plugindesc MOG Battle Hud (v5.04)で見つかったバグを修正するパッチプラグイン
* @author munokura
*
* @help
* MOG Battle Hud (v5.04) のバグを修正するパッチプラグインです。
* プラグイン管理でMOG_BattleHudの下側に配置してください。
*
* 修正箇所
*
* Face Frame Animation を有効にし、Face Zoom Animation を無効にした場合、
* Face Frame Animation が一部正常に動作しない問題を解消。
*
* States Mode が Line Mode の時、
* ステート表示の更新処理が適切に行われない問題の解消。
* ステート表示のターン数等を表示するプラグインで起こる問題の解消。
*
* HP,MPの最大値が戦闘中に上がった時、
* メーターの表示が適切に行われない問題の解消。
*
* フロントビュー戦闘で全体アニメーションの位置が正しく表示されない問題を解消。
*
* 戦闘を行った後のセーブデータに、
* 変更したプラグインパラメーターが反映されない問題を解消。
*
*/
(function () {
"use strict";
//==============================
// * Initialize
//==============================
var _alias_mog_bhud_sys_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function () {
_alias_mog_bhud_sys_initialize.call(this);
// this._bhud_position = [];
// for (var i = 0; i < 8; i++) {
// this._bhud_position[i] = this.set_hudcp(Moghunter.bhud_custom_pos[i]);
// };
// this._bhud_auto_com = false;
this._bhud_pos_mode = 0;
this._bhud_visible = true;
this._bhudFaceBattler =
String(Moghunter.bhud_face_visible) == "true" && !$dataSystem.optSideView
? true
: false;
if (String(Moghunter.bhud_pos_mode) == "true") {
this._bhud_pos_mode = 1;
}
// if (Number(Moghunter.bhud_auto_pos) == 0) { this._bhud_auto_com = true };
};
//==============================
// * initialize
//==============================
var _alias_mog_bhud_wActCom_initialize =
Window_ActorCommand.prototype.initialize;
Window_ActorCommand.prototype.initialize = function () {
_alias_mog_bhud_wActCom_initialize.call(this);
this._com_mode = Number($gameSystem._bhud_pos_mode);
this._force_hide_duration = 0;
this.org = [Moghunter.bhud_com_x, Moghunter.bhud_com_y];
this.org2 = [
this.org[0] + Moghunter.bhud_com_slideX,
this.org[1] + Moghunter.bhud_com_slideY,
];
this.slide =
Moghunter.bhud_com_slideX === 0 && Moghunter.bhud_com_slideY === 0
? false
: true;
this._actorVis != this._actor;
this.xp = -1;
this.yp = -1;
};
//==============================
// ** create Battle Hud
//==============================
Scene_Base.prototype.createBattleHud = function () {
if (String(Moghunter.bhud_screen_layout) === "true") {
this.createBattleHudScreenLayout();
}
$gameTemp.refresh_Bhud = false;
$gameTemp._battleEnd = false;
this._com_mode = Number($gameSystem._bhud_pos_mode);
this._battle_hud = [];
for (var i = 0; i < $gameParty.maxBattleMembers(); i++) {
this._battle_hud[i] = new Battle_Hud(i);
this._battle_hud[i].mz = 110;
this._hudField.addChild(this._battle_hud[i]);
}
};
//==============================
// ** update Battle Commands
//==============================
Window_ActorCommand.prototype.updateBattleCommands = function () {
if ($gameTemp._bhud_position_active) {
this.visible = this.active;
// if ($gameSystem._bhud_auto_com) {
if ($gameTemp._bhud_auto_com) {
this.x = $gameTemp._bhud_position_active[0] + Moghunter.bhud_com_x;
if (this._com_mode === 0) {
this.y =
$gameTemp._bhud_position_active[1] +
Moghunter.bhud_com_y -
this.height;
} else {
this.y = $gameTemp._bhud_position_active[1] + Moghunter.bhud_com_y;
}
} else {
this.x = Moghunter.bhud_com_x;
this.y = Moghunter.bhud_com_y;
}
}
};
//==============================
// ** update Position S
//==============================
Window_ActorCommand.prototype.updatePosS = function () {
if ($gameTemp._bhud_position_active) {
this.visible = this.active;
// if ($gameSystem._bhud_auto_com) {
if ($gameTemp._bhud_auto_com) {
if (
this.xp != $gameTemp._bhud_position_active[0] ||
this.yp != $gameTemp._bhud_position_active[1]
) {
this.xp = $gameTemp._bhud_position_active[0];
this.yp = $gameTemp._bhud_position_active[1];
this.org[0] =
$gameTemp._bhud_position_active[0] + Moghunter.bhud_com_x;
if (this._com_mode === 0) {
this.org[1] =
$gameTemp._bhud_position_active[1] +
Moghunter.bhud_com_y -
this.height;
} else {
this.org[1] =
$gameTemp._bhud_position_active[1] + Moghunter.bhud_com_y;
}
this.org2 = [
this.org[0] + Moghunter.bhud_com_slideX,
this.org[1] + Moghunter.bhud_com_slideY,
];
if (this._actorVis != this._actor) {
this.x = this.org2[0];
this.y = this.org2[1];
this._actorVis = this._actor;
}
}
this.slideWindow(this, false);
} else {
this.slideWindow(this, false);
}
}
};
//==============================
// ** update Position N
//==============================
Window_ActorCommand.prototype.updatePosN = function () {
if ($gameTemp._bhud_position_active) {
this.visible = this.active;
// if ($gameSystem._bhud_auto_com) {
if ($gameTemp._bhud_auto_com) {
this.x = $gameTemp._bhud_position_active[0] + Moghunter.bhud_com_x;
if (this._com_mode === 0) {
this.y =
$gameTemp._bhud_position_active[1] +
Moghunter.bhud_com_y -
this.height;
} else {
this.y = $gameTemp._bhud_position_active[1] + Moghunter.bhud_com_y;
}
} else {
this.x = Moghunter.bhud_com_x;
this.y = Moghunter.bhud_com_y;
}
}
};
// //==============================
// // * Initialize
// //==============================
var _alias_mog_bhud_temp_initialize = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function () {
_alias_mog_bhud_temp_initialize.call(this);
this._bhud_position = [];
this._bhud_position_active = null;
this._bhudFaceAnime = false;
this._battleEnd = false;
this._bhud_dp = false;
this._refreshBhud = false;
this._forceCreateBattleHud = false;
this._forceRemoveBattleHud = false;
for (var i = 0; i < 8; i++) {
this._bhud_position[i] = this.set_hudcp(Moghunter.bhud_custom_pos[i]);
}
this._bhud_auto_com = false;
if (Number(Moghunter.bhud_auto_pos) == 0) {
this._bhud_auto_com = true;
}
};
//==============================
// ** update Battle Commands
//==============================
Window_ActorCommand.prototype.updateBattleCommands = function () {
if ($gameTemp._bhud_position_active) {
this.visible = this.active;
// if ($gameSystem._bhud_auto_com) {
if ($gameTemp._bhud_auto_com) {
this.x = $gameTemp._bhud_position_active[0] + Moghunter.bhud_com_x;
if (this._com_mode === 0) {
this.y =
$gameTemp._bhud_position_active[1] +
Moghunter.bhud_com_y -
this.height;
} else {
this.y = $gameTemp._bhud_position_active[1] + Moghunter.bhud_com_y;
}
} else {
this.x = Moghunter.bhud_com_x;
this.y = Moghunter.bhud_com_y;
}
}
};
//==============================
// * set Hudcp
//==============================
Game_Temp.prototype.set_hudcp = function (value) {
if (!value) {
return null;
}
var s = value.split(",");
if (!s[0] || !s[1]) {
return null;
}
return [Number(s[0]), Number(s[1])];
};
//==============================
// * Set Hud Position
//==============================
Battle_Hud.prototype.set_hud_position = function () {
this._hud_size = [this._layout.bitmap.width, this._layout.bitmap.height];
this._members_max = $gameParty.battleMembers().length;
var ps = [
Number(Moghunter.bhud_space_x) * this._hud_id,
Number(Moghunter.bhud_space_y) * this._hud_id,
];
// if ($gameSystem._bhud_position[this._hud_id]) {
// this._pos_x = $gameSystem._bhud_position[this._hud_id][0];
// this._pos_y = $gameSystem._bhud_position[this._hud_id][1];
if ($gameTemp._bhud_position[this._hud_id]) {
this._pos_x = $gameTemp._bhud_position[this._hud_id][0];
this._pos_y = $gameTemp._bhud_position[this._hud_id][1];
} else {
// if (Number($gameSystem._bhud_pos_mode) === 0) {
if (Number($gameTemp._bhud_pos_mode) === 0) {
var spc = (Graphics.boxWidth - 14) / this._members_max;
var px = spc / 2 + spc * this._hud_id;
this._pos_x = Moghunter.bhud_pos_x + px + ps[0];
this._pos_y = Moghunter.bhud_pos_y + ps[1];
} else {
var py = (this._hud_size[1] + 5) * this._hud_id;
this._pos_x = Moghunter.bhud_pos_x + ps[0];
this._pos_y = Moghunter.bhud_pos_y + py + ps[1];
}
}
$gameTemp._bhud_position[this._hud_id] = [this._pos_x, this._pos_y];
};
//==============================
// * Prepare
//==============================
var _alias_mog_bmhud_action_prepare = Game_Action.prototype.prepare;
Game_Action.prototype.prepare = function () {
_alias_mog_bmhud_action_prepare.call(this);
if (
this.subject().isActor() &&
(String(Moghunter.bhud_face_animated) === "true" ||
String(Moghunter.bhud_face_zoom) === "true")
) {
this.subject()._bhud_face_data = [0, 70, 2, 70];
}
};
//==============================
// * Update Face
//==============================
Battle_Hud.prototype.update_face = function () {
if (!this._face) {
return;
}
if (!this._face.bitmap.isReady()) {
return;
}
if (
this._face_data[4] &&
this._face_data[5] != this._battler._bhud_face_data[2]
) {
this.refresh_face();
}
if (String(Moghunter.bhud_face_animated) === "true") {
this.update_face_animation();
}
if (String(Moghunter.bhud_face_shake) === "true") {
this.update_face_shake();
}
if (String(Moghunter.bhud_face_zoom) === "true") {
this.update_face_zoom();
}
if (this._face.breathEffect) {
this.updateFaceEffects();
}
};
//==============================
// * Create States 2
//==============================
const _Battle_Hud_create_states2 = Battle_Hud.prototype.create_states2;
Battle_Hud.prototype.create_states2 = function () {
this._states_data[2] = 0;
_Battle_Hud_create_states2.call(this);
};
//==============================
// * Update States 2
//==============================
const _Battle_Hud_update_states2 = Battle_Hud.prototype.update_states2;
Battle_Hud.prototype.update_states2 = function () {
this._states_data[2] += 1;
_Battle_Hud_update_states2.call(this);
};
//==============================
// * Need Refresh States 2
//==============================
const _Battle_Hud_need_refresh_states2 =
Battle_Hud.prototype.need_refresh_states2;
Battle_Hud.prototype.need_refresh_states2 = function () {
if (this._states_data[2] > 60) {
return true;
}
_Battle_Hud_need_refresh_states2.call(this);
};
//==============================
// * Update HP
//==============================
Battle_Hud.prototype.update_hp = function () {
if (this._hp_meter_blue) {
if (this._hp_flow[0]) {
this.refresh_meter_flow(
this._hp_meter_blue,
this._battler.hp,
this._battler.mhp,
0,
this._hp_flow[1]
);
var dif_meter = this.update_dif(
this._hp_old_ani[0],
this._battler.hp,
160
);
if (this._hp_old_ani[0] != dif_meter) {
this._hp_old_ani[0] = dif_meter;
}
if (this._battler.mhp < this._hp_old_ani[0]) {
this.refresh_meter_flow(
this._hp_meter_red,
this._battler.mhp,
this._battler.mhp,
1,
this._hp_flow[1]
);
} else {
this.refresh_meter_flow(
this._hp_meter_red,
this._hp_old_ani[0],
this._battler.mhp,
1,
this._hp_flow[1]
);
}
this._hp_flow[1] += 1.5;
if (this._hp_flow[1] > this._hp_flow[3]) {
this._hp_flow[1] = 0;
}
} else {
if (this.need_refresh_parameter(0)) {
this.refresh_meter(
this._hp_meter_blue,
this._battler.hp,
this._battler.mhp,
0
);
this._hp_old = [this._battler.hp, this._battler.mhp];
}
var dif_meter = this.update_dif(
this._hp_old_ani[0],
this._battler.hp,
160
);
if (this._hp_old_ani[0] != dif_meter) {
this._hp_old_ani[0] = dif_meter;
}
if (this._battler.mhp < this._hp_old_ani[0]) {
this.refresh_meter(
this._hp_meter_red,
this._battler.mhp,
this._battler.mhp,
1
);
} else {
this.refresh_meter(
this._hp_meter_red,
this._hp_old_ani[0],
this._battler.mhp,
1
);
}
}
}
if (this._hp_number) {
var dif_number = this.update_dif(
this._hp_number_old,
this._battler.hp,
30
);
if (this._hp_number_old != dif_number) {
this._hp_number_old = dif_number;
this.refresh_number(
this._hp_number,
this._hp_number_old,
this._hp_img_data,
this._hp_img_data[4],
this._hp_img_data[5],
0
);
}
}
if (this._maxhp_number) {
if (this._maxhp_number_old != this._battler.mhp) {
this._maxhp_number_old = this._battler.mhp;
this.refresh_number(
this._maxhp_number,
this._maxhp_number_old,
this._maxhp_img_data,
this._maxhp_img_data[4],
this._maxhp_img_data[5],
0
);
}
}
};
//==============================
// * Update MP
//==============================
Battle_Hud.prototype.update_mp = function () {
if (this._mp_meter_blue) {
if (this._mp_flow[0]) {
this.refresh_meter_flow(
this._mp_meter_blue,
this._battler.mp,
this._battler.mmp,
0,
this._mp_flow[1]
);
var dif_meter = this.update_dif(
this._mp_old_ani[0],
this._battler.mp,
160
);
if (this._mp_old_ani[0] != dif_meter) {
this._mp_old_ani[0] = dif_meter;
}
if (this._battler.mmp < this._mp_old_ani[0]) {
this.refresh_meter_flow(
this._mp_meter_red,
this._battler.mmp,
this._battler.mmp,
1,
this._mp_flow[1]
);
} else {
this.refresh_meter_flow(
this._mp_meter_red,
this._mp_old_ani[0],
this._battler.mmp,
1,
this._mp_flow[1]
);
}
this._mp_flow[1] += 1.5;
if (this._mp_flow[1] > this._mp_flow[3]) {
this._mp_flow[1] = 0;
}
} else {
if (this.need_refresh_parameter(1)) {
this.refresh_meter(
this._mp_meter_blue,
this._battler.mp,
this._battler.mmp,
0
);
this._mp_old = [this._battler.mp, this._battler.mmp];
}
var dif_meter = this.update_dif(
this._mp_old_ani[0],
this._battler.mp,
160
);
if (this._mp_old_ani[0] != dif_meter) {
this._mp_old_ani[0] = dif_meter;
}
if (this._battler.mmp < this._mp_old_ani[0]) {
this.refresh_meter(
this._mp_meter_red,
this._battler.mmp,
this._battler.mmp,
1
);
} else {
this.refresh_meter(
this._mp_meter_red,
this._mp_old_ani[0],
this._battler.mmp,
1
);
}
}
if (this._mp_number) {
var dif_number = this.update_dif(
this._mp_number_old,
this._battler.mp,
30
);
if (this._mp_number_old != dif_number) {
this._mp_number_old = dif_number;
this.refresh_number(
this._mp_number,
this._mp_number_old,
this._mp_img_data,
this._mp_img_data[4],
this._mp_img_data[5],
1
);
}
}
if (this._maxmp_number) {
if (this._maxmp_number_old != this._battler.mmp) {
this._maxmp_number_old = this._battler.mmp;
this.refresh_number(
this._maxmp_number,
this._maxmp_number_old,
this._maxmp_img_data,
this._maxmp_img_data[4],
this._maxmp_img_data[5],
1
);
}
}
}
};
//==============================
// ** create Hud Field ** fixed by nekoma otobuki
//==============================
Scene_Base.prototype.createHudField = function () {
var width = Graphics.boxWidth;
var height = Graphics.boxHeight;
var x = (Graphics.width - width) / 2;
var y = (Graphics.height - height) / 2;
this._hudField = new Sprite();
this._hudField.setFrame(x, y, width, height);
this._hudField.z = 10;
this.addChild(this._hudField);
};
})();