mysecretsummervacation2/www/js/plugins/enemybars.js
2023-08-14 15:30:44 -05:00

166 lines
No EOL
5.6 KiB
JavaScript

//=============================================================================
// EnemyBars.js
//=============================================================================
//v1.1
/*:
* @plugindesc Makes enemy hp bar appear in battle.
* @author Jeremy Cannady
*
* @param High HP Color
* @desc Insert the color code.
* @default #009900
*
* @param Medium HP Color
* @desc Insert the color code.
* @default #ffcc00
*
* @param Low HP Color
* @desc Insert the color code.
* @default #ff6600
*
* @param Critical HP Color
* @desc Insert the color code.
* @default #ff3300
*
* @help
* Put <hpBar> in the enemy note tag to activate the hp bar for that enemy
during battle.
*Put <hpBarSelectionOnly> to actiavte the hp bar only during selection.
*Put<hpBarTurnASelection> to actiavet he bar during selection and attack.
*Put <hpBarTurnOnly> to only show the bar during the attack phase.
*PLEASE PUT ONLY ONE NOTETAG.
* For the paramters use any html hex color codes.
* A few color codes are:
Green: #009900
Yellow: #ffcc00
Orange: #ff6600
Red: #ff3300
White: #ffffff
Blue: #33ffff
Purple: #660099
*
*/
(function () {
//=============================================================================
// Create some variables and define the colors
//=============================================================================
Game_Enemy.prototype.battlerHeight = null;
Game_Enemy.prototype.battlerWidth = null;
var parameters = PluginManager.parameters('EnemyBars');
var high = parameters['High HP Color'] || '#009900';
var medium = parameters['Medium HP Color'] || '#ffcc00';
var low = parameters['Low HP Color'] || '#ff6600';
var critical = parameters['Critical HP Color'] || '#ff3300';
//=============================================================================
// Create the enemy hp window that displays all the hp bars
//=============================================================================
function Enemy_Bars() {
this.initialize.apply(this, arguments);
};
Enemy_Bars.prototype = Object.create(Window_Base.prototype);
Enemy_Bars.prototype.constructor = Enemy_Bars;
Enemy_Bars.prototype.initialize = function (x, y, width, height) {
Window_Base.prototype.initialize.call(this, x, y, width, height);
this.deactivate();
//Make the window transparent
this.opacity = 0;
};
Enemy_Bars.prototype.update = function () {
Window_Base.prototype.update.call(this);
//Clear the window and re-draw the hp bars
this.contents.clear();
this.drawBar();
};
//FUNCTION: return the color the hp bar should be based on current hp
Enemy_Bars.prototype.guageColor = function (rate) {
if (rate > 0.75) {
return high;//High hp color
} else if (rate > 0.50) {
return medium;//Medium hp color
} else if (rate > 0.25) {
return low;//Low hp color
} else {
return critical;//Critical hp color
};
};
//FUNCTION: draw the hp guage
Enemy_Bars.prototype.drawBar = function () {
//Go through the enemies and draw the bars
for (var i = 0; i < $gameTroop._enemies.length; i++) {
var enemyId = $gameTroop._enemies[i]._enemyId;
var selected = $gameTroop._enemies[i]._selected;
if (BattleManager._phase === "action" || BattleManager._phase === "turn") {
var turn = true
} else {
var turn = false
console.log(BattleManager._phase)
};
var enabled = false;
var meta = new Array(4);
meta[0] = $dataEnemies[enemyId].meta.hpBar
meta[1] = $dataEnemies[enemyId].meta.hpBarSelectionOnly
meta[2] = $dataEnemies[enemyId].meta.hpBarTurnASelection
meta[3] = $dataEnemies[enemyId].meta.hpBarTurnOnly
if (meta[0]) {
enabled = true;
} else if (meta[1] && selected) {
enabled = true;
} else if (meta[2] && (selected || turn)) {
enabled = true;
} else if (meta[3] && turn) {
enabled = true;
} else {
enabled = false;
}
//Current hp
var currentHp = $gameTroop._enemies[i]._hp;
//If the enemy hp is not zero then draw the hp bar
if (currentHp > 0 && enabled) {
//Max hp defined from the enemies parameters.
var maxHp = $dataEnemies[enemyId].params[0];
//Rate is the currnet hp compared to the max hp
var rate = currentHp / maxHp;
//Width of the bar
var width = $dataEnemies[enemyId].battlerWidth;
var xOffset = $dataEnemies[enemyId].battlerWidth / 2 + 16;
var x = $gameTroop._enemies[i]._screenX - xOffset;
var y = $gameTroop._enemies[i]._screenY - 32;
//Draw the guage
this.drawGauge(x, y, width, rate, this.guageColor(rate), this.guageColor(rate));
};
};
};
//=============================================================================
// Alias the Scene_Battle createAllWindows to add the hp window
//=============================================================================
var battleWindows = Scene_Battle.prototype.createAllWindows;
Scene_Battle.prototype.createAllWindows = function () {
battleWindows.call(this)
//Add the hp window to the battle scene
this.Bar = new Enemy_Bars(0, 0, Graphics.width, Graphics.height);
this.addChild(this.Bar);
};
//=============================================================================
// Alias the Sprite_Enemy.updateFrame to return information back to the hp window.
//=============================================================================
var copyOfSprite_EnemyupdateFrame = Sprite_Enemy.prototype.updateFrame;
Sprite_Enemy.prototype.updateFrame = function () {
Sprite_Battler.prototype.updateFrame.call(this);
copyOfSprite_EnemyupdateFrame.call(this);
//As we are updating the enemy sprites return the bitmaps height and width
$dataEnemies[this._enemy._enemyId].battlerHeight = this.bitmap.height;
$dataEnemies[this._enemy._enemyId].battlerWidth = this.bitmap.width;
};
})();