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