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