//============================================================================= // MOG_ATB_Gauge.js //============================================================================= /*: * @plugindesc (v1.0) Apresenta a Hud de ATB para MOG_ATB. * @author Moghunter * * @param Hud Angle * @desc Definição do ângulo da hud. * @default 0 * * @param Hud X-Axis * @desc Definição X-Axis da hud. * @default 740 * * @param Hud Y-Axis * @desc Definição Y-Axis da hud. * @default 45 * * @param Enemy X-Axis Offset * @desc Definição X-Axis offset do ícone dos inimigos. * @default 16 * * @param Actor X-Axis Offset * @desc Definição X-Axis offset do ícone dos aliados. * @default -16 * * @param Active X-Axis * @desc Definição X-Axis quando o battler está em turno. * @default -3 * * @param Active Y-Axis * @desc Definição Y-Axis quando o battler está em turno. * @default 30 * * @param Gauge Size * @desc Definição do tamanho do medidor. * @default 160 * * @param Skill Visible * @desc Apresentar o Ícone de habilidade. * @default true * * @param Skill Zoom * @desc Definição do zoom do ícone de habilidade. * @default 0.6 * * @param Skill X-Axis * @desc Definição X-Axis do ícone de habilidade. * @default 0 * * @param Skill Y-Axis * @desc Definição Y-Axis do ícone de habilidade. * @default 0 * * @help * ============================================================================= * +++ MOG - ATB Gauge (v1.0) +++ * By Moghunter * https://mogplugins.wordpress.com * ============================================================================= * Apresenta a Hud de ATB para MOG_ATB. * * ============================================================================= * IMAGES * ============================================================================= * As imagens deverão ser gravadas na pasta (img/atb/) * Para nomear o ícones dos battlers, nomeie da seguinte forma. * * Actor_ + ACTOR_ID.png * Enemy_ + ACTOR_ID.png * * Ex * * Actor_1.png * Actor_2.png * ... * Enemy_1.png * Enemy_2.png * ... */ //============================================================================= // ** PLUGIN PARAMETERS //=============================================================================   var Imported = Imported || {};   Imported.MOG_ATB_Gauge = true;   var Moghunter = Moghunter || {}; Moghunter.parameters = PluginManager.parameters('MOG_ATB_Gauge'); Moghunter.atbIconAngle = Number(Moghunter.parameters['Hud Angle'] || 0); Moghunter.atbIcon_GaugeX = Number(Moghunter.parameters['Hud X-Axis'] || 740); Moghunter.atbIcon_GaugeY = Number(Moghunter.parameters['Hud Y-Axis'] || 45); Moghunter.atbIcon_enemyX = Number(Moghunter.parameters['Enemy X-Axis Offset'] || 16); Moghunter.atbIcon_actorX = Number(Moghunter.parameters['Actor X-Axis Offset'] || -16); Moghunter.atbIcon_inTurnX = Number(Moghunter.parameters['Active X-Axis'] || -3); Moghunter.atbIcon_inTurnY = Number(Moghunter.parameters['Active Y-Axis'] || 30); Moghunter.atbIcon_GaugeSize = Number(Moghunter.parameters['Gauge Size'] || 160); Moghunter.atbIcon_SkillVisible = String(Moghunter.parameters['Skill Visible'] || 'true'); Moghunter.atbIcon_SkillScale = Number(Moghunter.parameters['Skill Zoom'] || 0.6); Moghunter.atbIcon_SkillX = Number(Moghunter.parameters['Skill X-Axis'] || 0); Moghunter.atbIcon_SkillY = Number(Moghunter.parameters['Skill Y-Axis'] || 0); //============================== // * load ATB Icon //============================== ImageManager.loadATBIcon = function(filename) { return this.loadBitmap('img/atb/', filename, 0, true); }; //============================================================================= // ** Game Temp //============================================================================= //============================== // * Initialize //============================== var _mog_atb_gTemp_initialize = Game_Temp.prototype.initialize Game_Temp.prototype.initialize = function() { _mog_atb_gTemp_initialize.call(this); this._refreshATBGauge = false;; }; //============================================================================= // ** 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(function(a, b){return a.mz-b.mz}); }; //============================================================================= // ** Scene Battle //============================================================================= //============================== // ** create Spriteset //============================== var _mog_atbGauge_sbattle_createSpriteset = Scene_Battle.prototype.createSpriteset; Scene_Battle.prototype.createSpriteset = function() { _mog_atbGauge_sbattle_createSpriteset.call(this); if (!this._hudField) {this.createHudField()}; this.createATBGauge(); this.sortMz(); }; //============================== // ** create ATB Gauge //============================== Scene_Battle.prototype.createATBGauge = function() { this._atbGauge = new ATB_Gauge() this._atbGauge.mz = 125; this._hudField.addChild(this._atbGauge); }; //============================== // ** remove ATB Gauge //============================== Scene_Battle.prototype.removeATBGauge = function() { if (!this._atbGauge) {return}; this._hudField.removeChild(this._atbGauge); }; //============================== // ** refresh ATB Gauge //============================== Scene_Battle.prototype.refreshATBGauge = function() { $gameTemp._refreshATBGauge = false; this.removeATBGauge(); this.createATBGauge(); }; //============================== // ** Update //============================== var _mog_atbGauge_Sbat_update = Scene_Battle.prototype.update; Scene_Battle.prototype.update = function() { _mog_atbGauge_Sbat_update.call(this); if ($gameTemp._refreshATBGauge) {this.refreshATBGauge()}; }; //============================================================================= // ** Spriteset Map //============================================================================= //============================================================================= // ** ATB Icon Gauge //============================================================================= function ATB_Gauge() { this.initialize.apply(this, arguments); }; ATB_Gauge.prototype = Object.create(Sprite.prototype); ATB_Gauge.prototype.constructor = ATB_Gauge; //============================== // * Initialize //============================== ATB_Gauge.prototype.initialize = function() { Sprite.prototype.initialize.call(this); this._angle = Moghunter.atbIconAngle * Math.PI / 180; this.rotation = this._angle; this._iconImg = ImageManager.loadSystem("IconSet"); this._skillIcon = String(Moghunter.atbIcon_SkillVisible) == "true" ? true : false; this.refreshBattlers(); this.createLayout(); this.createIcons(); }; //============================== // * refresh Battlers //============================== ATB_Gauge.prototype.refreshBattlers = function() { this._battlers = []; for (var i = 0; i < $gameParty.battleMembers().length; i++) { var battler = $gameParty.battleMembers()[i]; this._battlers.push(battler); }; for (var i = 0; i < $gameTroop.members().length; i++) { var battler = $gameTroop.members()[i]; this._battlers.push(battler); }; }; //============================== // * battlers //============================== ATB_Gauge.prototype.battlers = function() { if (this._battlers) {return this._battlers}; return []; }; //============================== // * At //============================== ATB_Gauge.prototype.atb = function(battler) { if (Imported.MOG_ATB) {return battler.atb()}; return -1; } //============================== // * Maxatb //============================== ATB_Gauge.prototype.maxatb = function(battler) { if (Imported.MOG_ATB) {return battler.maxAtb()}; return 1; }; //============================== // * Cast AT //============================== ATB_Gauge.prototype.cast_at = function(battler) { if (Imported.MOG_ATB) {return battler._cast_atb[1]}; return 0; }; //============================== // * Cast Max AT //============================== ATB_Gauge.prototype.cast_max_at = function(battler) { if (Imported.MOG_ATB) {return battler._cast_atb[2]}; return 1; }; //============================== // * Is Casting //============================== ATB_Gauge.prototype.is_casting = function(battler) { if (!battler) {return false}; if (Imported.MOG_ATB) {return battler.isCasting()}; return false; }; //============================== // * Is Max Atb //============================== ATB_Gauge.prototype.inTurn = function(battler) { if (!battler.isMaxAtb()) {return false}; if (!battler._intTurn) {return false} return true; }; //============================== // * Is Max Atb //============================== ATB_Gauge.prototype.is_max_at = function(battler) { return this.atb(battler) >= this.maxatb(battler); }; //============================== // * Is Max Cast //============================== ATB_Gauge.prototype.is_max_cast = function(battler) { return this.cast_at(battler) >= this.cast_max_at(battler); }; //============================== // * Item //============================== ATB_Gauge.prototype.item = function(battler) { if (!battler) {return null}; return battler._cast_atb[0]; return null }; //============================== // * Create Layout //============================== ATB_Gauge.prototype.createLayout = function() { this.x = Moghunter.atbIcon_GaugeX; this.y = Moghunter.atbIcon_GaugeY; this._layout = new Sprite(ImageManager.loadATBIcon("ATB_Gauge")); this._layout.anchor.x = 0.5; this.addChild(this._layout); }; //============================== // * Create Icons //============================== ATB_Gauge.prototype.createIcons = function() { this._iconField = new Sprite(); this.addChild(this._iconField); this._icons = []; this._skillIcons = []; for (var i = 0; i < this.battlers().length; i++) { var battler = this.battlers()[i]; if (battler.isActor()) { var name = "Actor_" + String(battler._actorId); } else { var name = "Enemy_" + String(battler._enemyId); }; this._icons[i] = new Sprite(ImageManager.loadATBIcon(name)); this._icons[i].battler = battler; this._icons[i].anchor.x = 0.5; this._icons[i].anchor.y = 0.5; this._icons[i].opacity = 0 this._icons[i].nx = 0; this._icons[i].ny = 0; this._icons[i].rotation = -this._angle this._iconField.addChild(this._icons[i]); if (this._skillIcon) {this.createSkillIcon(i,this._icons[i])}; }; }; //============================== // * Index //============================== ATB_Gauge.prototype.createSkillIcon = function(i,sprite) { this._skillIcons[i] = new Sprite(); this._skillIcons[i].item = null; this._skillIcons[i].org = [Moghunter.atbIcon_SkillX,Moghunter.atbIcon_SkillY]; this._skillIcons[i].scale.x = Moghunter.atbIcon_SkillScale; this._skillIcons[i].scale.y = Moghunter.atbIcon_SkillScale; this._skillIcons[i].rotation = this._icons[i].rotation; sprite.addChild(this._skillIcons[i]); }; //============================== // * Height EX //============================== ATB_Gauge.prototype.heightEX = function(battler,type) { return 1; }; //============================== // * update Icon //============================== ATB_Gauge.prototype.updateIcon = function(sprite,index) { var battler = sprite.battler; if (battler.isDead()) { sprite.opacity -= 15; } else { sprite.opacity += 15; if (this.is_casting(battler)) { var h = Moghunter.atbIcon_GaugeSize * this.cast_at(battler) / this.cast_max_at(battler); var h2 = this.heightEX(battler,1); } else { var h = Moghunter.atbIcon_GaugeSize * this.atb(battler) / this.maxatb(battler); var h2 = this.heightEX(battler,0); }; if (this.inTurn(battler)) { sprite.nx = Moghunter.atbIcon_inTurnX; sprite.ny = Moghunter.atbIcon_inTurnY; } else { sprite.nx = battler.isActor() ? Moghunter.atbIcon_actorX : Moghunter.atbIcon_enemyX; sprite.ny = this._layout.height - h + h2; }; }; sprite.x = this.mvto(sprite.x,sprite.nx); sprite.y = this.mvto(sprite.y,sprite.ny); if (this._skillIcon) {this.updateSkillIcon(this._skillIcons[index],sprite,battler)}; }; //============================== // * updateSkillIcon //============================== ATB_Gauge.prototype.updateSkillIcon = function(spriteskill,spriteicon,battler) { spriteskill.x = spriteskill.org[0]; spriteskill.y = spriteskill.org[1]; spriteskill.opacity = spriteicon.opacity; spriteskill.visible = spriteicon.visible; if (spriteskill.item != this.item(battler)) {this.refreshIconSkill(spriteskill,battler)}; }; //============================== // * refresh Icon Skill //============================== ATB_Gauge.prototype.refreshIconSkill = function(spriteskill,battler) { spriteskill.item = this.item(battler); if (spriteskill.item) { var iconIndex = spriteskill.item.iconIndex; var pw = Window_Base._iconWidth; var ph = Window_Base._iconHeight; var sx = iconIndex % 16 * pw; var sy = Math.floor(iconIndex / 16) * ph; spriteskill.bitmap = this._iconImg; spriteskill.setFrame(sx, sy, pw, ph); } else { spriteskill.bitmap = null; }; spriteskill.visible = spriteskill.item != null ? true : false; }; //============================== // * mv to //============================== ATB_Gauge.prototype.mvto = function(value,real_value) { if (value == real_value) {return value}; var dnspeed = 5 + (Math.abs(value - real_value) / 10); if (value > real_value) {value -= dnspeed; if (value < real_value) {value = real_value};} else if (value < real_value) {value += dnspeed; if (value > real_value) {value = real_value}; }; return Math.floor(value); }; //============================== // * need Fade //============================== ATB_Gauge.prototype.needFade = function() { if ($gameMessage.isBusy()) {return true}; if ($gameTemp._battleEnd) {return true}; if ($gameTemp._atbBattleEnd) {return true}; return false; }; //============================== // * Update Visible //============================== ATB_Gauge.prototype.updateVisible = function() { if (this.needFade()) { this.opacity -= 10; } else { this.opacity += 10; }; }; //============================== // * update Sort Y //============================== ATB_Gauge.prototype.updateSortY = function() { this._iconField.children.sort(function(b, a){return a.y-b.y}) }; //============================== // * update //============================== ATB_Gauge.prototype.update = function() { Sprite.prototype.update.call(this); this.updateVisible(); this.updateSortY(); for (var i = 0; i < this._icons.length; i++) { this.updateIcon(this._icons[i],i); }; };