1139 lines
No EOL
39 KiB
JavaScript
1139 lines
No EOL
39 KiB
JavaScript
//=============================================================================
|
||
// 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()};
|
||
};
|
||
|
||
})(); |