//============================================================================= // MOG_BattleCursor.js //============================================================================= /*: * @target MZ * @plugindesc (v1.0) Adiciona o cursor do alvo. * @author Moghunter * @url https://mogplugins.wordpress.com * * @param -> GENERAL * @desc * * @param Target Window * @parent -> GENERAL * @text Show Window (Target) * @desc Apresentar a janela de seleção de alvos. * @type boolean * @default false * * @param Slide Effect * @parent -> GENERAL * @text Slide Animation * @desc Animação de deslize. * @type boolean * @default true * * @param Move Speed * @parent -> GENERAL * @text Slide Speed % * @desc Velocidade de movimento do cursor. * (30%...300%) * @default 100 * @type number * @min 30 * @max 300 * * @param Float Effect * @parent -> GENERAL * @text Float Animation * @desc Animação de flutuar. * @type boolean * @default true * * @param Align for Actor * @parent -> GENERAL * @desc Definição do alinhamento do cursor nos aliados. * @text Align (Actor) * @type select * @default Above * @option Below * @value Below * @option Center * @value Center * @option Above * @value Above * @option Left * @value Left * @option Right * @value Right * * @param Align for Enemy * @parent -> GENERAL * @desc Definição do alinhamento do cursor nos inimigos. * @text Align (Enemy) * @type select * @default Center * @option Below * @value Below * @option Center * @value Center * @option Above * @value Above * @option Left * @value Left * @option Right * @value Right * * @param X-Axis Offset Actor * @parent -> GENERAL * @text X-Axis Offset (Actor) * @desc Definição X-axis do cursor nos aliados. * @default 0 * * @param Y-Axis Offset Actor * @parent -> GENERAL * @text Y-Axis Offset (Actor) * @desc Definição Y-axis do cursor nos aliados. * @default 0 * * @param X-Axis Offset Enemy * @parent -> GENERAL * @text X-Axis Offset (Enemy) * @desc Definição X-axis do cursor nos inimigos. * @default 0 * * @param Y-Axis Offset Enemy * @parent -> GENERAL * @text Y-Axis Offset (Enemy) * @desc Definição Y-axis do cursor nos inimigos. * @default 0 * * @param ----------------------- * @desc * * @param -> NAME * @desc * * @param Name Visible * @parent -> NAME * @text Show Name * @desc Apresentar o nome do alvo. * @type boolean * @default true * * @param Font Size * @parent -> NAME * @text Font Size * @desc Tamanho da fonte * @default 18 * @type number * @min 9 * @max 48 * * @param Font Bold * @parent -> NAME * @text Font Bold * @desc Ativar texto em negrito. * @type boolean * @default false * * @param Font Italic * @parent -> NAME * @text Font Italic * @desc Ativar texto em Itálico. * @type boolean * @default false * * @param Name X-Axis Actor * @parent -> NAME * @text X-Axis Offset (Actor) * @desc Definição X-axis do nome nos aliados. * @default 0 * * @param Name Y-Axis Actor * @parent -> NAME * @text Y-Axis Offset (Actor) * @desc Definição Y-axis do nome nos aliados. * @default 0 * * @param Name X-Axis Enemy * @parent -> NAME * @text X-Axis Offset (Enemy) * @desc Definição X-axis do nome nos inimigos. * @default 0 * * @param Name Y-Axis Enemy * @parent -> NAME * @text Y-Axis Offset (Enemy) * @desc Definição Y-axis do nome nos inimigos. * @default 0 * * @param ------------------------ * @desc * * @param -> ANIMATED * @desc * * @param Animated * @parent -> ANIMATED * @text Spriteset Animation * @desc Ativar animação por frames. * @type boolean * @default false * * @param Frames * @parent -> ANIMATED * @text Frames * @desc Definição da quantidade de frames. * (2..100) * @type number * @default 3 * @min 2 * @max 100 * * @param Animation Speed * @parent -> ANIMATED * @text Animation Speed * @desc Definição da velocidade da animação. * (2..240) * @type number * @default 8 * @min 2 * @max 240 * * @help * ============================================================================= * ♦♦♦ MOG - Battle Cursor ♦♦♦ * Author - Moghunter * Version - 1.0 * Updated - 2021/04/04 * https://mogplugins.wordpress.com * ============================================================================= * Adiciona o cursor do alvo. * * ============================================================================= * UTILIZAÇÃO * ============================================================================= * Serão necessários as imagens. (/img/system/) * * BattleCursor_A.png * BattleCursor_B.png * * ============================================================================= * NOTETAGS * ============================================================================= * Se quiser definir uma posição específica do cursor em determinados inimigos * utilize as notas abaixo. * * Battle Cursor Offset : X : Y * * Ex * * Battle Cursor Offset : 120 : 100 * */ (() => {   var Imported = Imported || {};   Imported.MOG_BattleCursor = true;   var Moghunter = Moghunter || {}; Moghunter.parameters = PluginManager.parameters('MOG_BattleCursor'); Moghunter.bcursor_x_actor = Number(Moghunter.parameters['X-Axis Offset Actor'] || 0); Moghunter.bcursor_y_actor = Number(Moghunter.parameters['Y-Axis Offset Actor'] || 0); Moghunter.bcursor_x_enemy = Number(Moghunter.parameters['X-Axis Offset Enemy'] || 0); Moghunter.bcursor_y_enemy = Number(Moghunter.parameters['Y-Axis Offset Enemy'] || 0); Moghunter.bcursor_slide = String(Moghunter.parameters['Slide Effect'] || "false"); Moghunter.bcursor_moveSpeed = Number(Moghunter.parameters['Move Speed'] || 100); Moghunter.bcursor_float = String(Moghunter.parameters['Float Effect'] || "true"); Moghunter.bcursor_alignActor = String(Moghunter.parameters['Align for Actor'] || "Above"); Moghunter.bcursor_alignEnemy = String(Moghunter.parameters['Align for Enemy'] || "Above"); Moghunter.bcursor_name_visible = String(Moghunter.parameters['Name Visible'] || "true"); Moghunter.bcursor_name_x_actor = Number(Moghunter.parameters['Name X-Axis Actor'] || 0); Moghunter.bcursor_name_y_actor = Number(Moghunter.parameters['Name Y-Axis Actor'] || 0); Moghunter.bcursor_name_x_enemy = Number(Moghunter.parameters['Name X-Axis Enemy'] || 0); Moghunter.bcursor_name_y_enemy = Number(Moghunter.parameters['Name Y-Axis Enemy'] || 0); Moghunter.bcursor_fontSize = Number(Moghunter.parameters['Font Size'] || 18); Moghunter.bcursor_fontBold = String(Moghunter.parameters['Font Bold'] || "false"); Moghunter.bcursor_fontItalic = String(Moghunter.parameters['Font Italic'] || "false"); Moghunter.bcursor_TargetWindow = String(Moghunter.parameters['Target Window'] || "false"); Moghunter.bcursor_animated = String(Moghunter.parameters['Animated'] || "true"); Moghunter.bcursor_aniFrames = Number(Moghunter.parameters['Frames'] || 3); Moghunter.bcursor_aniSpeed = Number(Moghunter.parameters['Animation Speed'] || 5); //============================================================================= // ■■■ Game_Temp ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ Initialize //============================== const _mog_bCursor_game_temp_initialize = Game_Temp.prototype.initialize Game_Temp.prototype.initialize = function() { _mog_bCursor_game_temp_initialize.call(this); this._mogBattleCursor = {}; this._mogBattleCursor.needRefresh1 = false; this._mogBattleCursor.needRefresh2 = false; this._mogBattleCursor.x = 0; this._mogBattleCursor.y = 0; this._mogBattleCursor.slideTime = 0; this._mogBattleCursor.isForOpponent = false; this._mogBattleCursor.isForAll = false; this._mogBattleCursor.isForEveryone = false }; //============================================================================= // ■■■ Game_Party ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ addActor //============================== const _mog_bCursor_game_party_addActor = Game_Party.prototype.addActor; Game_Party.prototype.addActor = function(actorId) { _mog_bCursor_game_party_addActor.call(this,actorId); if (this.inBattle()) {$gameTemp._mogBattleCursor.needRefresh1 = true}; }; //============================== // ♦ ALIAS ♦ removeActor //============================== const _mog_bCursor_game_party_removeActor = Game_Party.prototype.removeActor; Game_Party.prototype.removeActor = function(actorId) { _mog_bCursor_game_party_removeActor.call(this,actorId); if (this.inBattle()) {$gameTemp._mogBattleCursor.needRefresh1 = true}; }; //============================================================================= // ■■■ Game_Battler ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ Initialize //============================== const _mog_bCursor_game_battler_initMembers = Game_Battler.prototype.initMembers; Game_Battler.prototype.initMembers = function() { _mog_bCursor_game_battler_initMembers.call(this); this.initBattleCursor(); }; //============================== // * initBattleCursor //============================== Game_Battler.prototype.initBattleCursor = function() { this._battleCursor = {}; this._battleCursor.enable = true; this._battleCursor.X_Offset = 0; this._battleCursor.Y_Offset = 0; }; //============================== // * notetags mg //============================== Game_Battler.prototype.notetags_mg = function() { if (this.isEnemy()) {return this.enemy().note.split(/[\r\n]+/)}; if (this.isActor()) {return this.actor().note.split(/[\r\n]+/)}; }; //============================== // * setupBattleCursor Note //============================== Game_Battler.prototype.setupBattleCursorNote = function() { this.notetags_mg().forEach(function(note) { const note_data = note.split(' : ') if (note_data[0].toLowerCase() == "battle cursor offset"){ this._battleCursor.X_Offset = Number(note_data[1]); this._battleCursor.Y_Offset = Number(note_data[2]); }; },this); }; //============================================================================= // ■■■ Game_Actor ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ Setup //============================== const _mog_bCursor_game_actor_setup = Game_Actor.prototype.setup; Game_Actor.prototype.setup = function(actorId) { _mog_bCursor_game_actor_setup.call(this,actorId) this.setupBattleCursorNote(); }; //============================================================================= // ■■■ Game_Enemy ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ Setup //============================== const _mog_bCursor_game_enemy_setup = Game_Enemy.prototype.setup; Game_Enemy.prototype.setup = function(enemyId, x, y) { _mog_bCursor_game_enemy_setup.call(this,enemyId, x, y); this.setupBattleCursorNote(); }; //============================== // ♦ ALIAS ♦ transform //============================== const _mog_battleCursor_game_enemy_transform = Game_Enemy.prototype.transform; Game_Enemy.prototype.transform = function(enemyId) { _mog_battleCursor_game_enemy_transform.call(this,enemyId); $gameTemp._mogBattleCursor.needRefresh2 = true; this.setupBattleCursorNote(); }; //============================================================================= // ■■■ Game Action ■■■ //============================================================================= //============================== // ♦ OVERWRITE ♦ NeedsSelection //============================== Game_Action.prototype.needsSelection = function() { return this.checkItemScope([1, 2, 7, 8, 9, 10,14]); }; //============================== // ♦ ALIAS ♦ apply //============================== const _mog_battleCursor_game_action_apply = Game_Action.prototype.apply; Game_Action.prototype.apply = function(target) { _mog_battleCursor_game_action_apply.call(this,target); if (target && target.isEnemy() && target.isDead()) {$gameTemp._mogBattleCursor.needRefresh2 = true}; }; //============================================================================= // ■■■ Window_BattleActor ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ Initialize //============================== const _mog_battleCursor_window_battleActor_initialize = Window_BattleActor.prototype.initialize; Window_BattleActor.prototype.initialize = function(rect) { _mog_battleCursor_window_battleActor_initialize.call(this,rect); this._bcursor_winVisble = String(Moghunter.bcursor_TargetWindow) == "true" ? true : false; if (!$dataSystem.optSideView) {this._bcursor_winVisble = true}; this._bcSo = (Graphics.height * 2); }; //============================== // ♦ ALIAS ♦ Select //============================== const _mog_battleCursor_window_battleactor_select = Window_BattleActor.prototype.select; Window_BattleActor.prototype.select = function(index) { _mog_battleCursor_window_battleactor_select.call(this,index); if (this.battleCursorNeedSelectAllActors()) { this.battleCursorSelectAllActors()}; }; //============================== // * battleCursorNeedSelectAllActors //============================== Window_BattleActor.prototype.battleCursorNeedSelectAllActors = function() { if ($gameTemp._mogBattleCursor.isForEveryone) {return true}; if ($gameTemp._mogBattleCursor.isForOpponent) {return false}; if (!$gameTemp._mogBattleCursor.isForAll) {return false}; return true; }; //============================== // * battleCursorSelectAllActors //============================== Window_BattleActor.prototype.battleCursorSelectAllActors = function() { for (const member of $gameParty.battleMembers()) { member.select(); }; this.setCursorAll(true); }; //============================== // ♦ ALIAS ♦ hide //============================== const _mog_battleCursor_window_battleactor_hide = Window_BattleActor.prototype.hide; Window_BattleActor.prototype.hide = function(index) { _mog_battleCursor_window_battleactor_hide.call(this); this.setCursorAll(false); }; //============================== // ♦ ALIAS ♦ cursorDown //============================== const _mog_battleCursor_window_battleActor_cursorDown = Window_BattleActor.prototype.cursorDown; Window_BattleActor.prototype.cursorDown = function(wrap) { if (!this._bcursor_winVisble) {this.inputIndex(1);return} _mog_battleCursor_window_battleActor_cursorDown.call(this,wrap); }; //============================== // ♦ ALIAS ♦ cursorUp //============================== const _mog_battleCursor_window_battleActor_cursorUp = Window_BattleActor.prototype.cursorUp; Window_BattleActor.prototype.cursorUp = function(wrap) { if (!this._bcursor_winVisble) {this.inputIndex(-1);return} _mog_battleCursor_window_battleActor_cursorUp.call(this,wrap); }; //============================================================================= // ■■■ Window_BattleEnemy ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ Initialize //============================== const _mog_battleCursor_window_battleenemy_initialize = Window_BattleEnemy.prototype.initialize; Window_BattleEnemy.prototype.initialize = function(rect) { _mog_battleCursor_window_battleenemy_initialize.call(this,rect); this._bcursor_winVisble = String(Moghunter.bcursor_TargetWindow) == "true" ? true : false; this._bcSo = (Graphics.height * 2); }; //============================== // ♦ ALIAS ♦ Select //============================== const _mog_battleCursor_window_battleenemy_select = Window_BattleEnemy.prototype.select Window_BattleEnemy.prototype.select = function(index) { _mog_battleCursor_window_battleenemy_select.call(this,index); if (this.battleCursorNeedSelectAllEnemies()) {this.battleCursorSelectAllEnemies()}; }; //============================== // * battleCursorNeedSelectAllEnemies //============================== Window_BattleEnemy.prototype.battleCursorNeedSelectAllEnemies = function() { if ($gameTemp._mogBattleCursor.isForEveryone) {return true}; if (!$gameTemp._mogBattleCursor.isForOpponent) {return false}; if (!$gameTemp._mogBattleCursor.isForAll) {return false}; return true; }; //============================== // * battleCursorSelectAllEnemies //============================== Window_BattleEnemy.prototype.battleCursorSelectAllEnemies = function() { for (const member of $gameTroop.aliveMembers()) { member.select(); }; this.setCursorAll(true); }; //============================== // ♦ ALIAS ♦ hide //============================== const _mog_battleCursor_window_battleenemy_hide = Window_BattleEnemy.prototype.hide; Window_BattleEnemy.prototype.hide = function() { _mog_battleCursor_window_battleenemy_hide.call(this); this.setCursorAll(false); }; //============================== // * itemRectBatttleCursor //============================== Window_BattleEnemy.prototype.itemRectBatteCursor = function(index) { const maxCols = this.maxCols(); const itemWidth = this.itemWidth(); const itemHeight = this.itemHeight(); const colSpacing = this.colSpacing(); const rowSpacing = this.rowSpacing(); const col = index % maxCols; const row = Math.floor(index / maxCols); const x = itemWidth + colSpacing / 1 - this.scrollBaseX(); const y = row * itemHeight + rowSpacing / 1 - this.scrollBaseY(); const width = itemWidth - colSpacing; const height = itemHeight - rowSpacing; return new Rectangle(x, y, width, height); }; //============================== // ♦ OVERWRITE ♦ refreshCursorForAll //============================== Window_BattleEnemy.prototype.refreshCursorForAll = function() { const maxItems = this.maxItems(); if (maxItems > 0) { const rect = this.itemRect(0); rect.enlarge(this.itemRectBatteCursor(999)); this.setCursorRect(rect.x, rect.y, rect.width, rect.height); } else { this.setCursorRect(0, 0, 0, 0); }; this._index = 0; }; //============================== // ♦ ALIAS ♦ cursorDown //============================== const _mog_battleCursor_window_battleEnemy_cursorDown = Window_BattleEnemy.prototype.cursorDown; Window_BattleEnemy.prototype.cursorDown = function(wrap) { if (!this._bcursor_winVisble) {this.inputIndex(1);return}; _mog_battleCursor_window_battleEnemy_cursorDown.call(this,wrap); }; //============================== // ♦ ALIAS ♦ cursorUp //============================== const _mog_battleCursor_window_battleEnemy_cursorUp = Window_BattleEnemy.prototype.cursorUp; Window_BattleEnemy.prototype.cursorUp = function(wrap) { if (!this._bcursor_winVisble) {this.inputIndex(-1);return}; _mog_battleCursor_window_battleEnemy_cursorUp.call(this,wrap); }; //============================== // ♦ ALIAS ♦ cursorRight //============================== const _mog_battleCursor_window_battleEnemy_cursorRight = Window_BattleEnemy.prototype.cursorRight; Window_BattleEnemy.prototype.cursorRight = function(wrap) { if (!this._bcursor_winVisble) {this.inputIndex(1);return}; _mog_battleCursor_window_battleEnemy_cursorRight.call(this,wrap); }; //============================== // ♦ ALIAS ♦ cursorLeft //============================== const _mog_battleCursor_window_battleEnemy_cursorLeft = Window_BattleEnemy.prototype.cursorLeft; Window_BattleEnemy.prototype.cursorLeft = function(wrap) { if (!this._bcursor_winVisble) {this.inputIndex(-1);return}; _mog_battleCursor_window_battleEnemy_cursorLeft.call(this,wrap); }; //============================================================================= // ■■■ Window Selectable ■■■ //============================================================================= //============================== // * input Index //============================== Window_Selectable.prototype.inputIndex = function(value) { var index = this.index(); var maxValue = this.maxItems() - 1; index += value; if (index > maxValue) {index = 0}; if (index < 0) {index = maxValue}; this.smoothSelect(index) }; //============================================================================= // ■■■ Spriteset Battle ■■■ //============================================================================= //============================== // * create Sprt Field 1 //============================== Spriteset_Battle.prototype.createSprtField1 = function() { this._sprtField1 = new Sprite(); this._sprtField1.z = 1; this.addChild(this._sprtField1); }; //============================== // * create Sprt Field 2 //============================== Spriteset_Battle.prototype.createSprtField2 = function() { this._sprtField2 = new Sprite(); this._sprtField2.z = 5; this.addChild(this._sprtField2); }; //============================== // ♦ ALIAS ♦ Create Spriteset //============================== const _mog_bCursor_spriteset_battle_createLowerLayer = Spriteset_Battle.prototype.createLowerLayer Spriteset_Battle.prototype.createLowerLayer = function() { _mog_bCursor_spriteset_battle_createLowerLayer.call(this); if (!this._sprtField2) {this.createSprtField2()}; this.createBattleCursor(); }; //============================== // * createBattleCursor //============================== Spriteset_Battle.prototype.createBattleCursor = function() { for (const sprite of this.battlerSprites()) { const battlerSprite = new BattleCursorSprite(this,sprite); battlerSprite.z = 5; this._sprtField2.addChild(battlerSprite); }; }; //============================================================================= // ■■■ Scene Battle ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ update //============================== const _mog_bCursor_scene_battle_update = Scene_Battle.prototype.update; Scene_Battle.prototype.update = function() { _mog_bCursor_scene_battle_update.call(this); this.updateBattleCursor(); }; //============================== // * update Battle Cursor //============================== Scene_Battle.prototype.updateBattleCursor = function() { if ($gameTemp._mogBattleCursor.slideTime > 0) { $gameTemp._mogBattleCursor.slideTime--; if ($gameTemp._mogBattleCursor.slideTime == 0) { $gameTemp._mogBattleCursor.x = 0; $gameTemp._mogBattleCursor.y = 0; }; }; this.updateBattleCursorTargetWindow(); $gameTemp._mogBattleCursor.needRefresh1 = false; $gameTemp._mogBattleCursor.needRefresh2 = false; }; //============================== // * updateBattleCursorTargetWindow //============================== Scene_Battle.prototype.updateBattleCursorTargetWindow= function() { if ($gameTemp._mogBattleCursor.needRefresh1 && this._actorWindow.active) { this._actorWindow.refresh(); this._actorWindow.select(0); }; if ($gameTemp._mogBattleCursor.needRefresh2 && this._enemyWindow.active) { const enemy = this._enemyWindow.enemy(); this._enemyWindow.refresh(); if (!enemy.isDead()) { var checked = false; for (var i = 0; i < $gameTroop.aliveMembers().length; i++) { if ($gameTroop.aliveMembers()[i] == enemy) {this._enemyWindow.select(i);checked = true}; }; if (!checked) {this._enemyWindow.select(0)}; } else { this._enemyWindow.select(0); }; }; if (this._enemyWindow && !this._enemyWindow._bcursor_winVisble) {this._enemyWindow.y = this._enemyWindow._bcSo}; if (this._actorWindow && !this._actorWindow._bcursor_winVisble) {this._actorWindow.y = this._actorWindow._bcSo}; }; //============================== // ♦ ALIAS ♦ onEnemyCancel //============================== const _mog_bCursor_scene_battle_onEnemyCancel = Scene_Battle.prototype.onEnemyCancel; Scene_Battle.prototype.onEnemyCancel = function() { this._actorWindow.hide(); _mog_bCursor_scene_battle_onEnemyCancel.call(this); }; //============================== // ♦ ALIAS ♦ onSelectAction //============================== const _mog_bCursor_scene_battle_onSelectAction = Scene_Battle.prototype.onSelectAction; Scene_Battle.prototype.onSelectAction = function() { this.battleCursorOnSelectAction(); _mog_bCursor_scene_battle_onSelectAction.call(this); if (this._enemyWindow.active && $gameTemp._mogBattleCursor.isForEveryone) { this._actorWindow.battleCursorSelectAllActors(); } }; //============================== // * battleCursorOnSelectAction //============================== Scene_Battle.prototype.battleCursorOnSelectAction = function() { const action = BattleManager.inputtingAction(); $gameTemp._mogBattleCursor.isForOpponent = action.isForOpponent(); $gameTemp._mogBattleCursor.isForAll = action.isForAll(); $gameTemp._mogBattleCursor.isForEveryone = action.isForEveryone(); }; //============================================================================= // ■■■ BattleCursorSprite ■■■ //============================================================================= function BattleCursorSprite() { this.initialize.apply(this, arguments); }; BattleCursorSprite.prototype = Object.create(Sprite.prototype); BattleCursorSprite.prototype.constructor = BattleCursorSprite; //============================== // * Initialize //============================== BattleCursorSprite.prototype.initialize = function(spriteset,sprite) { Sprite.prototype.initialize.call(this); this._spriteset = spriteset; this._battlerSprite = sprite; this._position = {}; this._position.x = 0; this._position.y = 0; this._position.height = 0; this._position.xOffset = 0; this._position.yOffset = 0; this._effect = {}; this._effect.wave = String(Moghunter.bcursor_float) == "true" ? true : false; this._effect.waveX = 0; this._effect.waveY = 0; this._effect.waveMode = 0; this._effect.waveTime = 0; this._effect.waveSpeed = 0; this._anime = {}; this._anime.enabled = String(Moghunter.bcursor_animated) == "true" ? true : false; this._anime.index = 0; this._anime.frameMax = (Math.min(Math.max(Moghunter.bcursor_aniFrames,2),100)); this._anime.time1 = 0; this._anime.time2 = (Math.min(Math.max(Moghunter.bcursor_aniSpeed,2),240)); this._anime.width = 0; this._anime.height = 0; this._align = 0 this.refreshBattler(); this.prepareBitmap(); this.visible = false; this.opacity = 0; this._moveSpeed = (Math.min(Math.max(Moghunter.bcursor_moveSpeed,30),300)); if (String(Moghunter.bcursor_slide) != "true") {this._moveSpeed = 3000}; this._xf = ((Graphics.width - Graphics.boxWidth) / 2); this._yf = ((Graphics.height - Graphics.boxHeight) / 2); }; //============================== // * getAlign //============================== BattleCursorSprite.prototype.getAlign = function(mode) { if (mode == "Below") { return 0; } else if (mode == "Center") { return 1; } else if (mode == "Left") { return 3; } else if (mode == "Right") { return 4; } else { return 2; } }; //============================== // * prepareAnimation //============================== BattleCursorSprite.prototype.prepareAnimation = function() { this._anime.width = this.setCursorBitmap().width / this._anime.frameMax; this._anime.height = this.setCursorBitmap().height; this.refreshFrameAnimation(); }; //============================== // * updateAnime //============================== BattleCursorSprite.prototype.updateAnime = function() { this._anime.time1++; if (this._anime.time1 > this._anime.time2) { this._anime.time1 = 0; this.refreshFrameAnimation(); }; }; //============================== // * refresh Frame Animation //============================== BattleCursorSprite.prototype.refreshFrameAnimation = function() { this._anime.index++; if (this._anime.index > (this._anime.frameMax - 1)) {this._anime.index = 0}; const sx = this._anime.width * this._anime.index; this._cursorSprite.setFrame(sx, 0, this._anime.width, this._anime.height); }; //============================== // * move Speed //============================== BattleCursorSprite.prototype.moveSpeed = function() { return this._moveSpeed; }; //============================== // * prepare Bitmap //============================== BattleCursorSprite.prototype.prepareBitmap = function() { this._cursorBitmap1 = ImageManager.loadSystem("BattleCursor_A"); this._cursorBitmap2 = ImageManager.loadSystem("BattleCursor_B"); }; //============================== // * create Sprites //============================== BattleCursorSprite.prototype.createSprites = function() { this._cursorSprite = new Sprite(); this._cursorSprite.z = 5; this._cursorSprite.anchor.x = 0.5; this._cursorSprite.anchor.y = 2; this.addChild(this._cursorSprite); this._nameSprite = new Sprite(new Bitmap(160,48)); this._nameSprite.z = 10; this._nameSprite.anchor.x = 0.5; this._nameSprite.visible = String(Moghunter.bcursor_name_visible) == "true" ? true : false; this._nameSprite.bitmap.fontSize = Moghunter.bcursor_fontSize; this._nameSprite.bitmap.fontBold = String(Moghunter.bcursor_fontBold) == "true" ? true : false; this._nameSprite.bitmap.fontItalic = String(Moghunter.bcursor_fontItalic) == "true" ? true : false; this.addChild(this._nameSprite); if (this._battler) {this.refreshBattleCursor()}; }; //============================== // * refreshBattler //============================== BattleCursorSprite.prototype.refreshBattler = function() { this._battler = this.setBattler(); }; //============================== // * setBattler //============================== BattleCursorSprite.prototype.setBattler = function() { if (this._battlerSprite) { return this._battlerSprite._battler; }; return null; }; //============================== // * Need Refresh //============================== BattleCursorSprite.prototype.needRefresh = function() { if (this._battlerSprite) { if ($gameTemp._mogBattleCursor.needRefresh1) {return true}; if ($gameTemp._mogBattleCursor.needRefresh2) {return true}; if (this._battler != this._battlerSprite._battler) {return true}; if (this._battler && this._position.width == 0 && this._position.height == 0) { if (this._battlerSprite._mainSprite) { if (this._battlerSprite._mainSprite.bitmap && this._battlerSprite._mainSprite.bitmap.isReady()) {return true}; } else { if (this._battlerSprite.bitmap && this._battlerSprite.bitmap.isReady()) {return true}; }; }; }; return false; }; //============================== // * Refresh Battle Cursor //============================== BattleCursorSprite.prototype.refreshBattleCursor = function() { this.visible = false; this.refreshBattler(); if (this._battler) { this.refreshData(); this.refreshBitmap(); this.refreshName(); }; }; //============================== // * Refresh Data //============================== BattleCursorSprite.prototype.refreshData = function() { if (this._battler.isEnemy()) { this._align = this.getAlign(String(Moghunter.bcursor_alignEnemy)); this._position.xOffset = Moghunter.bcursor_x_enemy; this._position.yOffset = Moghunter.bcursor_y_enemy; } else { this._align = this.getAlign(String(Moghunter.bcursor_alignActor)); this._position.xOffset = Moghunter.bcursor_x_actor; this._position.yOffset = Moghunter.bcursor_y_actor; }; }; //============================== // * refresh Bitmap //============================== BattleCursorSprite.prototype.refreshBitmap = function() { this._cursorSprite.bitmap = this.setCursorBitmap(); this._position.width = 0; this._position.height = 0; if (this._align < 3) { this._position.height = this.setCursorAlign(this._align); } else { this._position.width = this.setCursorAlign(this._align); this._position.height = this.setCursorAlign(1); }; if (this._anime.enabled) {this.prepareAnimation()}; }; //============================== // * setCursorAlign //============================== BattleCursorSprite.prototype.setCursorAlign = function(align) { if (this._battlerSprite) { if (this._battlerSprite._mainSprite && this._battlerSprite._mainSprite.bitmap && this._battlerSprite._mainSprite.bitmap.isReady()) { if (align == 0) { return 0; } else if (align == 1) { return (this._battlerSprite._mainSprite.height / 2) - 5; } else if (align == 3) { return -(this._battlerSprite._mainSprite.width / 2) + 5; } else if (align == 4) { return (this._battlerSprite._mainSprite.width / 2) - 5; } else { return this._battlerSprite._mainSprite.height - 12; }; }; if (this._battlerSprite.bitmap && this._battlerSprite.bitmap.isReady()) { if (align == 0) { return 0; } else if (align == 1) { return (this._battlerSprite.height / 2) - 10; } else if (align == 3) { return -(this._battlerSprite.width / 2) + 10; } else if (align == 4) { return (this._battlerSprite.width / 2) - 10; } else { return this._battlerSprite.height - 24; }; }; }; return 0; }; //============================== // * set Cursor Bitmap //============================== BattleCursorSprite.prototype.setCursorBitmap = function() { if (this._battler.isEnemy()) {return this._cursorBitmap2}; return this._cursorBitmap1; }; //============================== // * Refresh Name //============================== BattleCursorSprite.prototype.refreshName = function() { const text = String(this._battler.name()); this._nameSprite.bitmap.clear(); this._nameSprite.bitmap.drawText(text,0,0,160,42,"center"); const sh = -(this._cursorSprite.height * 2) - 28; const x_Offset = this._battler.isEnemy() ? Moghunter.bcursor_name_x_enemy : Moghunter.bcursor_name_x_actor; const y_Offset = this._battler.isEnemy() ? Moghunter.bcursor_name_y_enemy : Moghunter.bcursor_name_y_actor; this._nameSprite.x = x_Offset; this._nameSprite.y = y_Offset + sh; }; //============================== // * move Cursor //============================== BattleCursorSprite.prototype.moveCursor = function(value,real_value) { if (value == real_value) {return value}; var dnspeed = (5 + (Math.abs(value - real_value) / 10)) * (this.moveSpeed() / 100); 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); }; //============================== // * posX //============================== BattleCursorSprite.prototype.posX = function() { if (!this._battlerSprite) {return 0}; return this._xf + this._position.xOffset + this._battlerSprite.x + this._effect.waveX + this._battler._battleCursor.X_Offset + this._position.width; }; //============================== // * posY //============================== BattleCursorSprite.prototype.posY = function() { if (!this._battlerSprite) {return 0}; return this._yf + this._position.yOffset + this._battlerSprite.y + this._effect.waveY + this._battler._battleCursor.Y_Offset - this._position.height; }; //============================== // * update Wave Effect //============================== BattleCursorSprite.prototype.updateWaveEffect = function() { this._effect.waveTime++; if (this._align < 3) { this._effect.waveY = this.updateWaveMovement(this._effect.waveY); } else { this._effect.waveX = this.updateWaveMovement(this._effect.waveX); }; }; //============================== // * updateWaveMovement //============================== BattleCursorSprite.prototype.updateWaveMovement = function(value) { if (this._effect.waveMode == 0) { if (this._effect.waveTime > 2) { this._effect.waveTime = 0 value++; if (value >= 10) {this._effect.waveMode = 1 }; }; } else { if (this._effect.waveTime > 2) { this._effect.waveTime = 0 value--; if (value <= 0) {this._effect.waveMode = 0}; }; }; return value }; //============================== // * isForAll //============================== BattleCursorSprite.prototype.isForAll = function() { return $gameTemp._mogBattleCursor.isForAll;; }; //============================== // * isVisible //============================== BattleCursorSprite.prototype.isVisible = function() { if (!this._battler) {return false}; if (this._battler.isHidden()) {return false}; if (this._battler.isEnemy() && this._battler.isDead()) {return false}; return this._battler.isSelected(); }; //============================== // * Update Battle Cursor //============================== BattleCursorSprite.prototype.updateBattleCursor = function() { this.visible = this.isVisible(); if (this._effect.wave) {this.updateWaveEffect()}; if (this._anime.enabled) {this.updateAnime()}; this.updatePosition(); }; //============================== // * Update Position //============================== BattleCursorSprite.prototype.updatePosition = function() { if (this.visible) { this.x = this.moveCursor(this.x,this.posX()); this.y = this.moveCursor(this.y,this.posY()); $gameTemp._mogBattleCursor.x = this.x; $gameTemp._mogBattleCursor.y = this.y; $gameTemp._mogBattleCursor.slideTime = 6; this.opacity += 25; } else { this.x = $gameTemp._mogBattleCursor.x; this.y = $gameTemp._mogBattleCursor.y; this.opacity = $gameTemp._mogBattleCursor.slideTime == 0 ? 0 : 255; }; }; //============================== // * need Create Sprites //============================== BattleCursorSprite.prototype.needCreateSprites = function() { if (this._cursorSprite) {return false}; if (!this._cursorBitmap1.isReady()) {return false}; return true; }; //============================== // * Update //============================== BattleCursorSprite.prototype.update = function() { Sprite.prototype.update.call(this); if (this.needCreateSprites()) {this.createSprites()} if (this.needRefresh()) {this.refreshBattleCursor()}; if (this._battler) {this.updateBattleCursor()}; }; })();