brainwashing-school/js/plugins/MOG_BossHP.js
2025-02-25 10:53:19 -06:00

1043 lines
32 KiB
JavaScript

//=============================================================================
// MOG_BossHP.js
//=============================================================================
/*:
* @target MZ
* @plugindesc (v1.0) Apresenta um medidor de HP para os chefes.
* @author Moghunter
* @url https://mogplugins.wordpress.com
*
* @param Shake Effect
* @desc Ativar o efeito tremer.
* @default true
* @type boolean
*
* @param HP Number Visible
* @desc Apresentar o HP em numeros.
* @default true
* @type boolean
*
* @param Show Face
* @desc Apresentar a face do inimigo.
* @default true
* @type boolean
*
* @param Slant Animation
* @desc Ativar a animação de Flow no medidor de HP.
* @default true
* @type boolean
*
* @param Flow Speed
* @desc Definição da velocidade da animação.
* @default 4
* @type number
*
* @param Name Font Size
* @desc Definição do tamanho da fonte.
* @default 18
* @type number
*
* @param Layout X-Axis
* @desc Posição X-Axis do layout.
* @default 150
*
* @param Layout Y-Axis
* @desc Posição Y-Axis do layout.
* @default 10
*
* @param Name X-Axis
* @desc Posição X-Axis do numero.
* @default 36
*
* @param Name Y-Axis
* @desc Posição Y-Axis do numero.
* @default 23
*
* @param Face X-Axis
* @desc Posição X-Axis da face.
* @default -50
*
* @param Face Y-Axis
* @desc Posição Y-Axis da face.
* @default 10
*
* @param Meter X-Axis
* @desc Posição X-Axis do medidor.
* @default 22
*
* @param Meter Y-Axis
* @desc Posição Y-Axis do medidor.
* @default 28
*
* @param Number X-Axis
* @desc Posição X-Axis do número.
* @default 460
*
* @param Number Y-Axis
* @desc Posição Y-Axis do número.
* @default 32
*
* @param Number Percentage
* @desc Apresentar o número em porcentagem.
* @default false
* @type boolean
*
* @param Show States
* @desc Apresentar o ícones das codições.
* @default true
* @type boolean
*
* @param States Max
* @desc Número maximo dos ícones visiveis.
* @default 8
* @type number
*
* @param States X-axis
* @desc Posição X-Axis das codições.
* @default 50
*
* @param States Y-axis
* @desc Posição Y-Axis das codições.
* @default -8
*
* @command BossHP_Setup
* @desc Definição básica do medidor.
* @text Setup
*
* @arg x_axis
* @desc Define a posição X-Axis do medidor.
* @text X-Axis
* @default 150
*
* @arg y_axis
* @desc Define a posição Y-Axis do medidor.
* @text Y-Axis
* @default 150
*
* @arg visible
* @desc Apresentar o número de HP.
* @text Number Visible
* @default true
* @type boolean
*
* @help
* =============================================================================
* +++ MOG - Boss HP Meter (v1.0) +++
* By Moghunter
* https://mogplugins.wordpress.com
* =============================================================================
* Apresenta um medidor de HP para os chefes.
*
* =============================================================================
* - IMAGES
* =============================================================================
* Serão necessários os arquivos. (img/bosshp/)
*
* Boss_HP_A.png
* Boss_HP_A.png
* Boss_HP_C.png
* Boss_HP_D.png
*
* =============================================================================
* - ENEMIES NOTETAGS
* =============================================================================
* Use a Tag abaixo na caixa de notas para definir quais os inimigos terão o
* medidor de chefe.
*
* Boss HP
*
* =============================================================================
* - FACE NAME
* =============================================================================
* Nomeie as faces dos inimigos da seguinte maneira.
*
* Face_ + ID.png
*
* EG
*
* Face_1.png
* Face_2.png
* Face_3.png
* ....
*
*/
//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
var Imported = Imported || {};
Imported.MOG_BossHP = true;
var Moghunter = Moghunter || {};
Moghunter.parameters = PluginManager.parameters("MOG_BossHP");
Moghunter.bosshp_flowAnimation = String(
Moghunter.parameters["Slant Animation"] || "true"
);
Moghunter.bosshp_flowAnimationSpeed = Number(
Moghunter.parameters["Flow Speed"] || 4
);
Moghunter.bosshp_face = String(Moghunter.parameters["Show Face"] || "true");
Moghunter.bosshp_faceX = Number(Moghunter.parameters["Face X-Axis"] || -50);
Moghunter.bosshp_faceY = Number(Moghunter.parameters["Face Y-Axis"] || 10);
Moghunter.bosshp_layout_x = Number(
Moghunter.parameters["Layout X-Axis"] || 150
);
Moghunter.bosshp_layout_y = Number(Moghunter.parameters["Layout Y-Axis"] || 10);
Moghunter.bosshp_meter_x = Number(Moghunter.parameters["Meter X-Axis"] || 22);
Moghunter.bosshp_meter_y = Number(Moghunter.parameters["Meter Y-Axis"] || 28);
Moghunter.bosshp_number_perMode = String(
Moghunter.parameters["Number Percentage"] || "false"
);
Moghunter.bosshp_number_x = Number(
Moghunter.parameters["Number X-Axis"] || 460
);
Moghunter.bosshp_number_y = Number(Moghunter.parameters["Number Y-Axis"] || 32);
Moghunter.bosshp_name_x = Number(Moghunter.parameters["Name X-Axis"] || 36);
Moghunter.bosshp_name_y = Number(Moghunter.parameters["Name Y-Axis"] || 23);
Moghunter.bosshp_font_size = Number(
Moghunter.parameters["Name Font Size"] || 18
);
Moghunter.bosshp_shake_effect = String(
Moghunter.parameters["Shake Effect"] || "true"
);
Moghunter.bosshp_hp_number_visible = String(
Moghunter.parameters["HP Number Visible"] || "true"
);
Moghunter.bosshp_states = String(Moghunter.parameters["Show States"] || "true");
Moghunter.bosshp_statesN = Number(Moghunter.parameters["States Max"] || 8);
Moghunter.bosshp_statesX = Number(Moghunter.parameters["States X-axis"] || 50);
Moghunter.bosshp_statesY = Number(Moghunter.parameters["States Y-axis"] || -8);
//=============================================================================
// ■■■ PluginManager ■■■
//=============================================================================
PluginManager.registerCommand("MOG_BossHP", "BossHP_Setup", (data) => {
var vis = String(data.visible) == "true" ? true : false;
var x = Number(data.x_axis);
var y = Number(data.y_axis);
$gameSystem._bosshp_data[0] = x;
$gameSystem._bosshp_data[1] = y;
$gameSystem._bosshp_data[2] = vis;
$gameSystem._battler_bhp_refresh3 = true;
});
//=============================================================================
// ■■■ ImageManager ■■■
//=============================================================================
//==============================
// * Boss Hp
//==============================
ImageManager.loadBossHp = function (filename) {
return this.loadBitmap("img/bosshp/", filename, 0, true);
};
//=============================================================================
// ■■■ Game_Temp ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Initialize
//==============================
var _mog_bosshp_temp_initialize = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function () {
_mog_bosshp_temp_initialize.call(this);
this._battler_bhp_temp = [null, 0, false, 0];
this._battler_bhp_refresh = false;
this._battler_bhp_refresh2 = false;
this._battler_bhp_refresh3 = true;
this._battler_bhp_remove = false;
this._forceCreateBossHud = false;
this._forceRemoveBossHud = false;
};
//=============================================================================
// ■■■ Game_System ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Initialize
//==============================
var _mog_bosshp_sys_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function () {
_mog_bosshp_sys_initialize.call(this);
this._bosshp_data = [
Moghunter.bosshp_layout_x,
Moghunter.bosshp_layout_y,
Moghunter.bosshp_hp_number_visible,
];
this._battler_bhp_oldNumber = [0, 0];
};
//==============================
// * Check Boss HP Enemies
//==============================
Game_System.prototype.checkBossHpEnemies = function () {
var boss = null;
$gameTroop.members().forEach(function (enemy) {
if (enemy._bosshp_meter) {
boss = enemy;
}
}, this);
return boss;
};
//=============================================================================
// ■■■ BattleManager ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ processVictory
//==============================
var _mog_bosshp_processVictory = BattleManager.processVictory;
BattleManager.processVictory = function () {
$gameTemp._battler_bhp_temp[2] = true;
_mog_bosshp_processVictory.call(this);
};
//==============================
// ♦ ALIAS ♦ processAbort
//==============================
var _mog_bosshp_processAbort = BattleManager.processAbort;
BattleManager.processAbort = function () {
$gameTemp._battler_bhp_temp[2] = true;
_mog_bosshp_processAbort.call(this);
};
//==============================
// ♦ ALIAS ♦ processDefeat
//==============================
var _mog_bosshp_processDefeat = BattleManager.processDefeat;
BattleManager.processDefeat = function () {
$gameTemp._battler_bhp_temp[2] = true;
_mog_bosshp_processDefeat.call(this);
};
//=============================================================================
// ■■■ Game Battler ■■■
//=============================================================================
//==============================
// * Notetags
//==============================
Game_Battler.prototype.notetags = function () {
if (this.isEnemy()) {
return this.enemy().note.split(/[\r\n]+/);
}
if (this.isActor()) {
return this.actor().note.split(/[\r\n]+/);
}
};
//==============================
// ♦ ALIAS ♦ Appear
//==============================
var _mog_bhp_gbat_appear = Game_BattlerBase.prototype.appear;
Game_BattlerBase.prototype.appear = function () {
_mog_bhp_gbat_appear.call(this);
$gameTemp._battler_bhp_refresh = true;
};
//=============================================================================
// ■■■ Game BattlerBase ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Initialize
//==============================
var _mog_bossHP_gbat_initMembers = Game_BattlerBase.prototype.initMembers;
Game_BattlerBase.prototype.initMembers = function () {
_mog_bossHP_gbat_initMembers.call(this);
this.need_refresh_bhud_states = false;
this._nrsBoss = false;
};
//==============================
// * addNewState
//==============================
var _mog_bossHP_addNewState = Game_BattlerBase.prototype.addNewState;
Game_BattlerBase.prototype.addNewState = function (stateId) {
_mog_bossHP_addNewState.call(this, stateId);
this._nrsBoss = true;
};
//==============================
// * eraseState
//==============================
var _mog_bossHP_eraseState = Game_BattlerBase.prototype.eraseState;
Game_BattlerBase.prototype.eraseState = function (stateId) {
_mog_bossHP_eraseState.call(this, stateId);
this._nrsBoss = true;
};
//=============================================================================
// ■■■ Game_Enemy ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ initMembers
//==============================
var _alias_mog_bosshp_initMembers = Game_Enemy.prototype.initMembers;
Game_Enemy.prototype.initMembers = function () {
_alias_mog_bosshp_initMembers.call(this);
this._bosshp_meter = false;
};
//==============================
// ♦ ALIAS ♦ Setup
//==============================
var _alias_mog_bosshp_setup = Game_Enemy.prototype.setup;
Game_Enemy.prototype.setup = function (enemyId, x, y) {
_alias_mog_bosshp_setup.call(this, enemyId, x, y);
this.checkBossHPnoteTag();
};
//==============================
// * Setup
//==============================
Game_Enemy.prototype.checkBossHPnoteTag = function () {
for (var i = 0; i < this.notetags().length; i++) {
if (this.notetags()[i] == "Boss HP") {
this._bosshp_meter = true;
}
}
};
//==============================
// ♦ ALIAS ♦ transform
//==============================
var _mog_bosshp_enemy_transform = Game_Enemy.prototype.transform;
Game_Enemy.prototype.transform = function (enemyId) {
_mog_bosshp_enemy_transform.call(this, enemyId);
$gameTemp._battler_bhp_refresh = true;
this.checkBossHPnoteTag();
};
//=============================================================================
// ■■■ Game Action ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Apply
//==============================
var _alias_mog_bosshp_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function (target) {
if (target.isEnemy() && target._bosshp_meter) {
$gameTemp._battler_bhp_temp[1] = target.hp;
var old_hp = target.hp;
$gameTemp._battler_bhp_temp[3] = 0;
}
_alias_mog_bosshp_apply.call(this, target);
if (target.isEnemy() && target._bosshp_meter) {
$gameTemp._battler_bhp_temp[0] = target;
if (old_hp > target.hp) {
$gameTemp._battler_bhp_temp[3] = 60;
}
}
};
//=============================================================================
// ■■■ Scene Base ■■■
//=============================================================================
//==============================
// ** create Hud Field
//==============================
Scene_Base.prototype.createHudField = function () {
this._hudField = new Sprite();
this._hudField.z = 10;
this.addChild(this._hudField);
};
//==============================
// ** sort MZ
//==============================
Scene_Base.prototype.sortMz = function () {
this._hudField.children.sort((a, b) => a.z - b.z);
};
//==============================
// * Create Boss HP Sprites
//==============================
Scene_Base.prototype.createBossHPGauge = function () {
$gameTemp._battler_bhp_refresh = false;
var init_battler = $gameSystem.checkBossHpEnemies();
this.removeBossHPGauge();
if (init_battler) {
if (!this._bosshp_sprites) {
this.removeBossHPGauge();
this._bosshp_sprites = new Sprite_BossHP(init_battler);
this._bosshp_sprites.z = 130;
this._hudField.addChild(this._bosshp_sprites);
}
}
this.sortMz();
};
//==============================
// ** remove Boss HP Gauge
//==============================
Scene_Base.prototype.removeBossHPGauge = function () {
$gameTemp._battler_bhp_remove = false;
if (!this._bosshp_sprites) {
return;
}
this._hudField.removeChild(this._bosshp_sprites);
this._bosshp_sprites = null;
};
//=============================================================================
// ■■■ Scene Battle ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ create Spriteset
//==============================
var _mog_bossHP_sbattle_createSpriteset =
Scene_Battle.prototype.createSpriteset;
Scene_Battle.prototype.createSpriteset = function () {
_mog_bossHP_sbattle_createSpriteset.call(this);
if (!this._hudField) {
this.createHudField();
}
this.createBossHPGauge();
this.sortMz();
};
//==============================
// ♦ ALIAS ♦ update
//==============================
var _mog_bossHP_sbattle_update = Scene_Battle.prototype.update;
Scene_Battle.prototype.update = function () {
_mog_bossHP_sbattle_update.call(this);
if ($gameTemp._forceCreateBossHud) {
this.recreateBossHP();
}
};
//==============================
// ** recreate Boss HP
//==============================
Scene_Battle.prototype.recreateBossHP = function () {
$gameTemp._forceCreateBossHud = false;
this.createBossHPGauge();
};
//=============================================================================
// ■■■ Sprite_BossHP ■■■
//=============================================================================
function Sprite_BossHP() {
this.initialize.apply(this, arguments);
}
Sprite_BossHP.prototype = Object.create(Sprite.prototype);
Sprite_BossHP.prototype.constructor = Sprite_BossHP;
//==============================
// * Initialize
//==============================
Sprite_BossHP.prototype.initialize = function (init_battler) {
Sprite.prototype.initialize.call(this);
this._init = true;
this.opacity = 0;
$gameTemp._battler_bhp_temp = [init_battler, init_battler.hp, false, 0];
this._flowAnimation =
String(Moghunter.bosshp_flowAnimation) === "true" ? true : false;
this._battler = init_battler;
this._hp_data = [
-1,
-1,
0,
0,
0,
0,
0,
0,
0,
Number($gameSystem._bosshp_data[0]),
Number($gameSystem._bosshp_data[1]),
false,
true,
];
this._hp_perMode =
String(Moghunter.bosshp_number_perMode) === "true" ? true : false;
this._xf = -(816 - Graphics.width);
this._yf = 0;
this.createSprites();
if (String(Moghunter.bosshp_shake_effect) === "true") {
this._hp_data[11] = true;
}
if (String($gameSystem._bosshp_data[2]) != "true") {
this._hp_data[12] = false;
}
};
//==============================
// * create Sprites
//==============================
Sprite_BossHP.prototype.createSprites = function () {
this.x = this._hp_data[9] + this._xf;
this.y = this._hp_data[10] + this._yf;
this.createLayout();
this.createHPMeter();
if (String(Moghunter.bosshp_face) === "true") {
this.createFace();
}
this.createHPNumber();
if (String(Moghunter.bosshp_states) === "true") {
this.createStates();
}
this.createName();
};
//==============================
// * createLayout
//==============================
Sprite_BossHP.prototype.createLayout = function () {
this._layout = new Sprite(ImageManager.loadBossHp("Boss_HP_A"));
this.addChild(this._layout);
};
//==============================
// * create States
//==============================
Sprite_BossHP.prototype.createStates = function () {
this._states_data = [0, 0, 0];
this._stateIcons = [];
this._stateImg = ImageManager.loadSystem("IconSet");
this._state_icon = new Sprite();
this._state_icon.x = Number(Moghunter.bosshp_statesX);
this._state_icon.y = Number(Moghunter.bosshp_statesY);
this._state_icon.visible = false;
this.addChild(this._state_icon);
this.refreshStates();
};
//==============================
// * refresh States
//==============================
Sprite_BossHP.prototype.refreshStates = function () {
this._state_icon.visible = false;
this._battler._nrsBoss = false;
for (i = 0; i < this._stateIcons.length; i++) {
this._state_icon.removeChild(this._stateIcons[i]);
}
this._stateIcons = [];
if (this._battler.allIcons().length == 0 || this._battler.isDead()) {
return;
}
this._state_icon.visible = true;
var w = Window_Base._iconWidth;
var icons = this._battler.allIcons().slice(0, w);
var m = Math.min(
Math.max(this._battler.allIcons().length, 0),
Moghunter.bosshp_statesN
);
for (i = 0; i < m; i++) {
this._stateIcons[i] = new Sprite(this._stateImg);
var sx = (icons[i] % 16) * w;
var sy = Math.floor(icons[i] / 16) * w;
this._stateIcons[i].setFrame(sx, sy, w, w);
this._stateIcons[i].x = (w + 4) * i;
this._state_icon.addChild(this._stateIcons[i]);
}
};
//==============================
// * Update States
//==============================
Sprite_BossHP.prototype.updateStates = function () {
if (this._battler._nrsBoss) {
this.refreshStates();
}
};
//==============================
// * create Face
//==============================
Sprite_BossHP.prototype.createFace = function () {
this._face = new Sprite();
this.addChild(this._face);
this.refreshFace();
this.updateFace();
};
//==============================
// * update Face
//==============================
Sprite_BossHP.prototype.updateFace = function () {
this._face.x = Moghunter.bosshp_faceX;
this._face.y = Moghunter.bosshp_faceY;
this._face.visible = this._layout.visible;
};
//==============================
// * refresh Face
//==============================
Sprite_BossHP.prototype.refreshFace = function () {
this._face.bitmap = ImageManager.loadBossHp(
"Face_" + String(this._battler._enemyId)
);
};
//==============================
// * create HP Meter
//==============================
Sprite_BossHP.prototype.createHPMeter = function () {
this._hp_meter_red = new Sprite(ImageManager.loadBossHp("Boss_HP_B"));
this._hp_meter_red.x = Moghunter.bosshp_meter_x;
this._hp_meter_red.y = Moghunter.bosshp_meter_y;
this._hp_meter_redFlow = [-1, 0, 0, 0];
this._hp_meter_red.setFrame(0, 0, 1, 1);
this.addChild(this._hp_meter_red);
this._hp_meter_blue = new Sprite(ImageManager.loadBossHp("Boss_HP_B"));
this._hp_meter_blue.x = this._hp_meter_red.x;
this._hp_meter_blue.y = this._hp_meter_red.y;
this._hp_meter_blueFlow = [-1, 0, 0, 0];
this._hp_meter_blue.setFrame(0, 0, 1, 1);
this.addChild(this._hp_meter_blue);
};
//==============================
// * create HP Number
//==============================
Sprite_BossHP.prototype.createHPNumber = function () {
this._hp_number = [];
this._hp_number_data = [];
this._hp_number_img = ImageManager.loadBossHp("Boss_HP_C");
for (var i = 0; i < 6; i++) {
this._hp_number[i] = new Sprite(this._hp_number_img);
this._hp_number[i].visible = false;
this._hp_number[i].x = Moghunter.bosshp_number_x;
this._hp_number[i].y = Moghunter.bosshp_number_y;
this._hp_number_data[i] = 0;
this.addChild(this._hp_number[i]);
}
if (this._hp_perMode) {
this.createPerc();
}
};
//==============================
// * create Per
//==============================
Sprite_BossHP.prototype.createPerc = function () {
this._perSprite = new Sprite(ImageManager.loadBossHp("Boss_HP_D"));
this.addChild(this._perSprite);
};
//==============================
// * create Name
//==============================
Sprite_BossHP.prototype.createName = function () {
this._name = new Sprite(new Bitmap(300, 48));
this.addChild(this._name);
this._name.bitmap.fontSize = Moghunter.bosshp_font_size;
this.refresh_name();
this._name.x = Moghunter.bosshp_name_x;
this._name.y = Moghunter.bosshp_name_y;
};
//==============================
// * get Sprite Data
//==============================
Sprite_BossHP.prototype.getSpriteData = function () {
this._hp_meter_blueFlow[0] = this._flowAnimation
? this._hp_meter_blue.bitmap.width / 3
: this._hp_meter_blue.bitmap.width;
this._hp_meter_blueFlow[1] = this._hp_meter_blue.bitmap.height;
this._hp_meter_blueFlow[2] = this._hp_meter_blueFlow[0] * 2;
this._hp_meter_blueFlow[3] = 0;
this._hp_meter_redFlow[0] = this._flowAnimation
? this._hp_meter_red.bitmap.width / 3
: this._hp_meter_red.bitmap.width;
this._hp_meter_redFlow[1] = this._hp_meter_red.bitmap.height;
this._hp_meter_redFlow[2] = this._hp_meter_redFlow[0] * 2;
this._hp_meter_redFlow[3] = 0;
};
//==============================
// * Update
//==============================
Sprite_BossHP.prototype.update = function () {
Sprite.prototype.update.call(this);
if (this._hp_meter_blueFlow[0] === -1) {
if (this._layout.bitmap.isReady()) {
this.getSpriteData();
} else {
return;
}
}
if (this._flowAnimation) {
this.updateFlowAnimation();
}
if ($gameTemp._battler_bhp_temp[3] != 0) {
this.refreshShake();
}
if (this.need_fadeSprites()) {
this.updateFade(5);
} else {
this.updateFade(-5);
}
if ($gameTemp._battler_bhp_temp[0] != this._battler) {
this.refresh_all();
}
if (this._flowAnimation) {
this.refresh_blue_meter();
} else if (
this._hp_data[0] != this._battler.hp ||
this._hp_data[1] != this._battler.mhp
) {
this.refresh_blue_meter();
}
if (this._hp_data[2] != this._battler.hp) {
this.refresh_red_meter();
}
if (this._hp_data[6] != this._battler.hp) {
this.update_hp_number();
}
if (this._hp_data[11]) {
this.update_shake_effect();
}
if (this._face) {
this.updateFace();
}
if (this._state_icon) {
this.updateStates();
}
if ($gameSystem._battler_bhp_refresh3) {
this.refreshPluginCommand();
}
$gameSystem._battler_bhp_refresh3 = false;
this._init = false;
};
//==============================
// * refreshPluginCommand
//==============================
Sprite_BossHP.prototype.refreshPluginCommand = function () {
this._hp_data[9] = Number($gameSystem._bosshp_data[0]);
this._hp_data[10] = Number($gameSystem._bosshp_data[1]);
this._hp_data[12] = Number($gameSystem._bosshp_data[2]);
this.x = this._hp_data[9] + this._xf;
this.y = this._hp_data[10] + this._yf;
if (!this._hp_data[12]) {
for (var i = 0; i < this._hp_number.length; i++) {
this._hp_number[i].visible = false;
}
} else {
this.refresh_hp_number();
}
};
//==============================
// * refresh Shake
//==============================
Sprite_BossHP.prototype.refreshShake = function () {
this._hp_data[7] = $gameTemp._battler_bhp_temp[3];
$gameTemp._battler_bhp_temp[3] = 0;
};
//==============================
// * Update Flow Animation
//==============================
Sprite_BossHP.prototype.updateFlowAnimation = function () {
this._hp_meter_blueFlow[3] += Moghunter.bosshp_flowAnimationSpeed;
if (this._hp_meter_blueFlow[3] > this._hp_meter_blueFlow[2]) {
this._hp_meter_blueFlow[3] = 0;
}
this._hp_meter_redFlow[3] += Moghunter.bosshp_flowAnimationSpeed;
if (this._hp_meter_redFlow[3] > this._hp_meter_redFlow[2]) {
this._hp_meter_redFlow[3] = 0;
}
};
//==============================
// * Update Shake Effect
//==============================
Sprite_BossHP.prototype.update_shake_effect = function () {
if (this._hp_data[7] <= 0) {
return;
}
this._hp_data[7] -= 1;
this.y = -3 + this._hp_data[10] + Math.floor(Math.random() * 6) + this._yf;
if (this._hp_data[7] <= 0) {
this.y = this._hp_data[10] + this._yf;
}
};
//==============================
// * Update HP Number
//==============================
Sprite_BossHP.prototype.update_hp_number = function () {
if (!this._hp_data[12]) {
return;
}
if (this._init && $gameSystem._battler_bhp_oldNumber[1] != 0) {
this._hp_data[6] = $gameSystem._battler_bhp_oldNumber[1];
$gameSystem._battler_bhp_oldNumber[1] = 0;
}
var nspd = 1 + Math.floor(Math.abs(this._hp_data[6] - this._battler.hp) / 30);
if (this._hp_data[6] < this._battler.hp) {
this._hp_data[6] += nspd;
if (this._hp_data[6] > this._battler.hp) {
this._hp_data[6] = this._battler.hp;
}
} else if (this._hp_data[6] > this._battler.hp) {
this._hp_data[6] -= nspd;
if (this._hp_data[6] < this._battler.hp) {
this._hp_data[6] = this._battler.hp;
}
}
this.refresh_hp_number();
};
//==============================
// * Refresh HP Number
//==============================
Sprite_BossHP.prototype.refresh_hp_number = function () {
var w = this._hp_number_img.width / 10;
var h = this._hp_number_img.height;
if (this._hp_perMode) {
var value = Math.floor((this._hp_data[6] / this._battler.mhp) * 100);
} else {
var value = this._hp_data[6];
}
this._hp_data[4] = Math.abs(value).toString().split("");
if (this._hp_data[4].length > this._hp_number.length) {
return;
}
if (this._hp_data[4].length != this._hp_data[5]) {
for (var i = 0; i < 6; i++) {
this._hp_number[i].visible = false;
}
this._hp_data[5] = this._hp_data[4].length;
}
for (var i = 0; i < this._hp_data[4].length; i++) {
var n = Number(this._hp_data[4][i]);
this._hp_number[i].setFrame(n * w, 0, w, h);
this._hp_number[i].visible = true;
var nx = -(w * i) + w * this._hp_data[4].length;
this._hp_number[i].x = Moghunter.bosshp_number_x - nx;
}
if (this._perSprite) {
this._perSprite.x = Moghunter.bosshp_number_x + 4;
this._perSprite.y = Moghunter.bosshp_number_y;
}
};
//==============================
// * Refresh Name
//==============================
Sprite_BossHP.prototype.refresh_name = function () {
this._name.bitmap.clear();
this._name.bitmap.drawText(
this._battler.enemy().name,
0,
0,
this._name.bitmap.width,
this._name.bitmap.height,
0
);
};
//==============================
// * Need Fade Sprites
//==============================
Sprite_BossHP.prototype.need_fadeSprites = function () {
if ($gameMessage.isBusy()) {
return true;
}
if ($gameTemp._battler_bhp_temp[2]) {
return true;
}
if (!this._battler) {
return true;
}
if (this._battler.isDead()) {
return true;
}
if (this._battler.isHidden()) {
return true;
}
return false;
};
//==============================
// * Fade Sprites
//==============================
Sprite_BossHP.prototype.updateFade = function (value) {
this.opacity -= value;
};
//==============================
// * Refresh All
//==============================
Sprite_BossHP.prototype.refresh_all = function () {
this._battler = $gameTemp._battler_bhp_temp[0];
this._hp_data[2] = $gameTemp._battler_bhp_temp[1];
this._hp_data[6] = $gameTemp._battler_bhp_temp[1];
this.refresh_hp_number();
this.refresh_blue_meter();
this.refresh_red_meter();
this.refresh_name();
if (this._face) {
this.refreshFace();
}
if (this._state_icon) {
this.refreshStates();
}
};
//==============================
// * Refresh Blue Meter
//==============================
Sprite_BossHP.prototype.refresh_blue_meter = function () {
this._hp_data[0] = this._battler.hp;
this._hp_data[1] = this._battler.mhp;
this.y = this._hp_data[10];
var meter_rate =
(this._hp_meter_blueFlow[0] * this._battler.hp) / this._battler.mhp;
this._hp_meter_blue.setFrame(
this._hp_meter_blueFlow[3],
0,
meter_rate,
this._hp_meter_blue.bitmap.height / 2
);
};
//==============================
// * Refresh Red Meter
//==============================
Sprite_BossHP.prototype.refresh_red_meter = function () {
if (this._init) {
if ($gameSystem._battler_bhp_oldNumber[0] != 0) {
this._hp_data[2] = $gameSystem._battler_bhp_oldNumber[0];
$gameSystem._battler_bhp_oldNumber[0] = 0;
} else {
this._hp_data[2] = this._battler.mhp;
}
}
var dnspeed = 1 + Math.abs(this._hp_data[2] - this._battler.hp) / 160;
if (this._hp_data[2] > this._battler.hp) {
this._hp_data[2] -= dnspeed;
if (this._hp_data[2] < this._battler.hp) {
this._hp_data[2] = this._battler.hp;
}
} else if (this._hp_data[2] < this._battler.hp) {
this._hp_data[2] += dnspeed;
if (this._hp_data[2] > this._battler.hp) {
this._hp_data[2] = this._battler.hp;
}
}
var meter_rate =
(this._hp_meter_redFlow[0] * this._hp_data[2]) / this._battler.mhp;
this._hp_meter_red.setFrame(
this._hp_meter_redFlow[3],
this._hp_meter_red.bitmap.height / 2,
meter_rate,
this._hp_meter_red.bitmap.height / 2
);
};