889 lines
No EOL
31 KiB
JavaScript
889 lines
No EOL
31 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);
|
||
}; |