pastime/js/plugins/MOG_BossHP.js
2026-03-15 16:45:22 -05:00

889 lines
No EOL
30 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// 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);
};