//============================================================================= // 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 in the enemy note tag to activate the hp bar for that enemy during battle. *Put to actiavte the hp bar only during selection. *Put to actiavet he bar during selection and attack. *Put 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 - 220; //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; }; })();